Podstawy tworzenia

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.
Najnowsza aktualizacja Wersja stabilna Kandydat do wydania Wersja Beta Wydanie alfa
4 września 2024 r. 1.7.0 - - 1.8.0-alfa01

Struktura

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

W tej tabeli opisano grupy i linki do poszczególnych zestawów informacji o wersji.

GrupaOpis
compose.animation,Twórz animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników.
compose.buildrPrzekształcaj funkcje @Composable i optymalizuj funkcje za pomocą wtyczki kompilatora Kotlin.
compose.foundationTwórz aplikacje w Jetpack Compose, używając gotowych do użycia elementów składowych, i rozbuduj podstawy, aby tworzyć własne elementy systemu.
compose.material,Twórz interfejsy Jetpack Compose z gotowymi do użycia komponentami Material Design. Jest to punkt wejścia wyższego poziomu w Composer, który ma dostarczać komponenty pasujące do tych opisanych na www.material.io.
compose.material3,Twórz interfejsy Jetpack Compose z komponentami Material Design 3, które stanowią kolejną wersję Material Design. Material 3 ma zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczne kolory, i został zaprojektowany tak, aby był spójny z nowym stylem wizualnym i interfejsem systemu na Androidzie 12.
compose.runtime,Podstawowe elementy składowe modelu programowania i zarządzania stanem w usłudze Compose oraz podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka kompilatora Compose.
compose.ui,Podstawowe elementy interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu.

Deklarowanie zależności

Aby dodać zależność w Compose, musisz dodać repozytorium Google Maven do w projektach AI. Zapoznaj się z repozytorium Google Maven. .

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

Odlotowe

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.

Tworzenie nowego numeru

Zobacz dokumentację narzędzia Issue Tracker. .

Wersja 1.8

Wersja 1.8.0-alpha01

4 września 2024 r.

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

Wersja 1.7

Wersja 1.7.0

4 września 2024 r.

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

Ważne zmiany od wersji 1.6.0

  • Wydajność aplikacji Modifier.clickable, Modifier.focusable, Modifier.indication, Modifier.scrollable i Modifier.draggable znacznie się poprawiła. W ramach tych działań oprócz zmian wewnętrznych wprowadziliśmy następujące zmiany w interfejsie API:
    • Dodano nowy interfejs Indication API: IndicationNodeFactory. Dzięki temu implementacje Wskazówek są skuteczniejsze w porównaniu z poprzednim (wycofanym) interfejsem API rememberUpdatedInstance. Informacje o migracji znajdziesz na stronie developer.android.com.
    • clickable / combinedClickable / selectable / toggleable akceptuje teraz parametr MutableInteractionSource, który może przyjmować wartości null. Jeśli wartość to null, a podany wskaźnik ma wartość IndicationNodeFactory, wskazywanie można utworzyć leniwie tylko wtedy, gdy jest to konieczne, co zwiększa skuteczność. Jeśli nie podnosisz danych i nie używasz MutableInteractionSource, zalecamy przekazanie wartości null zamiast wartości remember { MutableInteractionSource() }.
    • Usługa Indication#rememberUpdatedInstance została wycofana. Występuje wtedy duża nieunikniona utrata skuteczności i uniemożliwia inne optymalizacje. Zamiast niego należy używać nowego interfejsu API IndicationNodeFactory.
  • Działanie BasicTextField w wersji TextFieldState jest teraz stabilne. Zalecamy, aby wszystkie witryny generujące połączenia rozpoczęły migrację z BasicTextField(value, onValueChange) na BasicTextField(TextFieldState).
  • Interfejs ClickableText został wycofany. Aby dodać do tekstu klikalne linki, użyj elementu BasicText z nową adnotacją LinkAnnotation w dokumencie AnnotatedString. LinkAnnotation umożliwia dostosowywanie stylu na podstawie stanu linku (np. zaznaczenie, najechanie kursorem).
  • Przedstawiamy ContextualFlowRow i Enhanced FlowRow/Column z MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnej wersji FlowRow i FlowColumn, które oprócz premiery ContextualFlowRow i ContextualFlowColumn obejmują teraz maxLines i rozszerzoną obsługę. Ta aktualizacja ma na celu dostarczenie komponentów zapewniających optymalną wydajność. ContextualFlow* to idealne rozwiązanie dla dużej liczby elementów z małą konfiguracją maxLines i dynamicznymi przyciskami +N zobacz więcej. Z kolei FlowRow i FlowColumn są idealne dla niewielkiej liczby elementów, która nie przekracza 100 elementów. Ważne: aby zachować obecne działanie funkcji FlowRow lub FlowColumn, w których wszystkie elementy są złożone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw nadmiar na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Zapoznaj się z usługami ContextualFlowRowSample i FlowRowSample, aby zobaczyć przykłady tych nowych funkcji w praktyce. (Ib9135, b/293577082)
  • Obsługa animacji wyglądu i znikania elementów została dodana do LazyColumn i LazyRow. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement() w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 typów animacji: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (I2d7f7, b/150812265)
  • Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania w usłudze Compose za pomocą oficjalnego interfejsu API Androida (ScrollCaptureCallback).
  • Źródła „Przeciągnij i przesunięcie” (NestedScroll) zostały zastąpione przez reguły UserInput i SideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, do których teraz należą animacje (efekt boczny) oraz kółkiem myszy i klawiaturą (UserInput).
  • LazyLayout żądań pobierania z wyprzedzeniem można teraz oznaczyć jako pilne, co oznacza, że ten element będzie potrzebny w następnej ramce. Zignorujemy budżet klatek, aby wcześniej wykonać większą pracę (Id513f)
  • Obsługa funkcji pisma odręcznego rysikiem na urządzeniach z Androidem U (I002e4)
  • Różne interfejsy API zostały uaktualnione do wersji stabilnej
    • Pagery, przyciąganie, wstawki w oknach

Wersja 1.7.0-rc01

21 sierpnia 2024 r.

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

Poprawki błędów

  • Naprawiliśmy regresję, w której awaria występowała, gdy dowolny element jest zaznaczony wewnątrz elementu nadrzędnego, który można zaznaczyć (lub kliknąć) i jest on wyłączony. (b/317561689)

Wersja 1.7.0-beta07

7 sierpnia 2024 r.

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

Poprawki błędów

  • Powiązane z tekstem funkcje SemanticsNodeInteraction performTextReplacement, performTextInput i performTextClearance będą teraz powodować błędy asercji, gdy zostaną one wywołane w trybie tylko do odczytu TextFields. (I4ae8f).
  • Naprawiliśmy wizualny błąd w hiperlinkach. (I23311)
  • Naprawiliśmy problem z modyfikatorem contentReceiver, który nie działał z niektórymi edytorami IME.
  • Generowanie prędkości: zapobiegaj propagacji wartości NaN w interfejsie Compose i podstawy.

Wersja 1.7.0-beta06

24 lipca 2024 r.

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

Wersja 1.7.0-beta05

10 lipca 2024 r.

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

Poprawki błędów

  • Naprawiono wartości Nan w parametrach SnapFlingBehavior i pager.

Wersja 1.7.0-beta04

26 czerwca 2024 r.

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

Poprawki błędów

  • Unikaj awarii przy pomiarze bardzo dużych linii tekstowych (np. 10 tys. znaków) (8157ab).
  • Naprawia pomiar bardzo dużego tekstu, który powodował awarię w nowej wersji BasicTextField (6b7575)
  • Wycofuje zmianę zachowania w pomiarach wierszy/kolumn, która w określonych sytuacjach zakłóca użycie tekstu (69e8ba).

Wersja 1.7.0-beta03

12 czerwca 2024 r.

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

Wersja 1.7.0-beta02

29 maja 2024 r.

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

Zmiany interfejsu API

  • Dodaje eksperymentalny interfejs API do konfigurowania sposobu pobierania z wyprzedzeniem LazyGrids, podobny do istniejącego eksperymentalnego interfejsu API LazyLists. Obejmuje to obsługę pobierania z wyprzedzeniem elementów zagnieżdżonych LazyGrids. Podobnie jak w przypadku LazyListPrefetchStrategy, 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 API LazyGridPrefetchStrategy(nestedPrefetchItemCount) i LazyListPrefetchStrategy#onNestedPrefetch. (I591C4).
  • Zmieniono nazwę SemanticsProperties.Editable na IsEditable i SemanticsPropertyReceiver.editable na isEditable. Właściwość jest teraz wartością logiczną i zawsze jest określana przez pola tekstowe. (I8acd8),
  • Przeniesiono wartości domyślne (basicMarquee) do obiektu MarqueeDefaults. (I12ff6)
  • Nazwa parametru delayMillis basicMarquee została zmieniona na repeatDelayMillis. (I12ff6)
  • Aktualizacja interfejsu API do określania stylu linków: przenieś TextLinkStyles do TextStyle i usunięto TextDefaults z materiału (I5477b)

Poprawki błędów

  • Zmieniono nazwę LayoutCoordinates.introducesFrameOfReference na LayoutCoordinates.introducesMotionFrameOfReference, aby lepiej odzwierciedlić jej przeznaczenie. Zmieniono nazwę powiązanej funkcji, aby obliczać współrzędne na podstawie tej flagi. (I3a330)
  • Usunięto opcję „Domyślne” z właściwości MarqueeDefaults. (I1d8a0).
  • Usunięto „Marquee” z usług MarqueeDefaults. (Iad4f4).
  • Usunięto ucznia TextLinkStyles z zajęć TextStyle. Zamiast tego TextLinkStyles jest częścią konstruktora LinkAnntation i metody AnnotatedString.fromHtml (I90b2b).
  • Naprawiono błąd polegający na tym, że pager przyciągał po przesuwaniu w kierunku granicy, gdy był już na niej umieszczony. (I9f373, b/339171222)
  • Sekcja BTF2 zawiera teraz prawidłowe gesty wyboru myszy. (Ibe8c6).

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

  • Ponownie prześlij pole „Aby poprawić dokładność podczas obliczania czasu tworzenia/pomiaru, określ typ treści w pobieraniu z wyprzedzeniem” (IEA622)
  • Określ typ treści do obliczania czasu tworzenia/pomiaru przy pobieraniu z wyprzedzeniem, aby zwiększyć dokładność (Ibccb1)
  • Udostępnij modyfikatory WindowInsetsPadding ze wspólnego zestawu źródeł (I070b2)

Wersja 1.7.0-beta01

14 maja 2024 r.

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

Zmiany interfejsu API

  • Ze względu na zgodność binarną z powrotem dodaliśmy właściwość KeyboardOptions.shouldShowKeyboardOnFocus jako wycofaną, ukrytą. (I15cfe).
  • Modifier.anchoredDraggable domyślnie odwraca delta przeciągania w przypadku komponentów z orientacją poziomą w układzie RTL. (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations to teraz hasEqualAnnotations. (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 tematycznych LinkAnnotations 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 i onDragStopped wywołaniami zwrotnymi bez zawieszenia. (I59de8)

Poprawki błędów

  • Naprawiono błąd, który powodował awarię Pager, gdy wartość contentPadding była większa niż przychodzące ograniczenia. Pager zmienia teraz wartości ujemne zwrócone z PageSize na 0. (Iba5d8, b/314008560)

Wersja 1.7.0-alpha08

1 maja 2024 r.

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 i SelectionContainer 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 na introducesFrameOfReference. Zwróć uwagę, że teraz efekt jest odwrotny, co oznacza, że domyślnie większość elementów LayoutCoordinates 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 funkcji positionInLocalFrameOfReference(...). Lub positionInLocalLookaheadFrameOfReference w sklepie LookaheadScope. (Ifc5f7).
  • Nazwa onClicked została zmieniona na onClick w domenie LinkInteractionListener (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 na isIncluded. Ustaw zwracany typ funkcji Paragraph/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 elemencie AnchoredDraggableState zmieniała się, gdy zbliżała się do granic stanu. (Iea30b, b/333846848)

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

  • Zmieniono nazwę PrefetchExecutor -> PrefetchScheduler, aby lepiej przedstawić swoje obowiązki. (IB9154)
  • Dodano obsługę pobierania z wyprzedzeniem elementów w zagnieżdżonych obiektach LazyLists (np. LazyColumn, który renderuje zagnieżdżony tag LazyRows). Ta zmiana powinna zmniejszyć liczbę klatek na sekundę podczas przewijania w przypadku tych elementów (LazyLists). Domyślną implementacją jest pobieranie z wyprzedzeniem pierwszych 2 zagnieżdżonych elementów, ale to działanie można kontrolować przez nowe interfejsy API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) i LazyListPrefetchStrategy#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 obiektu LinkAnnotation i analizy ciągu z tagami HTML, który powoduje zastosowanie wartości MaterialTheme do linków. (I98532, b/139312671)
  • Obsługa animacji wyglądu i znikania elementów została dodana do LazyVerticalGrid i LazyHorizontalGrid. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement() w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 typów animacji: 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 i LazyHorizontalStaggeredGrid. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement() w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 typów animacji: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (I69bc9, b/330511290)

Zmiany interfejsu API

  • Dodaje element ContextMenuColors i powiązane z nim LocalContextMenuTheme 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ą funkcji Placeable.PlacementScope.withDirectManipulationPlacement. Podobnie szablon, który często zmienia położenie swoich elementów podrzędnych, może teraz umieszczać je za pomocą elementu withDirectManipulationPlacement (np. domyślnie zaimplementowane przewijanie). Zwiększa to intuicyjność animacji approachLayout, umożliwiając rozróżnianie przesunięcia i zasady bezpośrednio przy animowaniu podejścia. (I60ec7)
  • Poznaj requestScrollToItem dla użytkownika LazyStaggeredGrid. 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 obiekt AnnotatedString z elementem LinkAnnotation odpowiadającym linkowi i przekaż ten element AnnotatedString do funkcji kompozycyjnej Text (I34d4b, b/323346994)
  • Interfejs UrlAnnotation został wycofany. Zamiast niego użyj zasady LinkAnnotation.Url. Jeśli korzystasz z motywów Material Design, użyj obiektu TextDefaults, aby utworzyć adnotację z zastosowanymi motywami Material Design (I8d180, b/323346545).
  • Nazwa kolumny String.parseAsHtml została zmieniona na AnnotatedString.Companion.fromHtml (I43dcd)
  • Dodano argumenty stylu (linkStyle, focusedLinkStyle, hoveredLinkStyle) i detektor interakcji z linkiem do metody parseAsHtml. Podczas analizowania ciągu z tagami HTML z tagami <a> metoda tworzy LinkAnnotation.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 oraz LinkInteractionListener. Dodaj tę adnotację do elementu AnnotatedString, aby uzyskać hiperlink. Wartości focusedState lub hoveredState 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 parametr textObfuscationCharacter, 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ły UserInput i SideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, do których teraz należą animacje (efekt boczny) oraz kółkiem myszy i klawiaturą (UserInput). (I40579)
  • Przedstaw LocalBringIntoViewSpec – zależne od platformy zachowanie przewijania zaznaczenia zależne od platformy, które jest stosowane w warstwie modyfikatora przewijania. (I27aa5, b/317453911)
  • Użytkownik TextFieldCharSequence został usunięty. Pole TextFieldBuffer.originalValues zostało zastąpione elementami TextFieldBuffer.originalText i TextFieldBuffer.originalSelection. (I2c7d6)
  • Pole ImeOptions.hintLocales nie może już dopuszczać wartości null. Jeśli chcesz przesłać pustą listę języków, użyj LocaleList.Empty. (IC5bc4)
  • Nazwa getOffsetFractionForPage została zmieniona na getOffsetDistanceInPages. (IA05e2).

Poprawki błędów

  • Gdy identyfikatory InputTransformations są połączone za pomocą funkcji next, ich KeyboardOptions są teraz prawidłowo scalane z poszczególnymi opcjami przy użyciu nowej metody KeyboardOptions.merge. (IE5304, b/295951492)
  • Ustawienie targetValue na urządzeniu AnchoredDraggableState nie już uwzględnia progów pozycji. Obecnie jej wartość progowa wynosi 50%, co oznacza, że parametr targetValue 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 i LazyRow. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement() w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 typów animacji: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (I2d7f7, b/150812265)
  • Klienci LazyColumn/LazyRow mogą teraz zrezygnować z utrzymywania indeksu na podstawie klucza następnego przebiegu pomiarów, wywołując metodę LazyListState.requestToScroll niezawieszoną. (I98036, b/209652366)
  • Dodano metodę parseAsHtml dla ciągów tekstowych ze stylem: umożliwia ona konwersję ciągu znaków oznaczonego tagami HTML na format AnnotatedString. Pamiętaj, że nie wszystkie tagi są obsługiwane, na przykład nie będzie jeszcze można wyświetlać list punktowanych. (I84d3d).
  • Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania w usłudze Compose za pomocą oficjalnego interfejsu API Androida (ScrollCaptureCallback). Ta funkcja jest eksperymentalna i obecnie może nie obsługiwać wszystkich przypadków poprawnie. Z tego powodu jest ono domyślnie wyłączone. Aby wyrazić zgodę, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość true. Ta flaga zostanie usunięta w wersji beta przed wersją 1.7. (I2b055, b/329296471)
  • Wprowadzaj nowy interfejs API GraphicsLayer, aby zapewnić większą elastyczność w umieszczaniu i renderowaniu instancji GraphicsLayer oraz obsługiwać wbudowane funkcje renderowania bez konieczności koordynowania z implementacjami kompozycyjnymi określania instancji modyfikatora GraphicsLayer.

Zmiany interfejsu API

  • Wszystkie parametry KeyboardOptions domyślnie mają teraz nieokreśloną wartość. Dodano metodę KeyboardOptions.merge.
  • Nazwa KeyboardOptions.autoCorrect została zmieniona na autoCorrectEnabled i ma wartość null (null), gdzie wartość null nie została określona. (Ia8ba0, b/295951492)
  • Nazwa outOfBoundsPageCount została zmieniona na beyondViewportPageCount. (I129c6)
  • Rola fun ClipEntry.getMetadata() została zmieniona na: val ClipEntry.clipMetadata. (I50155)
  • Użytkownik TextFieldState.valueAsFlow() został usunięty. Wolę używać: snapshotFlow { state.text } lub snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629)
  • Zmieniono organizację parametrów InputTransformation.transformInput. Użytkownik originalValue: TextFieldCharSequence został usunięty. Zamiast tego TextFieldBuffer ma teraz tę wartość z taką samą nazwą. Usunięto też parametr valueWithChanges: TextFieldBuffer. TextFieldBuffer jest teraz zakresem odbiornika funkcji. (I919cc)
  • Wariant BasicTextField(state) i BasicSecureTextField używają teraz parametru KeyboardActionHandler zamiast KeyboardActions do przetwarzania działań wykonanych przez klawiaturę programową. (I58dda)
  • Interfejsy API przekazywania pisma odręcznego rysikiem do obsługi pisma odręcznego rysikiem na „fałszywym” pola do wprowadzania tekstu. (I9c09c, b/327271923)
  • Nazwa KeyboardOptions.shouldShowKeyboardOnFocus została zmieniona na showKeyboardOnFocus. (Ib4b7a, b/295951492)
  • Z parametru Modifier.contentReceiver usunięto parametr hintMediaTypes. Zachęcamy deweloperów do sprawdzenia otrzymanego typu multimediów TransferableContent, ponieważ może on być niezgodny ze skonfigurowaną wartością hintMediaTypes. (I82f99)
  • Zmieniono kolejność parametrów parametru BasicSecureTextField. Usunięto parametry keyboardType i imeAction na rzecz pełnej klasy KeyboardOptions przy zachowaniu tych samych wartości domyślnych odpowiednich dla klasy BasicSecureTextField. Usunięto też parametr scrollState. (Ibbfa9).
  • Typ użytkowniczki TextFieldState.text został zmieniony z TextFieldCharSequence na tylko CharSequence. W związku z tym dodano TextFieldState.selection: TextRange i TextFieldState.composition: TextRange?, aby odczytywać obecne wartości zaznaczenia i kompozycji bezpośrednio z obiektu stanu.
  • Użytkownik TextFieldState.forEachTextValue został usunięty. (Idb2a2)
  • Usunięto funkcje ClipboardManager.getClipMetadata i ClipboardManager.hasClip. Użyj clipEntry.getMetadata(), aby odczytać metadane bieżącego wpisu. Sprawdź też, czy wynik funkcji ClipboardManager.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 funkcji Modifier.receiveContent, które wymaga funkcji lambda, ponieważ ReceiveContentListener jest teraz interfejsem funkcji.
  • Nazwa Modifier.receiveContent została zmieniona na Modifier.contentReceiver. (I1e6af).
  • Nazwa TransferableContent.consumeEach została zmieniona na TransferableContent.consume. (I1e462).
  • Usługa rememberTextFieldState jest teraz dostępna w wersji stabilnej. (I37999)

Poprawki błędów

  • Naprawiliśmy błąd 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 operacji anchoredDrag. (I95715)

Wersja 1.7.0-alpha05

20 marca 2024 r.

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

Zmiany interfejsu API

  • Usunięto eksperymentalną kompozycję LocalTextLinkStyle lokalną na potrzeby określania stylu hiperlinków. (Iebfa7).
  • Usunięto eksperymentalne zastąpienie funkcji BasicText z onLinkClicked argumentem. W przyszłości wprowadzimy zamienny interfejs API do obsługi hiperlinków. (I107d5)
  • W dokumentach TextFieldState i TextFieldBuffer usunęliśmy metody i właściwości związane z punktami kodu. Usunięto też sufiksy inChars z pozostałych interfejsów API związanych z wyborem i kompozycją. (Ief7ce).
  • Pole currentValue przeglądarki AnchoredDraggable będzie teraz aktualizowane podczas przechodzenia przez punkt zakotwiczenia. Użyj metody settledValue, 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 i TextFieldDecorator zostały przekształcone w wersji stabilnej. (I9582b)
  • Wprowadziliśmy interfejs InterceptPlatformTextInput, który ułatwia pisanie testów IME niskopoziomowych oraz innych niskopoziomowych zastosowań. Usługa PlatformTextInputTestOverride została wycofana. (I862ed, b/322680547)
  • Podziel restrictedConstraints() na 2 metody: fitPrioritizingWidth() i fitPrioritizingHeight() (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 dodano hintLocales, aby umożliwić w narzędziu TextFields 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 i BasicSecureTextField, które miały parametry value: String i onValueChange: () -> String. (I568b4)
  • Dodaj opcjonalną funkcję applySemantics do elementu InputTransformation, aby wpłynąć na semantykę elementu BasicTextField2, 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 na BasicTextField. (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 Androida View 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 lub readOnly wartości TextField 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ści LayoutCoordinates elementu Modifier.Node bez konieczności zastępowania parametru onPlaced i samodzielnego zapisywania współrzędnych w usłudze. (IA8657).
  • Wprowadzono DelegatableNode.currentLayoutCoordinates, aby umożliwić uzyskiwanie obecnej wartości LayoutCoordinates elementu Modifier.Node bez konieczności zastępowania parametru onPlaced 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 pakietu androidx.compose.foundation.text2 zostały przeniesione do androidx.compose.foundation.text. (I9f635)
  • Funkcja BasicTextField2 nie akceptuje już parametru CodepointTransformation. Użyj formy płatności BasicSecureTextField lub OutputTransformation. (Id34ff).
  • Dodano metodę porównywania tylko adnotacji dwóch elementów typu AnnotatedStrings. (I32659)
  • Przedstawiamy ContextualFlowRow i ulepszone FlowRow/Column w usługach MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnej wersji FlowRow i FlowColumn, które oprócz debiutu ContextualFlowRow i ContextualFlowColumn 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 kolei FlowRow i FlowColumn są idealne w przypadku niewielkiej liczby elementów, która nie przekracza 100 elementów. Ważne: aby zachować obecne zachowanie w funkcjach FlowRow i FlowColumn, w których wszystkie elementy są złożone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw overflow na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Zapoznaj się z usługami ContextualFlowRowSample i FlowRowSample, aby zobaczyć przykłady tych nowych funkcji w praktyce. (Ib9135, b/293577082)

Poprawki błędów

  • Animacja kursora nie wysyła już żądań klatek między stanem włączenia i wyłączenia. (IA2253).
  • KeyboardOptions' Wycofane konstruktory tekstu będą teraz prawidłowo kopiować wszystkie właściwości. (If12de).

Wersja 1.7.0-alpha02

7 lutego 2024 r.

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

Zmiany interfejsu API

  • HorizontalPager, VerticalPager i PagerState są awansowane do wersji stabilnej. (I67660, b/316966909)
  • Dodano lokalną kompozycję LocalTextLinkStyle, która pozwala zmieniać styl linków w tekście w aplikacji. Jeśli używasz w aplikacji własnego motywu, ustaw tę kompozycję lokalnie zgodnie z motywem. Gdy używasz motywu Material Design, kolor linku jest domyślnie ustawiony na główny kolor materiału. (I7eb10).
  • Wprowadzono modyfikator receiveContent, który umożliwia deweloperom odbieranie treści multimedialnych w Jetpack Compose.
  • receiveContent integruje się z usługą BasicTextField2, aby akceptować multimedialne treści dostarczane przez klawiaturę programową lub korzystając z funkcji wklejania ze schowka. (I81b72)
  • W ramach tej zmiany zastępujemy funkcję SnapFlingBehavior na stronie typu TargetedFlingBehavior, 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 obiekt FlingBehavior, 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 implementacje Indication są bardziej wydajne w porównaniu z poprzednim (wycofanym) interfejsem rememberUpdatedInstance API. Informacje o migracji znajdziesz na stronie developer.android.com.
  • Funkcja clickable / combinedClickable / selectable / toggleable akceptuje teraz parametr MutableInteractionSource, który może przyjmować wartości null. Jeśli wartość to null, a podana wartość Indication to IndicationNodeFactory, Indication można utworzyć leniwie tylko wtedy, gdy jest to konieczne, co zwiększa wydajność. Jeśli nie podnosisz danych ani nie używasz MutableInteractionSource, zalecamy przekazywanie wartości null.

Zmiany interfejsu API

  • Wprowadzenie funkcji DecayAnimation w AnchoredDraggable. Ta zmiana dodaje do AnchoredDraggable parametr decayAnimationSpec, który umożliwia użycie animacji spadku udziału po wybraniu jednej z reklam zakotwiczonych. Zmiana obejmuje też zmianę nazwy obecnej animationSpec na snapAnimationSpec, 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 w BasicTextField, 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 na BasicTextField i przeniesiona do tego samego pakietu.
  • Wprowadzono pierwszą wersję roboczą interfejsu OutputTransformation API dla BasicTextField2. Ten interfejs API zastępuje większość przypadków użycia funkcji VisualTransformation w starej wersji BasicTextField. Jednak nie został on jeszcze ukończony i niektóre funkcje mogą nie działać prawidłowo. Chętnie poznamy jednak Twoją opinię o możliwości interfejsu API w Twoich przypadkach. (Aosp/2708848).
  • Wprowadzenie funkcji LinkAnnotation, która umożliwia dodawanie do tekstu linków i klikalnych elementów. Funkcja linków nie jest jeszcze ukończona i wkrótce wprowadzimy kolejne zmiany w interfejsie API.
  • Wprowadzono modyfikator receiveContent, który umożliwia deweloperom odbieranie treści multimedialnych w Jetpack Compose.
  • receiveContent integruje się z usługą BasicTextField2, aby akceptować multimedialne treści dostarczane przez klawiaturę programową lub wklejane ze schowka.
  • KeyboardOptions.shouldShowKeyboardOnFocus umożliwia wyłączenie domyślnego działania funkcji BasicTextField w postaci żądania klawiatury programowej w trybie zaznaczenia.
  • Zasady TextInputService i LocalTextInputService zostały wycofane. Aby integrować się bezpośrednio z interfejsami API platformy IME, użyj narzędzia PlatformTextInputModifierNode. (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 API IndicationNodeFactory.

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 lub readOnly wartości TextField powodowało awarię. (Iae17b).

Wersja 1.6.5

3 kwietnia 2024 r.

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

Poprawki błędów

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

Wersja 1.6.4

20 marca 2024 r.

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

Poprawki błędów

  • Gest zaznaczenia przez naciśnięcie i przytrzymanie, który w pierwszej ramce przeciągnięcia wykracza poza granice układu tekstu, nie ulega już awarii. (Icdf90, b/325307463)

Wersja 1.6.3

6 marca 2024 roku

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

Wersja 1.6.2

21 lutego 2024 r.

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

Poprawki błędów

  • Rozwiąż problem z resetowaniem urządzenia AnimateContentSize, który nie jest prawidłowo resetowany. (I07051)
  • Rozwiązaliśmy problem polegający na tym, że w niektórych przypadkach intrinsicHeight tekstu było nadmiernie zapisywane w pamięci podręcznej. (3cd398, b/217910352)

Wersja 1.6.1

7 lutego 2024 r.

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

Poprawki błędów

  • Poprawiono rozłożony w czasie pomiar siatki po najechaniu na limit. (bffc39)
  • Dodaj sprawdzanie układu o dużych wymiarach. (E74af5).
  • Popraw rozmieszczanie elementów o rozmiarze 0 na początku siatki rozłożonej w czasie. (785f94).
  • Wywołuj wywołanie zwrotne onRelease w tej samej kolejności co onForgotten. (31ce3b).

Wersja 1.6.0

24 stycznia 2024 r.

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

Ważne zmiany wprowadzone od wersji 1.5.0

  • Nowy modyfikator Modifier.anchoredDraggable, który umożliwia przeciąganie i animowanie między wstępnie zdefiniowanym zestawem reklam zakotwiczonych. Ten modyfikator ma zastąpić modyfikator Modifier.swipeable. Z przewodnika po migracji dowiesz się, jak z niego korzystać i jak przeprowadzić migrację z usługi Modifier.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 i AndroidEmbeddedExternalSurface, aby ułatwić dodawanie podczas tworzenia wiadomości komponentów zależnych od powierzchni
  • Różne zmiany i ulepszenia interfejsu API w Pager i snapFlingBehaviour
  • 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 dodatku object: DragAndDropTarget {}. (I32318)

Wersja 1.6.0-beta03

13 grudnia 2023 r.

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

Poprawki błędów

  • Usunięto awarię, która wpływała na bardzo duży tekst mierzony z nieskończonymi ograniczeniami. (I1a7df, b/312294386)
  • PlatformImeOptions 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() i LookaheadScope 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ące DragAndDropTarget 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 jednostki maximumFlingVelocity. (I8adc7).
  • onDragAndDropStart w: DragAndDropModifierNode Nazwa fabryki została zmieniona na acceptDragAndDropTransfer.

    Element acceptsDragAndDropTransfer został dodany do dragAndDropTarget Modifier, aby można było zaakceptować połączenie z sesji przeciągania i upuszczania. Ta funkcja lambda zwraca wartość wykonalną DragAndDropTarget, jeśli interesuje Cię sesja „przeciągnij i upuść”. Zastąpiły one inne parametry lambda do przetwarzania zdarzeń przeciągania.

    dodano funkcję fabryczną DragAndDropTarget w celu odbierania sesji przeciągania i upuszczania (Iebf3a)

  • Ujawnienie elementu startDragImmediately w narzędziu AnchoredDraggable 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 typ DragAndDropModifierNode.drag teraz zawiera parametry funkcji transferData, rozmiar dekoracji i przeciąganie elementów lambda DrawScope

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

    Nazwa onDragAndDropEvent w funkcji fabrycznej urządzenia DragAndDropModifierNode została zmieniona na onDragAndDropStart, aby lepiej poinformować, że podana wartość DragAndDropTarget jest ważna tylko w przypadku danej sesji przeciągania i upuszczania

    Karta DragAndDropEventType została usunięta (I645b1)

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

  • Zastąp OriginalText przez TextSubstitution. (Ifa5a8).

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

  • Elementy podrzędne elementu SubcomposeLayout (i układy takie jak LazyColumn), które są zachowywane do ponownego wykorzystania w przyszłości, są uznawane za wyłączone. Wprowadzono nowy testowy interfejs API assertIsDeactivated() do testowania takich węzłów. Pozostałe interfejsy API domyślnie odfiltrowują wyłączone węzły. (I2ef84, b/187188981)

  • Nazwa parametru clippingEnabled parametru Modifier.magnifier została zmieniona na clip.

  • Parametr magnifierCenter elementu Modifier.magnifier może mieć wartość null, ale zachowuje to samo domyślne działanie. (I6aa66).

  • Interfejsy API Material SwipeToReveal (w przypadku kart i elementów) do tworzenia tych przedziałów korzystają teraz z interfejsu API opartego na przedziałach (zgodnie z zaleceniem w narzędziu Compose), a nie instancji opartych na klasach danych. Jest to niezwykła zmiana. Przykłady korzystania z nowego interfejsu API znajdziesz w prezentacji i przykładowym kodzie. (IA8943).

Poprawki błędów

  • Zaimplementuj kod równa się i kod skrótu dla funkcji PageSize.Fixed. (Ie3ede, b/300134276)
  • Naprawiono błąd, który powodował, że układ BasicText nie zmniejszał się po zmianie parametru minWidth i o minWidth poniżej wartości ograniczenia wskaźnika początkowego maxWidth (Idb19c)
  • Dodano obsługę mechanizmu renderowania dla gradientu automatycznego w ArcLine. (I4d5bb)
  • 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 elemencie Modifier.dragAndDrawSource na drawDragDecoration, a parametr rozmiaru DragAndDropInfo na dragDecorationSize. (Id0e30, b/303904810)
  • Nazwa parametru decorationBox parametru BasicTextField2 została zmieniona na decorator. Zmieniono też typ interfejsu na taki sam fajny interfejs TextFieldDecorator. (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 na AndroidExternalSurface (I11680)
  • Dodano tymczasową flagę DisableNonLinearFontScalingInCompose, aby wyłączyć nieliniowe skalowanie czcionek. Dodaj DisableNonLinearFontScalingInCompose = 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 i ColorSet, które pozwalają uniknąć alokacji. (I744bd)
  • Ta zmiana powoduje usunięcie witryny shortSnapVelocityThreshold, która została przekształcona w szczegóły implementacji implementacji SnapLayoutInfoProvider. (I65f6d)
  • Dodaje modyfikator dragAndDropSource służący do rozpoczynania sesji metodą przeciągania i upuszczania oraz modyfikator dragAndDropTarget 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 w SnapPositionInLayout. (Id7938, b/300116110)
  • Do elementu TextFieldState dodano element UndoState, 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() i EmbeddedGraphicsSurface(). 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 parametru MagnifierStyle na rzecz parametrów wbudowanych w samym modyfikatorze. (I83bec, b/298381260, b/262367109, b/261438887)

Zmiany interfejsu API

  • updateCurrentPage i updateTargetPage wprowadzone w ScrollScope r. to ostatnie elementy niezbędne do dostosowania animowanego przewijania w PagerState.scroll. (I9cad5, b/267744105, b/243786897)
  • Usuń gęstość z: SnapFlingBehavior. Wszystkie implementacje interfejsu SnapLayoutInfoProvider mają już dostęp do gęstości. Zakres odbiorcy może zostać usunięty, co uprości implementację zarówno SnapFlingBehavior, jak i SnapLayoutInfoProviders. (I153C3).
  • Więcej modyfikatorów zostało oznaczonych jako stabilne. (I56af1, b/298046462)
  • Usunięto SnapStepSize z listy SnapLayoutInfoProvider. Obliczenia należy wykonać z użyciem informacji o układzie i przekazać je odpowiednią metodą oraz odsunięciami przyciągania. (If320c).

Zmiany w działaniu

  • Funkcja tworzenia wiadomości używa teraz nieliniowego skalowania czcionek, aby poprawić czytelność i dostępność. Gdy skala czcionki > 100% w ustawieniach systemowych, rozmiar małego tekstu jest normalnie powiększony, a już duży tekst tylko trochę. Ponadto wysokość wierszy określona w SP będzie automatycznie dostosowywana do zamierzonej wysokości skali 100%. Więcej informacji znajdziesz w artykule Sprawdzone metody skalowania czcionek. (I11518).

Poprawki błędów

  • Usuń możliwość dodawania znaczników rememberSaveable do etykiet. (Icc131, b/299500338)

Wersja 1.6.0-alpha05

6 września 2023 r.

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

Zmiany interfejsu API

  • Dodaj do funkcji BasicSecureTextField przeciążenia, które akceptują wartość stałą, oraz wywołanie zwrotne w celu jej zmiany, tak jak w przypadku obecnego interfejsu API BasicTextField. (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 i RecyclerView, są ograniczone do ViewConfiguration.ScaledMaximumFlingVelocity. Narzędzie Utwórz zawiera teraz własną wersję funkcji maximumFlingVelocity, która ma teraz zastosowanie do języka Draggable. (Ibf974).
  • Usunięto wycofane przeciążenia Pager i PagerState. (IEA07e).
  • Dodano element BasicTooltipBox do folderu compose.foundation oraz zaktualizowaliśmy PlainTooltipBox i RichTooltipBox, aby umożliwić użycie funkcji TooltipBox z nowymi kompozycjami PlainTooltip i RichTooltip. (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 API BasicTextField. (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ć rozmiar viewPort komponentu, który po przeprowadzeniu pomiaru używa ScrollState. (I8b85a, b/283102682)
  • Naprawiono błąd, który powodował, że pobieranie z wyprzedzeniem na stronie nie było zgodne z działaniem w widokach. (I93352, b/289088847)
  • Aplikacja Modifier.consumeWindowInsets(PaddingValues) jest teraz stabilna.
    • Interfejs API Deprecated Modifier.consumedWindowInsets został usunięty. Użyj w zamian zasady Modifier.consumeWindowInsets. (Id72bb)

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ści LazyLayoutItemProvider, 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 zasada readOnly 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 w Pager. Wprowadziliśmy również PageInfo, czyli informacje o pojedynczej mierzonej stronie w Pager. (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 i LocalSoftwareKeyboardController nie są już eksperymentalne. LocalSoftwareKeyboardController to teraz także prawidłowa wartość CompositionLocal. (I4c364)
  • Modifier.transformable podaje teraz wartość delta w parametrze canPan, by ułatwić określenie kierunku przesuwania, który umożliwia jego dopuszczenie lub zablokowanie. (I692aa, b/266829800)
  • Aktualizuje modyfikator consumeWindowInsets, aby rozszerzyć superklasę AbstractComposeView (Iacd74, b/269479941)

Wersja 1.6.0-alpha01

21 czerwca 2023 r.

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

Nowe funkcje

  • W sekcji Podstawy wprowadziliśmy nowy interfejs API AnchoredDraggable. Może służyć do tworzenia komponentów, które można przeciągać między różnymi stanami, np. modalnych arkuszy dolnych. Ten interfejs API zastępuje interfejs API Material Swipeable. (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 jak Scrollable odpowiadają na żądania bringIntoView. Zmieniono przeciążenie elementów przewijanych, aby opcjonalnie akceptowały wystąpienie instancji BringIntoViewCalculator. (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 niestandardowych FocusTarget. (I9790e)

Wersja 1.5

Wersja 1.5.4

18 października 2023 r.

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

Wersja 1.5.3

4 października 2023 roku

Usługa androidx.compose.foundation:foundation-*:1.5.3 została zwolniona. Ta wersja nie zawiera zmian.

Wersja 1.5.2

27 września 2023 r.

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

Poprawki błędów

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

Wersja 1.5.1

6 września 2023 r.

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

Poprawki błędów

  • Poprawiono pola tekstowe przedstawiające klawiaturę i można je było edytować, gdy readOnly ma wartość prawda. Rozwiązaliśmy też problem z klawiaturą, która nie wyświetlała się, gdy zasada readOnly 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 interfejsu Modifier.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 lokalizacji PagerState, 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 to AutoboxingStateCreation. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby zobaczyć to ostrzeżenie w edytorze Androida Studio oraz w danych wyjściowych projektu lint, zmień jego wagę z informacyjnej na ostrzeżenie (lub wyższe), zadeklarując warning "AutoboxingStateCreation" w konfiguracji build.gradle lub build.gradle.kts modułu, jak pokazano na przykładzie (I34f7e):

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

Wersja 1.5.0-beta03

28 czerwca 2023 r.

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. Interfejs SensorGateway został usunięty z publicznego interfejsu API. (I55b84)

Poprawki błędów

  • Ogranicz przydziały podczas leniwej listy, sieci reklamowej itp. pomiary (Iaf9e2)
  • Zmniejszone przydziały podczas stosowania zrzutów (I65c09)
  • Usunięto przydziały ze wiosennych animacji (Ie9431)
  • Usunięto alokację z: TextLayout (I0fd11)
  • Usunięto wiele przydziałów ze śledzenia prędkości wskaźnika (I26bae).

Wersja 1.5.0-alpha04

10 maja 2023 r.

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

Zmiany interfejsu API

  • Dodano zoptymalizowaną wartość TextStyle.merge(...) z pełną listą parametrów. (Iad234, b/246961787)
  • Przedstaw element SnapLayoutInfoProvider, którego można używać z: LazyGridState. (I92134, b/269237141, b/260914964)
  • Do zakresu leniwego rozłożonego siatki dodano eksperymentalną funkcję Modifier.animateItemPlacement(). Możesz go zastosować do elementów, aby osiągnąć automatyczną zmianę pozycji lub zmianę kolejności animacji. (I4b62d, b/257034719)
  • Zmień wersję GridCells.FixedSize na stabilną. Funkcja FixedSize określa pole LazyGrid, 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 na calculateSnappingOffset. 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 konta Horizontal/VerticalPager. Należy go podać podczas tworzenia stanu. Zaktualizowano PagerState i rememberPagerState, by zaakceptować pageCount. (Ieb52d, b/266965072)
  • Usuń pageCount z konta Horizontal/VerticalPager. Należy go podać podczas tworzenia stanu. Zaktualizowano PagerState i rememberPagerState, by zaakceptować pageCount. (Ifa3cb, b/266965072)
  • Przedstaw shortSnapVelocityThreshold w filmie SnapFlingBehavior użytkownika Pager. (I7379e, b/275579012)
  • Dodaje FlowRowScope i FlowColumnScope. (I54fe2)

Poprawki błędów

  • Wywołania sprawdzające semantykę w przypadku tekstu, gdy ograniczenia powodują, że minWidth i minHeight nie ulegają awarii. (IBD072)
  • Naprawiono regresję polegającą na tym, że w polach tekstowych w oknach, które nie zostały utworzone przez funkcję kompozycyjną Dialog, nie wyświetlała się klawiatura. (I82551, b/262140644)

Wersja 1.5.0-alpha03

19 kwietnia 2023 r.

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

W tej wersji włącza się nowy stos renderowania tekstu w funkcji Compose. Nowy stos jest zoptymalizowany pod kątem wydajności, więc nie zaobserwujesz w nim żadnych widocznych zmian.

Jeśli zauważysz zmiany w wyrenderowanym tekście, możesz przeprowadzić debugowanie, ustawiając NewTextRendering1_5 = false, aby potwierdzić różnicę w działaniu. Włączenie tej opcji wymusi zmianę kompozycji. Wszelkie różnice w działaniu zgłoś jako błędy.

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

Zmiany interfejsu API

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

Wersja 1.5.0-alpha02

5 kwietnia 2023 r.

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

Zmiany interfejsu API

  • Dodano obsługę komórek o stałym rozmiarze w tabeli LazyGrid i możliwość ich rozmieszczenia na osi krzyżowej. (I83ed9, b/235121277, b/267942510)
  • Dodano obsługę pasów o stałym rozmiarze w projekcie LazyStaggeredGrid i ich układania w poprzek osi. (I7d519)
  • Elementy UrlAnnotation w aplikacji AnnotatedString można teraz otwierać przy użyciu usług ułatwień dostępu takich jak TalkBack. (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 w FlowRow i horizontalArrangement w narzędziu FlowColumn. Usuwamy również kategorie verticalAlignment i horizontalAlignment najwyższego poziomu w tabeli FlowRow/FlowColumn. Zamiast nich deweloperzy mogą używać interfejsu Modifier.align. Pozwala to uniknąć nieporozumień między konwencjami nazewnictwa atrybutów verticalAlignment i verticalArrangement. (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. Modyfikator hoverable 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 i TextField, 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ą polecenia PlatformParagraphStyle.
  • Dodano obsługę pełnych rozpiętości linii do modelu LazyStaggeredGrid(I28252)
  • Dodaję eksperymentalne onHover do aplikacji ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTest i create*ComposeRule, które akceptują parametry CoroutineContext. Kontekst zostanie użyty w kompozycji testowej i wszelkich wywołaniach LaunchedEffect i rememberCoroutineScope() w kompozycji. (I10614, b/265177763)
  • Komponenty FlowRow i FlowColumn 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ędziu BasicTextField spowoduje teraz zaktualizowanie bufora tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowania (np. performTextReplacement).
  • Funkcje testowania tekstu performTextClearance, performTextReplacement i performTextSelection używają teraz SemanticsActions. (I0807d, b/269633168, b/269624358)

Wersja 1.4.0-beta02

22 lutego 2023 roku

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

Zmiany interfejsu API

  • Dodano nowe wywołanie zwrotne Modifier.Node.onReset(), które pozwala zresetować część stanu lokalnego, co pozwala prawidłowo obsługiwać zgłoszenie w przypadku ponownego użycia obiektu Layout (np. jako elementu LazyColumn). Naprawiono FocusTargetModifierNode, aby prawidłowo resetować stan skupienia. (I65495, b/265201972)
  • Dodaliśmy parametr BlendMode do metod DrawScope.drawText, Paragraph.paint i MultiParagraph.paint, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508)
  • Usunięto interfejs API modifierElementOf(). Zamiast tego skorzystaj z rozszerzonego połączenia bezpośrednio z usługi ModifierNodeElement. (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 i TextField 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ą polecenia PlatformParagraphStyle.

Zmiany interfejsu API

  • Dodaliśmy wspólną implementację interfejsu API PinnableContainer używanego we wszystkich komponentach LazyLayouts w celu zachowywania elementów, które wychodzą z kompozycji, ale muszą być aktywne. (If45a4).
  • Nazwa usługi PinnableContainer.PinnedHandle.unpin() została zmieniona na release() (I4667a)

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

  • Dodano właściwość mainAxisItemSpacing do tagów LazyListLayoutInfo, LazyGridLayoutInfo i LazyStaggeredGridItemInfo (I52fad)

Wersja 1.4.0-alpha05

25 stycznia 2023 r.

androidx.compose.foundation:foundation:1.4.0-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 aplikacji ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTest i create*ComposeRule, które akceptują parametry CoroutineContext. Kontekst zostanie użyty w kompozycji testowej i wszelkich wywołaniach LaunchedEffect i rememberCoroutineScope() w kompozycji. (I10614, b/265177763)

Zmiany interfejsu API

  • Scala interfejsy API przed i po OverscrollEffect w połączone interfejsy „decorator” funkcji applyToScroll i applyToFling. 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 i Hyphens w środowisku TextStyle 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 w TextInputSession i TextInputService 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 i FlowColumn 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

  • FocusRequesterModifierFocusRequesterNode
  • Konstruktor AndroidFont z atrybutem variationSettings 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 funkcja Modifier.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 jako Static(default) lub Animowany. Użyj wartości TextMotion.Animated, jeśli tekst ma być skalowany, tłumaczony lub obrócony za pomocą animacji. (I24dd7)
  • Dodaj TextFieldFocusModifier, aby rozwiązać problem z nawigacją w przypadku platformy Android (I00303)
  • Zastąpiono argument maxSize: IntSize w funkcji drawText elementem size: Size, który będzie wbudowany z innymi funkcjami DrawScope. 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 do androidx.compose.foundation:1.4.0-alpha04 może wystąpić błąd java.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 biblioteki androidx.compose.material i androidx.compose.material3 do najnowszej wersji(1.1.0-alfa04) lub przywróć pakiet androidx.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łuje withFrameNanos lub withFrameMillis, i ma logikę poza wywołaniem zwrotnym przekazywaną do tych funkcji, które być może trzeba przenieść w obrębie wywołań zwrotnych. Przykłady zmian znajdziesz w tej liście zmian.
  • Do konstruktora i funkcji fabrycznej TestMonotonicFrameClock dodano opcjonalny parametr onPerformTraversals: (Long) -> Unit w celu uruchamiania kodu po wywołaniach zwrotnych withFrameNanos, ale przed wznowieniem działania wywołującego współrzędne. (Idb413, b/254115946, b/222093277, b/255802670)
  • Przedstaw działania ułatwień dostępu na stronie: PageUp, PageDown, PageLeft, PageRight. Pamiętaj, że są one dostępne tylko w interfejsie API 29. (Ida4ab).
  • Przedstaw HorizontalPager i VerticalPager – 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śmy PageSize, czyli sposób kontrolowania rozmiaru strony pagera. Pozwala on utworzyć karuzelę, taką jak pagery. Wprowadziliśmy PagerSnapDistance, czyli sposób kontrolowania działania przyciągania w zachowaniu przesuwania w Pager. (I01120).
  • Wprowadziliśmy przeciążenie w obszarze SnapFlingBehavior.performFling, aby pomóc zrozumieć, gdzie się rozwinie. (I569f6)
  • Użytkownik OverscrollEffect#isEnabled został usunięty. Zamiast zapamiętywać i ustawiać tę flagę, po prostu nie wysyłaj zdarzeń do efektu przewinięcia w sytuacjach, gdy nie chcesz wyświetlać nadmiernego przewijania (np. gdy oba parametry ScrollableState#canScrollForward/backward zwracają wartość fałsz). (I1a4b0, b/255554340, b/255557085)
  • Dodano zmienne ScrollableState#canScrollForward i ScrollableState#canScrollBackward, aby sprawdzić, czy element ScrollableState 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 implementacjami ScrollableState. 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 funkcji ScrollableStates, 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 elementu Scrollable ViewGroup.
  • Zaktualizowaliśmy panele i panele, tak aby prawidłowo opóźniały naciśnięcia, gdy gesty mogą stać się zdarzeniami przewijania.
  • Zaktualizuj nazwy plików snapStepSize, aby były spójne z innymi metodami w narzędziu SnapLayoutInfoProvider. (Ife67c).
  • Dodano EmojiCompat do listy Compose (Ibf6f9, b/139326806)
  • Zmieniono nazwę consumedWindowInsets() na consumeWindowInsets(), a withConsumedWindowInsets() na onConsumedWindowInsetsChanged() 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 i waitForUpOrCancellation akceptują teraz PointerEventPass, 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 i BasicTextField dodaliśmy parametr minLines. Pozwala ustawić minimalną wysokość tych elementów kompozycyjnych w postaci liczba wierszy (I24294, b/122476634)

Wersja 1.4.0-alpha01

24 października 2022 r.

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

Zmiany interfejsu API

  • Dodano nową metodę (awaitEachGesture()) do wykrywania gestów. Jej działanie jest podobne do forEachGesture(), ale pętla gestów działa w całości w obrębie AwaitPointerEventScope, więc zdarzenia nie mogą zostać utracone między iteracjami.
  • Funkcja forEachGesture() została wycofana i zastąpiona awaitEachGesture(), ponieważ umożliwia utratę zdarzeń pomiędzy gestami. (Iffc3f, b/251260206)
  • Dodano WindowInsets.imeAnimationSource i WindowInsets.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 i LazyHorizontalStaggeredGrid.
  • SnapFlingBehavior, rememberSnapFlingBehavior i inne powiązane interfejsy API zostały dodane jako eksperymentalne.
  • Urządzenia Modifier.clickable, Modifier.toggleable i Modifier.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 z constraints: Constraints w metodzie TextMeasurer.measure, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)
  • Dodano Modifier.withConsumedWindowInsets(), aby wykorzystać WindowInsets do wykorzystania poza windowInsetsPadding.
  • Dodano MutableWindowInsets, aby umożliwić łatwą zmianę elementu WindowInsets 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 i FocusDirection.Out została zmieniona na FocusDirection.Enter i FocusDirection.Exit (Ia4262, b/183746982)
  • Wprowadziliśmy przeciążenie funkcji rememberSnapFlingBehavior, które umożliwia szybkie włączenie przyciągania w LazyLists. (Ifb48a).
  • Zastąpiliśmy fabrykę urządzenia snapFlingBehavior betonową klasą SnapFlingBehavior. Ograniczono zakres metod SnapLayoutInfoProvider 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 potrzeba LazyListState, aby utworzyć instancję SnapLayoutInfoProvider, która może zostać użyta do włączenia przerwy FlingBehavior w LazyLists. (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 element pointerPosition – efekty, które zależą od pozycji wskaźnika, mogą używać parametru Modifier.pointerInput { } w elemencie effectModifier, aby uzyskać bieżącą pozycję wskaźnika. (I9f606, b/241239306)
  • Przedstawiono AwaitPointerEventScope#awaitLongPressOrCancellation jako dodatkowy element składowy umożliwiający bardziej złożone wykrywanie gestów (I04374, b/181577176)
  • Wprowadziliśmy lazyListSnapLayoutInfoProvider, aby umożliwić przyciąganie na leniwe listy. (I3ecdf).
  • Wprowadziliśmy SnapFlingBehavior – funkcję przesuwania, która umożliwia przyciąganie do list. Podaj instancję SnapLayoutInfoProvider z informacjami o układzie przyciągania. (IE754C)

Wersja 1.3.0-alfa03

10 sierpnia 2022 r.

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

Zmiany interfejsu API

  • Czcionki zasobów obsługują teraz ustawianie ustawień wariantów czcionek (API w wersji 26 lub nowszej). (I900dd, b/143703328)
  • Obsługa zmiennych czcionek w DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Usunięto adnotacje eksperymentalne z PlatformTextStyle i LineHeightStyle. (I64bef).
  • Pola tekstowe będą teraz zgłaszać bardziej szczegółowe wyjątki, gdy OffsetMapping podany przez VisualTransformation 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 do LayoutInfo.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 niego SoftwareKeyboardController w kodzie aplikacji i TextInputSession 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ę rozszerzenia drawText, która umożliwia rysowanie tekstu o różnych stylach w elementach kompozycyjnych i modyfikatorach działających w elemencie DrawScope, takim jak Canvas i drawBehind. (I16a62, b/190787898)

Poprawki błędów

  • Klawiatura ekranowa jest teraz ukryta, gdy pole tekstowe jest wyłączone, gdy jest zaznaczone. (I6e3e4, b/237308379)
  • Przy dodawaniu zdarzeń InputEventChange do trackera prędkości będziemy teraz brać pod uwagę delta, a nie pozycje, co zagwarantuje, że we wszystkich przypadkach prędkość zostanie prawidłowo obliczona (Icea9d, b/216582726, b/223440806, b/227709803).
  • Gdy element przewijany ma zaznaczony element podrzędny, będzie się on prawidłowo przewijać, nawet gdy rozmiar elementu zamówienia zostanie zmniejszony, nawet gdy rozmiar jest animowany. (I80867, b/230756508, b/220119990)
  • Rozwiązaliśmy problem, który powodował, że pole TextField zostało wyczyszczone i uzupełnione, gdy zaznaczenie jest aktywne. (I1235b, b/208655565, b/214253689)

Wersja 1.3.0-alpha01

29 czerwca 2022 r.

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

Zmiany interfejsu API

  • Wprowadziliśmy typ adnotacji UrlAnnotation i powiązane z nim metody, które umożliwiają obsługę linków TalkBack w AnnotatedString. (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 i LazyHorizontalGrid 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ążenia Modifier.scrollable, które je akceptują.
  • Eksperymentalna funkcja LocalOverScrollConfiguration została przeniesiona z foundation.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ędziu LazyLayout. (Id6fab, b/233352497)
  • Usunięto wycofany atrybut LazyVerticalGrid z pakietu androidx.compose.foundation.lazy. Nowy stabilny interfejs API znajduje się w regionie androidx.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 i MutableIntervalList. Umożliwia on zapisanie pewnej listy wartości w kilku przedziałach. Przydaje się to, gdy chcesz zdefiniować własny DSL podobny do używanego w LazyColumn, 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 wstawienia ime są zgłaszane już od wersji 23, ale tylko animowane w przypadku użytkowników, którzy ukończyli 30 lat. (Ia7fc0, b/230756508)
  • Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie będzie już powodować błędów.
  • Argumenty DeleteSurroundingTextCommand i DeleteSurroundingTextInCodePointsCommand wymagają teraz, aby argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)

Wersja 1.2.0-beta02

18 maja 2022 r.

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

  • Rozdzielczość czcionki do pobrania, która nie zmienia rozmiaru układu w przypadku tekstu lub tekstu TextField wcześniej, nie powoduje ponownego renderowania czcionki, co powoduje, że czcionka jest nieaktualna. Ten błąd sprawia, że układ tekstu zawsze wywołuje ponowne rysowanie (b/229727404). (I1d49e, b/229727404)

Wersja 1.2.0-beta01

11 maja 2022 roku

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

Nowe funkcje

  • Pierwsza wersja beta 1.2.

Zmiany interfejsu API

  • Dodano eksperymentalne BeyondBoundsInterval, których można używać dzięki niestandardowym implementacjam LazyList, gdy elementy układu wykraczają poza widoczne granice (Ifabfb, b/184670295)
  • Nazwa LineHeightBehavior została zmieniona na LineHeightStyle
  • Nazwa LineVerticalAlignment została zmieniona na LineHeightStyle.Alignment
  • Zmienia nazwę LineHeightTrim na LineHeightStyle.Trim
  • Domyślne wartości konstruktora z LineHeightStyle zostały usunięte (I582bf, b/181155707)
  • Dodaliśmy wartości domyślne opcjonalnych użytkowników interfejsu LazyLayoutItemProvider. (IBa8a0).
  • W interfejsie API LazyLayoutItemProvider zamiast fabryki zwracającej przez indeks funkcję kompozycyjną lambda mamy teraz prostszą funkcję kompozycyjną przyjmującą indeks. (Id2196).
  • Nazwa LazyLayoutItemsProvider została zmieniona na LazyLayoutItemProvider (I0638c)
  • Nazwa LazyLayoutItemsProvider.itemsCount została zmieniona na itemCount (Id409c)
  • W funkcjach TextStyle i SpanStyle dodaliśmy Pędzel, aby umożliwić rysowanie tekstu przy użyciu koloru gradientowego. (I53869, b/187839528)
  • trimFirstLineTop, trimLastLineBottom atrybutu Pole LineHeightBehavior zostało zmienione w pojedynczą wyliczenie: LineHeightTrim. LineHeightTrim mają wartości 4 stanów zdefiniowane za pomocą 2 wartości logicznych: FirstLineTop, LastLineBottom, oba i brak (Ifc6a5, b/181155707)
  • Dodanie atrybutu LineHeightBehavior do elementów TextStyle i ParagraphStyle. LineHeightBehavior określa, czy wysokość wiersza jest stosowana u góry pierwszego i na dole ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni udostępnionej przez funkcję TextStyle(lineHeight).

    Można na przykład uzyskać działanie podobne do tego, jakie stosuje CSS definiuje za pomocą funkcji LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

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

  • Dodano eksperymentalny modyfikator imeNestedScroll(), aby deweloperzy mogli sterować edytorem IME przez przewijanie. (I60759)

Poprawki błędów

  • Naprawiliśmy problem regresji, w którym pola tekstowe nie ukrywały klawiatury po usunięciu jej z kompozycji, gdy była ona zaznaczona. (I7a410, b/230536793, b/225541817)
  • Obsługuj wielokropek, gdy wysokość jest ograniczona i nie mieści się w wszystkich wierszach tekstu (Ie528c, b/168720622)
  • BringIntoViewRequester.bringIntoView będzie teraz zawieszać działanie usługi do momentu zrealizowania żądania lub przerwania go przez nowsze, które nie nakłada się na siebie. Pokrywające się żądania trafią do kolejki. (I43e7f, b/216790855)
  • Równoczesne wywołania BringIntoViewRequester.bringIntoView prostokątów, które całkowicie się nakładają, będą teraz uwzględniać tylko do żądania większego prostokąta. (I34be7, b/216790855, b/184760918)
  • Włączono domyślne ustawienia: includeFontPadding. Możesz wyłączyć funkcję includeFontPadding za pomocą atrybutu TextStyle.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 przycinaniem TextField. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester nie używa już adresu onGloballyPositioned. (I630f5)

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

  • Wartość MouseInjectionScope.scroll(delta = someDelta) jest teraz odwrócona na Androidzie, gdy przewinie się w pionie (jeśli wartość delta jest dodatnia, przewinie się w dół) (Ifb697, b/224992993).

Wersja 1.2.0-alpha08

20 kwietnia 2022 r.

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

Zmiany interfejsu API

  • Wyświetlaj wszystkie dostępne wagi czcionek systemowych w Androidzie podczas korzystania z funkcji FontFamily.SansSerif. Spowoduje to wewnętrznie użycie zastępczych nazw czcionek takich jak bezszeryfowa-średnia w interfejsie API 21–28. Jest to zmiana działania, ponieważ w interfejsach API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992)
  • Akapit i wiele akapitów akceptują teraz parametr ograniczeń. Przejście Constraints.maxHeight jest obecnie niemożliwe, ale pozwoli i robić w przyszłości jakieś obliczenia, np. orbitrek na podstawie wysokości. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akceptuje teraz niestandardową klasę podobną do MutableSet, która nie pozwala na dodawanie nowych elementów. (ICD314).
  • Częściowe wykorzystanie (pozycja w dół LUB w pozycji) zostało wycofane w funkcji PointerInputChange. Aby w pełni zastosować zmianę, możesz użyć polecenia consume(). Parametr isConsumed 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 PointerInputChange zostaną zużyte. Jeśli chcesz utworzyć nieograniczony PointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)
  • Wprowadzamy nowy eksperymentalny interfejs API LazyLayout. Pozwoli Ci to tworzyć własne komponenty, np. LazyColumn z LazyVerticalGrid. Pamiętaj, że interfejs API jest w fazie wstępnej i może zostać zmieniony w kolejnych wersjach. (Iba2bc, b/166591700)
  • Funkcja AndroidFont przyjmuje teraz typefaceLoader jako parametr konstruktora. (I2C971)
  • 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 i LazyGridLayoutInfo mają teraz pola beforeContentPadding i afterContentPadding (I3b628, b/200920410)
  • Dodano separator dziesiętny w edytorze IME jako alternatywę dla Keyboard.Number (KeyboardType.Decimal). (Iec4c8, b/209835363)
  • Dodaj nowy deskryptor czcionki Font(DeviceFontFamilyName) do opcjonalnie sprawdzanie czcionek zainstalowanych przez system w łańcuchach zastępczych czcionek. (I30468, b/219754572)
  • PointerEventType.Scroll i PointerEvent.scrollDelta to obecnie stabilne interfejsy API (I574c5, b/225669674)
  • Dodaną tymczasową konfigurację zgodności includeFontPadding w TextStyle/ParagraphStyle. includeFontPadding można zmienić w narzędziu TextStyle(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 osobne ComposeViews w hierarchii do każdego zastosowania WindowInsets bez zakłócania siebie nawzajem. (I0ef08, b/220943142)

Wersja 1.2.0-alpha06

23 marca 2022 r.

androidx.compose.foundation:foundation:1.2.0-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, a focusProperties() ma teraz wszystkie możliwości usługi focusOrder(). Usługi FocusOrder i focusOrder() zostały wycofane. Pole focusOrder(), które akceptuje wartość focusRequester, należy zastąpić modyfikatorem focusRequester() w połączeniu z zasadą focusProperties(). Dzięki temu modyfikatory lepiej odseparują potencjalne problemy. (I601b7)
  • Dodano WindowInsets.asPaddingValues(Density), aby umożliwić programistom wykonywanie konwersji bez konieczności tworzenia kompozycji. (I94c35)
  • Zaktualizowaliśmy analizę analizy obiektów rysowanych wektorowo, aby zapewnić obsługę automatycznego odbicia lustrzanego w celu odwrócenia zawartości obiektu VectorPainter w przypadku bieżącego układu. kierunek: od prawej do lewej. (I79cd9, b/185760237)

Poprawki błędów

  • Modyfikatory przewijania (Modifier.verticalScroll(), Modifier.horizontalScroll() i Modifier.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 i LazyHorizontalGrid są teraz stabilne. (I307C0)
  • Pole LazyGridItemInfo.Unknown zostało zastąpione oddzielnymi elementami LazyGridItemInfo.UnknownRow i LazyGridItemInfo.UnknownColumn (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid i wszystkie powiązane interfejsy API zostały przeniesione do .grid podpakietu. Zaktualizuj importy z: androidx.compose.foundation.lazy do: androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • Tekst: includeFontPadding jest teraz domyślnie wyłączony. obsługiwane są problemy z przycinaniem wynikające z funkcji includeFontPadding=false i nie powinny być przycinane w przypadku wysokich skryptów. (I31c84, b/171394808)
  • Interfejs pomiaru ujawnia teraz właściwośćparentData (I3313f)
  • Wprowadzono eksperymentalne Modifier.onFocusedBoundsChanged, aby zezwolić i obserwując granice elementów, które można zaznaczyć. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • Dodano opcję LazyLevelGrid. (I61ae7, b/191238807)
  • Dodano nowy interfejs API LazyVerticalGrid do definiowania rozmiarów osi krzyżowych (I17723)
  • Dodano modyfikator grupy fokusu (I64bc0, b/213508274, b/184670295)

Poprawki błędów

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

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

  • Zaktualizowano, aby korzystać z współrzędnych Kotlinx w wersji 1.6.0 (I3366d)

Wersja 1.2.0-alfa04

23 lutego 2022 r.

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

Zmiany interfejsu API

  • BringIntoViewResponders nie trzeba już robić ręcznie przekazują prośby rodzicom, którzy wypełnią formularz, natychmiast zwraca prostokąt, który ma przynosić rodzic jest tak samo widoczna. (I8E66a)
  • Obsługa wczytywania czcionki asynchronicznego w tekście (I77057, b/214587005)
  • LazyVerticalGrid obsługuje teraz wartość line breaking przed elementami, których rozpiętość nie mieści się w bieżącym wierszu. (I05c40, b/207462103)
  • Zmieniono nazwę z excludeFromSystemGestures na systemGesturesExclusion (I19526).
  • LazyVerticalGrid obsługuje teraz układ odwrotny. (I6d7d7, b/215572963, b/211753558)
  • Dodaj metodę WindowInsets.only(), aby umożliwić programistom , aby uwzględnić tylko wymiary z elementów WindowInsets. (I14c94, b/217768486)
  • Dodano ComposableTarget, ComposableTargetMarker i ComposableOpenTarget, który umożliwia raportowanie w czasie kompilacji funkcja kompozycyjna jest nazywana kierowaniem na aplikację, do której nie była potrzebna stworzonych z myślą o użytkownikach.

    W większości przypadków adnotacje można wywnioskować na podstawie sposobu tworzenia kompilatora, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Przypadki, których nie można wywnioskować, to na przykład utworzenie za pomocą abstrakcyjnego narzędzia kompozycyjnego (takiego jak metod interfejsu), pola lub zmienne globalne, które są kompozycyjne lambda (wnioskowane zmienne i parametry lokalne), lub gdy używasz funkcji ComposeNode lub powiązanych funkcji kompozycyjnych.

    W przypadku aplikacji niestandardowych funkcje kompozycyjne wywołujące ComposeNode lub ReusableComposeNode muszą dodać CompoableTarget adnotacji dla funkcji i dowolnych kompozycyjne typy parametrów lambda. Zalecane jest jednak aby utworzyć adnotację z adnotacją ComposableTargetMarker, a oznaczona adnotacja będzie używana zamiast ComposableTarget. Adnotacja kompozycyjna oznaczony za pomocą atrybutu ComposableTargetMarker jest odpowiednikiem funkcji ComposbleTarget z pełną i jednoznaczną nazwą atrybutu jako parametr aplikacji. Na przykład za pomocą funkcji ComposableTargetMarker zobacz: anroidx.compose.ui.UiComposable. (I38f11)

Poprawki błędów

  • Teraz można przekazywać ujemne przesunięcia przewijania do elementów LazyGridState.scrollToItem() i LazyGridState.animateScrollToItem(). (I025c6, b/211753558)
  • Obsługa asynchronicznego wczytywania czcionki w polu TextField. (Icc4bf, b/214587005)

Wersja 1.2.0-alfa03

9 lutego 2022 r.

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

Zmiany interfejsu API

  • notifyFocusedRect metod w: TextInputSession i Funkcje TextInputService zostały wycofane i nie będą wywoływane. Używaj BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Włączono animacje dla elementów leniwych siatek z funkcją Modifier.animateItemplacement(). (Ib6621, b/211753218)
  • BringIntoViewRequester przekazuje teraz żądania do hostingu Widok Androida. (Ia7a51).
  • Usługa FontFamilyResolver jest teraz dostępna przez LocalFontFamilyResolver.current
    • Dodano createFontFamilyResolver(context) i createFontFamilyResolver(context, coroutineScope), aby utworzyć nowy element resolvery FontFamily inne niż użycie funkcji tworzenia wiadomości.
    • Akapit i kilka akapitów zajmują teraz FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolvera używanego dla tego układu, wycofane TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)
  • Dodano AndroidFont, nowy niskopoziomowy interfejs API do obsługi nowych typów deskryptorów zasobów czcionek na Androidzie. Na przykład ładowanie czcionek z: backend związany z określoną aplikacją z opcjonalną lokalizacją zainstalowanych czcionek. na urządzeniu lub ładuję czcionkę z zasobu, który nie został dostarczony przez aktualną Fabryki czcionek.
    • Rozwinięto interfejs API Font.ResourceLoaded, aby obsługiwał opcjonalny i asynchroniczny podczas wczytywania czcionki. Nie zalecamy używania tej metody przez deweloperów aplikacji bezpośrednio API. Aby dodać nowe typy czcionek, zapoznaj się z artykułem AndroidFont.
    • Funkcja rozszerzenia Font.AndroidResourceLoader zezwala elementu Font.ResourceLoader poza kompozycją.
    • Dodano parametr loadingStrategy do czcionek opartych na zasobach, aby zezwolić wczytywanie asynchroniczne, gdy czcionka zasobu odwołuje się do plików XML dostępnych do pobrania. (Ie5aea, b/174162090)
  • Konstruktor Typeface(FontFamily) został wycofany. To było poprzednio używane do wstępnego wczytywania czcionek, co może potrwać do 10 sekund. dostępne do pobrania czcionki. W przypadku dostępnych do pobrania czcionek ta rozmowa może zostać zablokowana przez 10 użytkowników sek. W zamian użyj FontFamilyResolver.preload
    • Interfejs fontResource(FontFamily): Typeface został wycofany. To było poprzednio używane do wstępnego wczytywania czcionek, co może potrwać do 10 sekund. dostępne do pobrania czcionki. Zamiast niego użyj FontFamilyResolver.preload (If8e7c, b/174162090)
  • Możesz teraz określić typ treści elementów LazyVerticalGrid – funkcje item/items w LazyGridScope 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 i LazyGridLayoutInfo mają teraz nowe właściwości: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • Możesz teraz określić typ treści elementów w LazyColumn/LazyRow – funkcje item/items w LazyListScope przyjmują teraz taki parametr. Podanie 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 obiekt maxSlotsToRetainForReuse został wycofany. Zamiast tego wprowadziliśmy nowy konstruktor akceptujący SubcomposeSlotReusePolicy – nowy interfejs dający bardziej szczegółową kontrolę nad tym, które przedziały powinny być zachowywane do wykorzystania w przyszłości. (I52c4d)
  • Dodaje modyfikatory elementów WindowInsets, zarówno do dopełnienia, i rozmiarach. Dzięki temu część zawartości może rozciągać się do obszaru wcięcia. a jednocześnie główna treść nie mieści się w obszarze. Na przykład do dopełnienia zawartości można użyć metody windowInsetsPadding w celu uniknięcia obszarów, które mogą być całkowicie lub częściowo zasłonięte. (Id0395, b/213942085)

Poprawki błędów

  • Pola tekstowe będą teraz przechowywane nad klawiaturą, gdy się znajdują zaznaczony, a klawiatura jest widoczna, gdy włączony jest tryb programowego wprowadzania tekstu. ADJUST_PAN (I8eaeb, b/190539358, b/192043120)
  • Komputer używa lokalnej kompozycji dla aplikacji FontFamily.Resolver
    • Wersja FontLoader na komputery została wycofana
    • Nowa fabryka urządzenia createFontFamilyResolver na komputerze (I6bbbb, b/174162090)
  • Rodzaj klawiatury programowej nie migocze już po zmianie między polami tekstowymi. (I1bf50, b/187746439)
  • Pola tekstowe nie wymagają już dodatkowego kliknięcia, gdy uchwyt kursora jest widoczny. (Ideb4b, b/205726883)
  • Działanie lupy do zaznaczania tekstu zostało dopracowane do lupy. (Idd918, b/206833278)

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

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

Zmiany interfejsu API

  • Dodano metodę NonRestartableComposable do metod, które są przeciążeniami bez złożonej logiki. Zmniejsza to liczbę kompilatora wygenerowane czeki notacji (równe) dla wszystkich parametrów, które są powtarzane w funkcji wewnętrznej, która jest wywoływana. (I90490)
  • Dodano modyfikatory excludeFromSystemGesture dla: łatwy dostęp do telefonu setSystemGestureExclusionRects Androida (I46f07)

Poprawki błędów

  • Działanie lupy do zaznaczania tekstu zostało dopracowane do lupy. (Idd918, b/206833278)
  • LazyColumn, LazyRow, Modifier.verticalScroll i inne kontenery, które używają Modifier.scrollable, obsługują teraz przewijanie kółkiem myszy. (I2b5e1, b/198214718)

Wersja 1.2.0-alpha01

12 stycznia 2022 r.

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

Zmiany interfejsu API

  • Do obiektów LazyColumn, LazyRow i LazyVerticalGrid dodaliśmy nowy parametr userScrollEnabled, aby umożliwić użytkownikom tymczasowe lub trwałe wyłączenie przewijania inicjowanego przez użytkownika za pomocą gestów dotykowych lub działań ułatwień dostępu. Nadal będzie dozwolone automatyczne przewijanie za pomocą metod ustawionych dla tego stanu. (I7eae9, b/201150093)
  • Dodaj wywołanie zwrotne onSizeChanged do modyfikatora lupy. (I6879f)
  • Widżet lupy wyświetla się teraz podczas przeciągania zaznaczenia uchwyty w elemencie SelectionContainer. (I30b38, b/139320979)

Poprawki błędów

  • Naprawiono uchwyt kursora TextField, który nie ukrywa się po przewinięciu poza obszar widok. (I14552, b/208883748)

Aktualizacje zależności

  • Teraz zależy od Kotlin 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

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

Poprawki błędów

  • Napraw NullPointerException pod adresem androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • Naprawianie awarii spowodowanej przez zawartość schowka przy odczytywaniu z do schowka na Androidzie. (I06020, b/197769306)
  • Poprawiono RTL w LazyVerticalGrid (aosp/1931080, b/207510535)

Wersja 1.1.0

9 lutego 2022 r.

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

Ważne zmiany wprowadzone od wersji 1.0.0

  • Stabilna obsługa efektu przewijania w Androidzie 12.
  • Ulepszenia rozmiaru docelowego elementu dotykowego
  • Pamiętaj, że w przypadku Compose 1.0 komponenty Material mają rozszerzać obszar układu, aby zapewnić zgodność z wytycznymi dotyczącymi ułatwień dostępu Material Design rozmiar docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu interfejs Compose Material ma takie samo zachowanie jak komponenty stylu Material Design, co zapewnia spójne zachowanie w przypadku połączenia widoków i tworzenia wiadomości. Ta zmiana zagwarantuje też, że w przypadku tworzenia UI z użyciem komponentów Compose Material, minimalne wymagania dotyczące ułatwień dostępu docelowych elementów dotykowych będą spełnione.
  • Stabilna obsługa kolejki nawigacyjnej
  • Przeniesienie niektórych wcześniej eksperymentalnych interfejsów API do wersji stabilnej
  • pomoc dotycząca nowszych wersji Kotlin,

Wersja 1.1.0-rc03

26 stycznia 2022 r.

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

Poprawki błędów

  • Zaktualizowano, aby obsługiwała Material 1.1.0-rc03

Wersja 1.1.0-rc01

15 grudnia 2021 roku

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

Poprawki błędów

  • Teraz można przekazywać ujemne przesunięcia przewijania do elementów LazyListState.scrollToItem() i LazyListState.animateScrollToItem(). (Iceb90, b/184252837)
  • Usunięto błąd, który powodował brakujące działania związane z przewijaniem ułatwień dostępu (I7cbfb)

Wersja 1.1.0-beta04

1 grudnia 2021 r.

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

Nowe funkcje

  • Zaktualizowano, aby była zgodna z platformą Kotlin 1.6.0

Zmiany interfejsu API

  • Usunięto wartość null w kolumnie androidx.core.view(I7078a, b/204917439)
  • Dodaliśmy eksperymentalne interfejsy API, które pozwalają na przetwarzanie całości danych PointerInputchange lub sprawdzanie, czy zostały wykorzystane. (I2E59D)
  • Pokazuj widżet lupy podczas przeciągania kursora lub uchwyty wyboru w polach tekstowych. (I5391e, b/203781358)

Poprawki błędów

  • Naprawianie elementów, które nie przesuwają się po zmianie widoczności IME. (I25f2e)

Wersja 1.1.0-beta03

17 listopada 2021 r.

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

Zmiany interfejsu API

  • Dodano obsługę rozpiętości poziomych do LazyVerticalGrid. (I7e2fa, b/176758183)
  • Dodaliśmy eksperymentalną możliwość animowania pozycji elementów listy Lazy. W LazyItemScope jest dostępny nowy modyfikator o nazwie Modifier.animateItemPlacement(). Przykład zastosowania:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • Gdy podasz klucz za pomocą funkcji LazyListScope.item lub LazyListScope.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)

Wersja 1.1.0-beta02

3 listopada 2021 r.

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

Poprawki błędów

  • Echo i inne oznaki będą teraz opóźnione tylko wtedy, gdy znajdują się w kontenerze Modifier.scrollable(). Nie będą zawsze opóźniane w przypadku awarii. (Ibefe0, b/203141462)
  • Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców w celu przewijania w celu wyświetlenia danego elementu (Ib918d, b/195353459)

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

  • Dodano Modifier.pointerHoverIcon (I95f01)

Wersja 1.1.0-beta01

27 października 2021 roku

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

Poprawki błędów

  • Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców w celu przewijania w celu wyświetlenia danego elementu (Ib918d, b/195353459)

Wersja 1.1.0-alpha06

13 października 2021 r.

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

Zmiany interfejsu API

  • Dodano przeciążenie bez dzieci w przypadku układów, co zwiększyło wydajność (Ib0d9a)
  • SemanticsNodeInteraction.performSemanticsAction zwraca teraz element SemanticsNodeInteraction, który wywołał funkcję. (I9e5db).
  • Dodano element performScrollToNode(matcher: SemanticsMatcher), który przewija przewijany kontener do treści pasującej przez dla danego dopasowania. (IC1cb8)

Wersja 1.1.0-alpha05

29 września 2021 r.

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

Zmiany interfejsu API

Poprawki błędów

  • Poprawiono obsługę ułatwień dostępu (leniwe i leniwe) nieleniwe) w odniesieniu do przewijania (I6cdb0)

Wersja 1.1.0-alfa04

15 września 2021 r.

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

Zmiany interfejsu API

  • Wycofano reguły performGesture i GestureScope, które zawierają zostały zastąpione przez performTouchInput i TouchInjectionScope. (Ia5f3f, b/190493367)
  • Element touchBoundsInRoot został dodany do elementu SemanticsNode zawiera minimalny rozmiar docelowego elementu dotykowego, dzięki czemu deweloperzy może sprawić, że docelowe elementy dotykowe będą spełniać minimalne wymagania dotyczące ułatwień dostępu. (I2e14b, b/197751214)

Poprawki błędów

  • Dodaliśmy obsługę rozciągania dalekiego przewijania na urządzeniach z Androidem 12. (Iccf3c, b/171682480)

Wersja 1.1.0-alfa03

1 września 2021 roku

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

Nowe funkcje

  • Zaktualizowano funkcję Utwórz 1.1.0-alpha03, aby bazowała na Kotlinie 1.5.30. (I74545)

Zmiany interfejsu API

  • Dodano efekt poświaty dla przewijania. Dodaliśmy nowy eksperymentalny interfejs API Over ScrollConfiguration, aby umożliwić konfigurację efektu wizualnego Overscroll. Aby wyłączyć efekt przewijania, podaj wartość null. (I0c304, b/171682480)
  • AwaitPointerEventScope ma teraz funkcję withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Dodano metodę testową służącą do pobierania granic przyciętych. (I6b28e)
  • Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (IE861C)

Wersja 1.1.0-alfa02

18 sierpnia 2021 r.

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

Zmiany interfejsu API

  • Dodaliśmy wersje DpSize dla systemów Modifier.size i requiredSize (I3fc7e, b/194219828)

Wersja 1.1.0-alpha01

4 sierpnia 2021 r.

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

Zmiany interfejsu API

  • Zaktualizowano metodę DrawScope#drawImage, która pochłania źródłowe i docelowe prostokąty , aby wykorzystać opcjonalną jakość . Przydaje się to na Pixelu dzieło sztuki, które ma być pikselizowane skalowany w górę i uwydatnić grafikę w formacie pikselowym. Zaktualizowana BitmapPainter + możliwość komponowania obrazu aby wykorzystać opcjonalną filtrującą jakość Parametr (Ie4fb0, b/180311607)
  • Pole tekstowe usuwa teraz zaznaczenie po naciśnięciu przycisku Wstecz, która pasuje do działania funkcji EditText w Androidzie. (I3ca16, b/174173645)
  • Dodaj uchwyt kursora. (I07a82, b/173016579)

Poprawki błędów

  • Animacja obejmuje przewijanie za pomocą działań semantycznych w przypadku leniwych list i zwykłych komponentów przewijania (Id9066, b/190742024)

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

  • LazyVerticalGrid akceptuje teraz parametry rozmieszczenia zarówno w poziomie, jak i w pionie. (If9c92).

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

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

Poprawki błędów

  • Usunięto problem ze śledzeniem awarii w instancjach originStateOf. (Aosp/1792247)

Wersja 1.0.4

13 października 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

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

Zaktualizowano, aby obsługiwała wersję 1.0.2 Utwórz. Funkcja Compose 1.0.2 jest nadal zgodna z Kotlin 1.5.21.

Wersja 1.0.1

4 sierpnia 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano w zależności od systemu Kotlin 1.5.21.

Wersja 1.0.0

28 lipca 2021 roku

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

Główne funkcje 1.0.0

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

Znane problemy

  • Jeśli korzystasz z Android Studio Bumblebee Canary 4 lub AGP 7.1.0-alpha04/7.1.0-alpha05, może dojść do tej awarii:

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

    Aby rozwiązać ten problem, tymczasowo zwiększ wartość parametru minSdkVersion w pliku build.gradle do wartości 24 lub nowszej. Ten problem zostanie naprawiony w następnej wersji Androida Studio Bumblebee i AGP 7.1. (b/194289155)

Wersja 1.0.0-rc02

14 lipca 2021 roku

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

  • Zaktualizowaliśmy renderowanie obramowania ogólnych kształtów, aby rozwiązać problemy ze ścieżkami ze stałymi wymiarami. (Aosp/1748871, b/191817116)

Wersja 1.0.0-rc01

1 lipca 2021 r.

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

Zmiany interfejsu API

  • Obszar roboczy obsługuje teraz parametr contentDescription dla: ułatwienia dostępu. (IB547C)

Poprawki błędów

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

Wersja 1.0.0-beta09

16 czerwca 2021 r.

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

Zmiany interfejsu API

  • Użytkownik ManualFrameClock został usunięty. Jeśli chcesz sterować animacjami, użyj interfejsu composeTestRule.mainClock. (I3c3e8, b/189951065)
  • zmień rolę enum i tryb LiveRegionMode na klasy wbudowane z prywatnym konstruktorem (Id1890)
  • Parametr keyCapitalization jest konwertowany na klasę wbudowaną. (Id5a1c).
  • Ustawienie TextOverflow zostało zmienione na klasę wbudowaną. (I433af).

Poprawki błędów

  • Teraz, gdy podasz unikalne klucze dla elementów LazyColumn/Row, pozycja przewijania zostanie zachowana na podstawie klucza. Oznacza to, że jeśli dodasz lub usuniesz elementy przed bieżącym widocznym elementem, element z danym kluczem zostanie zachowany jako pierwszy widoczny. (Id263f, b/184257857)
  • Główne stałe to na razie @ExperimentalComposeUiApi. Konsumpcja może zadeklarować stałe prywatne przed stabilizacją. (Ia5d48).
  • Dodano strategię IdlingStrategy do reguły AndroidComposeTestRule, której można użyć używane przez platformy testowe do zainstalowania alternatywnego mechanizmu ani spokoju. Używaj AndroidComposeTestRule.setIdlingStrategyFactory() przed testem zaczyna wdrażać własną strategię. (I608fa)

Dodane reguły profilu

Ta wersja dodaje reguły profilu do następujących modułów tworzenia wiadomości (I14ed6):

  • androidx.compose.animation,
  • androidx.compose.animation-core,
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material,
  • androidx.compose.material-ripple,
  • androidx.compose.runtime,
  • androidx.compose.ui,
  • androidx.compose.ui.geometry,
  • androidx.compose.ui.graphics,
  • androidx.compose.ui.tekst
  • androidx.compose.ui.tekst
  • androidx.compose.ui.jednostka
  • androidx.compose.ui.util,

Co to są reguły profilu?

  • Reguły profilu dla biblioteki określa się w pliku tekstowym baseline-prof.txt znajdującym się w katalogu src/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żywasz adb 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ów H, S i P wskazujących, czy ta metoda ma być oznaczona jako „Przebojowa”, „Uruchomienie” lub „Po uruchomieniu”.

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

  • <METHOD_SIGNATURE> to podpis metody. Zawiera nazwę, typy parametrów i typy zwracanych metod. Na przykład metoda fun isPlaced(): Boolean w LayoutNode ma podpis isPlaced()Z.

  • Aby jedna reguła obejmowała wiele metod lub klas, mogą one zawierać symbole wieloznaczne (**, * i ?).

Do czego służą reguły?

  • Metoda z flagą H wskazuje, że jest ona popularna. i należy ją skompilować z wyprzedzeniem.

  • Metoda z flagą S wskazuje, że jest ona wywoływana przy uruchamianiu i należy ją skompilować z wyprzedzeniem, by uniknąć kosztów kompilacji i interpretacji podczas uruchamiania.

  • Metoda z flagą P wskazuje, że jest to metoda, która jest wywoływana po uruchomieniu.

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

Jak to działa?

  • Biblioteki mogą definiować reguły, które będą spakowane w artefaktach AAR. Kiedy powstaje aplikacja, która zawiera te artefakty, reguły te są łączone ze sobą, a scalone reguły służą do utworzenia kompaktowego binarnego profilu ART charakterystycznego dla danej aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja jest zainstalowana na urządzeniach, w celu z wyprzedzeniem skompilowania określonego podzbioru aplikacji w celu poprawy jej wydajności, zwłaszcza przy pierwszym uruchomieniu. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.

Wersja 1.0.0-beta08

2 czerwca 2021 r.

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

Zmiany interfejsu API

  • Wyliczenie Nested ScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
  • Zrefaktoryzowane wykorzystanie enum do klas wbudowanych w celu uniknięcia zawierają dokładne informacje o tym, kiedy stwierdzenia, nowe wartości wyliczeniowe. (I2b5eb)
  • Dodaje czas oczekiwania na kliknięcie, aby zapobiec wyświetlaniu fali podczas przewijania lub przeciągania (Ia2704, b/168524931)
  • Właściwości ContentDescription i semantyka tekstu nie są już dostępne pojedyncze wartości, ale listy. Dzięki temu można je scalić w niezmienionej formie konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które pozwalają na korzystanie z zmiany (Ica6bf, b/184825850)
  • Metoda Modifier.focusModifier() została wycofana i zastąpiona przez Modifier.focusTarget() (I6c860)
  • Enum typów Klawiatura została zastąpiona klasą wbudowaną. (I73045, b/187055290)
  • Zastąpiono enum FocusState interfejsem FocusState (Iccc1a, b/187055290)
  • Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
  • AnnotatedString.withAnnotation funkcje są ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a).
    • Konstruktor TextUnit z obiektem TextUnitType jest teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
  • PaddingValues to teraz @Stable, a nie @Immutable (I88c50)

Poprawki błędów

  • Naprawa błędów związanych z przytrzymaniem pustego obszaru w przypadku tekstu, który nie jest pusty. (I33ab5, b/187437299)
  • Pokaż pasek narzędzi po elemencie SelectAll (I495d9, b/185919613)
  • Naprawiono przycinanie elementów podrzędnych przez kontenery z możliwością przewijania na osi poprzecznej. Można ją było łatwo odtworzyć, jeśli masz wiersz LazyRow z elementami karty. Teraz cień nie zostanie przycięty. (Icb635, b/186318448)
  • Rozwiązaliśmy problem, który powodował, że zmarszczki lub inne wskaźniki zacinały się przy długim kliknięciu podczas korzystania z modyfikatora Modifier.combinedClickable (I2298c, b/186223077).
  • Teraz detectDragGesures, detectVerticalGestures i detectHorizontalGestures 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

Poprawki błędów

  • LazyColumn/Row będzie teraz przechowywać do 2 wcześniej widocznych elementów aktywnych (nieusuniętych), nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie korzystać z aktywnych kompozycji podrzędnych, gdy trzeba będzie utworzyć nowy element, który usprawnia przewijanie. (IE5555)
  • Usunięto pole paintBackground. (I38660).
  • Narysuj tło zaznaczenia za pomocą aplikacji DrawScope. (I73c61, b/186674472)
  • Poprawiono regresję beta06 wpływającą na wiersz/kolumnę z użyciem elementów spacedBy z elementami podrzędnymi ważonymi według układu. (Ifaf8c, b/187326588)

Wersja 1.0.0-beta06

5 maja 2021 roku

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

Zmiany interfejsu API

  • Rozwiązywanie konfliktów z gestem nawigacji (I1145e)
  • Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i ich elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
  • Dodano element SemanticsActions.ScrollToIndex, aby przewijać listę z do elementu z określonym indeksem oraz SemanticsProperties.IndexForKey, aby uzyskać indeks elementu na liście z elementami z kluczem. Oba działania są implementowane przez LazyList.
    • Dodano element SemanticsNodeInteraction.performScrollToIndex, który przewija listę do podanego indeksu, SemanticsNodeInteraction.performScrollToKey, który przewija listę do element o podanym kluczu. (I4fe63, b/178483889, b/161584524)
  • Obsługa zapisu w AdnotatedString Zapisywanie wartości pola tekstowego. Dodano adnotację addTtsAnnotation z funkcjami narzędziowymi adnotacji, AnnotatedString.Builder (I8cbdc, b/178446304)
  • Do grupy PaddingValues(horizontal, vertical) dodano domyślne wartości parametrów 0.dp (I05571, b/181336792)

Poprawki błędów

  • Wiersze i Kolumny podrzędne z wartościami „weight(fill = false)” nie wypełniają już całej dostępnej przestrzeni na osi głównej. (Ied94d, b/186012444, b/184355105)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

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

Zmiany interfejsu API

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

Poprawki błędów

  • Naprawiono ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight i accessibilityActionScrollDown przewijanie elementów ułatwień dostępu. Zamiast przewijać do końca będzie przewijany o 1 ekran w danym kierunku. (Ieccb0)
  • pliki AndroidManifest z komponentów ui-test-manifest oraz Narzędzie ui-tooling-data jest teraz zgodne z Androidem 12 (I6f9de, b/184718994)

Wersja 1.0.0-beta04

7 kwietnia 2021 r.

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

Zmiany interfejsu API

  • Zmień nazwy klawiatury hide SoftwareKlawiatura i showProductKlawiatura – włączone SoftwareKlawiaturaController odpowiednio na hide() i show().
    • Udostępnij pełny interfejs CompositionLocal dla Oprogramowanie Local SoftwarekeyController, które umożliwia jego ustawienie (zwłaszcza przydatne w testach) (I579a6)
  • Wprowadzono TextOverflow.Visible. (IC8f89)
  • Instancje publiczne RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope zostały usunięte. (I4e83e, b/181869067)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że elementy w polu LazyColumn/LazyRow znajdujące się na krawędziach były nieprawidłowo umiejscowione po szybkim przesunięciu (Ie4d13, b/183877420).
  • Przed tą zmianą można było pomijać lokalne funkcje kompozycyjne na podstawie ich parametrów. Po tej zmianie żadne lokalne funkcje kompozycyjne nie zostaną pominięte. Jest to powszechna i oczekiwana sytuacja, w której funkcje lokalne przechwytują parametry z elementu nadrzędnego, a ich pomijanie jest częstym źródłem błędów.

    Oto przykład:

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

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

Wersja 1.0.0-beta03

24 marca 2021 r.

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

Zmiany interfejsu API

  • Interfejs DefaultMonotonicFrameClock został wycofany. Łączę withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez MonotonicFrameClock wyrzuci teraz IllegalStateException. (I4eb0d).

Poprawki błędów

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

Wersja 1.0.0-beta02

10 marca 2021 r.

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

Zmiany interfejsu API

  • Dodaliśmy kilka niewielkich optymalizacji w logice pomiaru LazyColumn (Ic6889).
  • Dodano nową lokalną kompozycję LocalSoftwareKeyboardController Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I5951e, b/168778053)
  • Dodano nową lokalną kompozycję LocalSoftwareKeyboardController Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I84472, b/168778053)

Poprawki błędów

  • Egzekwuj ograniczenia dotyczące publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)

Wersja 1.0.0-beta01

24 lutego 2021 r.

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

To jest pierwsza wersja beta Compose 1.0.0.

Zmiany interfejsu API

  • Oddzwanianie onStart zostało dodane do detectDragGestures (I67269, b/179995594)
  • Modyfikatory dopasowujące wymiary do elementów wewnętrznych nie są już eksperymentalne. (I15744)
  • Usunięto asercje dp (I798d2)
  • Usunięto wywołanie zwrotne SoftwareKlawiaturaController z całego tekstu które zostaną wkrótce zastąpione nowym interfejsem API. (IAe869, b/168778053)
  • Nazwa MeasureBlocks została zmieniona na MeasurePolicy, a interfejs jest teraz ciekawym interfejsem. Zaktualizowaliśmy lub uprościliśmy interfejsy Layout API pod kątem MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • Pole InteractionState zostało zastąpione tekstem [Mutable]InteractionSource
    • Interfejsy odpowiadają za wysyłanie / zbieranie zdarzeń interakcji.
    • Zamiast przekazywać interactionState = remember { InteractionState() } do komponentów takich jak Button czy Modifier.clickable(), użyj interactionSource = remember { MutableInteractionSource() }.
    • Zamiast: Interaction.Pressed in interactionState użyj funkcji rozszerzeń w InteractionSource, takich jak InteractionSource.collectIsPressedAsState().
    • W złożonych przypadkach możesz użyć parametru InteractionSource.interactions do obserwowania strumienia interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Usunięto wycofane metody LayoutCoordinates. Użyj funkcji zamiast właściwości positionInParent i boundsInParent (I580ed, b/169874631, b/175142755)
  • Utworzono nową sesję TextInputSession na potrzeby sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, np. CoreTextField. (I8817f, b/177662148)
  • Obiekt Placeable staje się widoczny w pomiarach rozmiaru, co reprezentuje rozmiar, do którego rzeczywiście zmierza układ podrzędny. Ten rozmiar może nie uwzględniać ograniczeń pomiarów. (Ib2729, b/172560206, b/172338608)
  • Dodaj modyfikator selectGroup, który umożliwia oznaczanie kolekcji kart lub opcji na potrzeby ułatwień dostępu (Ie5c29)
  • Dodaj parametr LazyListState.animate ScrollToItem

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

  • Nazwa ScrollableState.smooth ScrollBy() została zmieniona na animate ScrollBy() Nazwa LazyListState.snapToItemIndex() została zmieniona na ScrollToItem() Nazwa ScrollState.smooth ScrollTo() została zmieniona na animate ScrollTo() (I35ded).

  • Parametr Modifier.zoomable został zastąpiony przez plik Modifier.transformable. Do funkcji smoothPanBy zostały dodane funkcje smoothPanBy i sightRotationBy. (Ifc32b, b/175294473)

  • defaultFactory dla compositionLocalOf i Parametr staticCompositionLocalOf jest teraz wymagany zamiast opcjonalnie.

    Ta zmiana usuwa potencjalny błąd typu dla wartości niepustej bez domyślnych ustawień fabrycznych. Wcześniej to zwróciłoby wartość null dla typu niedopuszczającego wartości null.

    W przypadku typów dopuszczających wartości null zalecamy podanie parametru { null } jako domyślnego fabryki.

    Nie zalecamy używania zasobów lokalnych z typami niedopuszczającymi wartości null, chyba że można określić rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda defaultFactory powinna zgłosić wyjątek. Jednak zrobić wyjątek oznacza, że konsumenci lokalnie korzystają pośrednia zależność od podanego źródła, która nie jest egzekwowana według systemu typów. (Ifbd2a).

  • Zmieniono Indication#createIndication() na Indication#rememberUpdatedIndication(InteractionState) i usunięto parametr InteractionState 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 zasadzie rememberUpdatedIndication(). Parametr indication w obiekcie Modifier.indication również został zmieniony na parametr wymagany. (IC1764, b/152525426)

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

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

  • Pozycja przewinięcia w modyfikatorze.vertical Scroll()/vertical Scroll() obecnie przedstawia się za pomocą liczb całkowitych (I81298).

  • smooth ScrollBy i ScrollBy pakiety zostały zmienione na androidx.compose.foundation.gestures.* (I3f7c1, b/175294473)

  • Nazwa FlingConfig została zmieniona na FlingBehavior i umożliwia teraz dostosowanie animacji zawieszenia, a nie wstępnie zdefiniowanego spadku. (I02b86, b/175294473)

  • Zmieniono nazwy modyfikatorów rozmiaru. Zmieniono nazwę modyfikatora.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwę metody Modifier.preferredWidth/preferredHeight/preferredSize na szerokość/wysokość/rozmiar. (I5b414)

  • Nazwa defaultMinSizeConstraints została zmieniona na defaultMinSize. (I4eaae),

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

  • częściowe wykorzystanie zostało usunięte z systemu wprowadzania danych wskaźnika. Zalecanym sposobem koordynowania częściowego konsumpcji jest Modifier.nested Scroll. (IE9c9b)

  • Orientacja została przeniesiona do pakietu podstawowego. Przeniesiono aplikację VelocirtTracker z obszaru ui.gesture do witryny ui.input.pointer. (Iff4a8, b/175294473)

  • AnimationClockObservable i podklasy zostały zmienione usunięto. Element AnimatedFloat został usunięty. (Icde52, b/177457083)

  • DrawerState.open() i dreszerState.close() zawieszają funkcje. Użyj funkcji PamiętajCoroutineScope(), aby uzyskać zakres kompozycji i je wywołać (I16f60, b/175294473).

  • Nazwa dostawców została zmieniona na CompositionLocalProvider

    • Konstruktor Kompozycja nie akceptuje już kluczowego parametru i został wycofany.
    • Parametr currentCompositeKeyHash został przekształcony w kompozycyjną właściwość najwyższego poziomu zamiast funkcji kompozycyjnej najwyższego poziomu.
    • CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
    • Interfejs ComposableLambda został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
    • Interfejs ComposableLambdaN został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
    • Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
    • metoda scalania zasady SnapshotMutationPolicy nie jest już eksperymentalna
    • Funkcja clearRoots najwyższego poziomu @TestOnly została usunięta. Już nie jest to konieczne.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Element Composer.collectKeySourceInformation został usunięty. Już nie jest to konieczne.
    • Metody isJoinedKey, JoinKeyLeft i joinKeyRight zostały usunięte. Nie są już potrzebne.
    • Różne interfejsy API najwyższego poziomu zostały przeniesione i porządkowane w różne pliki. Ze względu na semantykę klas plików Kotlin spowoduje to naruszenie zgodności plików binarnych, ale nie źródła, więc nie powinno stanowić problemu dla większości użytkowników.
    • (I99b7d, b/177245490)
  • Modifier.scrollable został przerobiony. Teraz używa interfejsu Scrollable zamiast klasy ScrollableController (I4f5a5, b/174485541, b/175294473)

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

  • Dodano modyfikatory requiredPosition(IntrinsicSize) i requiredHeight(IntrinsicSize) w celu uzyskania wymaganego rozmiaru do rozmiarów wewnętrznych. (I0a6b4)

  • Wycofana reguła emptyContent() została usunięta. Użyj w zamian zasady {}. (Idb33f, b/179432510)

  • usunęliśmy niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932),

Poprawki błędów

  • Dodano nową lokalną kompozycję klawiatury lokalnej Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I658b6, b/168778053)

Wersja 1.0.0-alfa12

10 lutego 2021 r.

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

Zmiany interfejsu API

  • Modifier.pointerInput wymaga teraz zapamiętania klawiszy, aby wskazać, kiedy współrzędna wykrywania danych wejściowych wskaźnika powinna zostać uruchomiona ponownie zależności. (I849cd)
  • Testowanie aktualizacji: funkcja hasText() sprawdza w polu tekstowym zarówno dane wejściowe, jak i teksty etykiet, wskazówek i zastępczych (Iab803)
  • Dodano parametr PaddingValues.Bezwzględny, którego można używać w interfejsach API akceptujących wartości PaddingValues. (Ia5f30).
  • Interfejs onImeActionPerformed został wycofany. użyj Klawiatura Actions (If0bbd, b/179071523)
  • Aby lepiej dopasować nazwy w formatach ImageBitmap i ImageVector Nazwa ImagePainter została zmieniona na BitmapPainter równolegle do obiektu VectorPainter. (Iba381, b/174565889)
  • Lepsze interfejsy API do testowania podłańcucha z podłańcuchem jako argumentem (Icbe78)
  • Wprowadzono kontekst współprogramu InfiniteAnimationPolicy który będzie stosowany w nieskończonych animacjach. Domyślnie nie zasada jest zainstalowana, chyba że przeprowadzasz testy z zastosowaniem ComposeTestRule. (I50ec4, b/151940543)
  • Animatable.snapTo i Animatable.stop to teraz funkcje zawieszania (If4288)
  • Element KomponentActivity.setContent został przeniesiony do androidx.activity.compose.setContent w . (Icf416).
  • Metody zniszczenia i copy() zostały usunięte z i kilku klas, w których były one rzadko używane. (I26702, b/178659281)
  • Dodano obsługę kluczy niestandardowych LazyColumn/LazyRow. Dzięki temu możemy lepiej zarządzać kolejnością produktów. Gdy zmienisz kolejność elementów lub usuniesz element ze środka, stan zapisany w blokach zapamiętanych {} zostanie przesunięty razem z nim.

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

  • Pole Constraints.enforce zostało zastąpione elementem Constraints.constrain. (I8B8EA).

  • Zasób loadFontResource został wycofany. Zamiast tego użyj fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Użyj narzędzia PaintterResource. (I6B809)

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

  • Dodano semantykę EditableText do oznaczania możliwego do edytowania tekstu wejściowego pola tekstowego na potrzeby ułatwień dostępu oraz odpowiadające jej metody testowe do sprawdzania semantyki (I8e07a).

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

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

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

  • Interfejs Modifier.dragStepFilter został wycofany. Użyj w zamian zasady Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć metody Modifier.draggable, aby przeciągać jedną oś (I0ba93, b/175294473)

  • Zmieniono nazwy dźwięków otoczenia, tak aby pasowały do otoczenia -> Zmiana nazwy elementu CompositionLocal. Lokalizatory nosiły wcześniej nazwę AmbientFoo, a teraz CompositionLocals – LocalFoo. (I2d55d)

  • Zaznaczenie zostało przeniesione do podstawy. (I7892B)

  • Podobnie jak poprzednio usunęliśmy funkcję state { 0 } kompozycyjną, a teraz promujemy jej użycie, takie jak remember { mutableStateOf(0) }, usuniemy funkcję savedInstanceState { 0 } kompozycyjną. Zamiast niego użyj parametru rememberSaveable { 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 parametr stateSaver. Użycie będzie wyglądać tak: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • Dodano semantykę haseł w ułatwieniach dostępu (I231ce)

  • Dodano ProgressBarRangeInfo.Indeterminate, aby zaznaczyć nieokreślone paski postępu w ułatwieniach dostępu (I6fe05).

  • Czas odtwarzania animacji nie jest już podawany w nanosekundach (If776a)

  • Atrybut @ComposableContract został wycofany i zastąpiono 3 bardziej szczegółowymi adnotacjami.

    @ComposableContract(restartable = false) zmienia nazwę na @NonRestartableComposable @ComposableContract(readonly = true) jest teraz @ReadOnlyComposable @ComposableContract(preventCapture = true) została zmieniona na @DisallowComposableCalls Użytkownik @ComposableContract(tracked = true) został usunięty. (I60a9D)

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

  • Rekompozycje można teraz zamknąć. Zamknięte ponownie kompozycje kontynuować ponowne kompozycje, aż kogutyny podrzędne kompozycji zostaną zakończone. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (IB6d76)

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

  • Zapamiętano nazwę savedInstanceState(), aby korzystały z ! (I1366e, b/177338004)

  • Nazwa RestorableStateHolder została zmieniona na SaveableStateHolder i została przeniesiona do pakietu androidx.compose.runtime.saveable. Nazwa metody wewnętrznej RestorableStateProvider została zmieniona na SaveableStateProvider. Typ ogólny został usunięty, więc można było przekazywać jako klucz „Dowolny”. Nie są już potrzebne adnotacje eksperymentalne. (I0902e, b/174598702)

  • Saver, listSaver(), mapSaver(), autoSaver przeniesiono z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6).

  • Nazwa artefaktu androidx:compose:runtime:runtime-saved-instance-state została zmieniona na androidx:compose:runtime:runtime-saveable (I6dcac).

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

  • Artefakt compose:runtime-dispatch został wycofany. MonotonicFrameClock można teraz znaleźć w poleceniach compose:runtime Aplikację AndroidUiDispatcher znajdziesz w polecenia compose:ui. (IB5c36)

  • Nazwy parametrów RounderCornerForm, CutCornerPosition i CornerBasedForm zostały zmienione z lewej/prawej na początek/koniec, by zapewnić obsługę automatycznego odbicia lustrzanego kształtu w kierunku rtl. Funkcje absoluteRounderCorner shape i absoledCutCornerPosition zostały wprowadzone w przypadkach, gdy automatyczne odbiór lustrzane nie jest potrzebne. (I61040, b/152756983)

  • Usunięto element canDrag z folderu Modifier.scrollable. (Id66e7, b/175294473)

  • Interfejs API, na który kierowana jest wtyczka kompilatora Compose została zmieniona tak, aby używała interfejsu zamiast konkretnej klasy. Interfejs nie będzie już używał type.

    To jest zmiana wewnętrzna, która nie powinna mieć wpływu na źródło jest to zmiana powodująca niezgodność kodu binarnego. (I3b922, b/169406779)

  • Usunięto modyfikator.scaleStepFilter. Użyj w zamian metody Modifier.zoomable. Możesz też użyć polecenia Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473)

  • Parametr AnimatedValue/Float został wycofany. Użyj Animowana. (I71345, b/177457083)

    • Usunięto CoreText i CoreTextField z publicznego interfejsu API
    • Usunięto wycofane przeciążenie komponentu SelectionContainer (I99c19)
  • Usuń wycofane funkcje przewijania bez zawieszania Zgodnie ze zmianami w stosunku do poprzedniej wersji – przewijanie bez zawieszenia są teraz całkowicie usuwane. Przejdź na tryb zawieszenia o takich samych nazwach. Zakres współdziałania można uzyskać za pomocą zapamiętaniaCoroutineScope(). (I3d39c, b/178169563)

  • Metoda androidx.compose.foundation.layout.ConstraintLayout została wycofana i zastąpiona przez androidx.constraintlayout.compose.ConstraintLayout. Musisz dodać zależność od androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc).

  • Parametry tapTrackingFilter, DoubleTapStepFilter, longPressConsentFilter i PressIndicaitonTrackingFilter zostały wycofane. Użyj w zamian funkcji Modifier.clickable lub Modifier.pointerInput z funkcją wykrywania gestów. (I6baf9, b/175294473)

  • Użytkownik Recomposer.current() został usunięty. [Abstract]ComposeView teraz domyślnie tworzone są leniwie, ograniczone do okna Rekompozycje oparte na metodzie ViewTreeLifecycleOwner dla okna. Zmiana kompozycji Znaczniki animacji oparte na mechanizmie withFrameNanos są wstrzymywane, a cykl życia hosta jest wstrzymywany. zatrzymuje się. (I38e11)

  • Recomposer.runningRecomposers oferuje teraz globalny mechanizm StateFlow tylko do odczytu, aby obserwować stan kompozycji w cały proces. Wolę ten interfejs API od Recomposer.current(), który jest teraz wycofane. (If8ebe).

Wersja 1.0.0-alfa11

28 stycznia 2021 roku

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

Zmiany interfejsu API

  • Wycofanie funkcji przewijania ScrollBy bez zawieszenia, usunięcia elementu przewijania bez zawieszenia

    Teraz zalecamy używanie funkcji zawieszania w celu kontrolowania przewijania i oczekiwania aby zakończyć przewijanie. Wycofujemy lub usuwamy bez zawieszania wersji tych funkcji w ramach tego przejścia. (Zastosowane)

  • Wycofanie funkcji smooth ScrollBy bez zawieszenia Teraz zalecamy używanie funkcji zawieszania w celu kontrolowania przewijania i oczekiwania aby zakończyć przewijanie. Wycofujemy wersje bez zawieszenia tych funkcji. (I12880)

  • Do obrazów i ikon został dodany parametr Opis treści. Służy do opisania usług ułatwień dostępu (I2ac4c).

  • BasicTextField otrzymał nowy parametr o nazwie „decorationBox”. Umożliwia dodanie dekoracji, takich jak ikony, obiekty zastępcze, etykiety i inne podobne do elementów w polu tekstowym, oraz zwiększenie jego docelowego obszaru działania. (I16996).

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

  • Usunięto plik AnimatedFloating.fling, który akceptuje FlingConfig. Użyj opcji Zawieś Animatable.animateDecay. (I4659b, b/177457083)

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

    • Treść wbudowanego tekstu
    • Lista języków
    • (I605C7)
  • klikalne, włączane i klikalne można teraz tworzyć poza kompozycją (I0a130, b/172938345, b/175294473)

  • Przewijane kolumny/wiersz zostały wycofane. Korzystanie z ScrollableColumn jest mniej wydajne niż LazyColumn, jeśli masz dużo przewijanych treści, ponieważ LazyColumn umożliwia tylko tworzenie, pomiar i rysowanie widocznych elementów. Aby uchronić użytkowników przed niewydajnym działaniem, zdecydowaliśmy się wycofać elementy ScrollableColumn i ScrollableRow i promować wykorzystanie metod LazyColumn i LazyRow. Użytkownicy mogą zdecydować, że nie wymagają leniwego działania, i użyją modyfikatorów bezpośrednio w ten sposób: Column(Modifier.vertical Scroll(remember ScrollState())) (Ib976b, b/170468083).

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

  • Wycofana aranżacja bezwzględna została usunięta. (Iffa96, b/177641870)

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

Poprawki błędów

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

    • Dodano funkcje fabryczne, które zaczynają się od wielkiej litery.
    • Wycofane poprzednie funkcje fabryczne zapisane małymi literami pierwsze litery
    • Nowe funkcje fabryczne zwracają wartość FontFamily zamiast podklasy
    • Ukryto konstruktory podklas, aby mogły tylko w ramach funkcji fabrycznych.
    • Zmieniono nazwę Font.asFontFamily na Font.toFontFamily
    • (I42aa7).
  • Data ComposeContentTestRule, która obejmuje okres próbny ComposeTestRule i definiuje zasadę setContent, która została usunięta z ComposeTestRule Dodano metodę fabryczną createEmptyComposeRule() zwracający ComposeTestRule i nie uruchamia aktywności dla do Ciebie. Użyj tej opcji, jeśli chcesz uruchomić aktywność w trakcie testu. np. przy użyciu ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState to teraz animateFooAsState, typu animowanej zmiennej. np. Float, Dp, Offset itp. (Ie7e25)

  • Gęstość jest teraz zakresem odbiornika w interfejsach rozmieszczenia. (I18aad).

  • TextFieldValue akceptuje ciąg AnnotatedString. Jest to jednak zmiana wprowadzona tylko w interfejsie API, a edycja tekstu w wielu stylach nie jest zostały już wdrożone.

    • Z parametrów konstruktora EditBuffer usunięto parametr initial. (I326d5)
  • Nieprawidłowo i kompozytoryzacja() zostały wycofane. Zastąpiono je odpowiednio recomposeScope i ReminderCompositionReference. (I583a8)

  • Ciąg AnnotatedString został zmieniony tak, aby był dłuższy niż kotlin.CharSequence. Dlatego długość i podsekwencja są teraz funkcjami instancji, i funkcje rozszerzeń. (Iaf429).

  • Czas trwania i czas działania zastąpimy długimi milisekundami, i eliminuje zależność od danych wejściowych wskaźnika. zajęcia. (Ia33b2, b/175142755, b/177420019)

  • ZapamiętaneObserver zastępują CompositionLifecycleObserver. , a funkcja CompositionLifecycleObserver została wycofana.

    RememberObserver zastępuje CompositionLifecycleObserver ze zmodyfikowaną semantyką i o zmienionych nazwach. Przejście na nowy interfejs API może odbywać się automatycznie w przypadku obiektów, które są zapamiętywane tylko raz, czyli są i nadal są co jest zalecane. Jeśli jednak plik referencyjny był zapamiętane więcej niż raz w kompozycji onRemembered to nazwa dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. onEnter została wywołana wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jak WithConstraints i Scaffold, tworząc singiel onEnter gwarancja połączenia jest niewiarygodna i została usunięta w przypadku RememberObserver

    Funkcja RememberObserver dodaje metodę onAbandoned, która jest wywoływana, jeśli Z powodowanego wywołania zwrotnego jest zwracana RememberObserver instancja do remember, ale nie został zapamiętany w stanie kompozycji i dlatego nigdy nie zostanie wywołana funkcja onRemembered. Może to spowodować występują, jeśli wyjątek zakończy kompozycję przed ukończeniem lub kompozycja jest odrzucana, ponieważ stan generuje kompozycja dla nie jest już aktualna lub w inny sposób przestaje być aktualna niezbędną. Jeśli wystąpienie RememberObserver następujące po singlu powyższa rekomendacja pozwala śledzić zasób zewnętrzny onForgotten i onAbandoned wskazują, że nie jest już potrzebny. Jeśli obiekt śledzi pracę rozpoczęte lub przydzielone zasoby w: onRemembered, onAbandoned można zignorować, ponieważ nie zostanie wywołana, jeśli onRemembered jest . (I02c36)

  • Zmieniono nazwę TransformedText.transformText na TransformedText.text

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

    • Ciąg z adnotacjami
    • ParagraphStyle
    • Styl spanu
    • TextStyle
    • Waga czcionki
    • Ozdobniki tekstu
    • TextGeometricTransform
    • Indeks tekstowy
    • Wynik układu tekstu
    • TextLayoutInput (Iaff99),
  • Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).

  • Wycofanie metod globalnych współrzędnych i nowych metod współrzędnych opartych na oknie. (IEE284).

  • Użyj ImeAction.None zamiast ImeAction.NoAction

    • Użyj elementu ImeAction.Default zamiast ImeAction.Unspecified (Ie1bcc)).
  • Element FocusRequester.createRefs jest teraz oznaczony jako eksperymentalna, ponieważ może się zmienić. (I2d898, b/177000821)

  • Nazwa Semantics PropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. Nazwa parametru stateDescriptionRange została zmieniona na progressBarRangeInfo. Nazwa Accessibility ScrollState została zmieniona na ScrollAxisRange. Nazwa levelAccessibility ScrollState została zmieniona na level ScrollAxisRange. Nazwa pionowości ScrollState została zmieniona na vertical ScrollAxisRange. (Id3148).

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

  • Wykorzystanie narzędzia TestCoroutineDispatcher w testowaniu (I532b6)

  • Usunięto dane PointerInputData i zmodyfikowano PointerInputChange wszystkie pola PointerInputData. Utworzono zdarzenie PointerInputEvent i PointerInputEventData, bo nie są używane dowolny publiczny interfejs API. (Ifff97, b/175142755)

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

  • Usuń parametr displaySize, ponieważ powinien się unikać. Zwykle jest to lepiej użyć rozmiaru co najmniej onRoot() lub rozmiaru okna. (I62db4).

Wersja 1.0.0-alpha10

13 stycznia 2021 r.

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

Zmiany interfejsu API

  • ImeOptions i keyOptions nie są już klasą danych (I3c898, b/168684531).
  • Zmiany w interfejsie VisualTransformation API
    • Zmieniono nazwę OffsetMap na OffsetMapping
    • Zmieniono nazwę OffsetMapping.identityOffsetMap na OffsetMapping.Identity
    • Transformacja hasła nie jest już klasą danych.
    • Przeniesiono OffsetMapping do własnego pliku
    • (I0bdf3).
  • EditOperations API Zmiany
    • Zmieniono nazwę operacji EditOperation na EditCommand
    • Dodano sufiks polecenia dla konkretnych implementacji EditOperation
    • Pole EditCommand nie jest już klasami danych.
    • Zmieniono nazwę funkcji EditOperation.process na applyTo
    • Zmieniono nazwę detektora zdarzeń wejściowych nainputEventCallback
    • (I0a366)
  • Zmodyfikowano prędkość, aby obejmowała składowe i matematyczne operacji. (IB0447)
  • Zmieniono nazwę @EksperymentalTesting na @EksperymentalTestApi na spójne z podobnymi eksperymentalnymi adnotacjami interfejsu API (Ia4502, b/171464963).
  • Dodano eksperymentalną metodę stickyHeader dla LazyColumn/LazyRow (I0a81d).
  • Zmieniono nazwę Color.useOrElse() na Color.takeOrElse() (Ifdcf5)
  • Wycofano TestUiDispatcher. Użyj Dispatchers.Main (Ic171f, b/175385255)
  • Dodaj przełącznik do podstawowego pliku Strings.kt (I4a5b7, b/172366489)
  • Przeniesiono klasę natywny do interfejsu użytkownika i udostępniono go do użytku wewnętrznego. Zaktualizowano przypadki użycia natywnego klasy w równa się implementacji do użycia „to MyClass” . (I4f734)
  • Obiekty FlowRow i FlowColumn zostały wycofane. Użyj układu niestandardowego. (I09027)
  • Modifier.focus() i Mmodifier.focusRequester() zostały wycofane. Użyj w zamian metod Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • Wprowadzono opcję SelectionRegistrar.notifySelectableChange, aby powiadamiać użytkowników o aktualizacjach Selectable (Zaznaczanie) w usłudze SelectionManager. (I6ff30, b/173215242)
  • Zmieniono fun Dp.isFinite() na val Dp.isFinite (I50e00)
  • Nazwa ograniczenia#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c).
  • Dodano element jest określony, nieokreślony i useOrElse dla klas wbudowanych ze stałą nieokreśloną. (I93f7b, b/174310811)

Poprawki błędów

  • Nowy interfejs API Animatable oparty na współudziale, który zapewnia wzajemną wyłączność między animacjami. Nowa specyfikacja DecayAnimationSpec, która obsługuje wielowymiarową animację rozpadu (I820f2, b/168014930)
  • Dodano obsługę wyłączonych i tylko do odczytu pól tekstowych (I35279, b/171040474, b/166478534)
  • Ciąg animate() został zastąpiony tekstem animateAsState(), , który zwraca State<T> zamiast T. Dzięki temu skuteczności, ponieważ można zawęzić zakres unieważniania w którym odczytywana jest wartość State. (IB179e)
  • Dodaj interfejs API roli Semantics i Rolę jako parametr do klikalny, wybierany i włączany SemanticsModifier. Zmieniono Modifier.progressSemantics, aby Slider mógł z niego korzystać. (I216cd)
  • Dostęp do natywnego zdarzenia keyEvent można teraz uzyskać przez keyEvent.nativeKeyEvent (I87c57, b/173086397)

Wersja 1.0.0-alpha09

16 grudnia 2020 roku

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

Zmiany interfejsu API

  • Dodaj interfejs przewijany

    Dzięki temu ScrollState i LazyListState mogą być traktowane jako wspólne co pozwala na stosowanie przewijania niestandardowego w obu typach stron.

    Powoduje to również przejście w trybie smooth ScrollBy do funkcji rozszerzenia w sekcji Scrollable, korzystając z tej funkcji. (I2153B)

  • Dodano opcję LazyVerticalGrid. (I17267, b/162213211)

  • Wycofano LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Użyj LazyColumn i LazyRow (I5b48c)

  • Zmieniono nazwę na potrzeby zawieszania interfejsów API wejściowych wskaźnika HandlePointerInputScope do AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)

  • Dodano LazyListState.layoutInfo, który wyświetla listę rozmiarów i przesunięć aktualnie widocznych elementów (If8678, b/170472532).

  • Usunięto adnotację ExperimentalPointerInput (Ia7a24).

  • Dodaliśmy obsługę obiektu InteractionState dla pól tekstowych. (I61d91)

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

  • Dodano parametr rozmieszczenia pionowego do LazyColumn. Dodano parametr levelArrangement do LazyRow. Układ pozwala dodawać odstępy między produktami i określać ich rozmieszczenie, gdy nie ma ich wystarczająco dużo, aby wypełnić cały minimalny rozmiar. (Icf79a, b/170394300)

  • DetectMultitouchSteps używa teraz jednego wywołania zwrotnego z kombinacją parametrów centroidu, przesuwania, powiększania i obracania. (Ie6e1c).

  • Przeniesiono ContentDrawScope do grafiki UI z DrawScope. (Iee043, b/173832789)

Poprawki błędów

  • Funkcje lambda w modyfikatorach przesunięcia zwracają teraz wartość IntOffset, a nie liczbę zmiennoprzecinkową. (Ic9ee5, b/174137212, b/174146755)
  • Usunięto interfejsy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Zostały one oznaczone jako Poprzednio InternalComposeAPI. Teraz są wewnętrzne do modułu tworzenia wiadomości.

    Atrybuty CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API do wyodrębniania informacje o kompozycji. Są one publiczne, ale nie przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ zapewniają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c);

  • Refaktoryczny ShaderBrush na leniwie twórz instancję cieniowania, informacje o rozmiarze rysunku i środowisko. Przydaje się to do definiowania gradientów zajmują pełne granice rysowania funkcji kompozycyjnej w momencie kompozycji, bez konieczności na wdrożenie niestandardowych implementacji DrawModifier.

    Wycofane interfejsy API konstruktora funkcji gradientu na metodę fabryczną obiektu Gradient. (I511fc, b/173066799)

  • Interfejs Modifier.focusObserver został wycofany. Użyj metody Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)

  • Autofill API to teraz eksperymentalny interfejs API, który wymaga włączenia (I0a1ec)

  • Dodawanie deklaracji demontażu struktury w celu utworzenia instancji FocusRequester (I35d84, b/174817008)

  • AccessibilityLabel została zmieniona na contentDescription. Zmieniono nazwę ułatwień dostępu na stateDescription. (I250f2)

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

  • AndroidOwner jest wewnętrzny (Ibcad0, b/170296980)

  • Nowa funkcja nieskończoności powtarzania do tworzenia specyfikacji InfiniteRepeatableSpec (I668e5)

  • Zmieniono interfejs Applier, aby uprościć buduj drzewa od dołu, a nie od góry.

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

    Dodano nową metodę: insertBottomUp().

    Stosowany sposób wstawia węzły do edytowanego drzewa przy użyciu insertTopDown() lub insertBottomUp() w zależności od który jest skuteczniejszy.

    Niektóre drzewa, takie jak LayoutNode i View, są znacznie większe efektywniej tworzyć reklamy od dołu do góry niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, była skopiowana do każdego podmiotu, który wymagał przeprowadzenia oddolnej i zwiększania wydajności. W związku z tą zmianą Applier zastępuje insertBottomUp(), aby utworzyć drzewo od dołu insertTopDown(), aby utworzyć drzewo od góry. (Icbdc2)

  • Dodano interfejs PaintterResource API do obsługi nieprzezroczystych obiektów Painter z dowolnego z zrasteryzowanych formatów zasobów (np. PNG) lub VectorDrawables. Konsumenci nie mają już aby z wyprzedzeniem określić typ zasobu i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w funkcjach kompozycyjnych lub modyfikatorów do malowania obrazów. (I2c703, b/173818471)

  • Dodano w kolejności funkcję fabryczną buildAnnotatedString, aby utworzyć obiekt AdnotatedString. Wycofany ciąg z adnotacjami za pomocą funkcji konstruktora. (Idfe0b)

Wersja 1.0.0-alpha08

Grudzień 2, 2020

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

Zmiany interfejsu API

  • Z parametru CoreTextField usunięto parametr maxLines. Jeśli chcesz ograniczyć wysokość pola tekstowego liczbą wierszy, użyj funkcji BasicTextField. (Iec002).
  • Zmieniono metody await*TouchSlop() na nie wykryje wskaźnika w dół i zmienił nazwę na *OrCancellation Wyeliminowaliśmy także konieczność stosowania orientationLock. (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 do content. (Iec48e).
  • foundation:foundation-text interfejsów API zostało przeniesionych do usługi foundation:foundation. Struktura pakietu pozostała bez zmian (Id3eb2).
  • Nowy detektor gestów wielodotykowych, w tym: pomagają wykrywać obrót, powiększenie i przesuwanie. (IC459d).
  • Nowy detektor gestów przeciągania – zawieszanie wskaźnika wejściowy interfejs API, w tym blokowanie orientacji. (Icef25).
  • Zmieniono nazwę zasobu wektorowego na ImageVector Przeniesiono zasób VectorAsset do Builder i zmieniono jego nazwę na być wewnętrzną klasą ImageVector zgodnie z wytyczne rady ds. interfejsów API. Dodano alias typu VectorAssetBuilder do do pliku ImageVector.Builder dla zgodności. (Icfdc8)
  • Zmieniono nazwy komponentu ImageAsset oraz powiązane z ImageBitmap. (Ia2d99)
  • Przeniesiono właściwości semantyki podstawowej do interfejsu użytkownika (I6f05c)
  • Dodaj interfejsy API do przewijania opartego na współrzędnych:

    Dodaje parametry LazyListState.snapToItem i LazyListState.smooth ScrollBy, a także elementy niższego poziomu Interfejsy API do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania i kontrolują przewijanie który czeka na zakończenie przewijania przed zwróceniem. (IE5642)

  • Do pól BasicTextField, TextField i OutlinedTextField dodaliśmy parametr singeLine. Ustaw ten parametr na „true”, aby pole tekstowe było jedną linią, którą można przewijać w poziomie. (I57004, b/168187755)

  • Wykrywanie gestów do kliknięcia, dwukrotnego dotknięcia, przytrzymania oraz oznaczenie prasy zostały dodane za pomocą nowego wskaźnika zawieszania. dane wejściowe. Dodaliśmy również kilka narzędzi, które ułatwiają korzystanie które pozwalają programistom na pisanie własnych wzorców do wykrywania gestów. (I00807).

  • W podstawie musi być dodana funkcja Modifier.focusable. Umożliwia dodanie do komponentu zachowania, które można zaznaczyć, zachowując przy tym prawidłową semantykę i ułatwienia dostępu. (I41eb9, b/152525426, b/162865824)

  • Wcześniej wycofane interfejsy API zostały usunięte: usunięto obramowanie, zamiast niego użyj BorderStroke. Usunięto modyfikator.drawBorder. Zamiast niego użyj Modifier.granic. Usunięto modyfikator.grawitacji. Zamiast niego użyj Modifier.align. Stos został usunięty. Zamiast niego użyj Box (I32c2b, b/172470874)

  • Zmieniono nazwę Arrangement.Bezwzględna. (If26f2).

Poprawki błędów

  • Przeniesiono interfejsy API DrawModifier z androidx.compose.ui do androidx.compose.ui.draw. Plik DrawModifierlegacy.kt został utworzony w uwzględnij aliasy typów/metody pomocnicze, aby ułatwić migracji z wycofanych do bieżących API. (Id6044, b/173834241)
  • Nazwa Modifier.drawLayer została zmieniona na Modifier.graphicsLayer Zaktualizowaliśmy też powiązane klasy w GraphicsLayer zgodnie z opinii Rady ds. interfejsów API. (I0bd29, b/173834241)
  • Element <T> został usunięty z deklaracji SubcomposeLayout. Możesz go użyć bez określania typu. (IB60c8)
  • Zwiększenie czasu działania PointerInputData pola pozycji nie mogą mieć wartości null. (Id468a).
  • MaterialTheme ustawia teraz prawidłowe kolory uchwytów wyboru i tła zaznaczenia. Aplikacje niematerialne mogą ręcznie używać elementów AmbientTextSelectionColors, aby dostosowywać kolory używane do zaznaczenia. (I1e6f4, b/139320372, b/139320907)
  • Nazwa parametru wyrównania Box została zmieniona na contentWyrównajment. (I2C957)
  • Zmieniono nazwy modyfikatorów przesunięciaPx na przesunięcie. Wykorzystują teraz parametry lambda zamiast stanu State. (Ic3021, b/173594846)
  • Dodano obiekt WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywny, oraz obiekt WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
  • Dodano parametr resetInput do usługi TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • Zaktualizowano TextFieldValue API
    • ustawił wartość pola TextFieldValue.composition tylko do odczytu
    • usunięto wyjątek dla nieprawidłowego zakresu wyboru (I4a675, b/172239032)
  • Wycofany komponent Ambient został wycofany z sufiksem Ambient i zastąpił je nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi interfejsu Ambients i Compose API. (I33440)
  • Dodano otokę kroju czcionki na Androidzie. Aby załadować Androida, Krój pisma za pomocą funkcji typeface, np. typeface(Typeface.DEFAULT). Nazwa została też zmieniona z typefaceFromFontFamily() na typeface() (I52ab7)
  • Dodaliśmy sprawdzanie lintowania, aby sprawdzić, czy fabryki modyfikatorów używają wewnętrznie interfejsu androidx.compose.ui.composed {}, a nie są oznaczane jako @Composable. (I3c4bc).
  • Dodano sprawdzanie lintowania w celu sprawdzenia, czy funkcje fabryczne modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, co pozwala na płynne łączenie ich w łańcuchy. (I07981).
  • Nazwa argumentu semantyka mergeAllDescendants została zmieniona na mergeDescendants. (IB6250)
  • Kontrola czasu w testach (TestAnimationClock i jego zastosowania) to teraz w fazie eksperymentalnej (I6ef86, b/171378521)
  • Usuń stary moduł testowania interfejsu i jego złącza (I3a7cb)
  • Nazwa elementu TextUnit.Inherit została zmieniona na TextUnit.Nieokreślona zgodnie z innymi jednostkami. (Ifce19).
  • Interfejs Wyrównania został zaktualizowany i działa. (I46a07, b/172311734)
  • Moduł foundation:foundation-text został scalony z modułem foundation:foundation (Idac0f)
  • Wycofywanie elementu Place(Offset) i placeRelative(Przesunięcie) Użyj przeciążeń z przesunięciami w całości (I4c5e7)
  • Nazwa konta id została zmieniona na layoutId w domenie LayoutIdParentData. Nazwa „Measurable.id” została zmieniona na Measurable.layoutId. (Iadbcb, b/172449643)

Wersja 1.0.0-alpha07

11 listopada 2020 roku

androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-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 zakresie Modifier.fillParentMaxSize[Width|Height] w zakresie LazyColumn/Row (I797e2, b/166586426).
  • Usunięto reakcję KeyboardOptions.toImeOptions na publiczny interfejs API. (IC2e45).
  • Podstawowe funkcje AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast nich używaj nowych wersji dostępnych w bibliotece Material Design. W przypadku aplikacji innych niż Material Design należy utworzyć własny system projektowania specyficznych dla nich motywów graficznych, z którego można korzystać w własnych komponentach. (I74acc, b/172067770)
  • Foundation.Text została wycofana i zastąpiona materiałem material.Text. Informacje o podstawowym, nieopiniowanym interfejsie API tekstowym, który nie przetwarza wartości z motywu, znajdziesz na stronie androidx.compose.foundation.BasicText. (If64cb).
  • Dodano maxLines do pól tekstowych (Ib2a5b).
  • Zaktualizuj pola TextFields, aby akceptować KlawiaturaOptions (Ida7f3)
  • dodano KeyboardOptions do użytku w polach tekstowych (I9ca32).
  • Dodaje interfejs BasicText jako interfejs API do obsługi tekstu bez tworzenia opinii, równolegle do interfejsu BasicTextField. (I28268)
  • Usunięto adnotację ExperimentalLazyDsl. LazyColumn/LazyRow można teraz używać bez dodawania @OptIn (Idab7a, b/166584730)
  • Pole BaseTextField zostało wycofane. Użyj w zamian pola BasicTextField. (I896eb)
  • Pole BasicTextField zostało dodane do zastąpienia zarówno CoreTextField, jak i BaseTextField (Id4cea).
  • Usuń wycofane elementy LazyColumnItems/LazyRowItems (I1d8a8)
  • Wycofane komponenty kompozycyjne służące do dostosowywania rozmiaru do pomiarów wewnętrznych zostały usunięte. (I18537, b/171811496)
  • Zmieniono nazwę parametru metricPaddingFrom na splashFrom. Dodaliśmy modyfikator paddingFromBaseline, aby ułatwić określenie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
  • Parametr matchHeightConstraintsFirst został dodany do modyfikatora parameterRatio, którego można użyć do określenia ograniczenia rozmiaru do wysokości przed próbą stosowania korespondentów szerokości. (IE7c43, b/155290593)
  • Wycofane ograniczenia DpConstraint zostały usunięte. (I87884, b/171702471)

Poprawki błędów

  • Wprowadzona funkcja ScaleFactor klasa śródtekstowa reprezentująca skalę czynniki wpływające na orientację poziomą i pionową osie niezależne od siebie w kolejności na potrzeby niejednolitych zastosowań skalowania.
    • Do metody computeScaleFactor dodano metodę computeScaleFactor Skala treści
    • Dodano funkcję ContentScale.FillBounds do wykonania. niejednolite skalowanie w celu rozciągnięcia źródła które w pełni zajmują miejsce docelowe.
    • Dodano metody operatorów do obliczeń Parametry ScaleFactor z parametrami Size.
    • (IC96a6, b/172291582)
  • Sekcja CapToBitmap została przeniesiona do obrazu scanToImage. (I86385)
  • Oznacza CoreText jako @InternalTextApi. Użyj tekstu BasicText. (I6aaeb).
  • Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
  • Przeniesiono KlawiaturaType i ImeAction do KlawiaturaOptions (I910ce).
  • Pole CoreTextField zostało oznaczone jako @InternalTextApi. Użyj natomiast BasicTextField (Ie2469)
  • Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Elementu SubcomposeLayout można teraz używać bez dodawania elementu @OptIn (I708ad)
  • Przedstawienie modułu ui-test-junit4 (Ib91f8).
  • Zaktualizowany interfejs Icon API, aby stał się dostępny w przypadku koloru.Nieokreślony jako możliwy odcień, który będzie rysował uzyskany kolor lub malarza bez filtra ColorFilter. Wcześniej próbuje zignorować zabarwienie za pomocą parametru Color.Unspecified zabarwienie na przezroczystym kolorze w ogóle nie jest renderowana. (I049e2, b/171624632)
  • Element MeasureResult został przeniesiony z obiektu MeasureScope. (Ibf96d, b/171184002)
  • Kilka symboli związanych z układem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
  • Plik androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb)
  • FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
  • Dodano element SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Dodaj testy dla elementu SelectionHandles' Pozycje w komponencie SelectionContainer. (Ie93db)
  • Dodano opcję autokorekty IME dla klawiatury (I57b8d)

Wersja 1.0.0-alpha06

28 października 2020 r.

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

Zmiany interfejsu API

  • Strona androidx.compose.foundation.Icon została przeniesiona do androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material Design, możesz w narzędziu Painter użyć komponentu Image / Modifier.paint() . (I9f622)
  • Dodano elementInteractState do obiektów Modifier.scrollable, ScrollableColumn i LazyColumnFor (I81566, b/169509805)
  • Do elementu RowScope dodano element AdjustByBaseline, a jego nazwa została zmieniona na „alignBy” (I06503, b/170628732)
  • Box został przekształcony w funkcję wbudowaną. (Ibce0c, b/155056091)
  • Dodano maxLines do CoreTextField (Ibee58, b/143687793)
  • Do CoreTextField dodano program softwrap. (I21a4b)

Poprawki błędów

  • Wycofanie VectorPainter z korzyścią na lepsze radzenia sobie z. wskazują, że interfejs API kompozycyjny jest wewnętrzny Wykorzystywane jest słowo „zapamiętanie” zachowywania danych w kompozycje. (Ifda43).
  • włącz przejścia w zasadzie ComposeTestRule; usuń opcję włącz migający kursor w ComposeTestRule. (If0de3).
  • Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
  • Zmieniono nazwę Radius API na Promień narożnika ułatwiający ekspresowanie jak jest on używany w tworzeniu. Zaktualizowaliśmy dokumentację, aby wskazać że ujemne promienie narożników są zaciśnięte, do zera. (I130c7, b/168762961)
  • Dodaj możliwość podawania informacji inspektora w modyfikatorze utworzonym (Idee08, b/163494569)
  • Dodano opcję IME dla wielkich liter (I8ac38).
  • Popraw pozycję uchwytu RTL. (I6e1e0).
  • Zmiana powodująca niezgodność: usunęliśmy wartość zwracaną z metody PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o wykorzystaniu. Zamiast zwracać dane z metody PointerInputFilter.onPointerEvent(...), możesz teraz po prostu zmodyfikować dane wykorzystania przekazywanego zdarzenia PointerEvents. (I6acd0).
  • Do menu wyboru dodano opcję SelectAll (Ief02b).

Wersja 1.0.0-alpha05

14 października 2020 r.

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

Zmiany interfejsu API

  • CoreTextField obsługuje teraz funkcje kursora (Id23aa)
  • Wycofuje interfejsy API contentColor() i currentTextStyle(), a następnie zastępuje je odpowiednio środowiskom AmbientContentColor i AmbientTextStyle. Aby uzyskać dostęp do bieżącej wartości, użyj właściwości .current z właściwości trybu nieaktywnego, jak w przypadku każdego innego elementu otoczenia. Zmiana ta została wprowadzona w celu zachowania spójności i uniknięcia korzystania z wielu sposobów na osiągnięcie tego samego celu. Dodatkowo zmienia nazwy niektórych właściwości elementów otoczenia, by lepiej opisać ich przeznaczenie:

    • ContentColorAmbient -> Kolor treści Ambient
    • TextStyleAmbient -> Styl tekstu otoczenia
    • IndicationAmbient -> Wskazanie otoczenia
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

Poprawki błędów

  • W ramach standaryzacji wartości ustawnych dla klas wbudowanych, zmień nazwę Kolor.Usuń ustawienie na Kolor.Nieokreślony w celu zachowania spójności z innymi klasami wbudowanych (I97611, b/169797763)
  • Dodano działania ułatwień dostępu Kopiuj/wklej/wytnij (I6db4f)
  • Wprowadzono tekst TextOverflow.None. Gdy nadmiarowe ma wartość Brak, tekst nie obsługuje już nadmiarowych elementów i zgłasza rzeczywisty rozmiar do LayoutNode. (I175c9, b/158830170)
  • Zaktualizowany rozmiar.Nieokreślony jako Float.NaN, a nie Liczba zmiennoprzecinkowa.POSITIVE_INFINITY. Zaktualizowano implementacje narzędzia Painter na Sprawdź pod kątem rozmiaru.Dodatkowo nieokreślony jako rozmiarów nieskończonych. (I95a7e)
  • dodano moduł strony docelowej i integrację stronicowania (Ib85da),
  • Zmodyfikuj LazyListScope, aby otrzymywać wartości do wartości null (I1765b)
  • Nazwa OnPositionedModifier została zmieniona na OnGloballyPositionedModifier a nazwa onPositioned() została zmieniona na onGloballyPositioned(). (I587e8, b/169083903)
  • Dodano przykłady dla LazyColumn/Row (Idc16d).
  • Naprawiono metody items i itemsIndexed zezwalające na pustąListę (I06647)
  • Dodaj DSL do określania informacji o inspektorze (Ic9a22)
  • Przenieś do tekstu przytrzymanie. (Iff2bc)
  • Wyłącz zaznaczanie w tekście i wersję demonstracyjną. (IE7E97).
  • Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907).
  • Użytkownik PointerInputFilter.onPointerInput(...) został usunięty. W ich miejscu powinna być używana wartość PointerInputFilter.onPointerEvent(...). (I6f04a)

Wersja 1.0.0-alpha04

1 października 2020 roku

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

Zmiany interfejsu API

  • Nazwa stosu została zmieniona na Box. Dotychczasowa wersja Foundation.Box zostanie zastąpiona nową kartą compose.foundation.layout. Działanie nowego pola to układanie elementów podrzędnych jeden nad drugim, jeśli ma kilka elementów podrzędnych. Różni się to od poprzedniej skrzynki, która działała podobnie jak kolumna. (I94893, b/167680279)
  • Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać do pola dekoracje lub dopełnienie, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.splash) (Ibae92, b/167680279)
  • Dodaj nową klasę LazyListState. Pozwala to obserwować i kontrolować pozycję przewijania Komponenty LazyRow i LazyColumn. Instancje można tworzyć za pomocą zapamiętujLazyListState() i przekazuj je do parametru stanu funkcji . Obecnie pierwszy widoczny element i odsunięcia mogą być zaobserwowanych w tej początkowej wersji. (Ic7cb7, b/159307669)
  • Leniwe położenie listy i odsunięcie przewijania są teraz zapisywane przywrócone w ramach odtwarzania aktywności (Ie045f, b/166589058)
  • Dodaj działanie semantyki długiego kliknięcia (I6281b, b/156468846)
  • Dodano narzędzie Mutatormutex do utrzymywania pojedynczego mutatora dla „udostępniany stan” w czasie i anulowanie kolidujących mutatorów według priorytetu (I3f975)
  • Adnotacja rootAnimationClockFactory, wyraźnesEnabled, mlinkingCursorEnabled i textInputServiceFactory z @WidoczneForTesting ustaw wewnętrzny interfejs API i ukryj jego dokument kdoc (I554eb, b/168308412)
  • Usunięto parametr inlineContent z tekstu zawierającego ciąg znaków. Nie zostanie użyty, ponieważ element inlineContent musi działać z AnnotatedString. (Ief403).
  • Wycofane niestandardowe interfejsy aranżacji interfejsów API zostały usunięte. (IC576d, b/168297922, b/168297923)
  • Parametr unbounded został dodany do modyfikatorów wrapContentSize, co umożliwia pomiar elementu układu z nieskończonymi ograniczeniami maksymalnymi. (I77951, b/158559319)
  • Zablokowaliśmy statyczne importowanie treści zakresów układu (np.alignWithSiblings w RowScope). Zamiast niego należy stosować alternatywny zakres wyraźny: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Poprawki błędów

  • Zaktualizowano wiele interfejsów API związanych z grafiką
    • Zaktualizowano skalę i obrót interfejsów API transformacji, aby wykorzystać Parametr przesunięcia reprezentujący tabelę przestawną współrzędna zamiast osobnej liczby zmiennoprzecinkowej dla współrzędnych x/y w DrawScope i DrawTransform
    • Usunięto elementy Rect.expandToInclude i Rect.join metod
    • Zaktualizowaliśmy dokumentację dotyczącą promienia o owalu. oprócz orbitreka
    • Dodaliśmy dokumentację, by wskazać publiczny konstruktor dla wbudowanego promienia klasa nie powinna być wywoływana bezpośrednio, Wystąpienia obiektów o określonym promieniu powinny być tworzone przez ich konstruktory funkcji
    • Usunęliśmy interfejsy RoundRect API do wysyłania zapytań dotyczących górnego prawa, dolny róg, dolny środek itp.
    • Wycofano Rect.shift na rzecz Rect.translate
    • Usunięto interfejsy API RoundRect.grow i Rect.shrink
    • Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect
    • Usunięto element RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Nazwa RoundRect.longestSide została zmieniona na RoundRect.maxDimensions
    • Zmieniono nazwę RoundRect.shortestSide na RoundRect.mindimension
    • Zmieniono RoundRect.center na właściwość, a nie funkcję
    • Zaktualizowano konstruktor RoundRect, który wykorzystuje właściwości Radius zamiast poszczególnych parametrów dla wartości promieni x/y.
    • Usunięto interfejsy Size API, które zakładały, że jest to prostokąt z nazwą origin 0,0
    • Do interfejsu Radius dodano interfejs API destrukcyjny.
    • Przeniesiono różne funkcje rozszerzenia RoundRect właściwości
    • (I8f5c7, b/168762961)
  • Optymalizacje wydajności funkcji LazyColumnFor/LazyRowFor przewijania dzięki unikaniu zbędnych zmian kompozycji podczas każdego przewijania (I64f65, b/168293643, b/167972292, b/165028371)
  • Naprawiono awarię w LazyColumnFor/LazyRowFor po przewinięciu i zmianie elementów oraz wdrożeniu automatycznego przewijania w górę, gdy wcześniej widoczny element został usunięty. Dzięki temu nie wyświetlamy już pustych luk na końcu (I220ab, b/161480164, b/167855468).
  • Nie można już umieszczać elementów przewijanych w kontenerach tego samego kierunku, takich jak ScrollableContainer i LazyColumnFor. Nigdy nie było obsługiwane i po prostu nie dało się z niego korzystać. Komunikował się on z kompozycją elementów LazyColumnFor (I6e101).
  • Zaktualizowano wiele interfejsów API związanych z grafiką
    • Zaktualizowano interfejsy API DrawScope z zakresem metod transformacji, aby wskazać, że przekształcenie jest stosowane tylko w wywołanie zwrotne i usunięte po wywołaniu
    • Zaktualizowaliśmy dokumentację klipPath, aby odnosiła się do ścieżki zamiast zaokrąglonego prostokąta
    • Poprawiono odstępy w dokumentacji dla prawego parametru w klipPath
    • usunięto parametr rozmiaru
    • Zmieniono nazwę parametrów Dx/dy w metodzie wstawienia na w poziomie i w pionie
    • Dodano przeciążenie wektorowe, które zapewnia ten sam wartość wcięcia do wszystkich 4 granic
    • Usunięto dokumentację metody wstawiania wskazującą, które wcięcie zostanie zastosowane do wszystkich 4 stron,
    • Zaktualizowano dokumentację klasy Rect
    • Zaktualizowano komentarze do parametrów prostokąta, aby pasowały do dokumentu kdoc styl
    • Usunięto elementy Rect.join i Rect.expandToInclude
    • Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
    • (If086a, b/167737376)
  • do właściwości semantyki dodaj parametr Accessibility ScrollState. (Ifeda9).
  • Ustaw TextRange w tekście, aby uniknąć tworzenia obiektów. (Id034b)
  • Ograniczenia akapitu zostały usunięte. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712).

Wersja 1.0.0-alpha03

16 września 2020 roku

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

Zmiany interfejsu API

  • Nazwa InnerPadding została zmieniona na PaddingValues. (I195f1, b/167389171)
  • Spójnie przemianowaliśmy zastosowania grawitacji, aby wyrównać lub wyrównać interfejsy API układu. (I2421a, b/164077038)
  • Do Stosu dodano parametr wyrównania, który umożliwia określenie domyślnego wyrównania dla wszystkich elementów podrzędnych Stos. (IE80ca, b/164085265)

Poprawki błędów

  • Funkcje DpConstraints i interfejsy API korzystające z nich zostały wycofane. (I90cdb, b/167389835)
  • Parametry minWidth i maxWidth zdarzenia widthIn zostały zmienione na min i max. Podobnie w przypadku: preferredWidthIn, heightIn i preferredHeightIn. (I0e5e1, b/167389544)
  • Dodano onNode i inne metody globalne w ComposeTestRule jako obecne globalne słowa kluczowe zostaną wycofane. (IEAE36).
  • stały sposób obliczania rozmiaru i pozycji w MigrateScope, spowodowane m.in. przez generowanie nieprawidłowych gestów przesuwania (Iaf358, b/166589947)
  • Przeniesiono createAndroidComposeRule i AndroidInputDispatcher z androidx.ui.test.android do androidx.ui.test (Idef08, b/164060572)

Wersja 1.0.0-alpha02

Wrzesień 2, 2020

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

Poprawki błędów

  • TestUiDispatcher jest oznaczony jako eksperymentalny (Iae99d, b/161247083)
  • Dodano użytkownika ManualFrameClock.hasAwaiters, aby sprawdzić, czy coś jest oczekiwanie na klatkę z zegara; runWithManualClock jako zamiennik dla runBlocking w przypadku testów, które wymagają ManualFrameClock; TestUiDispatcher.Main, który zapewnia łatwy dostęp do głównego dyspozytora UI podczas testów.

    Na przykład:

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

    (I0a85b, b/161247083)

Wersja 1.0.0-alpha01

26 sierpnia 2020 r.

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

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

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

Zmiany interfejsu API

  • Do elementów Wiersz i Kolumna dodano rozkład odstępów, aby umożliwić pozycjonowanie elementów podrzędnych układu ze stałymi odstępami. Dodano również wyrównany układ, aby umożliwić umieszczanie elementów podrzędnych układu obok siebie i wyrównanie w wierszu/kolumnie zgodnie z wyrównaniem. Poprzednie metody Arrangement.Vertical#arrange i Arrangement.Level#arrange zostały wycofane i w przyszłości nie będzie można zapisywać układów niestandardowych. (I6733d, b/161985975)
  • Przesunięcie stało się klasą wbudowaną (Iaec70)
  • Usunięto wywołania zwrotne onFocusChanged z TextField. Zamiast niej użyj metody Modifier.focusObserver. (I51089, b/161297615)
  • Interfejs Modifier.drawBorder został wycofany. Zamiast niego użyj metody Modifier.granic. Klasa danych obramowania została zastąpiona przez BorderStroke (I4257d, b/158160576)
  • Funkcje Vertical Scroller oraz Level Scroller zostały usunięte. Zamiast niej użyj komponentu ScrollableColumn/Row. Usunięto modyfikator.drawBackground. Użyj pliku Modifier.background (I73b0d, b/163019183)
  • Usuń oznaczone jako wycofane modyfikatory FillMax* z LazyItemScope, ponieważ utrudniają prawidłowe dodawanie tych modyfikatorów do elementów, które nie są bezpośrednimi elementami podrzędnymi LazyColumnFor (Ifa78d).
  • dodaliśmy implementację LazyColumn/LazyRow jako DSL (I93cc6).
  • Ograniczenia są teraz klasą wbudowaną (I88736)
  • Dodaliśmy możliwość zmiany rozmiaru układu do ułamka dostępnej przestrzeni przy użyciu modyfikatorów FillMaxWidth, FillMaxHeight i FillMaxSize. (I945bb, b/161562591)

Poprawki błędów

  • do komponentu SelectionContainer (I4aada, b/161487952) dodano parametr modyfikatora.
  • Do elementu Semantics PropertyKey dodano funkcję mergePolicy lambda. Może to być służy do definiowania niestandardowej zasady semantyki mergeAllDescendants scalanie. Domyślną zasadą jest używanie wartości nadrzędnej, jeśli jest już używana obecny, w przeciwnym razie wartość potomna. (Iaf6c4, b/161979921)
  • Nazwa usługi PlacementScope.placeAbsolute() została zmieniona na PlacementScope.place(), a poprzednia nazwa (PlacementScope.place()) na PlacementScope.placeRelative(). W efekcie metoda PlacementScope.place() nie będzie już automatycznie dublować położenia w kontekstach od prawej do lewej. Jeśli chcesz, użyj PlacementScope.placeRelative(). (I873ac, b/162916675)
  • Usunięto wycofany komponent FilledTextField. Aby uzyskać implementację interfejsu Material Design w wypełnionym polu tekstowym, użyj pola TextField. (I5e889)
  • Dodano parametr backgroundColor do właściwości LinearProgressIndicator, a w przypadku CircularProgressIndicator usunęliśmy wewnętrzne dopełnienie. Dodano nową wartość ProgressIndicatorConstants.DefaultProgressAnimationSpec, której można użyć jako domyślnej właściwości AnimationSpec podczas animowania postępu między wartościami (If38b5, b/161809914, b/161804677).
  • Funkcja kompozycyjna state { ... } została wycofana i zastąpiona wyraźne wezwania do działania (remember { mutableStateOf(...) }) w celu uniknięcia wątpliwości. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji stanu management i pasuje do wzorca by mutableStateOf() klasy przekazania usługi. (IA5727).
  • Zmieniono nazwę RRect na RoundRect aby lepiej dopasować je do wzorców nazewnictwa. Utworzono podobne konstruktory funkcji do RRect i wycofanej funkcji RRect konstruktory (I5d325)
  • Usunięto wartości onChildPositioned i OnChildPositionedModifier. Programiści powinni używać metod onPositioned i OnPositionedModifier w układzie podrzędnym. (I4522e, b/162109766)
  • IntSize jest teraz klasą wbudowaną (I2bf42)
  • Aby edytować, przytrzymaj pusty obszar. (IB1e5b).
  • Ukryj FloatingToolbar po kliknięciu tekstu. (If4525).
  • Ukryj FloatingToolbar podczas aktualizowania zaznaczenia. (I8444C)
  • Odznacz w przypadku rozmycia. (I781a2).

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

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

Zmiany interfejsu API

  • Dodano parametr LazyItemScope dla parametru itemContent list Lazy. Udostępnia modyfikatory wypełniające maksymalny rozmiar elementu nadrzędnego, co rozwiązuje przypadek użycia, gdy element powinien wypełniać widoczny obszar, a zwykła metoda Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
  • Przenieś okno do interfejsu użytkownika (I47fa6)
  • Dodano wersje LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które zawierają zarówno indeks, jak i element w elemencie itemCallback. Jest to przydatne, gdy oprócz bieżącego elementu musisz znać bieżący indeks. (I65ff3)
  • Nazwa Modifier.deternimateProgress została zmieniona na Modifier.progressSemantics (I9c0b4).
  • Nazwa LazyColumnItems została zmieniona na LazyColumnFor. Nazwa LazyRowItems została zmieniona na LazyRowFor (I84f84).
  • Dla celów związanych ze sprawdzonymi metodami dodaj znaczniki/adnotacje. (I66b20)
  • pakiet Foundation.shape.corner został spłaszczony do pliku Foundation.share (I46491, b/161887429)
  • Dodano parametr grawitacji сrossaxis dla LazyRowItems/LazyColumnItem. LazyRowItems/LazyColumnItems obsługuje teraz zachowanie zawijania treści. (Ib39fc)
  • Nazwa ZoomableState została zmieniona na ZoomableController. Dodano obsługę niestandardowej krzywej dla smoothScale. Dodaliśmy funkcje enabled i onZoomStarted (If8b8f)
  • Nazwa pola Material FilledTextField została zmieniona na TextField, a podstawowy element TextField zmienił się na BaseTextField, by ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676).
  • Wcześniej wycofana lista AdapterList została usunięta. Zamiast tego użyj LazyColumnItems (I12b9b)
  • Nazwa Modifier.drawBackground została zmieniona na Modifier.background (I13677).
  • Stara wersja DSL ConstraintLayout została usunięta. Nazwa ConstraintSet2 została zmieniona na ConstraintSet. (If58d1, b/162450908)
  • Dodano opcje Modifier.absoluteOffset() i Modifier.absoluteOffsetPx(). W przeciwieństwie do modyfikatorów przesunięcia bezwzględne modyfikatory przesunięcia bezwzględnego nie są automatycznie odzwierciedlane w kontekście od prawej do lewej (I3aa21).
  • Funkcje Row i Column są teraz znacznie wbudowane i zmniejsza koszty związane z ich używaniem. (I75c10)

Poprawki błędów

  • Naprawianie ogólnych poprawek interfejsu API (I077bc)
    1. Usuń nieużywany interfejs OffsetBase
    2. Wyrównuje klasy Offset i IntOffset, które mają mieć spójna platforma API
    3. Zmień nazwę IntOffset.Origin na IntOffset.Zero aby zachować spójność z interfejsem Offset API
    4. Metodę natywnego Canvas usunięto z Canvas aby ułatwić konsumentom tworzenie własne instancje Canvas
    5. Utworzono wycinek klasy EmptyCanvas do refaktoryzacji DrawScope, aby był parametrem niepustym, a nie Lateinit i zapewnić brak wartości pola jako wartość null
    6. Zmieniono nazwę wyliczeń ClipOp na sprawy Pascal
    7. Zmieniono nazwę enumów filtraJakość na typ Pascal
    8. Zmieniono nazwę wyliczeń Stroke Join na Case Pascal
    9. Zmieniono nazwę wyliczeń PointMode na wielkość liter Pascal
    10. Zmieniono nazwy enum PaintingStyle na przypadek Pascala
    11. Zmieniono nazwę wyliczeń PathFillType na przypadek Pascal
    12. Zmieniono nazwę wyliczeń StrokeCap na przypadki Pascal
    13. Implementacja DrawCache została zaktualizowana i nie jest już dostępna używanie parametrów Lateinit
    14. Zaktualizowano metodę DrawScope, aby nie używała już leniwego przekazywania dostępu dla parametrów wewnętrznych FillPaint i StrikePaint
    15. Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box przy mniejszym nakładzie pracy
    16. Zaktualizowaliśmy klasę Outline, aby dodać do niej adnotacje @stałe.
    17. Zaktualizowano element PathNode, aby dodać adnotacje @Stałe dla: instrukcja dla każdej ścieżki
    18. Zaktualizowano składnię wektorową, aby usunąć zbędne elementy sprawdzanie warunkowe pod kątem równości, ponieważ funkcja tworzenia wiadomości już obsługuje ich
    19. Wycofane metody konstruktora kreacji towarzyszącej w formacie prostokąta konstruktorów funkcji
    20. Zaktualizowano klasy i konstruktory funkcji pędzla za pomocą Interfejsy API @Immutable i @Stable
    21. Zaktualizowano enum VertexMode na PascalCase
    22. Metodę DrawScope selectPaint zmieniono na warunkowo nadpisać parametry kreski, jeśli mają zmieniono
    23. Zaktualizowano rozmiar, aby dodać interfejs API destrukcyjnego; zmień nazwę Nieokreślony rozmiar na nieokreślony i usunięte nieużywane metody
  • Dodano MonotonicFrameAnimationClock, który pozwala na Funkcja MonotonicFrameClock jako funkcja AnimationClockObservable w celu wypełnienia luki między nowymi zegarami opartymi na współprogramach a interfejsami API, które nadal używają zegary z wywołaniem zwrotnym.

    Odpowiednikiem MonotonicFrameClock jest teraz ManualAnimationClock. ManualFrameClock. (I111c7, b/161247083)

  • Użytkownik SemanticsNodeInteraction.performPartialGesture został usunięty. Używaj SemanticsNodeInteraction.performGesture. (Id9b62)

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

  • Interfejsy API do obsługi tekstu od prawej do lewej zostały zaktualizowane. Dodano parametr LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Modifier.rtl oraz Modifier.ltr zostały usunięte. (I080B3)

  • Interfejs Modifier.plus został wycofany. Użyj interfejsu Modifier.then. „To” ma silniejszy sygnał dotyczący kolejności, ale nie pozwala też na wpisanie słowa Modifier.padding().background() + anotherModifier, które przerywa łańcuch i jest trudniejsze do odczytania (Iedd58, b/161529964).

  • Dodano isFocused() i isNotFocused() semantykiMatcher. (I0B760)

  • Dodano modyfikator RemeasurementModifier. Umożliwia użytkownikom synchroniczne ponowne pomiary układu. Ponowne pomiary i przekaźniki są zazwyczaj wykonywane automatycznie, ale używamy tego parametru w elemencie LazyColumnItems podczas przewijania. (I5f331, b/160791058)

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

  • Funkcja OnChildPositioned została wycofana. Używaj ustawienia OnPositioned na koncie dziecka. (I87f95, b/162109766)

  • Zmieniono nazwę reguły AndroidComposeTestRule na createAndroidComposeRule. (I70aaf)

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

Wersja 0.1.0-dev15

22 lipca 2020 r.

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

Aby korzystać z funkcji tworzenia wiadomości w wersji 0.1.0-dev15, musisz:

Aktualizacja zależności

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

Zmiany interfejsu API

  • Podobnie jak nowy parametr w metodzie ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ma teraz parametr contentPadding, który umożliwia dodanie dopełnienia treści po jej przycięciu, co nie jest możliwe za pomocą parametru modyfikatora. Pozwala to też dodawać odstępy tylko przed pierwszym lub po ostatnim elementem. (IBc24e)
  • Nazwa wywołania zwrotnego onFocusChange w polach tekstowych została zmieniona na onFocusChanged (Ida4a1)
  • Interfejsy Vertical Scroller oraz Horiziontal Scroller zostały wycofane. Użyj interfejsu ScrollableColumn i ScrollableRow, aby mieć wbudowane funkcje i parametry związane z kolumnami/wierszami, lub modyfikatorami.vertical Scroll i Mmodifier.vertical Scroll, aby umożliwić ich użycie własnemu elementowi. Parametr ScrollerPosition został wycofany i zastąpiony tagiem ScrollState (I400ce, b/157225838, b/149460415, b/154105299)
  • Zmieniliśmy interfejsy API Modifier.draggable i Modifier.scrollable. Kierunek przeciągania został usunięty i zastąpiona Orientacją. Uprościliśmy stan wymagany do przewijania. Nazwa ScrollableState została zmieniona na ScrollableController (Iab63c, b/149460415).
  • Usługi semantyczne z jedną wartością używają teraz stylu wywoływania. Na przykład „semantyka { hide = true }”. jest teraz zapisany jako: semantics { hidden() } (Ic1afd, b/145951226, b/145955412)
  • Rozmiary narożników używane przez obiekty RoundedCornerangle i CutCorner shape mogą być teraz większe niż 50% (Id2340, b/160400213)
  • Zmieniono domyślną skalę ContentScale parametr funkcji kompozycyjnej obrazu z Wewnątrz po Fit. Zrobiono to po kolei aby uzyskać zachowanie i skalować Maluj, jeśli rozmiar układu jest większy niż wewnętrzny rozmiar malarza, z zachowaniem proporcji obrazu. Ten zachowanie lepiej odpowiada oczekiwaniom. za dostarczanie obrazów o stałych rozmiarach nie wpływając jednocześnie na domyślne zachowanie jeśli tylko rozmiar wewnętrzny jest używany do i obliczyć rozmiar elementu kompozycyjnego. (I40ae3, b/159838006)
  • W interfejsach API najwyższego poziomu użyj AnimationSpec zamiast AnimationBuilder Aby wyjaśnić koncepcję specyfikacji animacji statycznej – usprawnienie przejścia z DSL przez usunięcie wymogu lambda dla podczas tworzenia specyfikacji animacji, takich jak starsze, wiosna. Zamiast tego biorą z parametrami konstruktora. - Poprawa ogólnej łatwości otwierania AnimationSpec. konstruktory, zamiast polegać na konstruktorach. – Zmiana czasu trwania i opóźnienia klatek kluczowych i elementów z wyższego poziomu na wartość Int. Ten eliminuje niepotrzebne rzuty typów i przeciążanie metod (na wspiera format Long i Int). (ICA0b4).
  • Element klikalny został usunięty. Użyj metody Modifier.clickable (I84bdf)
  • Dodano LazyRowItems – analog z przewijaniem poziomym typu LazyColumnItems (Ibbcf7)
  • Wprowadzono niskopoziomowe interfejsy API do animacji bezstanowych. Te interfejsy API (I63bf7)
  • androidx.ui.foundation.TextFieldValue i Interfejs androidx.ui.input.EditorValue został wycofany. Pole tekstowe Obiekty kompozycyjne FilledTextField i CoreTextField, które korzysta z funkcji ten typ też jest wycofany. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • Zastąpiliśmy format IntPx ciągiem Int. Zastąpiono pozycję IntPxPosition z IntOffset. IntPxSize zastąpiono wartością IntSize. (IB7b44)
  • Usunięto parametr androidx.ui.foundation.shape.Rectangle shape; użyj androidx.ui.graphics.Rectangleangle (I94939, b/154507984)
  • Aby skonsolidować liczba klas używanych do reprezentowania informacje o rozmiarach, standaryzowanie na podstawie użycia klasy Size rozmiaru PxSize. Zapewnia to korzyści klasy wbudowanej, aby wykorzystać długi do pakowania 2 wartości zmiennoprzecinkowych do reprezentowania szerokość i wysokość w postaci liczby zmiennoprzecinkowej. (IC0191).
  • Aby skonsolidować liczba klas używanych do reprezentowania pozycjonowanie, standaryzowanie na użycie klasy Offset pozycji PxPosition. Zapewnia to korzyści klasy wbudowanej, aby wykorzystać długi do pakowania 2 wartości zmiennoprzecinkowych reprezentujących x i odsunięcia y są przedstawione w postaci liczby zmiennoprzecinkowej. (I3ad98).
  • Dodaliśmy modyfikator powiększenia umożliwiający powiększanie przez ściąganie palców (Id5d63).
  • Komponent z możliwością przełączania został wycofany. Użyj metody Modifier.toggleable (I35220, b/157642842)
  • Funkcja MutuallyExclusiveSetItem została wycofana. Zamiast niej użyj metody Modifier.selectable. (I02b47, b/157642842)
  • Tag TestTag został wycofany. Użyj w zamian metody Modifier.testTag. (If5110, b/157173105)
  • Dodaje do tekstu parametr fontWeight, który nie został przypadkowo dodany (I56937)
  • Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I19d02)
  • W aplikacji Vertical Scroller dostępna jest teraz funkcja Column. Aplikacja Poziomy przewijania teraz udostępnia funkcję Wiersz bezpośrednio w oknie. (IECA5d, b/157020670)
  • Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (Iede0b).
  • Do pakietu podstawowego dodano modyfikator.indication. Służy do pokazywania wskaźnika naciśnięcia lub przeciągnięcia innych elementów na niestandardowych elementach interaktywnych (I8425f, b/155287131).
  • Opcje VerticalPrzewiń i Orientacja pozioma obsługują teraz przewijanie odwrotne. Ustawienie wartości Wsteczne jest teraz dostępne dla opcji ScrollerPosition (I953bd).
  • Obsługa dodawania elementów kompozycyjnych do układu tekstu. (I1373C)
  • Skonsolidowane implementacje CanvasScope więc teraz będą tylko DrawScope, ContentDrawScope Nazwa obiektu CanvasScope została zmieniona na DrawScope. Zaktualizowano obiekt DrawScope, aby zaimplementować gęstość i podaj kierunek układu Usunięto podklasę DrawScope w ContentDrawScope Painter i PainterModifier zostały zaktualizowane nie mają już właściwości RTL, ponieważ DrawScope zapewnia już bez ręcznego podawania (I1798e)
  • Usunięto wycofany element DrawBackground Interfejs API z zaletą rozszerzenia DrawBackground API w modyfikatorze. Refaktoryzacja kolor, pędzel i malowanie rysunekTło implementacje, dzięki którym można też ograniczyć ścieżki kodu jako wymóg usunięcia, aby mógł zostać utworzony modyfikator jako część kompozycji. (I0343a)
  • Zaktualizowano wyższy poziom a także tworzyć interfejsy API, które udostępniają obiekt Canvas i udostępnić CanvasScope. Spowoduje to usunięcie że konsumenci muszą utrzymywać własnych obiektów Paint. Dla konsumentów, którzy nadal potrzebują dostępu do Canvas mogą korzystać z rozszerzenia DrawCanvas, , która powoduje wywołanie zwrotne do problemu za pomocą poleceń rysowania Obszar roboczy. (I80afd).
  • Poziomy i pionowo przewijanie nie przywracają pozycji przewijania z wykorzystaniem zapisanego stanu instancji. (Ia0fae, b/155075048)
  • Element FocusManagerAmbient został usunięty. Aby uzyskać ostrość, użyj FocusModifier.requestFocus. (IC4826).
  • Układ tabeli został tymczasowo usunięty do czasu, aż ponownie udostępnimy go przy użyciu odświeżonego interfejsu API. (Id88a7)
  • Utworzono interfejs CanvasScope API, który opakowuje Obiekt Canvas wyświetlający bezstanowy obiekt deklaratywny interfejs API do rysowania. Przekształcenia są uwzględnione w zakresie odbiorcy i własnych informacji o rozmiarze jest również ograniczony do odpowiednich granic wstawienia. Nie wymaga od konsumenta zachowywania własnego stanu wyrenderowania do konfigurowania operacji rysowania.

    Dodano próbkę CanvasScope i zaktualizowano aplikację w wersji demonstracyjnej, aby dodać grafikę deklaratywnej wersja demonstracyjna (Ifd86d)

  • Usunięto ColoredRect. Pole użytkownika z modyfikatorem rysowania tła (I983c7, b/152753731)

  • Dodawanie dostosowania koloru kursora w polu tekstowym (I6e33f)

  • Teraz można ukryć/pokazać klawiaturę programową za pomocą SoftwareKlawiaturaController jest dostarczana przez onTextInputStarted wywołanie zwrotne (I8dc44, b/151860051)

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

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

  • Zastąpiono obiekt CoreTextField/TextField controlIdentifier z FocusNode, by przeprowadzić integrację z podsystemem. (I7Ea48).

  • Aktualizacja pola tekstowego – w wymiarze poziomym zajmie całe dostępne miejsce (Ib08df, b/154638552)

  • Dodano elementy InteractionState i Interaction, które ułatwiają tworzenie komponentów reagujących na zmiany stanu interfejsu, np. naciśnięcie i przeciągnięcie (Icfe25, b/152525426).

  • Rectangleangle zostały przeniesione z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Zastąpiono wszystkie przypadki użycia koloru dopuszczalnego w interfejsie API na nie dopuszcza wartości null i użyj wartości Color.Unset zamiast null (Iabaa7).

  • Aktualizacja interfejsu TextField API – scalono wywołania zwrotne onFocus i onBlur w jedno wywołanie zwrotne onFocusChange(Boolean) z parametrem (I66cd3)

  • Nazwa ScaleFit została zmieniona na ContentScale Przeniesiono ContentScale z UI-Graphics do UI Core moduł do umieszczenia w tym samym module co ustawienie Wyrównanie API. Nazwa FillMaxDimensions została zmieniona na Przytnij Nazwa FillMinDimensions została zmieniona na Fit Zmieniliśmy nazwę dopasowania na Wewnątrz, by lepiej dostosować Odpowiedniki ImageView.ScaleType Dodaliśmy dokumentację wskazującą, że kombinacja przycinanie i wyrównywanie. ImageView.ScaleType.CENTER_CROP i Fit Użycie z funkcją Wyrównanie.Center przynosi taki sam wynik jak ImageView.ScaleType.FIT_CENTER Wewnątrz używana z Wyrównaniem.Center zapewnia to samo wynik w formacie ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)

  • Usuwa element ProvideContentColor. Zamiast tego używaj interfejsu ContentColorAmbient bezpośrednio w Providers (Iee942).

  • Dodaje do tekstu parametr koloru, dzięki czemu można zastąpić kolor stylu tekstu bez konieczności ręcznego scalania go ze stylem podanym w motywie. (I41a66)

  • Ulepszenie interfejsu API DrawModifier:

    • Zmieniono zakres odbiorcy dla metody Draw() ContentDrawScope
    • Usunięto wszystkie parametry z dresz()
    • Interfejs DrawScope jest taki sam jak poprzednia wersja CanvasScope
    • ContentDrawScope ma metodę DrawContent() (Ibaced, b/152919067)
  • Interfejs ColoredRect został wycofany. Użyj w zamian zasady Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

  • System motywów kształtów jest aktualizowany zgodnie ze specyfikacją Material Design. Teraz możesz wybierać małe, średnie i duże kształty do wykorzystania przez większość komponentów (Ifb4d1).

  • Zastąpienie operatora modyfikatora plus funkcjami rozszerzeń fabrycznych (I225e4).

  • Element do przeciągania został przeniesiony do modyfikatora (Id9b16, b/151959544)

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

  • dodanie parametru enabled do pola wyboru, przełącznika i możliwości przełączania (I41c16)

  • Echo jest teraz modyfikatorem. Chociaż elementy klikalne nie zostały jeszcze przekonwertowane, zalecane użycie to Clickable(onClick = { ... }, modifier = ripple()) (IE5200, b/151331852, b/150060763)

  • Interfejs VectorPainter API został dodany do zastąp istniejący interfejs API subcomposition API dla grafiki wektorowej. Wynik podkompozycji jest obiektem VectorPainter, a nie DrawModifier. Wycofany poprzedni DrawVector kompozycje na rzecz VectorPainter.

    Nazwa Image(Painter) API została zmieniona na PaintBox(Painter) Utworzyliśmy wektorową kompozycję wektorową, która działa jak Obraz można komponować, ale nie za pomocą obiektu VectorAsset komponentu z obrazem (I9af9a, b/149030271)

  • Utworzony obraz kompozycyjny do obsłużenia dobieranie odpowiednich rozmiarów/układu oprócz rysowania ImageAsset na ekran. Ta funkcja kompozycyjna umożliwia również rysowanie dowolnych obrazów z uwzględnieniem jej rozmiaru wewnętrznego oraz obsługi konkretnego rozmiar lub minimalny rozmiar (Ibcc8f)

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

  • Zmieniliśmy nazwę obrazu na ImageAsset, aby lepiej się wyróżniać. różnica między danymi obrazu a przyszłymi danymi Funkcja kompozycyjna pozwalająca na udział w układach i rysowaniu treści.

    Utworzono metodę rozszerzenia w pliku android.graphics.Bitmap Bitmap.asImageAsset(), aby utworzyć instancję ImageAsset przydaje się do łączenia tradycyjnych funkcji Androida za pomocą platformy compose. (Id5bbd).

  • Funkcja kompozycyjna DrawImage została usunięta. Użyj ImagePainter, aby narysować obraz w istniejącym układzie, lub SimpleImage, by przedstawić obraz, który zajmuje dużo miejsca (I595e1, b/149827027)

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

  • Dodano ikony, IconButton i iconToggleButton, usuwając ikony AppBarIcon. Możesz bezpośrednio zastąpić obecne zastosowania AppBarIcon przez IconButton, i będą mieć odpowiedni docelowy element dotykowy. Zobacz przykłady użytkowania i zobaczyć ikony dostarczonych ikon których możesz używać bezpośrednio z tymi komponentami. (I96849)

  • Funkcja kompozycyjna DrawStatus została usunięta. Użyj modyfikatora DrawBackground. (I7ceb2).

  • Dodaliśmy AdapterList, komponent listy przewijanej, który tylko tworzy i układa widoczne elementy. Znane problemy pamiętaj, że jest tylko pionowa i nie obsługuje wszystkich przypadków zmian w jego elementach potomnych. (IB351b)

  • Dodano komponent przewijany, który umożliwia tworzenie niestandardowych elementów przewijania/list (I5fd37).

  • Zmieniono nazwę tła na DrawBackground i tak, by było domyślnie zapamiętywane (Ia0bd3)

  • Dodaj dopełnienie, obramowanie, kształt i parametr tła do Box (I05027, b/148147281)

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

  • zmień nazwę modyfikatora Border na DrawBorder (I8ffcc)

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

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

  • Zastąpiono element DrawBorder na rzecz modyfikatora obramowania (Id335a).

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

  • Nazwa parametru procentu podczas tworzenia wskazówek ConstraintLayout została zmieniona na ułamek. (Ida2db).

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

  • Naprawiono obsługę od prawej do lewej w funkcji ConstraintLayout. Dodano nieświadome interfejsy API od prawej do lewej. (I3b1c7).

  • Dodano nową konsolę DSL dla układu ConstraintLayout. Więcej informacji znajdziesz w przykładach. (Icaa9a).

  • Dodano adnotację @ExperimentalLayout. ConstraintLayout, FlowRow i FlowColumn są teraz oznaczone tagiem ConstraintLayout, by zaznaczyć, że ich interfejsy API się zmienią. (I412a8)

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

  • Usunięto wycofane ustawienia RowWyrównaj i Column wyrównanie w wierszu i kolumnie. (If60d4, b/155858731)

  • Usunięto wycofaną funkcję LayoutTag(). Zamiast niej użyj metody Modifier.tag(). Usunięto nieużywaną metodę Modifier.matchParent(). Zamiast niej użyj metody Modifier.matchParentSize(). (If8044).

  • Dodano modyfikator układu przesunięciaPx, którego można użyć do definiowania (dynamicznych) przesunięć w pikselach. (I5af57).

  • Funkcja kompozycyjna wyrównania AdjustLineOffset została wycofana. Zamiast niej użyj modyfikatorarelativePaddingFrom(). Funkcja kompozycyjna CenterWyrównajmentLine została usunięta. (I60107).

  • Dodano modyfikator układu defaultMinSizeConstraints, który ustawia ograniczenia rozmiaru w układzie opakowanym tylko wtedy, gdy odpowiednie przychodzące ograniczenia nie są określone (0 w przypadku ograniczeń minimalnych i nieskończoności w przypadku ograniczeń maksymalnych). (I311ea, b/150460257)

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

  • Usunięto wycofane modyfikatory UkładSzerokość/Wysokość/Rozmiar. (Ib0bc1)

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

  • Dodano symetryczny modyfikator dopełnienia. (I39840)

  • Usunięto wycofany modyfikator LayoutAspectRatio. (I65a74)

  • Usunięto wycofane modyfikatory UkładWyrównaj. (I10877)

  • Naprawiliśmy błąd związany z modyfikatorami szerokości i wysokości, który powodował pomiar opakowanego układu bez ograniczeń przeciwnych osi. (I210b8, b/154797971)

  • Dodano parametry grawitacji pionowego i poziomego do wierszy oraz kolumn. (I7dc5a)

  • Zaktualizowaliśmy właściwości wrapContentWidth i wrapContentHeight tak, aby można było korzystać z wyrównania w pionie lub poziomie, a nie wyrównania w poziomie. Modyfikator grawitacji został zaktualizowany, aby przyjmował wyrównanie w pionie lub poziomie. Wiersze, kolumny i stos zostały zaktualizowane, aby obsługiwały niestandardowe ciągłe wyrównania. (IB0728)

  • Wyrównanie wyrównania można utworzyć z użyciem dowolnych wartości. Dodano wyrównania 1D. (IA0c05)

  • Zmieniono nazwę EdgeInsets na InnerPadding. Zmieniono nazwę parametru innerPadding elementu Material Buttons na pasek boczny. (I66165).

  • LineToSiblings akceptuje teraz obiekty zmierzone zamiast obiektu Placeable. (I5788D)

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

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

  • Usunięto wycofane elementy kompozycyjne zawijania i wyśrodkowywania. (I29e23)

  • dodano LayoutModifier2 – nowy interfejs API do definiowania modyfikatorów układu; wycofany komponent LayoutModifier (If32ac),

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

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

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

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

  • Zaktualizowano LayoutWyrównaj, aby nie wypełniać już dostępnego miejsca (I2b14f)

  • Usunięto kompozycję w formacie AspectRatio na rzecz modyfikatora. Usunięte przestarzałe obiekty FlexColumn, FlexRow i modyfikator odstępów (Iec8a7)

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

  • Zaimplementuj uchwyty zaznaczania metodą przeciągania, aby zmienić wybór pola tekstowego. (I27032)

  • Implementuje LongPressAndDrag do wyboru pola tekstowego. (I17919)

Poprawki błędów

  • FocusModifier został wycofany i zastąpiony przez Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState i FocusroundState zostały wycofane i zastąpione FocusState2 (I46919, b/160822875, b/160922136)
  • Nazwa runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Zmieniono nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie Interfejsy API findXYZ zostały zmienione na onNodeXYZ. Nazwy wszystkich interfejsów API doXYZ zostały zmienione na XYZ. (I7f164)
  • Usuwa wcześniej wycofany plik Modifier.ripple. Kliknięcie jest teraz domyślnym wskaźnikiem echa (jeśli w aplikacji masz ustawiony motyw MaterialTheme {}), więc w większości przypadków wystarczy użyć kliknięcia i uzyskać wskaźnik fali. Jeśli chcesz dostosować parametr koloru / rozmiaru / granicy fali, możesz ręcznie utworzyć parametr RippleIndication i przekazać go do kliknięcia jako parametr wskaźnika. (I663b2, b/155375067)
  • Usunięto przestarzałe interfejsy API do testowania rozmiaru. (IBa0a0).
  • Made LayoutNode – eksperymentalny interfejs API (I4f2e9)
  • Aktualna wersja 1 blokowania orientacji przewijania: są zaimplementowane w usłudze Compose. (I1ce7a, b/150289741)
  • Wyskakujące okienka, okna i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
  • Z bloku miary funkcji Layout() usunięto parametr kierunku układu. Kierunek układu jest jednak dostępny w wywołaniu zwrotnym w obiekcie zakresu pomiaru (Ic7d9d)
  • Dodaj aranżacja bezwzględna – umożliwia rozmieszczenie elementów podrzędnych w wierszu bez automatycznego odbicia lustrzanego w RTL (I3a1df).
  • Adnotacja @Nieśledzona została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e).
  • Przed tą zmianą wtyczka kompilatora kompilatora przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli w funkcji @Composable występowało (I5205a, b/158123804).
  • Dodaj funkcję kompozycyjną viewModel(), która umożliwia tworzenie lub pobieranie już utworzonych modeli ViewModel podobnie jak w przypadku aktywności lub fragmentu (I5fdd1)
  • Zmieniona klasa promienia na inline. Usunięto tworzenie kreacji towarzyszącej z zastosowaniem konstruktora funkcji z domyślnym parametrem określającym promień wzdłuż osi Y należy dopasować do wartości .

    Zaktualizowano plik DrawScope.drawRoundRect do przetworzenia jeden parametr „Radius” zamiast 2 osobnych, wartości zmiennoprzecinkowe promienia wzdłuż osi x i y oś (I46d1b)

  • Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i podstawowych parametrów pikseli. Cała klasa Px została usunięta (I3ff33).

  • Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I086f4).

  • Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (Id3434).

  • Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I97a5a)

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

  • Gesty częściowe nie wymagają już ominięcia GestyToken (Id7ae5)

  • Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I57bff)

  • Wycofanie metody Modifier.semantics pozwala na użycie komponentów wysokiego poziomu. (I4cfdc)

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

  • Zaktualizowaliśmy interfejs Adjust API i dodaliśmy obsługę dopasowania bezwzględnego (które nie jest automatycznie dublowane w kontekście protokołu Rtl) (I38cd3)

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

  • Podaj dodatkowy opcjonalny prostokąt do obsługi formatu ImagePainter rysowanie podsekcji komponentu z obrazem (I0ea9e)

  • Naprawiono błąd, który występował podczas usuwania elementów w AdapterList (Ic64b0, b/153195921).

  • Zmieniliśmy sposób pomiaru pierwszego układu, który umieścisz w bloku activity.setContent { }. Wcześniej trzeba było wypełnić cały ekran z aktywnością, a teraz układ zachowuje się tak, jakby układ został umieszczony w Stosie: może być mniejszy niż ekran i umieszczony w lewym górnym rogu ekranu. Jeśli chcesz zachować starsze zachowanie, możesz zastosować w układzie Modifier.fillMaxSize(). (IE88a7, b/153453714)

  • Moduł ui-text-compose zmienił nazwę na ui-text. tekst UI zawiera teraz elementy kompozycyjne CoreText i CoreTextField (Ib7d47)

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

  • Przeniesiono elementy kompozycyjne ui-framework/CoreText i elementy kompozycyjne CoreTextField do ui-text-compose. Możesz też dodać ui-text-compose w projektach AI. (I32042)

  • runOnIdleCompose i runOnUiThread to teraz funkcje globalne zamiast metod na ComposeTestRule. (Icbe8f).

  • [Mutable]Operatory delegowania właściwości stanu zostały przeniesione do rozszerzeń na potrzeby optymalizacji przekazywania uprawnień do usługi Kotlin 1.4. Rozmówca musi dodać importuje dane, aby dalej używać funkcji by state { ... } lub by mutableStateOf(...). (I5312C)

  • DrawLayerModifier i drawLayer() są teraz domyślne w klastrze clipToBounds i ClipToOutline na false. (I0eb8b, b/152810850)

  • Zmieniono nazwę elementu LayoutResult na MeasureResult. (Id8c68).

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

  • Zmieniono nazwę Układ Elastyczny na Układ Weight. Zmieniono nazwę precyzyjnego parametru na wypełnienie. (If4738).

  • Metoda DrawVector została zmieniona ze zwykłego funkcja composable zwracająca modyfikator pullVector(), spowoduje narysowanie wektora jako tła układu. (I7B8E0)

  • Zastąp klip funkcji kompozycyjnej modyfikatorem DrawClip(). DrawClipToBounds to wygodny modyfikator przydatny, gdy chcesz przyciąć materiały tylko do granic warstwy w kształcie prostokąta. (If28eb).

  • Funkcja kompozycyjna DrawShadow została zastąpiona funkcją DrawShadow(). modyfikator. Cienie są teraz rysowane w ramach komponentu LayerModifier. (I0317a)

  • Element androidx.compose.ViewComposer został przeniesiony do folderu androidx.ui.node.UiComposer Aplikacja androidx.compose.Emittable została usunięta. W przypadku KomponentNode wystąpił nadmiarowy błąd. Strona androidx.compose.ViewAdapters została usunięta. Nie są już one obsługiwanym przypadkiem użycia. Interfejs Compose.composeInto został wycofany. Użyj interfejsu setContent lub setViewContent. Metoda Compose.disposeComposition została wycofana. Użyj metody dispose dla obiektu Composition zwróconego przez setContent. Aplikacja androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto Nazwa węzła KomponentNode#emitInsertAt została zmieniona na węzeł KomponentNode#insertAt Nazwa węzła KomponentNode#emitRemoveAt została zmieniona na KomponentNode#removeAt Nazwa KomponentNode#emitMode została zmieniona na KomponentNode#move (Idef00).

  • Wycofana funkcja opakowania. Można ją zastąpić modyfikatorem LayoutWyrównaj lub funkcją kompozycyjną Stos (Ib237f).

  • Wykonano propagację kierunku układu z węzła nadrzędnego do elementów podrzędnych. Dodano modyfikator kierunku układu. (I3D955)

  • Zmień nazwę Painter.toModifier na Painter.asModifier, ponieważ nowo utworzony modyfikator zawiera odniesienie do oryginalnego narzędzia Painter, które może być współużytkowane przez wiele instancji modyfikatora (I7195b)

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

  • Interfejsy Density i DensityScope zostały połączone w jeden interfejs. Zamiast trybu nieaktywnego() możesz teraz używać obiektu DensityAmbient.current. Zamiast opcji Gęstość(gęstość) tylko za pomocą(gęstości) (I11cb1)

  • Usunięto klasę ValueHolder. Zmieniono strukturę klasy AnimatedValue, klas AnimatedFloat na ustaw pole wartości animacji jako abstrakcyjne, aby podklasy mogły obserwować aktualizację wartości.

    • Dodano klasy modelu dla elementów AnimatedValue, AnimatedFloat itp.
    • Dodaliśmy nowy zestaw lekkiego interfejsu API @Composable do animacji między wartościami.
    • (I79530)
  • Zmiany w interfejsie API nieaktywnym. Szczegóły znajdziesz w logu i dokumentacji Ambient<T> (I4c7ee, b/143769776)

  • Pozycje całkowite linii wyrównania zwrócone z Placeable#get(alignmentLine) nie mają teraz wartości null. Jeśli nie ma wiersza wyrównania, którego dotyczy zapytanie, wyświetli się parametr AdjustLine.Nieokreślony. (I896c5, b/158134875)

  • Naprawiono błąd ConstraintLayout powodujący awarię przy ponownej kompozycji. (Ibee5a, b/158164341)

  • Zmieniono końcowy interfejs API WithConstraints lambda. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń oraz właściwości layoutDirection zapewnia właściwości minWidth, maxWidth, minHeight i maxHeight w Dp (I91b9a, b/149979702)

  • Nazwa UkładModifier2 została zmieniona na LayoutModifier. (Id29f3).

  • Wewnętrzne funkcje pomiarowe w usługach Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia wewnętrzny interfejs API zapytań z niejawnie rozpowszechnianym kierunkiem układu. (Id9945).

  • Interfejs LayoutDirectionAmbient został wycofany. Aby odczytać kierunek układu określony przez język, użyj ustawienia localeLayoutDirection w konfiguracji Ambient (I851b1).

  • W przypadku współrzędnych układu dodano elementy positionInParent i boundsInParent. (Icacdd, b/152735784)

  • Funkcja kompozycyjna ParentData została wycofana. Utwórz modyfikator, który implementuje interfejs ParentDataModifier, lub użyj modyfikatora LayoutTag, jeśli chcesz tylko oznaczyć elementy podrzędne układu, aby rozpoznawały je w bloku pomiaru. (I51368, b/150953183)

  • Dodaj OnPositionedModifier i OnChildPositionedModifier w celu zastąpienia funkcji kompozycyjnych OnPositioned i OnChildPositioned funkcji. (I2ec8f).

  • Nie zezwalaj na wykluczające dopełnienie w elemencie LayoutPadding. Do odsunięć pozycji ujemnych należy zamiast tego używać właściwości LayoutOffset. (Ifb5b1).

  • WithConstraints uzyskała parametr LayoutDirection (I6d6f7)

  • Flaga ComposeFlags.COMPOSER_PARAM została zmieniona na true, co zmieni strategię generowania kodu dla wtyczki do tworzenia wiadomości. Ogólnie powoduje to generowanie funkcji @Composable z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań @Composable w celu prawidłowego zarządzania wykonaniem w środowisku wykonawczym. Jest to istotna zmiana polegająca na nieprawidłowym działaniu plików binarnych, jednak powinna ona zachować zgodność na poziomie źródła we wszystkich objętych sankcjami użycia funkcji tworzenia wiadomości. (I7971C)

  • Zmieniono współrzędne LayoutCoordinates, aby utworzyć providedWyrównajmentLines ustawić zamiast mapy zestaw, a funkcja LayoutCoordinates wdrożyła funkcję get(). Dzięki temu dla modyfikatorów do modyfikowania jednej lub kilku wartości w zestawie bez podczas tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)

  • LayoutCoordinates nie ma już właściwości pozycji. nie ma sensu w przypadku tagów LayoutModifiers, obracania czy skalowania. Zamiast tego programiści powinni używać współrzędnych nadrzędnych. i podrzędnyToLocal(), aby obliczyć przekształcenie z jednego Układ współrzędnych.

    Funkcja LayoutCoordinates używa właściwości rozmiaru IntPxSize zamiast Rozmiar Px. Układy używają liczb całkowitych w pikselach, więc układy mają wszystkie rozmiary. należy używać liczb całkowitych, a nie zmiennoprzecinkowych. (I9367b)

  • Ulepszenia interfejsu API ograniczeń (I0fd15)

  • Dodano element TextDirection.Content (I48f36)

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

  • Dodaj FloatingToolbar do wyboru pola tekstowego. (IE8b07)

  • Algorytm kierunku tekstu zmienił nazwę na TextDirection (I75ce8)

  • Nazwa TextDirection została zmieniona na resolvedTextDirection (I3ff38).

  • Dodano funkcję Hapticfeedback do wyboru pola tekstowego. (I58050)

  • Dodawanie metod kopiowania, wycinania i wklejania do zaznaczenia pola tekstowego. (IdB70b)

  • Tag TestTag i semantyka zostały usunięte. Użyj zamiast niego Modifier.testTag i Modifier.semantics (I15ff0, b/158841414)

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

  • Zmiana w interfejsie API: nazwa AnnotatedString(builder: Builder) została zmieniona na annotatedString(builder: Builder). (IA6377).

  • Zmiana w interfejsie API: nazwa AnnotatedString.Item została zmieniona na AnnotatedString.Range. (I2d44d)

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

  • Dostępna jest nowa wersja LifecycleOwnerAmbient. Teraz aktywność, której używasz w interfejsie tworzenia wiadomości, powinna stanowić rozszerzenie androidx.activity.KomponentActivity (lub AppCompatActivity). Funkcja setContent w aplikacji android.app.Activity została wycofana (Idb25a, b/153141084)

  • Nazwa pakietu ui-android-text (androidx.text) zastąpiona androidx.ui.text.platform, aby zapewnić zgodność z zasadami Androidax. (I42711)