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
26 czerwca 2024 r. 1.6.8 - 1.7.0-beta04 -

Struktura

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

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

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 Compose oraz podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka kompilatora Compose.
compose.ui,Podstawowe elementy interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu.

Deklarowanie zależności

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

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

Odlotowy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego numeru

Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.

Wersja 1.7

Wersja 1.7.0-beta04

26 czerwca 2024 r.

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

Poprawki błędów

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

Wersja 1.7.0-beta03

12 czerwca 2024 r.

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

Wersja 1.7.0-beta02

29 maja 2024 r.

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

Zmiany interfejsu API

  • Dodaje eksperymentalny interfejs API do konfigurowania sposobu pobierania z wyprzedzeniem LazyGrids, podobny do istniejącego eksperymentalnego interfejsu 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 ustawienie „Default” (Domyślne) z właściwości MarqueeDefaults. (I1d8a0).
  • Usunięto „Marquee” z właściwości MarqueeDefaults. (Iad4f4).
  • Usunięto ucznia TextLinkStyles z zajęć TextStyle. Zamiast 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 „Określ, co jest obliczane jako czas tworzenia/pomiaru, w celu zwiększenia dokładności pobierania z wyprzedzeniem” (Iea622)
  • Określ typ treści do obliczania czasu tworzenia/pomiaru przy pobieraniu z wyprzedzeniem, aby zwiększyć dokładność (Ibccb1)
  • Udostępnij modyfikatory WindowInsetsPadding ze wspólnego zestawu źródeł (I070b2)

Wersja 1.7.0-beta01

14 maja 2024 r.

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

Zmiany interfejsu API

  • Ze względu na zgodność binarną z powrotem dodaliśmy właściwość KeyboardOptions.shouldShowKeyboardOnFocus jako wycofaną, ukrytą. (I15cfe).
  • Funkcja Modifier.anchoredDraggable domyślnie odwraca teraz delta przeciągania w przypadku komponentów z orientacją poziomą w układzie RTL. (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations to 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 odzwierciedlała zakres obowiązków. (IB9154)
  • Dodano obsługę pobierania z wyprzedzeniem elementów w zagnieżdżonych obiektach LazyLists (np. LazyColumn, który renderuje zagnieżdżone LazyRows). Ta zmiana powinna zmniejszyć liczbę klatek podczas przewijania w przypadku tych elementów typu 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 sposobu animacji. (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. Użyj interfejsu 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 pokrętło myszy i klawiaturę (UserInput). (I40579)
  • Przedstaw LocalBringIntoViewSpec – zależne od platformy zachowanie przewijania zaznaczenia zależne od platformy, które jest stosowane w warstwie modyfikatora przewijania. (I27aa5, b/317453911)
  • Czcionka TextFieldCharSequence została usunięta. 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 znaków 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 przy użyciu oficjalnego interfejsu API Androida (ScrollCaptureCallback). Ta funkcja jest eksperymentalna i może obecnie nie obsługiwać wszystkich przypadków poprawnie. Z tego powodu jest ono domyślnie wyłączone. Aby wyrazić zgodę, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość true. Ta flaga zostanie usunięta w wersji beta przed wersją 1.7. (I2b055, b/329296471)
  • Wprowadzaj nowy interfejs API GraphicsLayer, aby zapewnić większą elastyczność w umieszczaniu i renderowaniu 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)
  • Czcionka TextFieldState.valueAsFlow() została usunięta. 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 polecenia 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 w „fałszywych” polach 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.
  • Czcionka TextFieldState.forEachTextValue została usunięta. (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)
  • Udostępniliśmy usługę InterceptPlatformTextInput, która 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).
  • Wycofane konstruktory tekstu KeyboardOptions będą teraz prawidłowo kopiować wszystkie właściwości. (If12de).

Wersja 1.7.0-alpha02

7 lutego 2024 r.

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

Zmiany interfejsu API

  • HorizontalPager, VerticalPager i PagerState są awansowane do wersji stabilnej. (I67660, b/316966909)
  • Dodano lokalną kompozycję LocalTextLinkStyle, która pozwala zmieniać styl linków w tekście w aplikacji. Jeśli używasz w aplikacji własnego motywu, ustaw tę kompozycję lokalnie zgodnie z określonym motywem. Gdy używasz motywu Material Design, kolor linku jest domyślnie ustawiony na główny kolor materiału. (I7eb10).
  • Wprowadzono modyfikator receiveContent, który umożliwia programistom odbieranie treści multimedialnych w Jetpack Compose.
  • receiveContent integruje się z usługą BasicTextField2, aby akceptować multimedialne treści dostarczane przez klawiaturę programową lub korzystając z funkcji wklejania ze schowka. (I81b72)
  • W ramach tej zmiany zastępujemy funkcję SnapFlingBehavior na stronie 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 elementach AnchoredDraggable. Ta zmiana dodaje do AnchoredDraggable parametr decayAnimationSpec, który umożliwia użycie animacji rozkładu przy korzystaniu z 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 programistom odbieranie treści multimedialnych w Jetpack Compose.
  • receiveContent integruje się z usługą BasicTextField2, aby akceptować multimedialne treści dostarczane przez klawiaturę programową lub wklejane ze schowka.
  • KeyboardOptions.shouldShowKeyboardOnFocus umożliwia wyłączenie domyślnego zachowania BasicTextField polegającego na wysyłaniu żądań klawiatury programowej w przypadku fokusu.
  • 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 wierszach/kolumnach: (b/300280216 i b/297974033)

Wersja 1.6.4

20 marca 2024 r.

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

Poprawki błędów

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

Wersja 1.6.3

6 marca 2024 roku

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

Wersja 1.6.2

21 lutego 2024 r.

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

Poprawki błędów

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

Wersja 1.6.1

7 lutego 2024 r.

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

Poprawki błędów

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

Wersja 1.6.0

24 stycznia 2024 r.

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

Ważne zmiany wprowadzone od wersji 1.5.0

  • Nowy modyfikator Modifier.anchoredDraggable, który umożliwia przeciąganie i animowanie między wstępnie zdefiniowanym zestawem reklam zakotwiczonych. Ten modyfikator ma zastąpić 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).
  • Nazwa fabryki urządzenia onDragAndDropStart w fabryce DragAndDropModifierNode 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 realną wartość DragAndDropTarget, jeśli interesuje Cię sesja przeciągania i upuszczania. Zastąpiły one inne parametry lambda do przetwarzania zdarzeń przeciągania.

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

  • Ujawnienie elementu startDragImmediately w narzę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 funkcji Compose), a nie instancji opartych na klasach danych. Jest to niezwykła zmiana. Przykłady korzystania z nowego interfejsu API znajdziesz w prezentacji i przykładowym kodzie. (IA8943).

Poprawki błędów

  • Zaimplementuj kod równa się i kod skrótu dla funkcji PageSize.Fixed. (Ie3ede, b/300134276)
  • Naprawiono błąd, który powodował, że układ BasicText nie zmniejszał się po zmianie 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 wykorzystaniem informacji o układzie i przekazać za pomocą metody przesunięcia lub przesunięcia. (If320c).

Zmiany w działaniu

  • Funkcja tworzenia wiadomości używa teraz nieliniowego skalowania czcionek, aby poprawić czytelność i dostępność. Gdy skala czcionki w ustawieniach systemowych przekracza 100%, rozmiar małego tekstu jest normalnie powiększony, a już już duży – tylko trochę. Ponadto wysokość wierszy określona w SP będzie automatycznie dostosowywana do zamierzonej wysokości skali 100%. Aby dowiedzieć się więcej, zapoznaj się ze sprawdzonymi metodami skalowania czcionek (I11518).

Poprawki błędów

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

Wersja 1.6.0-alpha05

6 września 2023 r.

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

Zmiany interfejsu API

  • Dodaj do funkcji BasicSecureTextField przeciążenia, które akceptują wartość stałą, oraz wywołanie zwrotne w celu jej zmiany, tak jak w przypadku obecnego interfejsu 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 w pager nie było zgodne z działaniem w widokach. (I93352, b/289088847)
  • Aplikacja Modifier.consumeWindowInsets(PaddingValues) jest teraz stabilna.
    • Interfejs API Deprecated Modifier.consumedWindowInsets został usunięty. Użyj w zamian 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 przesunięcia, który umożliwia jego dopuszczenie lub zablokowanie. (I692aa, b/266829800)
  • Aktualizuje modyfikator consumeWindowInsets, aby rozszerzyć superklasę AbstractComposeView (Iacd74, b/269479941)

Wersja 1.6.0-alpha01

21 czerwca 2023 r.

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

Nowe funkcje

  • W sekcji Podstawy wprowadziliśmy nowy interfejs API AnchoredDraggable. Może służyć do tworzenia komponentów, które można przeciągać między różnymi stanami, np. modalnych arkuszy dolnych. Ten interfejs API zastępuje interfejs API 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 żadnych zmian.

Wersja 1.5.2

27 września 2023 r.

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

Poprawki błędów

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

Wersja 1.5.1

6 września 2023 r.

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

Poprawki błędów

  • Poprawiono pola tekstowe przedstawiające klawiaturę i można je było edytować, gdy readOnly ma wartość prawda. Rozwiązaliśmy też problem z klawiaturą, która nie wyświetlała się, gdy 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 większą), zadeklarując warning "AutoboxingStateCreation" w konfiguracji build.gradle lub build.gradle.kts modułu, jak pokazano na przykładzie (I34f7e):

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

Wersja 1.5.0-beta03

28 czerwca 2023 r.

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 pomiarów związanych z leniwą listą, siatką itp. (Iaf9e2)
  • Zmniejszone przydziały podczas stosowania zrzutów (I65c09)
  • Usunięto przydziały ze wiosennych animacji (Ie9431)
  • Usunięto alokację z: TextLayout (I0fd11)
  • Usunięto wiele przydziałów ze śledzenia prędkości wskaźnika (I26bae).

Wersja 1.5.0-alpha04

10 maja 2023 r.

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

Zmiany interfejsu API

  • Dodano zoptymalizowaną wartość TextStyle.merge(...) z pełną listą parametrów. (Iad234, b/246961787)
  • Przedstaw element SnapLayoutInfoProvider, którego można używać z: LazyGridState. (I92134, b/269237141, b/260914964)
  • Do zakresu leniwego rozłożonego siatki dodano eksperymentalną funkcję Modifier.animateItemPlacement(). Możesz go zastosować do elementów, aby osiągnąć automatyczną zmianę pozycji lub zmianę kolejności animacji. (I4b62d, b/257034719)
  • Zmień wersję GridCells.FixedSize na stabilną. 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 regionie LazyStaggeredGrid i ustalania ich układu 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, aby umożliwić prawidłowe obsługę zgłoszenia, gdy Layout będzie używany ponownie (np. jako element 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 typu pre/post API typu OverscrollEffect w połączone funkcje „decorator” 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

  • FocusRequesterModifier została wycofana i zastąpiona wersją FocusRequesterNode (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934 b/254529934
  • Konstruktor AndroidFont z 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 znajdziesz w opisie zmian w testach animacji w tej liście zmian.
  • Dodano opcjonalny parametr onPerformTraversals: (Long) -> Unit do konstruktora i funkcji fabrycznej TestMonotonicFrameClock w celu uruchamiania kodu po wywołaniach zwrotnych withFrameNanos, ale przed wznowieniem współrzędnych elementów wywołujących. (Idb413, b/254115946, b/222093277, b/255802670)
  • Przedstaw działania ułatwień dostępu na stronie: PageUp, PageDown, PageLeft, PageRight. Pamiętaj, że są one dostępne tylko w 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)
  • Czcionka OverscrollEffect#isEnabled została usunięta. Zamiast zapamiętywać i ustawiać tę flagę, po prostu nie wysyłaj zdarzeń do efektu przewinięcia w sytuacjach, gdy nie chcesz wyświetlać nadmiernego przewijania (np. gdy oba 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ść elementów kompozycyjnych w postaci liczby wierszy (I24294, b/122476634).

Wersja 1.4.0-alpha01

24 października 2022 r.

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

Zmiany interfejsu API

  • Dodano nową metodę (awaitEachGesture()) do wykrywania gestów. Jej działanie jest podobne 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ń odmian czcionek (API w wersji 26 lub nowszej). (I900dd, b/143703328)
  • Obsługa zmiennych czcionek w DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Usunięto adnotacje eksperymentalne z PlatformTextStyle 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)
  • Gdy dodajesz zdarzenia InputEventChange do trackera prędkości, będziemy teraz brać pod uwagę delta, a nie pozycje, co zagwarantuje, że we wszystkich przypadkach prędkość zostanie prawidłowo obliczona (Icea9d, b/216582726, b/223440806, b/227709803).
  • Gdy element przewijany ma zaznaczony element podrzędny, będzie się on prawidłowo przewijać, nawet gdy rozmiar elementu zamówienia zostanie zmniejszony, nawet gdy rozmiar jest animowany. (I80867, b/230756508, b/220119990)
  • Rozwiązaliśmy problem, który powodował, że pole TextField zostało wyczyszczone i uzupełnione, gdy zaznaczenie jest aktywne. (I1235b, b/208655565, b/214253689)

Wersja 1.3.0-alpha01

29 czerwca 2022 r.

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

Zmiany interfejsu API

  • Wprowadziliśmy typ adnotacji UrlAnnotation i powiązane z nim metody, aby umożliwić obsługę linkó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 ona 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 eksperymentalną funkcję BeyondBoundsInterval, której można używać w niestandardowych implementacjach funkcji LazyList, gdy układ elementów wykracza 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 dla opcjonalnych użytkowników interfejsu LazyLayoutItemProvider. (IBa8a0).
  • W interfejsie API LazyLayoutItemProvider zamiast fabryki zwracającej przez indeks funkcję kompozycyjną lambda mamy teraz prostszą funkcję kompozycyjną przyjmującą indeks. (Id2196).
  • Nazwa LazyLayoutItemsProvider została zmieniona na LazyLayoutItemProvider (I0638c)
  • Nazwa LazyLayoutItemsProvider.itemsCount została zmieniona 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 LineHeightBehavior zostało zmienione w jedną wyliczeniową: LineHeightTrim. LineHeightTrim mają wartości 4 stanów zdefiniowane za pomocą 2 wartości logicznych: FirstLineTop, LastLineBottom, Oba i None (Ifc6a5, b/181155707)
  • Dodanie atrybutu LineHeightBehavior do elementó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).

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

  • Konfiguracje trimFirstLineTop, trimLastLineBottom działają poprawnie tylko wtedy, 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 żądanie 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ń. Zaliczenie Constraints.maxHeight jest obecnie niedozwolone, ale pozwoli w przyszłości wykonać pewne obliczenia, na przykład elipszę na podstawie wysokości. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akceptuje teraz niestandardową klasę podobną do MutableSet, która nie pozwala na dodawanie nowych elementów. (ICD314).
  • Częściowe wykorzystanie (pozycja w dół LUB w pozycji) zostało wycofane w funkcji PointerInputChange. Aby w pełni zastosować zmianę, możesz użyć 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 tekstu PointerInputChange zostaną zużyte. Jeśli chcesz utworzyć niepowiązany element 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 czcionek Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane w systemie podczas łańcuchów 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 usłudze 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 treści w elemencie VectorPainter, jeśli obecny układ to RTL. (I79cd9, b/185760237)

Poprawki błędów

  • Modyfikatory przewijania (Modifier.verticalScroll(), Modifier.horizontalScroll() 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. Problemy z przycinaniem wynikające z metody includeFontPadding=false są obsługiwane i nie należy stosować przycinania w przypadku wysokich skryptów. (I31c84, b/171394808)
  • Interfejs pomiaru ujawnia teraz właściwośćparentData (I3313f)
  • Wprowadziliśmy eksperymentalną Modifier.onFocusedBoundsChanged, aby umożliwić obserwowanie granic elementów, które można zaznaczyć przez dzieci. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • Dodano opcję LazyLevelGrid. (I61ae7, b/191238807)
  • Dodano nowy interfejs API LazyVerticalGrid do definiowania rozmiarów osi krzyżowych (I17723)
  • Dodano modyfikator grupy fokusu (I64bc0, b/213508274, b/184670295)

Poprawki błędów

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

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

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

Wersja 1.2.0-alfa04

23 lutego 2022 r.

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

Zmiany interfejsu API

  • BringIntoViewResponders nie muszą już ręcznie przekazywać próśb do użytkowników nadrzędnych. Zamiast tego muszą natychmiast zwrócić prostokąt, który rodzic powinien pokazać rodzicom. (I8E66a)
  • Obsługa wczytywania czcionki asynchronicznego w tekście (I77057, b/214587005)
  • LazyVerticalGrid obsługuje teraz wartość line breaking przed elementami, których rozpiętość nie mieści się w bieżącym wierszu. (I05c40, b/207462103)
  • Zmieniono nazwę z excludeFromSystemGestures na systemGesturesExclusion (I19526).
  • LazyVerticalGrid obsługuje teraz układ odwrotny. (I6d7d7, b/215572963, b/211753558)
  • Dodaj metodę WindowInsets.only(), aby umożliwić programistom uwzględnianie tylko wymiarów z WindowInset. (I14c94, b/217768486)
  • Dodano ComposableTarget, ComposableTargetMarker i ComposableOpenTarget, które umożliwiają raportowanie w czasie kompilacji, kiedy funkcja kompozycyjna jest wywoływana pod kątem kierowania na aplikację, która nie została przez nią zaprojektowana.

    W większości przypadków adnotacje można wywnioskować dzięki wtyczce kompilatora, więc nie można używać ich bezpośrednio . Przypadki, których nie można wywnioskować, to m.in. utworzenie i użycie niestandardowego zastosowania, abstrakcyjnych funkcji kompozycyjnych (np. metod interfejsu), pól lub zmiennych globalnych, które są obiektami kompozycyjnymi (wywnioskowane są lokalne zmienne i parametry) lub podczas korzystania z funkcji ComposeNode albo powiązanych funkcji kompozycyjnych.

    W przypadku zastosowania niestandardowych funkcje kompozycyjne wywołujące funkcję ComposeNode lub ReusableComposeNode muszą dodać adnotację CompoableTarget dla funkcji i dowolnych typów parametrów kompozycyjnych lambda. Zalecamy jednak utworzenie adnotacji zawierającej adnotację ComposableTargetMarker, a następnie użycie oznaczonej adnotacji zamiast bezpośrednio ComposableTarget. Adnotacja kompozycyjna oznaczona kodem ComposableTargetMarker jest równoważna z adnotacją ComposbleTarget z pełną i jednoznaczną nazwą klasy atrybutu jako parametrem zastosowania. Przykład użycia ComposableTargetMarker znajdziesz tutaj: anroidx.compose.ui.UiComposable. (I38f11)

Poprawki błędów

  • Teraz można przekazywać ujemne przesunięcia przewijania do 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

  • Metody notifyFocusedRect w językach TextInputSession i TextInputService zostały wycofane i nie będą wywoływane. Zamiast niego użyj właściwości 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 hostowanego widoku Androida. (Ia7a51).
  • Usługa FontFamilyResolver jest teraz dostępna w: LocalFontFamilyResolver.current
    • Dodano createFontFamilyResolver(context) i createFontFamilyResolver(context, coroutineScope), aby tworzyć nowe resolvery FontFamily poza funkcją tworzenia.
    • Akapit i kilka akapitów zajmują teraz FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolver używany w tym układzie. Wycofano go TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)
  • Dodaliśmy AndroidFont, nowy niskopoziomowy interfejs API do udostępniania nowych typów deskryptorów zasobów czcionek na Androida. Dotyczy to na przykład wczytywania czcionek z backendu w odniesieniu do konkretnej aplikacji, opcjonalnego zlokalizowania czcionek wstępnie zainstalowanych na urządzeniu lub wczytywania czcionki z zasobu, który nie jest dostępny w bieżących fabrykach czcionek.
    • Rozszerzyliśmy interfejs API Font.ResourceLoaded, aby obsługiwać opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy bezpośredniego korzystania z tego interfejsu API przez deweloperów aplikacji. Aby dodać nowe typy czcionek, zapoznaj się z artykułem AndroidFont.
    • Funkcja rozszerzenia Font.AndroidResourceLoader umożliwia konstrukcję elementu Font.ResourceLoader poza kompozycją.
    • Dodaliśmy parametr loadingStrategy do czcionek opartych na zasobach, aby umożliwić ładowanie asynchroniczne, gdy czcionka zasobów odwołuje się do plików XML dostępnych do pobrania. (Ie5aea, b/174162090)
  • Konstruktor Typeface(FontFamily) został wycofany. Wcześniej to rozwiązanie służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku dostępnych do pobrania czcionek to wywołanie może zostać zablokowane na 10 sekund. Zamiast niego użyj funkcji FontFamilyResolver.preload.
    • Interfejs fontResource(FontFamily): Typeface został wycofany. Wcześniej to rozwiązanie służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast niego uż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, jak i określania rozmiaru. Dzięki temu część treści rozciąga się do obszaru wcięcia, a główna treść pozostaje poza tym obszarem. Za pomocą komponentu windowInsetsPadding można na przykład dopełnić obszar treści, aby uniknąć częściowego lub całkowitego zasłonięcia. (Id0395, b/213942085)

Poprawki błędów

  • Pola tekstowe będą teraz znajdować się nad klawiaturą, gdy są zaznaczone, a klawiatura jest pokazana, gdy tryb szybkiego wprowadzania danych jest ustawiony na ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Komputer używa lokalnej kompozycji dla aplikacji FontFamily.Resolver
    • Wersja FontLoader na komputery została wycofana
    • Nowa fabryka urządzenia createFontFamilyResolver na komputerze (I6bbbb, b/174162090)
  • Opcja wprowadzania tekstu za pomocą klawiatury programowej nie miga już podczas przechodzenia między polami tekstowymi. (I1bf50, b/187746439)
  • Pola tekstowe nie wymagają już dodatkowego naciśnięcia, gdy wyświetla się uchwyt kursora. (Ideb4b, b/205726883)
  • Działanie lupy do zaznaczania tekstu zostało dopracowane tak, aby odpowiadało lupie na platformie. (Idd918, b/206833278)

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

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

Zmiany interfejsu API

  • Dodano NonRestartableComposable do metod przeciążonych istniejącymi metodami, które nie wymagają skomplikowanej logiki. Zmniejsza to liczbę sprawdzania zapamiętanych przez kompilatora (równa się) wszystkich parametrów, które są powtarzane w wywoływanej funkcji wewnętrznej. (I90490)
  • Dodaliśmy modyfikatory excludeFromSystemGesture, które ułatwiają dostęp do aplikacji setSystemGestureExclusionRects Androida (I46f07)

Poprawki błędów

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

Wersja 1.2.0-alpha01

12 stycznia 2022 r.

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

Zmiany interfejsu API

  • Do obiektów LazyColumn, LazyRow 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 uchwytów wyboru w elemencie SelectionContainer. (I30b38, b/139320979)

Poprawki błędów

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

Aktualizacje zależności

  • Teraz zależy od Kotlin 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

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

Poprawki błędów

  • Napraw NullPointerException pod adresem androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • Naprawiono błąd spowodowany przez zawartość schowka przy odczytywaniu ze schowka na Androidzie. (I06020, b/197769306)
  • Poprawiono RTL w LazyVerticalGrid (aosp/1931080, b/207510535)

Wersja 1.1.0

9 lutego 2022 r.

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

Ważne zmiany wprowadzone od wersji 1.0.0

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

Wersja 1.1.0-rc03

26 stycznia 2022 r.

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

Poprawki błędów

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

Wersja 1.1.0-rc01

15 grudnia 2021 roku

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

Poprawki błędów

  • Teraz można przekazywać ujemne przesunięcia przewijania do elementów LazyListState.scrollToItem() 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 uchwytów wyboru wewnątrz pól tekstowych. (I5391e, b/203781358)

Poprawki błędów

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

Wersja 1.1.0-beta03

17 listopada 2021 r.

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

Zmiany interfejsu API

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

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • Gdy podasz klucz za pomocą funkcji LazyListScope.item 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 oznaczenia będą teraz opóźnione tylko wtedy, gdy znajdują się w kontenerze Modifier.scrollable(). Nie będą zawsze opóźniane w przypadku wyłączenia. (Ibefe0, b/203141462)
  • Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców w celu przewijania w celu wyświetlenia danego elementu (Ib918d, b/195353459)

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

  • Dodano Modifier.pointerHoverIcon (I95f01)

Wersja 1.1.0-beta01

27 października 2021 roku

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

Poprawki błędów

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

Wersja 1.1.0-alpha06

13 października 2021 r.

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

Zmiany interfejsu API

  • Dodano przeciążenie bez dzieci w przypadku układów, co zwiększyło wydajność (Ib0d9a)
  • SemanticsNodeInteraction.performSemanticsAction zwraca teraz wartość SemanticsNodeInteraction, dla której wywołano tę funkcję. (I9e5db).
  • Dodano funkcję performScrollToNode(matcher: SemanticsMatcher), która przewija kontener, który można przewijać, do treści dopasowanej przez podane dopasowanie. (IC1cb8)

Wersja 1.1.0-alpha05

29 września 2021 r.

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

Zmiany interfejsu API

Poprawki błędów

  • Poprawiono obsługę elementów z możliwością przewijania (leniwe i nieleniwe) w odniesieniu do przewijania (I6cdb0).

Wersja 1.1.0-alfa04

15 września 2021 r.

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

Zmiany interfejsu API

  • Wycofano reguły performGesture i GestureScope, które zostały zastąpione przez reguły performTouchInput i TouchInjectionScope. (Ia5f3f, b/190493367)
  • Do SemanticsNode dodano element touchBoundsInRoot, który uwzględnia minimalny rozmiar docelowego elementu dotykowego, dzięki czemu deweloperzy mogą zagwarantować, że docelowe elementy dotykowe spełniają minimalne wymagania dotyczące ułatwień dostępu. (I2e14b, b/197751214)

Poprawki błędów

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

Wersja 1.1.0-alfa03

1 września 2021 roku

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

Nowe funkcje

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

Wersja 1.1.0-alfa02

18 sierpnia 2021 r.

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

Zmiany interfejsu API

  • Dodaliśmy wersje DpSize dla systemów Modifier.size 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

  • Zaktualizowana metoda DrawScope#drawImage, która używa zapytań źródłowych i miejsc docelowych w celu korzystania z opcjonalnego parametruFilterQuality. Przydaje się to w przypadku elementów typu pixel art, które mają być pikselizowane po przeskalowaniu w górę. Zaktualizowaliśmy BitmapPainter i funkcję komponowania obrazu, aby korzystała też z opcjonalnego parametruFilterQuality (Ie4fb0, b/180311607)
  • Pole tekstowe usuwa teraz zaznaczenie po naciśnięciu przycisku Wstecz, co odpowiada działaniu EditText w Androidzie. (I3ca16, b/174173645)
  • Dodaj uchwyt kursora. (I07a82, b/173016579)

Poprawki błędów

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

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

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

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

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

Poprawki błędów

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

Wersja 1.0.4

13 października 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

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

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

Wersja 1.0.1

4 sierpnia 2021 r.

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

Aktualizacje zależności

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

Wersja 1.0.0

28 lipca 2021 roku

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

Główne funkcje 1.0.0

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

Znane problemy

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

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

    Aby rozwiązać ten problem, tymczasowo zwiększ wartość parametru minSdkVersion w pliku build.gradle do wartości 24 lub nowszej. Ten problem zostanie naprawiony w następnej wersji Androida Studio Bumblebee i 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 dla kształtów ogólnych, by rozwiązać problemy ze ścieżkami zdefiniowanymi o stałych wymiarach. (Aosp/1748871, b/191817116)

Wersja 1.0.0-rc01

1 lipca 2021 r.

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

Zmiany interfejsu API

  • Obszar roboczy obsługuje teraz parametr contentDescription, który zwiększa dostępność. (IB547C)

Poprawki błędów

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

Wersja 1.0.0-beta09

16 czerwca 2021 r.

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

Zmiany interfejsu API

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

Poprawki błędów

  • Teraz, gdy podasz unikalne klucze dla elementów LazyColumn/Row, pozycja przewijania będzie zależna od klucza. Oznacza to, że jeśli dodasz lub usuniesz elementy przed aktualnie widocznym elementem, element z danym kluczem zostanie zachowany jako pierwszy widoczny. (Id263f, b/184257857)
  • Główne stałe to na razie @ExperimentalComposeUiApi. Podczas przetwarzania kodu można deklarować stałe prywatne przed stabilizacją. (Ia5d48).
  • W regule AndroidComposeTestRule dodano IdlingStrategy, której można używać do testowania platform do zainstalowania alternatywnego mechanizmu w oczekiwaniu na spokój. Użyj AndroidComposeTestRule.setIdlingStrategyFactory(), zanim rozpocznie się test, aby zainstalować własną strategię. (I608fa)

Dodane reguły profilu

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

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

Co to są reguły profilu?

  • Reguły profilu dla biblioteki określa się w pliku tekstowym baseline-prof.txt znajdującym się w 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 to metoda „hot” i należy ją skompilować wcześniej.

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

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

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

Jak to działa?

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

Wersja 1.0.0-beta08

2 czerwca 2021 r.

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

Zmiany interfejsu API

  • Wyliczenie Nested ScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
  • Zrefaktoryzowano użycia enum do klas wbudowanych, aby uniknąć problemów z pełnymi instrukcjami związanymi z dodawaniem nowych wartości wyliczeniowych. (I2b5eb)
  • Dodaje czas oczekiwania na kliknięcie, aby zapobiec wyświetlaniu fali podczas przewijania lub przeciągania (Ia2704, b/168524931)
  • Właściwości ContentDescription i semantyka tekstu nie są już pojedynczymi wartościami, lecz listami. Dzięki temu można je scalić w postaci, w jakiej są zamiast konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania umożliwiające wykorzystanie tych zmian (Ica6bf, b/184825850)
  • Metoda Modifier.focusModifier() została wycofana i zastąpiona 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)
  • Funkcje AnnotatedString.withAnnotation to teraz ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a).
    • Konstruktor TextUnit z ustawieniem TextUnitType to teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
  • PaddingValues to teraz @Stable, a nie @Immutable (I88c50)

Poprawki błędów

  • Naprawa błędów związanych z przytrzymaniem pustego obszaru w przypadku tekstu, który nie jest pusty. (I33ab5, b/187437299)
  • Pokaż pasek narzędzi po elemencie SelectAll (I495d9, b/185919613)
  • Naprawiono przycinanie elementów podrzędnych przez kontenery z możliwością przewijania na osi poprzecznej. Łatwo go odtworzyć, jeśli masz wiersz LazyRow z elementami karty. Teraz cień nie zostanie przycięty. (Icb635, b/186318448)
  • Rozwiązaliśmy problem, który powodował, że zmarszczki lub inne wskaźniki zatrzymywały się po długim kliknięciu podczas korzystania z modyfikatora Modifier.combinedClickable (I2298c, b/186223077).
  • Teraz detectDragGesures, detectVerticalGestures 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 SemanticsActions.ScrollToIndex, aby przewijać listę ze indeksowanymi elementami do elementu o określonym indeksie oraz SemanticsProperties.IndexForKey, aby uzyskać indeks elementu na liście z elementami z kluczami. Oba działania są implementowane przez LazyList.
    • Dodano funkcję SemanticsNodeInteraction.performScrollToIndex, która przewija listę do podanego indeksu, oraz SemanticsNodeInteraction.performScrollToKey, która przewija listę do elementu z danym kluczem. (I4fe63, b/178483889, b/161584524)
  • Obsługa zapisu w polu AnnotatedString w polu TextFieldValue.Saver. Do narzędzia AnnotatedString.Builder (I8cbdc, b/178446304) dodano funkcje narzędzia addTtsAnnotation i z Adnotation
  • Do grupy PaddingValues(horizontal, vertical) dodano domyślne wartości parametrów 0.dp (I05571, b/181336792)

Poprawki błędów

  • Elementy podrzędne w wierszach i kolumnach zawierające atrybut weight(fill = false) nie wypełniają już całego dostępnego miejsca na osi głównej. (Ied94d, b/186012444, b/184355105)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

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

Zmiany interfejsu API

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

Poprawki błędów

  • Naprawiono czynności związane z przewijaniem ułatwień dostępu ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight i accessibilityActionScrollDown. Zamiast przewijać do końca elementu przewijanego, przewija on teraz o 1 ekran w danym kierunku. (Ieccb0)
  • Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994)

Wersja 1.0.0-beta04

7 kwietnia 2021 r.

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

Zmiany interfejsu API

  • Zmiana nazw hideOprogramowanieKlawiatura i show SoftwareKlawiatura na kontrolerze SoftwarekeyController odpowiednio na hide() i show().
    • Udostępnij pełny interfejs CompositionLocal dla kontrolera Local SoftwareKeyController, aby umożliwić jego skonfigurowanie (jest to szczególnie przydatne w testach) (I579a6).
  • Wprowadzenie: TextOverflow.Visible. (IC8f89)
  • Instancje publiczne RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope zostały usunięte. (I4e83e, b/181869067)

Poprawki błędów

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

    Oto przykład:

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

    Przed tą zmianą funkcja kompozycyjna ShowCount zawsze była pomijana, nawet po zaktualizowaniu 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. Wywołanie withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez numeru MonotonicFrameClock spowoduje zgłoszenie IllegalStateException. (I4eb0d).

Poprawki błędów

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

Wersja 1.0.0-beta02

10 marca 2021 r.

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

Zmiany interfejsu API

  • Dodaliśmy kilka niewielkich optymalizacji w logice pomiaru LazyColumn (Ic6889).
  • Dodano nowy interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (I5951e, b/168778053)
  • Dodano nowy interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (I84472, b/168778053)

Poprawki błędów

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

Wersja 1.0.0-beta01

24 lutego 2021 r.

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

To jest pierwsza wersja beta Compose 1.0.0.

Zmiany interfejsu API

  • Oddzwanianie onStart zostało dodane do detectDragGestures (I67269, b/179995594)
  • Modyfikatory dopasowujące wymiary do elementów wewnętrznych nie są już eksperymentalne. (I15744)
  • Usunięto asercje dp (I798d2)
  • Usunęliśmy wywołanie zwrotne SoftwareKlawiaturaController ze wszystkich pól tekstowych. Wkrótce zostanie zastąpione nowym interfejsem API. (IAe869, b/168778053)
  • Nazwa MeasureBlocks została zmieniona na MeasurePolicy, a interfejs jest teraz ciekawym interfejsem. Zaktualizowaliśmy lub uprościliśmy interfejsy Layout API pod kątem MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • Pole InteractionState zostało zastąpione elementem [Mutable]InteractionSource
    • Interfejsy odpowiadają za wysyłanie / zbieranie zdarzeń interakcji.
    • Zamiast przekazywać interactionState = remember { InteractionState() } do komponentów takich 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() Przewinięto nazwę przewijaniaState.smooth ScrollTo() na „animmate ScrollTo() (I35ded)

  • Komponent Modifier.zoomable został zastąpiony przez plik Modifier.transformable. Funkcje smoothPanBy i smoothRotationBy zostały zastąpione. (Ifc32b, b/175294473)

  • Pole defaultFactory dla obiektów compositionLocalOf i staticCompositionLocalOf jest teraz wymagane, a nie opcjonalne.

    Ta zmiana usuwa potencjalny błąd typu w przypadku typów niedopuszczających wartości null, w których nie podano domyślnej wartości fabrycznej. Wcześniej w przypadku typu niedopuszczającego wartości null konieczne było odniesienie do wartości null.

    W przypadku typów dopuszczających wartości null domyślną wartością fabryczną jest { null }.

    Nie zalecamy używania zasobów lokalnych z typami niezawierającymi wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda defaultFactory powinna zgłosić wyjątek. Zwrócenie wyjątku oznacza jednak, że konsumenci z okolicy są w bezpośrednim stopniu uzależnieni od jego zapewnienia, a system typów nie jest egzekwowany. (Ifbd2a).

  • Zmieniono Indication#createIndication() 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).

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

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

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

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

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

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

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

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

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

  • Nazwa dostawców została zmieniona na CompositionLocalProvider

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

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

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

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

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

Poprawki błędów

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

Wersja 1.0.0-alfa12

10 lutego 2021 r.

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

Zmiany interfejsu API

  • Modifier.pointerInput wymaga teraz zapamiętywania klawiszy, aby wskazywać, kiedy współprogram wykrywania danych wejściowych wskaźnika ma zostać uruchomiony ponownie w przypadku nowych zależności. (I849cd)
  • Testowanie aktualizacji: funkcja hasText() sprawdza w polu tekstowym zarówno dane wejściowe, jak i teksty etykiet, wskazówek i zastępczych (Iab803)
  • Dodano parametr PaddingValues.Bezwzględny, którego można używać w interfejsach API akceptujących wartości PaddingValues. (Ia5f30).
  • Parametr onImeActionPerformed został wycofany. Użyj jego działania (If0bbd, b/179071523).
  • Aby lepiej dopasować konwencje nazewnictwa do obrazów ImageBitmap i ImageVector, nazwa komponentu ImagePainter została zmieniona na BitmapPainter na równoległe narzędzie VectorPainter. (Iba381, b/174565889)
  • Lepsze interfejsy API do testowania podłańcucha z podłańcuchem jako argumentem (Icbe78)
  • Wprowadziliśmy współrzędny element kontekstu InfiniteAnimationPolicy, który będzie stosowany w nieskończoność animacji. Domyślnie żadna zasada nie jest instalowana, chyba że przeprowadzasz testy z użyciem ComposeTestRule. (I50ec4, b/151940543)
  • Animatable.snapTo i Animatable.stop to teraz funkcje zawieszania (If4288)
  • Element KomponentActivity.setContent został przeniesiony do folderu androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416).
  • Usunęliśmy metody niszczenia i copy() z kilku klas, w których były one rzadko używane. (I26702, b/178659281)
  • Dodano obsługę kluczy niestandardowych LazyColumn/LazyRow. Dzięki temu możemy lepiej zarządzać kolejnością produktów. Gdy zmienisz kolejność elementów lub usuniesz element ze środka, stan zapisany w blokach zapamiętanych {} zostanie przesunięty razem z nim.

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

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

  • Zasób loadFontResource został wycofany. Używaj zamiast niego fontResource. Elementy graficzne, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Użyj narzędzia PaintterResource. (I6B809)

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

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

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

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

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

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

  • Zmieniono nazwy Ambientów, aby pasowały do nazwy Ambient -> CompositionLocal. Lokalizatory nosiły wcześniej nazwę AmbientFoo, a teraz CompositionLocals – LocalFoo. (I2d55d)

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

  • Podobnie jak poprzednio usunęliśmy funkcję state { 0 } kompozycyjną, a teraz promujemy jej użycie, takie 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) jest teraz @NonRestartableComposable @ComposableContract(readonly = true) jest teraz @ReadOnlyComposable @ComposableContract(preventCapture = true) został usunięty z @DisallowComposableCalls adresu @ComposableContract(tracked = true) został usunięty. (I60a9D)

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

  • Rekompozycje można teraz zamknąć. Zamknięte rekompozytory będą kontynuować ponowne komponowanie, dopóki nie zakończą się uzupełniające podrzędne kompozycje. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (IB6d76)

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

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

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

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

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

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

  • Artefakt compose:runtime-dispatch został wycofany. MonotonicFrameClock znajdziesz teraz w polecenia compose:runtime, a AndroidUiDispatcher – w compose:ui. (IB5c36)

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

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

  • Interfejs API, na który kierowana jest wtyczka kompilatora Compose, został przekonwertowany tak, aby wykorzystywał interfejs zamiast konkretnej klasy. Interfejs nie używa już parametru type.

    To zmiana wewnętrzna, która nie powinna wpływać na zgodność kodu źródłowego, ale jest zmianą binarnej. (I3b922, b/169406779)

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

  • Parametr AnimatedValue/Float został wycofany. Zamiast niej użyj Animatable. (I71345, b/177457083)

    • Usunięto CoreText i CoreTextField z publicznego interfejsu API
    • Usunięto wycofane przeciążenie komponentu SelectionContainer (I99c19)
  • Usuń wycofane funkcje przewijania, które nie są zawieszane. Zgodnie ze zmianami w poprzedniej wersji funkcje przewijania bez zawieszania są teraz całkowicie usunięte. Przejdź na funkcje zawieszania o tych samych nazwach. Zakres współoutine można uzyskać za pomocą funkcjirememberCoroutineScope(). (I3d39c, b/178169563).

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

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

  • Czcionka Recomposer.current() została usunięta. [Abstract]Plik ComposeView obecnie domyślnie używa leniwych, ograniczonych do okna Rekompozytorów, które są wywoływane przez obiekt ViewTreeLifecycleOwner dla okna. Rekompozycja i animacje z FrameNanos są wstrzymywane na czas zatrzymania cyklu życia hosta. (I38e11)

  • Funkcja Recomposer.runningRecomposers udostępnia teraz globalny przepływ StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwację bieżącego stanu kompozycji w trakcie tego procesu. Preferuj ten interfejs API przy użyciu interfejsu Recomposer.current(), który jest teraz wycofany. (If8ebe).

Wersja 1.0.0-alfa11

28 stycznia 2021 roku

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

Zmiany interfejsu API

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

    Zalecamy teraz korzystanie z funkcji zawieszania, które pozwalają kontrolować przewijanie i poczekać na zakończenie przewijania. W ramach tego procesu wycofujemy lub usuwamy wersje tych funkcji, które nie są zawieszone. (Zastosowane)

  • Wycofanie funkcji smooth ScrollBy bez zawieszania, zalecamy obecnie korzystanie z funkcji zawieszania, które umożliwiają kontrolowanie przewijania i oczekiwanie na zakończenie przewijania. W ramach tego procesu wycofujemy wersje tych funkcji bez zawieszenia. (I12880)

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

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

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

  • Usunięto plik AnimatedFloating.fling, który akceptuje FlingConfig. Zamiast tego użyj zawieszenia Animatable.animateDecay. (I4659b, b/177457083)

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

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

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

  • Nowa metoda fabryczna items(count: Int) dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) 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.
    • Wycofanie wcześniejszych funkcji fabrycznych, używając małych i pierwszych liter
    • Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
    • Ukryto konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
    • Zmieniono nazwę Font.asFontFamily na Font.toFontFamily
    • (I42aa7).
  • Dodano ComposeContentTestRule, który rozszerza zakres ComposeTestRule i definiuje zasadę setContent, która została usunięta z ComposeTestRule. Dodaliśmy metodę fabryczną createEmptyComposeRule(), która zwraca ComposeTestRule i nie uruchamia za Ciebie aktywności. Użyj tej opcji, jeśli chcesz uruchomić aktywność podczas testu, np. za pomocą narzędzia ActivityScenario.launch (I9d782, b/174472899)

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

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

  • TextFieldValue akceptuje ciąg AnnotatedString. Jest to jednak zmiana dostępna tylko w interfejsie API, a edycja tekstu z wieloma stylami nie jest jeszcze wdrożona.

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

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

  • Czas trwania i czas działania zostaną zastąpione długimi milisekundami, a ten krok eliminuje zależność danych wejściowych wskaźnika do tych klas. (Ia33b2, b/175142755, b/177420019)

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

    Metoda RememberObserver zastępuje metodę CompositionLifecycleObserver ze zmodyfikowaną semantyką i nowymi nazwami. Zmiana na nowy interfejs API można wprowadzić mechanicznie w przypadku obiektów, które są zapamiętane tylko raz, co jest i nadal jest zalecane. Jeśli jednak odniesienie w kompozycji zostało zapamiętane więcej niż raz, funkcja onRemembered jest wywoływana dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. Funkcja onEnter była wywoływana wiele razy, jeśli obiekt był używany w podkompozycjach, np. WithConstraints i Scaffold sprawiły, że gwarancja pojedynczego wywołania onEnter była zawodna i został usunięty dla RememberObserver.

    RememberObserver dodaje element onAbandoned, który jest wywoływany, jeśli wystąpienie RememberObserver jest zwracane z wywołania zwrotnego przekazanego do remember, ale nie jest zapamiętywane w stanie kompozycji i dlatego nigdy nie zostanie wywołane przez onRemembered. Może się tak zdarzyć, jeśli wyjątek kończy kompozycję przed ukończeniem lub gdy kompozycja została odrzucona, ponieważ stan produkował kompozycję, która nie jest już aktualna lub nie jest już potrzebna. Jeśli instancja RememberObserver zgodnie z powyższą rekomendacją dotyczącą referencji śledzi zasób zewnętrzny (zarówno onForgotten, jak i onAbandoned), oznacza to, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte prace lub zasoby przydzielone w onRemembered, obiekt onAbandoned może zostać zignorowany, ponieważ nie będzie wywoływany po wywołaniu funkcji onRemembered. (I02c36)

  • Zmieniono nazwę TransformedText.transformText na TransformedText.text

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

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

  • Wycofaliśmy globalne metody współrzędnych i wprowadziliśmy nowe metody oparte na współrzędnych w oknach. (IEE284).

  • Użyj ImeAction.None zamiast ImeAction.NoAction

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

  • Nazwa Semantics PropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. Nazwa stateDescriptionRange została zmieniona na progressBarRangeInfo. Nazwa Accessibility ScrollState została przemianowana na ScrollAxisRange. Nazwa levelAccessibility ScrollState została zmieniona na level ScrollAxisRange. Nazwa verticalAccessibility powiązanych z nią została zmieniona na vertical ScrollAxisRange. (Id3148).

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

  • Wykorzystanie narzędzia TestCoroutineDispatcher w testowaniu (I532b6)

  • Usunięto metodę PointerInputData i zmodyfikowaliśmy ją, aby dodać do niej wszystkie pola PointerInputData. Obiekty PointerInputEvent i PointerInputEventData są wewnętrzne, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)

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

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

Wersja 1.0.0-alpha10

13 stycznia 2021 r.

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

Zmiany interfejsu API

  • ImeOptions i keyOptions nie są już klasą danych (I3c898, b/168684531).
  • Zmiany w interfejsie VisualTransformation API
    • Zmieniono nazwę OffsetMap na OffsetMapping
    • Zmieniono nazwę OffsetMapping.identityOffsetMap na OffsetMapping.Identity
    • Transformacja hasła nie jest już klasą danych.
    • Przeniesiono OffsetMapping do własnego pliku
    • (I0bdf3).
  • Zmiany w interfejsie EditOperations API
    • Zmieniono nazwę operacji EditOperation na EditCommand
    • Dodano sufiks polecenia dla konkretnych implementacji EditOperation
    • Pole EditCommand nie jest już klasami danych.
    • Zmieniono nazwę funkcji EditOperation.process na applyTo
    • Zmieniono nazwę detektora zdarzeń wejściowych nainputEventCallback
    • (I0a366)
  • zmodyfikowano Prędkość, aby uwzględnić części składowe i operacje matematyczne. (IB0447)
  • Zmieniliśmy nazwę @ExperimentalTesting na @ExperimentalTestApi, aby zapewnić spójność z podobnymi eksperymentalnymi adnotacjami interfejsu API (Ia4502, b/171464963)
  • Dodano eksperymentalną metodę stickyHeader dla LazyColumn/LazyRow (I0a81d).
  • Zmieniono nazwę Color.useOrElse() na Color.takeOrElse() (Ifdcf5)
  • Wycofano TestUiDispatcher. Użyj Dispatchers.Main (Ic171f, b/175385255)
  • Dodaj przełącznik do podstawowego pliku Strings.kt (I4a5b7, b/172366489)
  • Przeniesienie obiektu natywnego do modułu interfejsu i przekształcenie go w moduł wewnętrzny. Zaktualizowane użycie natywnego użycia klasy natywnej oznacza, że w implementacjach używana jest metoda „to MyClass”. (I4f734)
  • Obiekty FlowRow i FlowColumn zostały wycofane. Użyj układu niestandardowego. (I09027)
  • Modifier.focus() i Mmodifier.focusRequester() zostały wycofane. Użyj w zamian metod Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • Wprowadzono opcję SelectionRegistrar.notifySelectableChange, aby powiadamiać użytkowników o aktualizacjach Selectable (Zaznaczanie) w usłudze SelectionManager. (I6ff30, b/173215242)
  • Zmieniono fun Dp.isFinite() na val Dp.isFinite (I50e00)
  • Nazwa ograniczenia#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c).
  • W przypadku klas wbudowanych ze stałą nieokreśloną dodawane są wartości atrybutów isSpecified, isUnspecified i useOrElse. (I93f7b, b/174310811)

Poprawki błędów

  • Nowy interfejs API Animatable oparty na współudziale, który zapewnia wzajemną wyłączność wśród animacji. Nowa specyfikacja DecayAnimationSpec, która obsługuje wielowymiarową animację rozpadu (I820f2, b/168014930)
  • Dodano obsługę wyłączonych i tylko do odczytu pól tekstowych (I35279, b/171040474, b/166478534)
  • Metoda animate() została zastąpiona przez animateAsState(), która zwraca State<T> zamiast T. Zwiększa to wydajność, ponieważ zakres unieważniania można zawęzić do miejsca, w którym odczytywana jest wartość stanu. (IB179e)
  • Dodaj interfejs API roli Semantics i rolę jako parametr do klikalnego, możliwego do wyboru i przełączenia interfejsu SemanticsModifier. Zmieniono Modifier.progressSemantics, tak aby Slider mógł z niego korzystać. (I216cd)
  • Dostęp do natywnego zdarzenia keyEvent można teraz uzyskać przez keyEvent.nativeKeyEvent (I87c57, b/173086397)

Wersja 1.0.0-alpha09

16 grudnia 2020 roku

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

Zmiany interfejsu API

  • Dodaj interfejs przewijany

    Dzięki temu ScrollState i LazyListState mogą być traktowane jako wspólny typ, co umożliwia wdrożenie przewijania niestandardowego w obu tych typach.

    Spowoduje to również przeniesienie obiektu smooth ScrollBy do funkcji rozszerzenia w funkcji Scrollable, korzystając z tej funkcji. (I2153B)

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

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

  • W przypadku zawieszania interfejsów API danych wejściowych wskaźnika zmieniliśmy nazwę HandlePointerInputScope na AwaitPointerEventScope i HandlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755).

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

  • Usunięto adnotację ExperimentalPointerInput (Ia7a24).

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

  • Dodaj parametr odwrotnego układu do LazyColumn/Row. Gdy elementy true będą składać się od dołu do góry, 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)

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

  • Przeniesiono ContentDrawScope do modułu interfejsu ui-graphics, aby korzystać z modułu DrawScope. (Iee043, b/173832789)

Poprawki błędów

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

    Interfejsy CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API, którego można używać do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do stosowania poza interfejsem ui-tooling API, ponieważ dostarczają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c)

  • Zrefaktoryzowano ShaderBrush, aby leniwie utworzyć instancję cieniowania, gdy dostępne są informacje o rozmiarze środowiska rysowania. Przydaje się to przy definiowaniu gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania funkcji kompozycyjnej, bez konieczności wdrażania niestandardowych implementacji DrawModifier.

    Wycofaliśmy interfejsy API konstruktora funkcji gradientu. W obiekcie Gradient zastąpiliśmy metody fabryczne. (I511fc, b/173066799)

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

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

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

  • AccessibilityLabel została zmieniona na contentDescription. Wartość ułatwień dostępu została zmieniona na stateDescription. (I250f2)

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

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

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

  • Interfejs Applier został zmieniony, aby uprościć tworzenie drzew w widoku od dołu, a nie od góry.

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

    Dodano nową metodę: insertBottomUp().

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

    Niektóre drzewa, np. LayoutNode i View, są znacznie efektywniejsze w budowaniu od dołu niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, który trzeba było kopiować do każdego narzędzia, które wymagało oddolnej struktury w celu zwiększenia skuteczności. W przypadku tej zmiany właściwość Applier zastępuje zasadę insertBottomUp(), aby utworzyć drzewo od dołu do góry, i zastąpienie insertTopDown(), aby utworzyć drzewo od dołu. (Icbdc2)

  • Dodano interfejs PaintterResource API do obsługi nieprzezroczystych obiektów Painter pochodzących z formatów zasobów zrastrowanych (np. PNG) lub plików VectorDrawable. Konsumenci nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponentach lub modyfikatorach malarstwa. (I2c703, b/173818471)

  • Dodaliśmy funkcję fabryczną buildAnnotatedString, która pozwala utworzyć obiekt AnnotatedString. Wycofano funkcję konstruktora adnotatedString. (Idfe0b)

Wersja 1.0.0-alpha08

Grudzień 2, 2020

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

Zmiany interfejsu API

  • Z parametru CoreTextField usunięto parametr maxLines. Jeśli chcesz ograniczyć wysokość pola tekstowego liczbą wierszy, użyj funkcji BasicTextField. (Iec002).
  • Zmieniliśmy metody await*TouchSlop(), aby nie wykrywały wskaźnika w dół, i zmieniliśmy nazwę na *OrCancellation. Usunęliśmy też potrzebę parametru 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 pomoce do wykrywania obracania, powiększania i przesuwania. (IC459d).
  • Nowy wykrywacz gestów przeciągania do zawieszania wejściowego interfejsu API, w tym blokowanie orientacji. (Icef25).
  • Zmieniliśmy nazwę komponentu VectorAsset na ImageVector. Przeniesiono komponent VectorAsset na Builder, aby stał się wewnętrznym klasą ImageVector, zgodnie z wytycznymi rady ds. interfejsów API. Dodano alias typu VectorAssetBuilder do połączenia z obiektem ImageVector.Builder w przypadku zgodności. (Icfdc8)
  • Zmieniliśmy nazwę komponentu ImageAsset i powiązane metody na ImageBitmap. (Ia2d99)
  • Przeniesiono właściwości semantyki podstawowej do interfejsu użytkownika (I6f05c)
  • Dodaj interfejsy API do przewijania opartego na współrzędnych:

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

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

  • Wykrywanie gestów do kliknięcia, dwukrotnego dotknięcia, przytrzymania i wskaźnika naciśnięcia zostało dodane za pomocą nowego wskaźnika zawieszania. Dodaliśmy też kilka narzędzi, które ułatwiają programistom pisanie własnych wzorców do wykrywania gestów. (I00807).

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

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

  • Zmieniono nazwę aranżacji bezwzględnej na Rozmieść.Bezwzględna. (If26f2).

Poprawki błędów

  • Przeniesiono interfejsy API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierExit.kt, który zawiera aliasy typów i metody pomocnicze, które pomagają w migracji z wycofanych interfejsów API do obecnych. (Id6044, b/173834241)
  • Zgodnie z opiniami Rady ds. API zmodyfikowaliśmy też nazwę Modifier.drawLayer na Modifier.graphicsLayer. Wraz z opiniami rady ds. API zaktualizowaliśmy też powiązane klasy na GraphicsLayer. (I0bd29, b/173834241)
  • Element <T> został usunięty z deklaracji SubcomposeLayout. Możesz go użyć bez określania typu. (IB60c8)
  • Sprawia, że pola czasu działania i pozycji PointerInputData nie mają wartości null. (Id468a).
  • MaterialTheme ustawia teraz prawidłowe kolory uchwytów wyboru i tła zaznaczenia. Aplikacje niematerialne mogą ręcznie używać elementów AmbientTextSelectionColors, aby dostosowywać kolory używane do zaznaczenia. (I1e6f4, b/139320372, b/139320907)
  • Nazwa parametru wyrównania Box została zmieniona na contentWyrównajment. (I2C957)
  • Zmieniono nazwy modyfikatorów przesunięciaPx na przesunięcie. Wykorzystują teraz parametry lambda zamiast stanu State. (Ic3021, b/173594846)
  • Dodano obiekt WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywny, oraz obiekt WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
  • Dodano parametr resetInput do usługi TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • Zaktualizowano TextFieldValue API
    • ustawił wartość pola TextFieldValue.composition tylko do odczytu
    • usunięto wyjątek dla nieprawidłowego zakresu wyboru (I4a675, b/172239032)
  • Wycofany komponent Ambient został wycofany z sufiksem Ambient i zastąpił je nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi interfejsu Ambients i Compose API. (I33440)
  • Dodano otokę kroju czcionki na Androidzie. Krój czcionki Androida można wczytać za pomocą funkcji typeface, np. typeface(Typeface.DEFAULT). Nazwa została też zmieniona 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 mergeAllDescendants została zmieniona na scalanie potomnych. (IB6250)
  • Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest obecnie w fazie eksperymentalnej (I6ef86, b/171378521)
  • Usuń stary moduł testowania interfejsu i jego złącza (I3a7cb)
  • Nazwa elementu TextUnit.Inherit została zmieniona na TextUnit.Nieokreślona zgodnie z innymi jednostkami. (Ifce19).
  • Interfejs Wyrównania został zaktualizowany i działa. (I46a07, b/172311734)
  • Moduł foundation:foundation-text został scalony z modułem foundation:foundation (Idac0f)
  • Wycofywanie elementu Place(Offset) i placeRelative(Przesunięcie) Użyj przeciążeń z przesunięciami liczby całkowitej (I4c5e7)
  • Nazwa konta id została zmieniona 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 niezwiązany z projektowaniem (równolegle do BasicTextField). (I28268)
  • Usunięto adnotację ExperimentalLazyDsl. LazyColumn/LazyRow można teraz używać bez dodawania @OptIn (Idab7a, b/166584730)
  • Pole BaseTextField zostało wycofane. Użyj w zamian pola BasicTextField. (I896eb)
  • Pole BasicTextField zostało dodane do zastąpienia zarówno CoreTextField, jak i BaseTextField (Id4cea).
  • Usuń wycofane elementy LazyColumnItems/LazyRowItems (I1d8a8)
  • Wycofane komponenty kompozycyjne służące do dostosowywania rozmiaru do pomiarów wewnętrznych zostały usunięte. (I18537, b/171811496)
  • Zmieniono nazwę parametru metricPaddingFrom na splashFrom. Dodaliśmy modyfikator paddingFromBaseline, aby ułatwić określenie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
  • Parametr matchHeightConstraintsFirst został dodany do modyfikatora parameterRatio, którego można użyć do określenia ograniczenia rozmiaru do wysokości przed próbą stosowania korespondentów szerokości. (IE7c43, b/155290593)
  • Wycofane ograniczenia DpConstraint zostały usunięte. (I87884, b/171702471)

Poprawki błędów

  • Wprowadziliśmy klasę wbudowane ScaleFactor do reprezentowania współczynników skali dla osi poziomej i pionowej niezależnie od siebie na potrzeby niejednolitych przypadków użycia skalowania.
    • Dodano metodę computeScaleFactor do ContentScale
    • Dodano funkcję ContentScale.FillBounds do wykonywania niejednolitego skalowania w celu rozciągnięcia granic atrybutu src tak, aby w pełni zająć miejsce docelowe.
    • Dodaliśmy metody operatorów do obliczania parametrów ScaleFactor z parametrami Size.
    • (IC96a6, b/172291582)
  • Sekcja CapToBitmap została przeniesiona do tagu scanToImage. (I86385)
  • Oznacza CoreText jako @InternalTextApi. Użyj tekstu BasicText. (I6aaeb).
  • Zmień nazwę KlawiaturaOptions na ImeOptions (I82f36).
  • Przeniesiono KlawiaturaType i ImeAction do KlawiaturaOptions (I910ce).
  • Pole CoreTextField zostało oznaczone jako @InternalTextApi. Użyj natomiast BasicTextField (Ie2469)
  • Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Elementu SubcomposeLayout można teraz używać bez dodawania elementu @OptIn (I708ad)
  • Przedstawienie modułu ui-test-junit4 (Ib91f8)
  • Zaktualizowaliśmy interfejs Icon API, tak aby przyjęto kolor.Nieokreślony jako możliwy odcień, który rysuje przesłany zasób lub malarz bez użycia ColorFilter. Wcześniej próba ignorowania odcienia za pomocą opcji Color.Unspecified powodowała odcień przezroczystym kolorem, który kończył się bez renderowania. (I049e2, b/171624632)
  • Element MeasureResult został przeniesiony z obiektu MeasureScope. (Ibf96d, b/171184002)
  • Kilka symboli związanych z układem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
  • Plik androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb)
  • FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
  • Dodano element SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Dodaj testy pozycji elementu SelectionHandles w kontenerze SelectionContainer. (Ie93db)
  • Dodano opcję autokorekty IME dla klawiatury (I57b8d)

Wersja 1.0.0-alpha06

28 października 2020 r.

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

Zmiany interfejsu API

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

Poprawki błędów

  • Zrezygnuj z metody VectorPainter i zamiast niej użyj komponentu PamiętajVectorPainter, aby lepiej wskazać, że interfejs kompozycyjny interfejs API wewnętrznie wykorzystuje funkcję „zapamiętuj” w celu zachowywania danych w różnych kompozycjach. (Ifda43).
  • Włącz przejścia w ComposeTestRule. Usuń tę opcję, by włączyć migający kursor z reguły ComposeTestRule. (If0de3).
  • Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
  • Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlić sposób jego używania w usłudze Compose. Zaktualizowaliśmy dokumentację, by wskazać, że ujemne promienie narożników są zaciśnięte do zera. (I130c7, b/168762961)
  • Dodaj możliwość podawania informacji inspektora w modyfikatorze utworzonym (Idee08, b/163494569)
  • Dodano opcję IME dla wielkich liter (I8ac38).
  • Popraw pozycję uchwytu RTL. (I6e1e0).
  • Zmiana powodująca niezgodność: usunęliśmy wartość zwracaną z metody PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o wykorzystaniu. Zamiast zwracać dane z metody PointerInputFilter.onPointerEvent(...), możesz teraz po prostu zmodyfikować dane wykorzystania przekazywanego zdarzenia PointerEvents. (I6acd0).
  • Do menu wyboru dodano opcję SelectAll (Ief02b).

Wersja 1.0.0-alpha05

14 października 2020 r.

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

Zmiany interfejsu API

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

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

Poprawki błędów

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

Wersja 1.0.0-alpha04

1 października 2020 roku

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

Zmiany interfejsu API

  • Nazwa stosu została zmieniona na Box. Dotychczasowa wersja Foundation.Box zostanie zastąpiona nową kartą compose.foundation.layout. Działanie nowego pola to układanie elementów podrzędnych jedna nad drugą, jeśli ma ona kilka elementów podrzędnych. Różni się to od poprzedniej skrzynki, która działała podobnie jak kolumna. (I94893, b/167680279)
  • Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać do pola ozdoby lub dopełnienie, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.splash) (Ibae92, b/167680279)
  • Dodaj nową klasę LazyListState. Pozwala to obserwować i kontrolować pozycję przewijania komponentów LazyRow i LazyColumn. Instancje można tworzyć za pomocą funkcjirememberLazyListState() i przekazywać je do parametru stanu komponentu. Obecnie w tej wersji początkowej widać pierwszy widoczny element i przesunięcia. (Ic7cb7, b/159307669)
  • Leniwe położenie listy i przesunięcie przewijania są teraz zapisywane i przywracane w sekcji Rekreacja na podstawie aktywności (Ie045f, b/166589058)
  • Dodaj działanie semantyki długiego kliknięcia (I6281b, b/156468846)
  • Dodano narzędzie Mutatormutex do utrzymywania w czasie pojedynczego mutatora współdzielonego stanu i anulowania kolidujących mutatorów według priorytetu (I3f975)
  • Adnotacja rootAnimationClockFactory, uzyskania włączone
  • Usunięto parametr inlineContent z tekstu zawierającego ciąg znaków. Nie zostanie użyty, ponieważ element inlineContent musi działać z AnnotatedString. (Ief403).
  • Wycofane niestandardowe interfejsy aranżacji interfejsów API zostały usunięte. (IC576d, b/168297922, b/168297923)
  • Parametr unbounded został dodany do modyfikatorów wrapContentSize, co umożliwia pomiar elementu układu z nieskończonymi ograniczeniami maksymalnymi. (I77951, b/158559319)
  • Zablokowaliśmy statyczne importowanie treści zakresów układu (np.alignWithSiblings w RowScope). Zamiast niego należy stosować alternatywny zakres wyraźny: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Poprawki błędów

  • Zaktualizowano wiele interfejsów Graphics API.
    • Zaktualizowaliśmy interfejsy API skalowania i obrotu przekształcania, aby wykorzystywały pojedynczy parametr Offset do reprezentowania współrzędnych przestawnej zamiast osobnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform
    • Usunięto metody Rect.expandToInclude i Rect.join
    • Zaktualizowaliśmy dokumentację dotyczącą promieni eliptycznych. Oprócz eliptycznego
    • Dodaliśmy dokumentację wskazującą, że publiczny konstruktor dla wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale wystąpienie obiektów Radius należy tworzyć za pomocą ich konstruktorów funkcji.
    • Usunęliśmy interfejsy RoundRect API do wysyłania zapytań dotyczących górnych praw, dolnych, dolnej, środkowej części itp.
    • Wycofano Rect.shift na rzecz Rect.translate
    • Usunięto interfejsy API RoundRect.grow i Rect.shrink
    • Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect
    • Usunęliśmy metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Nazwa RoundRect.longestSide została zmieniona na RoundRect.maxDimensions
    • Zmieniono nazwę RoundRect.shortestSide na RoundRect.mindimension
    • Zmieniono RoundRect.center na właściwość, a nie funkcję
    • Zaktualizowaliśmy konstruktor RoundRect, który wykorzystuje właściwości typu Radius zamiast poszczególnych parametrów dla wartości promieni x/y.
    • Usunęliśmy interfejsy Size API, które zakładały, że jest to prostokąt o źródle wartości 0,0
    • Do interfejsu Radius dodano interfejs API destrukcyjny.
    • Przenieśliśmy różne funkcje rozszerzenia RoundRect na właściwości
    • (I8f5c7, b/168762961)
  • Optymalizacje wydajności funkcji LazyColumnFor/LazyRowFor przewijania dzięki unikaniu zbędnych zmian kompozycji podczas każdego przewijania (I64f65, b/168293643, b/167972292, b/165028371)
  • Naprawiono awarię w LazyColumnFor/LazyRowFor po przewinięciu i zmianie elementów oraz wdrożeniu automatycznego przewijania w górę, gdy wcześniej widoczny element został usunięty. Dzięki temu nie wyświetlamy już pustych luk na końcu (I220ab, b/161480164, b/167855468).
  • Nie można już umieszczać elementów przewijanych w kontenerach tego samego kierunku, takich jak ScrollableContainer i LazyColumnFor. Nigdy nie było obsługiwane i po prostu nie dało się z niego korzystać. Komunikował się on z kompozycją elementów LazyColumnFor (I6e101).
  • Zaktualizowano wiele interfejsów Graphics API.
    • Zaktualizowaliśmy interfejsy API DrawScope z metodami przekształcania o zakresie wskazującym, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po wywołaniu wywołania zwrotnego
    • Zaktualizowaliśmy dokumentację dotyczącą clipPath, aby odwoływały się do ścieżki zamiast zaokrąglonego prostokąta
    • Poprawiono odstępy w dokumentacji dla prawego parametru w clipPath
    • Zmieniliśmy nazwę DrawScope.drawCanvas na DrawIntoCanvas i usunęliśmy parametr rozmiaru.
    • Zmieniono nazwę parametrów Dx/dy w metodzie wstawienia na poziomą i pionową
    • Dodano przeciążenie wektora, które zapewnia tę samą wartość wstawienia do wszystkich 4 progów
    • Usunęliśmy dokumentację metody wstawiania, która wskazuje, że wstawienie zostanie zastosowane do wszystkich 4 stron,
    • Zaktualizowano dokumentację klasy Rect
    • Zaktualizowaliśmy komentarze do parametrów Rect, aby pasowały do stylu kdoc
    • Usunięto elementy Rect.join i Rect.expandToInclude
    • Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
    • (If086a, b/167737376)
  • do właściwości semantyki dodaj parametr Accessibility ScrollState. (Ifeda9).
  • Ustaw TextRange w tekście, aby uniknąć tworzenia obiektów. (Id034b)
  • Ograniczenia akapitu zostały usunięte. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712).

Wersja 1.0.0-alpha03

16 września 2020 roku

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

Zmiany interfejsu API

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

Poprawki błędów

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

Wersja 1.0.0-alpha02

Wrzesień 2, 2020

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

Poprawki błędów

  • TestUiDispatcher jest oznaczony jako eksperymentalny (Iae99d, b/161247083)
  • Dodano ManualFrameClock.hasAwaiters, by sprawdzić, czy coś czeka na klatkę z tego zegara; runWithManualClock jako zamiennik runBlocking w przypadku przeprowadzania testów, które wymagają ManualFrameClock; TestUiDispatcher.Main daje łatwy dostęp do głównego dyspozytora UI w testach.

    Na przykład:

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

    (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)
  • Dodano możliwość zmiany rozmiaru układu do ułamka dostępnej przestrzeni przy użyciu modyfikatorów FillMaxWidth, FillMaxHeight i FillMaxSize. (I945bb, b/161562591)

Poprawki błędów

  • do komponentu SelectionContainer (I4aada, b/161487952) dodano parametr modyfikatora.
  • Do elementu Semantics PropertyKey dodano funkcję mergePolicy lambda. Pozwala to zdefiniować niestandardową zasadę łączenia semantyki mergeAllDescendants. Domyślną zasadą jest użycie wartości nadrzędnej, jeśli już istnieje, lub wartości podrzędnej. (Iaf6c4, b/161979921)
  • Nazwa usługi PlacementScope.placeAbsolute() została zmieniona 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ąpiła jawne wywołania remember { mutableStateOf(...) }, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem. Dopasowanie do wzorca by mutableStateOf() w przypadku przekazywania właściwości klas. (IA5727).
  • Zmieniliśmy nazwę parametru RRect na RoundRect, by lepiej dopasować ją do wzorców nazewnictwa tworzenia kompozycji Utworzyliśmy podobne konstruktory funkcji do konstruktorów funkcji RRect i wycofanych konstruktorów funkcji RRect (I5d325)
  • Usunięto wartości onChildPositioned i OnChildPositionedModifier. Deweloperzy powinni zamiast tego używać w układzie podrzędnym onPositioned i OnPositionedModifier. (I4522e, b/162109766)
  • IntSize jest teraz klasą wbudowaną (I2bf42)
  • Aby edytować, przytrzymaj pusty obszar. (IB1e5b).
  • Ukryj FloatingToolbar po kliknięciu tekstu. (If4525).
  • Ukryj FloatingToolbar podczas aktualizowania zaznaczenia. (I8444C)
  • Odznacz w przypadku rozmycia. (I781a2).

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

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

Zmiany interfejsu API

  • Dodano parametr LazyItemScope dla parametru itemContent list Lazy. Udostępnia modyfikatory wypełniające maksymalny rozmiar elementu nadrzędnego, co rozwiązuje przypadek użycia, gdy element powinien wypełniać widoczny obszar, a zwykła metoda Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
  • Przenieś okno do interfejsu użytkownika (I47fa6)
  • Dodano wersje LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które zawierają zarówno indeks, jak i element w elemencie itemCallback. Jest to przydatne, gdy oprócz bieżącego elementu musisz znać bieżący indeks. (I65ff3)
  • Nazwa Modifier.deternimateProgress została zmieniona na Modifier.progressSemantics (I9c0b4).
  • Nazwa LazyColumnItems została zmieniona na LazyColumnFor. Nazwa LazyRowItems została zmieniona na LazyRowFor (I84f84).
  • Dla celów związanych ze sprawdzonymi metodami dodaj znaczniki/adnotacje. (I66b20)
  • pakiet Foundation.shape.corner został spłaszczony do pliku Foundation.share (I46491, b/161887429)
  • Dodano parametr grawitacji сrossaxis dla LazyRowItems/LazyColumnItem. LazyRowItems/LazyColumnItems obsługuje teraz zachowanie zawijania treści. (Ib39fc)
  • Nazwa ZoomableState została zmieniona na ZoomableController. Dodano obsługę niestandardowej krzywej dla smoothScale. Dodaliśmy funkcje enabled 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 modyfikatory.absoluteOffset() i Modifier.absoluteOffsetPx(). W przeciwieństwie do modyfikatorów przesunięcia, modyfikatory przesunięcia bezwzględnego nie będą automatycznie odbicia lustrzanego od prawej do lewej (I3aa21).
  • Row i Column są teraz funkcjami wbudowanymi, więc znacznie zmniejszają wymagania związane z ich używaniem. (I75c10)

Poprawki błędów

  • Naprawianie ogólnych poprawek interfejsu API (I077bc)
    1. Usuń nieużywany interfejs OffsetBase
    2. Wyrównuje klasy Offset i IntOffset, aby mieć spójny interfejs API
    3. Zmień nazwę IntOffset.Origin na IntOffset.Zero, by była zgodna z interfejsem Offset API
    4. Przeniesiono metodę natywnego Canvas z interfejsu Canvas, aby zachęcić konsumentów do tworzenia własnych instancji Canvas
    5. Utworzono stub klasy EmptyCanvas do refaktoryzacji DrawScope jako parametr niepusty zamiast lateinit i zapewnia niedodawanie pola do wartości 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 typ 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. zaktualizowaliśmy implementację DrawCache tak, aby nie używała już parametrów Lateinit,
    14. Zaktualizowano metodę DrawScope, by nie używała już leniwego przekazywania w przypadku wewnętrznych parametrów FillPaint i slidePaint
    15. Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box i zmniejszania nakładu pracy
    16. Zaktualizowaliśmy klasę Outline tak, aby dodać do niej adnotacje @stałe.
    17. Zaktualizowaliśmy narzędzie PathNode, aby dodać adnotacje @Stałe dla każdej instrukcji ścieżki
    18. Zaktualizowaliśmy składnię wektorową, aby usunąć zbędne warunkowe kontrole równości, ponieważ funkcja tworzenia wiadomości już je obsługuje
    19. Wycofane metody konstruktora towarzyszącego Prostokąt na rzecz konstruktorów funkcji
    20. zaktualizowaliśmy klasy i konstruktory funkcji Brush, używając interfejsów API @Immutable i @Stable.
    21. Zaktualizowano enum VertexMode na PascalCase
    22. Zaktualizowano metodę DrawScope selectPaint, która warunkowo zastępuje parametry kreski w malowaniu, jeśli uległy zmianie
    23. Zaktualizowaliśmy rozmiar, by dodać interfejs API destrukcyjny; zmień nazwę UnspecifiedSize na Nieokreślony i usunęliśmy nieużywane metody
  • Dodano MonotonicFrameAnimationClock, który umożliwia użycie MonotonicFrameClock jako funkcji AnimationClockObservable w celu wypełnienia luki między nowymi zegarami opartymi na współprogramach a interfejsami API, które nadal używają starych zegarów opartych na wywołaniach zwrotnych.

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

  • Czcionka SemanticsNodeInteraction.performPartialGesture została usunięta. Użyj SemanticsNodeInteraction.performGesture. (Id9b62)

  • Zmieniono nazwę SemanticsNodeInteraction.getBoundsInRoot() 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. Pole „To” daje silniejszy sygnał określający kolejność, ale uniemożliwia też wpisanie słowa Modifier.padding().background() + anotherModifier, które przerywa łańcuch i jest trudniejsze do odczytania (Iedd58, b/161529964).

  • Dodano isFocused() 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żyj w zamian elementu OnPositioned w elemencie podrzędnym. (I87f95, b/162109766)

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

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

Wersja 0.1.0-dev15

22 lipca 2020 r.

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

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

Aktualizacja zależności

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

Zmiany interfejsu API

  • Podobnie jak nowy parametr w tabeli ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ma teraz parametr contentPadding, który umożliwia dodanie dopełnienia treści po jej przycięciu, co nie jest możliwe za pomocą parametru modyfikatora. Pozwala to też dodawać odstępy tylko przed pierwszym lub po ostatnim elementem. (IBc24e)
  • Nazwa wywołania zwrotnego onFocusChange w polach tekstowych została zmieniona na onFocusChanged (Ida4a1)
  • Interfejsy Vertical Scroller oraz Horiziontal Scroller zostały wycofane. Użyj interfejsu ScrollableColumn i ScrollableRow, aby mieć wbudowane funkcje i parametry związane z kolumnami/wierszami, lub modyfikatorami.vertical Scroll i Mmodifier.vertical Scroll, aby umożliwić ich użycie własnemu elementowi. Natomiast ScrollerPosition został wycofany i zastąpiony przez ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • Zmieniliśmy interfejsy API Modifier.draggable i Modifier.scrollable. Kierunek przeciągania został usunięty i zastąpiona Orientacją. Uprościliśmy stan wymagany w przypadku elementów przewijanych. Nazwa ScrollableState została zmieniona na ScrollableController (Iab63c, b/149460415).
  • Usługi semantyczne z jedną wartością używają teraz stylu wywoływania. Na przykład zapis „semantyka { hide = true }” będzie teraz zapisany jako: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Rozmiary narożników używane przez obiekty RoundedCornerangle i CutCorner shape mogą być teraz większe niż 50% (Id2340, b/160400213)
  • Zmieniliśmy domyślny parametr ContentScale dla elementu kompozycyjnego obrazu z Inside na Fit. Zrobiono to, aby uzyskać możliwość skalowania obrazu malarza w górę w sytuacji, gdy rozmiar układu jest większy niż rzeczywisty rozmiar malarza, przy zachowaniu współczynnika proporcji. To zachowanie lepiej odpowiada oczekiwaniom w zakresie dostarczania obrazu o stałych rozmiarach, a jednocześnie nie wpływa na domyślne zachowanie, jeśli do obliczania rozmiaru elementu kompozycyjnego służy tylko rozmiar wewnętrzny. (I40ae3, b/159838006)
  • Użyj AnimationSpec zamiast AnimationBuilder w interfejsach API najwyższego poziomu, aby wyjaśnić koncepcję specyfikacji animacji statycznej. -Udoskonalenie przejścia DSL przez usunięcie wymogu lambda przy tworzeniu specyfikacji animacji, takich jak starsze czy sprężyna. Zamiast tego korzystają bezpośrednio z parametrów konstruktora. – Zwiększenie ogólnej łatwości otwierania konstruktorów AnimationSpec zamiast użycia konstruktorów. -Zmiana czasu trwania i opóźnienia ramek KeyFrame i Tween na Int. Eliminuje to niepotrzebne rzuty typów i przeciążanie metod (przy obsłudze zarówno długich, jak i Int). (ICA0b4).
  • Element klikalny został usunięty. Użyj metody Modifier.clickable (I84bdf)
  • Dodano LazyRowItems – analog z przewijaniem poziomym typu LazyColumnItems (Ibbcf7)
  • Wprowadzono niskopoziomowe interfejsy API do animacji bezstanowych. Te interfejsy API (I63bf7)
  • Metody androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Obiekty kompozycyjne TextField, PhlledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • Zastąpiliśmy wartość IntPx wartością IntPxPosition (Parametr IntPxPosition) wartością IntOffset. IntPxSize zastąpiono wartością IntSize. (IB7b44)
  • Usunięto androidx.ui.foundation.shape.Rectangle shape; użyj androidx.ui.graphics.Rectangleangle (I94939, b/154507984)
  • Aby skonsolidować liczbę klas używanych do przedstawiania informacji o rozmiarze, ustandaryzuj użycie klasy Size zamiast PxSize. Dzięki temu w klasie wbudowanej można umieścić 2 wartości zmiennoprzecinkowe w postaci długiej do pakowania 2 wartości liczb zmiennoprzecinkowych, które reprezentują szerokość i wysokość reprezentowane przez liczbę zmiennoprzecinkową. (IC0191).
  • Aby skonsolidować liczbę klas używanych do przedstawiania informacji o pozycji, ustandaryzuj użycie klasy Offset zamiast PxPosition. Dzięki temu w klasie wbudowanej można umieścić 2 wartości zmiennoprzecinkowe za pomocą funkcji „long” (długie) do reprezentowania przesunięcia x i y reprezentowanego jako liczby zmiennoprzecinkowe. (I3ad98).
  • Dodaliśmy modyfikator powiększenia umożliwiający powiększanie przez ściąganie palców (Id5d63).
  • Komponent z możliwością przełączania został wycofany. Użyj metody Modifier.toggleable (I35220, b/157642842)
  • Funkcja MutuallyExclusiveSetItem została wycofana. Zamiast niej użyj metody Modifier.selectable. (I02b47, b/157642842)
  • Tag TestTag został wycofany. Użyj w zamian metody Modifier.testTag. (If5110, b/157173105)
  • Dodaje do tekstu parametr fontWeight, który nie został przypadkowo dodany (I56937)
  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I19d02).
  • W aplikacji Vertical Scroller dostępna jest teraz funkcja Column. Aplikacja Poziomy przewijania teraz udostępnia funkcję Wiersz bezpośrednio w oknie. (IECA5d, b/157020670)
  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Iede0b).
  • Do pakietu podstawowego dodano modyfikator.indication. Służy do pokazywania wskaźnika naciśnięcia lub przeciągnięcia innych elementów na niestandardowych elementach interaktywnych (I8425f, b/155287131).
  • Opcje VerticalPrzewiń i Orientacja pozioma obsługują teraz przewijanie odwrotne. Ustawienie wartości Wsteczne jest teraz dostępne dla opcji ScrollerPosition (I953bd).
  • Obsługa dodawania elementów kompozycyjnych do układu tekstu. (I1373C)
  • Skonsolidowano implementacje CanvasScope, dzięki czemu powstaje tylko DrawScope i ContentDrawScope. Nazwa obiektu CanvasScope została zmieniona na DrawScope. Zaktualizowaliśmy DrawScope, aby wdrożyć interfejs Density i udostępnić interfejs LayoutDirection Usunięta podklasa DrawScope w ContentDrawScope Zaktualizowaliśmy aplikację Painter i painterModifier, aby nie utrzymywała już właściwości RTL, ponieważ DrawScope udostępnia ją już bez ręcznego podawania jej właściwości (I1798e)
  • Usunęliśmy wycofany interfejs DrawBackground API i zastąpienie go interfejsami API rozszerzenia DrawBackground w modyfikatorze. zmodyfikowano implementacje koloru, pędzla i malowania metodą PaintBackground, aby zmniejszyć ścieżki kodu, a także usunąć wymóg tworzenia modyfikatora w ramach kompozycji. (I0343a)
  • Zaktualizowano interfejsy API tworzenia wyższego poziomu, które udostępniają obiekt Canvas do wyświetlania obiektu CanvasScope. Dzięki temu konsumenci nie muszą utrzymywać własnych obiektów Paint. Klienci, którzy nadal potrzebują dostępu do obiektu Canvas, mogą skorzystać z metody rozszerzenia dropCanvas, która powoduje wywołanie zwrotne do poleceń rysowania na podstawie obiektu Canvas. (I80afd).
  • Poziomy i pionowo przewijanie nie przywracają pozycji przewijania z wykorzystaniem zapisanego stanu instancji. (Ia0fae, b/155075048)
  • Element FocusManagerAmbient został usunięty. Aby uzyskać ostrość, użyj FocusModifier.requestFocus. (IC4826).
  • Układ tabeli został tymczasowo usunięty do czasu, aż ponownie udostępnimy go przy użyciu odświeżonego interfejsu API. (Id88a7)
  • Utworzono interfejs CanvasScope API, który opakowuje obiekt Canvas, aby udostępniać bezstanową, deklaratywnej powierzchni interfejsu API do rysowania. Przekształcenia są zawarte w oddzielnym zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wektora. Nie wymaga od konsumenta zachowania własnego obiektu stanu renderowania umożliwiającego konfigurowanie operacji rysowania.

    Dodaliśmy CanvasScopeSample oraz zaktualizowaliśmy aplikację w wersji demonstracyjnej, aby dodać demonstrację grafiki deklaratywnej (Ifd86d).

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

  • Dodawanie dostosowania koloru kursora w polu tekstowym (I6e33f)

  • Teraz można ukryć lub pokazać klawiaturę programową za pomocą kontrolera SoftwarekeyController obsługiwanego przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051)

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

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

  • Zastąpiliśmy parametr CoreTextField/TextFieldfocusIdentifier obiektem FocusNode, by zintegrować go z podsystemem zaznaczenia. (I7Ea48).

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

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

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

  • Wszystkie przypadki użycia koloru, które mogą przyjmować wartości null w interfejsie API, zastąpiono wartością niedopuszczającą wartości null i ustawiono wartość Color.Unset zamiast wartości null (Iabaa7).

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

  • Zmieniliśmy nazwę ScaleFit na ContentScale Przenieśed ContentScale z modułu ui-graphics na moduł ui-core, tak aby był umieszczony w tym samym module co wyrównanie interfejsu API. Zmieniono nazwę FillMaxWymiar na „crop” (Zmiana nazwy FillMaxWymiar na „crop” Zmiana nazwy FillMinWymiar i Fit

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

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

  • Ulepszenie interfejsu API DrawModifier:

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

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

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

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

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

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

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

  • Dodaliśmy interfejs VectorPainter API, aby zastąpić dotychczasowy interfejs subcomposition API dla grafiki wektorowej. Wynikem składni podrzędnej jest obiekt VectorPainter, a nie DrawModifier. Wycofaliśmy wcześniejsze funkcje kompozycyjne DrawVector i zastąpiliśmy VectorPainter.

    Zmieniono nazwę interfejsu API Image(Painter) na PaintBox(Painter) Utworzono wektorową kompozycję kompozycyjną, która działa jak funkcja kompozycyjna Image, ale z tą różnicą, że zawiera obiekt VectorAsset, a nie zasób ImageAsset (I9af9a, b/149030271).

  • Utworzono obraz, który oprócz rysowania zasobu graficznego można umieścić na ekranie do obsługi rozmiaru/układu. Ta funkcja kompozycyjna obsługuje też rysowanie dowolnych instancji Painter z uwzględnieniem ich rozmiaru wewnętrznego, a także obsługi określonego stałego lub minimalnego rozmiaru (Ibcc8f)

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

  • Zmieniliśmy nazwę obrazu na ImageAsset, by lepiej rozróżnić dane obrazu od przyszłej funkcji kompozycyjnej obrazu wykorzystywanej do tworzenia układu i rysowania treści.

    Utworzono metodę rozszerzenia w android.graphics.Bitmap Bitmap.asImageAsset(), aby utworzyć instancję komponentu ImageAsset, która pozwala połączyć możliwość tworzenia tradycyjnych aplikacji na Androida z platformą komponowania. (Id5bbd).

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

  • Komponent stosu obsługuje kierunkowość od prawej do lewej (Ic9e00)

  • Dodano ikony, IconButton i iconToggleButton, usuwając ikony AppBarIcon. Możesz bezpośrednio zastąpić obecne zastosowania AppBarIcon przez IconButton, aby reklamy te miały odpowiedni docelowy element dotykowy. Zapoznaj się z przykładami informacji o wykorzystaniu i zobacz ikony dostępnych ikon materiału, których można używać bezpośrednio z tymi komponentami. (I96849)

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

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

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

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

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

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

  • zmień nazwę modyfikatora Border 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 wartości RowWyrównaj i Column wyrównanie w wierszu i kolumnie. (If60d4, b/155858731)

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

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

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

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

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

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

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

  • Dodano symetryczny modyfikator dopełnienia. (I39840)

  • Usunięto wycofany modyfikator LayoutAspectRatio. (I65a74)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Usunięto funkcję AspectRatio kompozycyjną na rzecz modyfikatora. Usunięto przestarzałe elementy kompozycyjne FlexColumn, FlexRow i modyfikator odstępów (Iec8a7)

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

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

  • Implementuje LongPressAndDrag do wyboru pola tekstowego. (I17919)

Poprawki błędów

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

    Zaktualizowaliśmy parametr DrawScope.drawRoundRect, tak aby korzystał z pojedynczego parametru Radius zamiast 2 osobnych wartości zmiennoprzecinkowych promienia wzdłuż osi x i y (I46d1b).

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli wyłącznie typów Dp i typów podstawowych. Cała klasa Px została usunięta (I3ff33).

  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I086f4).

  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Id3434).

  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I97a5a).

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

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

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I57bff).

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

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

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

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

  • Dodaj do ImagePainter dodatkowy opcjonalny parametr prostokątny, by umożliwić rysowanie podsekcji bazowego komponentu ImageAsset (I0ea9e).

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

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

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

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

  • Przeniesiono elementy kompozycyjne ui-framework/CoreText i CoreTextField do sekcji ui-text-compose. Możesz dodać do projektu plik ui-text-compose. (I32042)

  • runOnIdleCompose i runOnUiThread to teraz funkcje globalne, a nie metody w ComposeTestRule. (Icbe8f).

  • [Mutable]Operatory delegowania właściwości stanu zostały przeniesione do rozszerzeń, aby obsługiwać optymalizację przekazywania właściwości Kotlin 1.4. Rozmówcy muszą dodać importowanie, aby dalej używać by state { ... } lub by mutableStateOf(...). (I5312C)

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

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

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

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

  • Metoda DrawVector zmieniła się ze zwykłej funkcji kompozycyjnej na zwracanie modyfikatora pullVector(), który spowoduje narysowanie wektora jako tła w układzie. (I7B8E0)

  • Zastąp funkcję kompozycyjną Clip modyfikatorem drawClip(). DrawClipToBounds to wygodny modyfikator do użycia, gdy chcesz przyciąć do granic warstwy tylko w formacie prostokątnym. (If28eb).

  • Zastąpiliśmy funkcję kompozycyjną DrawShadow modyfikatorem DrawShadow(). Cienie są teraz rysowane w ramach komponentu LayerModifier. (I0317a)

  • Aplikacja androidx.compose.ViewComposer została przeniesiona do androidx.ui.node.UiComposer. androidx.compose.Emittable została usunięta. W przypadku węzła KomponentNode to niepotrzebne narzędzie. Aplikacja androidx.compose.ViewAdapters została usunięta. Nie są już one obsługiwanym przypadkiem użycia. Interfejs Compose.composeInto został wycofany. Użyj interfejsu setContent lub setViewContent. Metoda Compose.disposeComposition została wycofana. Użyj metody dispose na obiekcie Composition zwróconym przez setContent. Nazwa androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto. Nazwa węzła #emitInsertAt została zmieniona na KomponentNode

  • 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ę klas AnimatedValue i AnimatedFloat, aby pole wartości animacji było abstrakcyjne, dzięki czemu podklasy będą mogły obserwować aktualizację wartości.

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

  • Pozycje całkowite linii wyrównania zwrócone z Placeable#get(alignmentLine) nie mają teraz wartości null. Jeśli nie ma wiersza wyrównania, którego dotyczy zapytanie, funkcja wyrównania wejściowa zostanie zwrócona. (I896c5, b/158134875)

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

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

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

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

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

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

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

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

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

  • WithConstraints uzyskała parametr LayoutDirection (I6d6f7)

  • Flaga ComposeFlags.COMPOSER_PARAM została zmieniona 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)

  • Zmieniliśmy parametry LayoutCoordinates, by móc użyć funkcji providedWyrównajmentLines, a nie Mapa, a funkcja LayoutCoordinates wdrożyła operator get() zamiast pobierać wartość. Ułatwia to modyfikatorom modyfikowanie jednej lub większej liczby wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)

  • LayoutCoordinates nie ma już właściwości pozycji. Właściwość pozycji nie ma sensu przy uwzględnianiu elementów LayoutModifiers, rotacji lub skalowania. Do obliczania przekształceń z jednego LayoutCoordinate na inny programiści powinni używać koordynatorów nadrzędnych i podrzędnych (childToLocal()).

    Funkcja LayoutCoordinates używa właściwości rozmiaru IntPxSize, a nie PxSize. W przypadku układów stosuje się rozmiary w pikselach całkowitych, więc we wszystkich rozmiarach układów należy używać liczb całkowitych, a nie wartości zmiennoprzecinkowych. (I9367b)

  • Ulepszenia interfejsu API ograniczeń (I0fd15)

  • Dodano element TextDirection.Content (I48f36)

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

  • Dodaj FloatingToolbar do wyboru pola tekstowego. (IE8b07)

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

  • TextDirection został zmieniony na resolvedTextDirection (I3ff38)

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

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

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

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

  • Zmiana w interfejsie API: nazwa AnnotatedString(builder: Builder) została zmieniona 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. Aktywność, której używasz w interfejsie tworzenia wiadomości, powinna teraz stanowić rozszerzenie androidx.activity.KomponentActivity (lub AppCompatActivity). Funkcja setContent w android.app.Activity została wycofana (Idb25a, b/153141084)

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