Podstawy tworzenia

Pisz aplikacje Jetpack Compose, korzystając z gotowych elementów składowych i rozszerzaj podstawy do tworzenia własnych elementów systemu.
Najnowsza aktualizacja Wersja stabilna Kandydat do publikacji Wersja Beta Wersja alfa
17 kwietnia 2024 r. 1.6.6 - - 1.7.0-alfa07

Struktura

Tworzenie stanowi połączenie 7 identyfikatorów grupy Maven w usłudze androidx. Każda grupa zawiera wybrany podzbiór funkcji z własnym zestawem informacji o wersjach.

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 zwiększyć wygodę użytkowników.
compose.buildr,Przekształć funkcje @Composable i włącz optymalizacje za pomocą wtyczki kompilatora Kotlin.
compose.foundationPisz aplikacje Jetpack Compose, korzystając z gotowych elementów składowych i rozszerzaj podstawy do tworzenia własnych elementów systemu.
compose.material,Twórz interfejsy użytkownika Jetpack Compose z gotowymi do użycia komponentami Material Design. Jest to punkt wejścia wyższego poziomu Compose, zaprojektowany z myślą o dostarczaniu komponentów pasujących do tych opisanych na stronie www.material.io.
compose.material3,Twórz interfejsy użytkownika Jetpack Compose za pomocą komponentów Material Design 3, czyli nowej ewolucji Material Design. Material 3 zawiera zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczny kolor. Został zaprojektowany tak, aby zachować spójność z nowym stylem wizualnym i interfejsem systemu Androida 12.
compose.runtime,Podstawowe elementy modelu programowania i zarządzania stanem w usłudze Compose, a także podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka Compose Compiler.
compose.ui;Podstawowe komponenty 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ść od Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.

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

Odlotowy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    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 znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.

Utwórz nowy numer

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.7

Wersja 1.7.0-alfa07

17 kwietnia 2024 r.

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

Nowe funkcje

  • Dodano obiekt TextDefaults, który zawiera metody tworzenia elementu LinkAnnotation i analizowania ciągu znaków HTML z zastosowaniem metody MaterialTheme do linków. (I98532, b/139312671)
  • W usługach LazyVerticalGrid i LazyHorizontalGrid dodaliśmy obsługę animacji z wyglądem i zniknięciem. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement() na potrzeby wyświetlania animacji w miejscach docelowych (zmianie ich 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)
  • W usługach LazyVerticalStaggeredGrid i LazyHorizontalStaggeredGrid dodaliśmy obsługę animacji z wyglądem i zniknięciem elementu. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement() na potrzeby wyświetlania animacji w miejscach docelowych (zmianie ich 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 w interfejsie API

  • Dodaje pole ContextMenuColors i powiązane z nim LocalContextMenuTheme ProvidableCompositionLocal. Kolory menu kontekstowego w polach tekstowych i zaznaczonego tekstu można zmienić, określając kompozycję lokalnie. (Ifa154)
  • Oprócz normalnego stylu oraz najechania kursorem i zaznaczenia linków tekstowych została dodana opcja określania stylu naciśniętego stanu. (I5f864, b/139312671)
  • Wprowadź ViewConfiguration.HandwritingGestureLineMargin do obsługi gestów pisma odręcznego. Obsługuj gest pismem odręcznym dla języka: BasicTextField. (Ie6e13, b/325660505)
  • Usunęliśmy DelegatableNode.scrollIntoView w przypadku wersji 1.7, ponieważ nie mieliśmy czasu na stabilizację 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żyć argumentu excludeDirectManipulationOffset, aby wykluczyć przesunięcie ustawione przez układy nadrzędne, które rozmieściły ich elementy podrzędne za pomocą funkcji Placeable.PlacementScope.withDirectManipulationPlacement. Podobnie układ, który często zmienia pozycję swoich elementów podrzędnych, może teraz umieszczać je za pomocą elementu withDirectManipulationPlacement (np. Scroll (domyślnie zaimplementowany). W ten sposób sprawia, że animacje oparte na approachLayout są bardziej intuicyjne, a teraz można rozróżniać przesunięcie, które ma być animowane, i które stosować bezpośrednio przy podejmowaniu decyzji o animacji. (I60ec7)
  • Wprowadź requestScrollToItem dla LazyStaggeredGrid. W przypadku każdego pomiaru zdarzenia klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując metodę requestScrollToItem. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że funkcja requestScrollToItem zostanie wywołana. (I63983)
  • Wprowadź requestScrollToPage w Pager. W przypadku każdego pomiaru zdarzenia klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując metodę requestScrollToPage. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że funkcja requestScrollToPage zostanie wywołana. (Ic4213)
  • Wprowadzono requestScrollToItem dla LazyGrids. W przypadku każdego pomiaru zdarzenia klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując metodę requestScrollToItem. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że funkcja requestScrollToItem zostanie wywołana. (I0a7a0)
  • Interfejs ClickableText został oznaczony jako wycofany. Aby dodać linki do tekstu, utwórz AnnotatedString z elementem LinkAnnotation odpowiadającym Twojemu linkowi i prześlij ten AnnotatedString do funkcji kompozycyjnej Text (I34d4b, b/323346994)
  • Interfejs UrlAnnotation został wycofany. Użyj interfejsu LinkAnnotation.Url. Jeśli stosujesz motywy Material, użyj obiektu TextDefaults, aby utworzyć adnotację z tematyką Material Design (I8d180, b/323346545).
  • Nazwa etykiety 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 analizy ciągu znaków HTML z tagami <a> ta metoda tworzy element LinkAnnotation.Url dla każdego takiego tagu i przekazuje do każdej adnotacji obiekty stylu oraz detektor interakcji z linkiem. (I7c977)
  • LinkAnnotation przyjmuje teraz argumenty stylu oparte na stanie i LinkInteractionListener. Dodaj tę adnotację do elementu AnnotatedString, aby uzyskać hiperlink. Przekazując atrybuty focusedState lub hoveredState, możesz zdefiniować wizualną konfigurację linków, które są zaznaczone lub najechane kursorem na reklamę. (I81ce4, b/139312671)
  • Usunęliśmy flagę funkcji w przypadku długich zrzutów ekranu. (I28648, b/329128246)
  • LazyColumn będzie teraz prawidłowo renderować nagłówki przyklejone na długich zrzutach ekranu. (I8d239, b/329296635)
  • Większość pozostałych eksperymentalnych interfejsów API wprowadzonych w nowej wersji BasicTextField została ustabilizowana. (I714e2)
  • Do elementu BasicSecureTextField dodano parametr textObfuscationCharacter, który określa, którego znaku ma być używany przy zaciemnianiu treści. (I0588b)
  • Źródła (NestedScroll) zostały zastąpione przez UserInput i SideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, które obejmują teraz animacje (Efekt boczny) oraz kółko myszy i klawiaturę (UserInput). (I40579)
  • Wprowadź LocalBringIntoViewSpec – zależną od platformy funkcję przewijania, która jest stosowana w warstwie modyfikatora przewijania. (I27aa5, b/317453911)
  • Czcionka TextFieldCharSequence została usunięta. Pole TextFieldBuffer.originalValues zostało zastąpione przez TextFieldBuffer.originalText i TextFieldBuffer.originalSelection. (I2c7d6)
  • ImeOptions.hintLocales nie może już zawierać wartości null. Jeśli chcesz przekazać pustą listę języków, użyj polecenia LocaleList.Empty. (Ic5bc4)
  • Nazwa elementu getOffsetFractionForPage została zmieniona na getOffsetDistanceInPages. (Ia05e2).

Poprawki błędów

  • Po połączeniu elementów typu InputTransformations z tabelą next ich wartości typu KeyboardOptions są teraz prawidłowo scalone przez poszczególne opcje za pomocą nowej metody KeyboardOptions.merge. (Ie5304, b/295951492)
  • targetValue AnchoredDraggableState nie uwzględnia już progów pozycjonowania. Teraz ma wartość progową równą 50%, co oznacza, że targetValue zmienia się w połowie między 2 kotwicami. (I82c2c)

Wkład z zewnątrz

  • Zmieniliśmy nazwy 2 interfejsów API przewijania (I56a75).

Wersja 1.7.0-alfa06

3 kwietnia 2024 r.

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

Nowe funkcje

  • W usługach LazyColumn i LazyRow dodaliśmy obsługę animacji z wyglądem i zniknięciem elementu. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement() na potrzeby wyświetlania animacji w miejscach docelowych (zmianie ich 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 usługi LazyColumn/LazyRow mogą teraz zrezygnować z utrzymywania indeksu na podstawie klucza dla nadchodzącego pomiaru, wywołując metodę LazyListState.requestToScroll niezawieszoną. (I98036, b/209652366)
  • Dodano metodę parseAsHtml dla ciągów znaków ze stylem: pozwala ona przekonwertować ciąg znaków oznaczony tagami HTML na parametr AnnotatedString. Pamiętaj, że nie wszystkie tagi są obsługiwane – na przykład nie będzie można jeszcze wyświetlać list punktowanych. (I84d3d)
  • Wdrożyliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania w komponencie za pomocą oficjalnego interfejsu API Androida (ScrollCaptureCallback). Ta funkcja jest w wersji eksperymentalnej i może obecnie nie obsługiwać poprawnie wszystkich przypadków. Dlatego obecnie jest ono domyślnie wyłączone. Aby to zrobić, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość true. To oznaczenie zostanie usunięte przed wersją beta 1.7. (I2b055, b/329296471)
  • Wprowadziliśmy nowy interfejs GraphicsLayer API, który zapewnia większą elastyczność w umieszczaniu i renderowaniu instancji GraphicsLayer oraz obsługuje wbudowane funkcje renderowania bez konieczności koordynowania z implementacjami funkcji Composable w celu określenia instancji z modyfikatorem GraphicsLayer.

Zmiany w interfejsie API

  • Wszystkie parametry KeyboardOptions mają teraz domyślnie nieokreśloną wartość. Dodano metodę KeyboardOptions.merge.
  • Zmieniono nazwę KeyboardOptions.autoCorrect na autoCorrectEnabled i dokonano wartości null, gdzie null oznacza, że nie określono żadnej wartości. (Ia8ba0, b/295951492)
  • Nazwa elementu outOfBoundsPageCount została zmieniona na beyondViewportPageCount. (I129c6)
  • Zmieniono wartość „fun ClipEntry.getMetadata()” na „val ClipEntry.clipMetadata”. (I50155)
  • Czcionka TextFieldState.valueAsFlow() została usunięta. Wolę użyć właściwości snapshotFlow { state.text } lub snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629)
  • Zmieniono kolejność parametrów (InputTransformation.transformInput). Użytkownik originalValue: TextFieldCharSequence został usunięty. Zamiast tego TextFieldBuffer nosi teraz tę wartość o tej samej nazwie. Usunięto też parametr valueWithChanges: TextFieldBuffer. TextFieldBuffer jest teraz zakresem odbiorcy funkcji. (I919cc)
  • Do przetwarzania działań wykonywanych za pomocą klawiatury programowej (BasicTextField(state)) i w interfejsie BasicSecureTextField używany jest teraz KeyboardActionHandler zamiast KeyboardActions. (I58dda)
  • Interfejsy API przekazywania pisma odręcznego rysikiem, które obsługują pismo odręczne rysikiem w fałszywych polach do wprowadzania tekstu. (I9c09c, b/327271923)
  • Nazwa elementu KeyboardOptions.shouldShowKeyboardOnFocus została zmieniona na showKeyboardOnFocus. (Ib4b7a, b/295951492)
  • Usunięto parametr hintMediaTypes z metody Modifier.contentReceiver. Zachęcamy deweloperów do sprawdzenia typu multimediów odebranego TransferableContent, ponieważ może on być niezgodny ze skonfigurowanym elementem hintMediaTypes. (I82f99)
  • Zmieniono kolejność parametrów elementu BasicSecureTextField. Usunęliśmy parametry keyboardType i imeAction na rzecz pełnej klasy KeyboardOptions przy zachowaniu tych samych wartości domyślnych odpowiednich dla parametru BasicSecureTextField. Usunięto też parametr scrollState. (Ibbfa9)
  • Zmieniono typ użytkownika TextFieldState.text z „TextFieldCharSequence” na „CharSequence”. Dlatego dodano TextFieldState.selection: TextRange i TextFieldState.composition: TextRange?, aby odczytywać wartości bieżącego wyboru i kompozycji bezpośrednio z obiektu stanu.
  • Czcionka TextFieldState.forEachTextValue została usunięta. (Idb2a2).
  • Usunięto funkcje ClipboardManager.getClipMetadata i ClipboardManager.hasClip. Aby odczytać metadane bieżącego klipu, użyj clipEntry.getMetadata(). Aby dowiedzieć się, czy schowek zawiera bieżący klip, sprawdź też wynik funkcji ClipboardManager.getClip, jeśli ma on wartość null. (I50498)
  • Aby móc wyczyścić zawartość schowka, ClipboardManager.setClip akceptuje teraz wartość null. (I7d2e9)
  • Element ReceiveContentListener został przekonwertowany na interfejs funkcji. Usunięto też przeciążenie Modifier.receiveContent, które przyjmuje lambda, ponieważ ReceiveContentListener jest teraz interfejsem funkcji.
  • Nazwa aplikacji Modifier.receiveContent została zmieniona na Modifier.contentReceiver. (I1e6af)
  • Nazwa elementu TransferableContent.consumeEach została zmieniona na TransferableContent.consume. (I1e462)
  • Interfejs rememberTextFieldState został przekształcony w stabilny interfejs API. (I37999)

Poprawki błędów

  • Naprawiono błąd, który powodował, że wariant BasicTextField(state) nie działał z klawiaturami CJK(opartymi na kompozycji). (I54425)
  • Naprawiliśmy błąd polegający na tym, że w niektórych sytuacjach Modifier.dragAndDropTarget() mógł odwoływać się do nieaktualnych danych przy ponownym użyciu metody Modifier.Node. (I05bb1)
  • Cofnięto ostatnią zmianę umowy, w wyniku której wywołania funkcji AnchoredDraggableState#anchoredDrag były przyciągane po zakończeniu operacji anchoredDrag. (I95715)

Wersja 1.7.0-alfa05

20 marca 2024 r.

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

Zmiany w interfejsie API

  • Usunięto lokalną kompozycję LocalTextLinkStyle na potrzeby określania stylu hiperlinków. (Iebfa7)
  • Usunięto eksperymentalne zastąpienie wartości BasicText za pomocą argumentu onLinkClicked. W przyszłości wprowadzimy zastępczy interfejs API do obsługi hiperlinków. (I107d5)
  • Usunęliśmy metody i właściwości związane z punktami kodowymi w sekcjach TextFieldState i TextFieldBuffer. Usunięto też sufiksy inChars z pozostałych interfejsów API związanych z wyborem i kompozycją. (Ief7ce)
  • currentValue AnchoredDraggable będzie teraz aktualizowany podczas przechodzenia przez punkt zakotwiczenia. Używaj właściwości settledValue, aby otrzymywać poprzednią semantykę currentValue, która jest aktualizowana tylko podczas ustawiania kotwicy. Postęp jest teraz widoczny jako funkcja (wymagająca punktu początkowego i końcowego), a nie właściwość. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits, TextFieldDecorator przeszły na wersję stabilną. (I9582b)
  • Wprowadzono funkcję InterceptPlatformTextInput, która ułatwia pisanie testów związanych z edytorem IME niskiego poziomu oraz innych niskopoziomowych zastosowań IME. Interfejs PlatformTextInputTestOverride został wycofany. (I862ed, b/322680547)
  • Podziel restrictedConstraints() na 2 metody: fitPrioritizingWidth() i fitPrioritizingHeight() (I6d7fd)

Wkład z zewnątrz

  • Dodano 2 nowe interfejsy API isLastScrollForward/isLastScrollBackward do sprawdzania kierunku przewijania na potrzeby ostatniego działania przewijania. Zwracanie wartości false (fałsz), jeśli nie ma jeszcze żadnej czynności przewijania. (I63a0e)

Wersja 1.7.0-alfa04

6 marca 2024 roku

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

Zmiany w interfejsie API

  • Obsługuj funkcję pisma odręcznego rysikiem na urządzeniach z Androidem U. (I002e4)
  • Do języka KeyboardOptions dodano język hintLocales, aby umożliwić użytkownikowi TextFields dodanie instrukcji w edytorze IME z konkretnymi językami umożliwiającymi ustawienie preferowanego języka. (Id18c2).
  • Usunięto przeciążenia eksperymentalne BasicTextField2 i BasicSecureTextField, które miały parametry value: String i onValueChange: () -> String. (I568b4)
  • Dodaj do elementu InputTransformation opcjonalną funkcję applySemantics, aby wpłynąć na semantykę obiektu BasicTextField2, do którego jest stosowana. (I74a2f, b/170648072)
  • W tej liście dodajemy działanie semantyczne GetScrollViewportLength, aby umożliwić potokowanie informacji o przewijanych komponentach podczas tworzenia do systemu a11y. Ta lista zmian stosuje też użycie tej właściwości na listach przewijanych fundacji. (Ic5fa2)
  • Nazwa aplikacji BasicTextField2 została zmieniona na BasicTextField. (Ie5713)
  • FocusRequester.createRefs działa teraz stabilnie (I4d92c, b/261436820)
  • Wprowadziliśmy funkcję DelegatableNode.scrollIntoView(), która umożliwia węzłom z modyfikatorem bezpośrednie wysyłanie żądań scrollIntoView. (I2b3b7, b/299939840)
  • Wprowadziliśmy funkcję DelegatableNode.requireView(), która umożliwia węzłom modyfikującym pobieranie bieżącego Androida View bez lokalnego odczytywania kompozycji. (I40768)
  • W zakresie zakresu wierszy przepływu kontekstowego i zakresu kolumny przepływu kontekstowego wprowadzamy informacje o układzie kontekstowym obejmujący indeks linii, położenie oraz ograniczenia dotyczące maksymalnej szerokości i wysokości umożliwiające utrzymanie określonej pozycji. Elementy przekraczające maksymalną szerokość lub wysokość mogą przechodzić do następnego wiersza lub zostać pominięte ze względu na ustawienia nadmiaru. (Id13f8, b/292114798)

Poprawki błędów

  • Naprawiono błąd polegający na tym, że w niektórych warunkach przełączenie atrybutów enabled lub readOnly obiektu TextField powodowało awarię. (Iae17b)

Wersja 1.7.0-alfa03

21 lutego 2024 r.

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

Zmiany w interfejsie API

  • Wprowadzono DelegatableNode.requireLayoutCoordinates() jako sposób na uzyskanie aktualnego LayoutCoordinates dla: Modifier.Node bez konieczności zastępowania onPlaced i samodzielnego zapisywania współrzędnych w nieruchomości. (Ia8657)
  • Wprowadzono DelegatableNode.currentLayoutCoordinates jako sposób na uzyskanie aktualnego LayoutCoordinates dla: Modifier.Node bez konieczności zastępowania onPlaced i samodzielnego zapisywania współrzędnych w nieruchomości. (Iaebaa)
  • Optymalizacje skuteczności w aplikacji DraggableAnchors używane przez aplikację AnchoredDraggable. (I89cff)
  • BasicTextField2 i powiązane interfejsy API w pakiecie androidx.compose.foundation.text2 są przenoszone do androidx.compose.foundation.text. (I9f635)
  • BasicTextField2 nie akceptuje już parametru CodepointTransformation. Użyj konta BasicSecureTextField lub OutputTransformation. (Id34ff).
  • Dodano metodę porównywania tylko adnotacji 2 elementów AnnotatedStrings. (I32659)
  • Przedstawiamy ContextualFlowRow i ulepszony FlowRow/Column obejmujący MaxLines i Overflow. Z przyjemnością informujemy, że oprócz wersji ContextualFlowRow i ContextualFlowColumn wprowadzamy ulepszenia do eksperymentalnych wersji FlowRow i FlowColumn, które oferują teraz maxLines i obsługę dodatkowych obszarów. Ta aktualizacja ma zapewnić optymalne działanie komponentów, przy czym ContextualFlow* jest idealnym rozwiązaniem w przypadku dużej liczby elementów korzystających z małej konfiguracji maxLines, a dynamiczna +N pozwala uzyskać więcej przycisków. FlowRow i FlowColumn to idealne rozwiązanie w przypadku niewielkiej liczby elementów, poniżej 100 elementów. Ważne: aby zachować dotychczasowe działanie funkcji FlowRow lub FlowColumn, w której tworzą się wszystkie elementy niezależnie od tego, czy mieszczą się w maksymalnej wartości na osi krzyżowej, podczas inicjowania ustaw overflow na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Poznaj 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 konstrukcje kopiowania KeyboardOptions będą teraz prawidłowo kopiować wszystkie właściwości. (If12de)

Wersja 1.7.0-alfa02

7 lutego 2024 r.

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

Zmiany w interfejsie API

  • Wersje HorizontalPager, VerticalPager i PagerState zostały przeniesione do stabilnej. (I67660, b/316966909)
  • Dodano lokalną kompozycję LocalTextLinkStyle, która umożliwia zmianę stylu linków w tekście w aplikacji. Jeśli używasz własnego motywu w aplikacji, ustaw tę kompozycję lokalnie zgodnie z własnymi motywami. Gdy używasz motywu materiału, kolor linku jest domyślnie ustawiany na podstawowy kolor materiału. (I7eb10)
  • Wprowadzono modyfikator receiveContent, który umożliwia deweloperom otrzymywanie szczegółowych treści w Jetpack Compose.
  • receiveContent integruje się z BasicTextField2, aby akceptować treści multimedialne dostarczane przez klawiaturę programową lub wklejając je w schowku. (I81b72)
  • W ramach tej zmiany zastąpimy fragment SnapFlingBehavior ciągiem TargetedFlingBehavior, aby odblokować inne przypadki użycia i zapewnić większą elastyczność. (I762ea)
  • W ramach tej zmiany interfejsy Snapping API będą stabilne. Oczyszczamy też część kodu testowego i dodajemy do Snapping więcej przykładów. (Id8da9).
  • Wprowadź TargetedFlingBehavior – obiekt FlingBehavior, który umożliwia propagowanie informacji o stanie trwającej animacji i docelowym odsunięciu przewijania. (I6a207)

Poprawki błędów

  • BasicTextField2 zachowuje teraz kursor w widocznym miejscu podczas pisania, gdy przewiniesz go w inne miejsce lub zniknie z pola widzenia w wyniku wprowadzonych danych. (Ieb856, b/237190748)

Wkład z zewnątrz

  • Dodaje eksperymentalny interfejs API do konfigurowania sposobu pobierania z wyprzedzeniem przez LazyLists. (I022a4)

Wersja 1.7.0-alfa01

24 stycznia 2024 r.

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

Nowe funkcje

  • Dodano nowe elementy (Indication API): IndicationNodeFactory. Prowadzi to do skuteczniejszych implementacji interfejsu Indication w porównaniu z poprzednim (już wycofanym) interfejsem rememberUpdatedInstance API. Informacje o migracji znajdziesz na developer.android.com.
  • clickable / combinedClickable / selectable / toggleable akceptuje teraz parametr MutableInteractionSource z wartością null. Jeśli parametr ma wartość null, a podany Indication to IndicationNodeFactory, element Indication można utworzyć tylko w razie potrzeby, co zwiększa wydajność. Jeśli nie podnosisz i nie używasz interfejsu MutableInteractionSource, zalecamy przekazywanie wartości null.

Zmiany w interfejsie API

  • Wprowadź DecayAnimation w AnchoredDraggable. Ta zmiana dodaje do AnchoredDraggable parametr decayAnimationSpec, który umożliwia korzystanie z animacji spadku udziału w przypadku jednej z kotwice. Ta zmiana obejmuje też zmianę nazwy istniejącego animationSpec na snapAnimationSpec, aby ułatwić zrozumienie przypadku użycia każdej specyfikacji.
  • Eksperymentu BasicTextField2 można używać w trybie eksperymentalnym. Działanie powinno być mniej więcej zgodne z funkcjami BasicTextField, a działanie powinno być gotowe do wykorzystania w środowisku produkcyjnym. Na razie jednak ten interfejs API ma charakter eksperymentalny. Przed stabilizacją nazwa zostanie zmieniona na BasicTextField i zostanie przeniesiona do tego samego pakietu.
  • Wprowadziliśmy pierwszą wersję roboczą interfejsu OutputTransformation API dla BasicTextField2. Ten interfejs API zastępuje większość przypadków użycia VisualTransformation w starej wersji BasicTextField. Nie jest on jeszcze ukończony, a niektóre funkcje nie będą działać prawidłowo. Będziemy wdzięczni za wszelkie uwagi na temat użyteczności interfejsu API w Twoich przypadkach użycia. (Aosp/2708848)
  • Wprowadziliśmy funkcję LinkAnnotation, która umożliwia dodawanie do tekstu linków i klikalnych elementów. Funkcja linków nie została jeszcze zakończona, wkrótce wprowadzimy kolejne zmiany w interfejsie API.
  • Wprowadzono modyfikator receiveContent, który umożliwia deweloperom otrzymywanie szczegółowych treści w Jetpack Compose.
  • Aplikacja receiveContent integruje się z usługą BasicTextField2, co umożliwia akceptowanie treści multimedialnych dostarczanych przez klawiaturę programową lub przez wklejanie ze schowka.
  • KeyboardOptions.shouldShowKeyboardOnFocus pozwala wyłączyć domyślne zachowanie BasicTextField polegające na zażądaniu włączenia klawiatury programowej.
  • Metody TextInputService i LocalTextInputService zostały wycofane. Zamiast tego użyj PlatformTextInputModifierNode, aby przeprowadzić bezpośrednią integrację z interfejsami API platformy IME. (Aosp/2862698)
  • Interfejs Indication#rememberUpdatedInstance został wycofany. Mają one wysoki nieunikniony spadek skuteczności i uniemożliwiają inne optymalizacje. Zamiast niego należy używać nowego interfejsu API IndicationNodeFactory.

Poprawki błędów

  • Po przekazaniu metody VisualTransformation BasicTextField będzie teraz wstępnie weryfikować 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 losowaniu. Jest to bardziej prawdopodobne, że deweloperzy zobaczą te błędy w trakcie tworzenia aplikacji, co pomoże uniknąć awarii w środowisku produkcyjnym. (I0fd42)
  • Funkcja VisualTransformation nie zwróci kodu, jeśli zostanie zwrócony nieprawidłowy indeks dla nieprawidłowego indeksu (b/316401857 ).

Wersja 1.6

Wersja 1.6.6

17 kwietnia 2024 r.

Aplikacja androidx.compose.foundation:foundation-*:1.6.6 została zwolniona. Wersja 1.6.6 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd polegający na tym, że w niektórych warunkach przełączenie atrybutów enabled lub readOnly obiektu TextField powodowało awarię. (Iae17b)

Wersja 1.6.5

3 kwietnia 2024 r.

Aplikacja 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 powtórzenia błędów w wierszu/kolumnie: (b/300280216 i b/297974033)

Wersja 1.6.4

20 marca 2024 r.

Aplikacja 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 przeciągnięcie, który wychodzi poza granice układu tekstu w pierwszej ramce przeciągania, nie ulega już awarii. (Icdf90, b/325307463)

Wersja 1.6.3

6 marca 2024 roku

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

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

Poprawki błędów

  • Rozwiązanie problemu: AnimateContentSize nie jest prawidłowo resetowany. (I07051).
  • Rozwiązanie problemu, który w pewnych okolicznościach powodował nadmierne zapisywanie w pamięci podręcznej intrinsicHeight tekstu. (3cd398, b/217910352)

Wersja 1.6.1

7 lutego 2024 r.

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

Poprawki błędów

  • Popraw opóźnienia w pomiarze siatki, gdy użytkownik przewinął widok poza limit. (bffc39)
  • Dodaj sprawdzanie układu o dużych wymiarach. (E74af5)
  • Popraw położenie elementów o rozmiarze 0 na początku siatki rozłożonej. (785f94)
  • Wywołaj wywołanie zwrotne onRelease, w takiej samej kolejności, w jakiej onforgotten. (31ce3b)

Wersja 1.6.0

24 stycznia 2024 r.

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

Ważne zmiany od wersji 1.5.0

  • Nowy modyfikator Modifier.anchoredDraggable, który umożliwia przeciąganie i animowanie między wstępnie zdefiniowanymi zestawami kotwic. Ten modyfikator ma zastąpić ciąg Modifier.swipeable. Z przewodnika po migracji dowiesz się, jak korzystać z tej usługi i przeprowadzić migrację z Modifier.swipeable.
  • Dodaliśmy funkcję przeciągania i upuszczania między aplikacjami i komponentami. Aby rozpocząć, zapoznaj się z materiałami DragAndDropTarget, Modifier.dragAndDropSource i innymi interfejsami API
  • Modifier.draggable2D to nowy modyfikator, który umożliwia łatwe przeciąganie dwuwymiarowe. Zobacz Przykład.
  • Dodaliśmy narzędzia AndroidExternalSurface i AndroidEmbeddedExternalSurface, aby ułatwić dodawanie komponentów opartych na powierzchni do użycia w komponencie.
  • Różne zmiany i ulepszenia interfejsów API w Pager i snapFlingBehaviour
  • Różne interfejsy API skupienia, tekstu i wstawek zostały przekształcone w stabilne interfejsy API.

Wersja 1.6.0-rc01

10 stycznia 2024 r.

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

Zmiany w interfejsie API

  • Usunięto konstruktor rozszerzenia DragAndDropTarget(). Utwórz nową instancję przy pomocy polecenia object: DragAndDropTarget {}. (I32318)

Wersja 1.6.0-beta03

13 grudnia 2023 r.

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

Poprawki błędów

  • Naprawa awarii, która dotyczyła bardzo dużego tekstu mierzonego z nieskończonymi ograniczeniami. (I1a7df, b/312294386)
  • PlatformImeOptions jest teraz konkretną klasą, a nie interfejsem. (If40a4)

Wersja 1.6.0-beta02

29 listopada 2023 r.

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

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że element canScroll nie był aktualizowany po przewinięciu tylko w ramach przekazywania. (I60a86)
  • Poprawiono błędy Modifier.animateItemPlacement() i LookaheadScope po niewielkim przewinięciu strony. (I3a2b7)

Wersja 1.6.0-beta01

15 listopada 2023 r.

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

Zmiany w interfejsie API

  • Modyfikator DragAndDropTarget bezpośrednio pobiera element DragAndDropTarget i wybiera lambda, który umożliwia połączenie z sesją przeciągania i upuszczania. DragAndDropModifierNode ma teraz 2 funkcje fabryczne. jeden do odbierania transferów, a drugi do przenoszenia danych (I69481)
  • Zaktualizowano tabelę maximumFlingVelocity, by była wyświetlana jako liczba zmiennoprzecinkowa. Zaktualizowaliśmy dokumentację, aby była bardziej przejrzysta na temat jednostki maximumFlingVelocity. (I8adc7)
  • Nazwa onDragAndDropStart w fabryce DragAndDropModifierNode została zmieniona na acceptDragAndDropTransfer.

    Element acceptsDragAndDropTransfer został dodany do: Modifier dragAndDropTarget, aby można go było zaakceptować z sesji przeciągania i upuszczania. Ta funkcja lambda zwraca prawidłowy parametr DragAndDropTarget, jeśli użytkownik zainteresuje się sesją typu „przeciągnij i upuść”. Inne panele lambda do przetwarzania zdarzeń przeciągania zostały zastąpione przez ten parametr.

    Dodaliśmy funkcję fabryczną DragAndDropTarget, która umożliwia pobieranie danych podczas sesji „przeciągnij i upuść” (Iebf3a).

  • Ujawnienie elementu startDragImmediately w polu AnchoredDraggable daje kontrolę nad wykrywaniem gestów przeciągania podczas jego używania. Warto ustawić tę opcję, gdy widżet jest animowany w celu zakotwiczenia. Zobacz Przykład. (Ie6d13, b/285139987)

  • Interfejsy API etykiet podstawowych to teraz @ExperimentalFoundationApi (I30b0b)

  • Usunięcie elementu DragAndDropInfo jako typu DragAndDropModifierNode.drag przyjmuje teraz parametry dla właściwości transferData, rozmiar dekoracji i przeciągaj lambda DrawScope

    Funkcja DragAndDropTarget zamiast pojedynczej metody abstrakcyjnej ma metody odpowiednie do określonych zdarzeń typu „przeciągnij i upuść”

    Nazwa funkcji onDragAndDropEvent w funkcji fabrycznej urządzenia DragAndDropModifierNode została zmieniona na onDragAndDropStart, aby lepiej informować, że podany parametr DragAndDropTarget jest prawidłowy tylko w danej sesji przeciągania i upuszczania

    DragAndDropEventType został usunięty (I645b1)

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

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

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

  • Elementy podrzędne elementu SubcomposeLayout (i układów takich jak LazyColumn na jego podstawie), które zostały zachowane do ponownego wykorzystania w przyszłości, są uznawane za wyłączone. Do testowania takich węzłów wprowadzono nowy testowy interfejs API assertIsDeactivated(). Pozostałe testowe interfejsy API odfiltrowują domyślnie 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 pozwala to zachować to samo działanie domyślne. (I6aa66)

  • Interfejsy API Material SwipeToReveal (dla kart i układów) do tworzenia tych przedziałów używają teraz interfejsu API opartego na przedziałach (co jest zalecane w narzędziu Compose), a nie instancji opartych na klasach danych. Jest to niezbędna zmiana. Obejrzyj demonstrację i przykładowy kod z przykładami korzystania z nowego interfejsu API. (Ia8943)

Poprawki błędów

  • W przypadku funkcji PageSize.Fixed zaimplementuj kod równości i kod skrótu. (Ie3ede, b/300134276)
  • Naprawiliśmy błąd, który powodował, że układ BasicText nie zmniejszał się po zmianie elementu minWidth i minWidth był mniejszy niż początkowe ograniczenia pomiaru maxWidth (Idb19c)
  • Dodano obsługę gradientu przez renderowanie w ArcLine. (I4d5bb)
  • Napraw problem ze zgodnością plików binarnych ze zmianą ustawienia Okno (Iee695)
  • Usuń warstwę materiałową z elementu Material3 Chip/Button, ponieważ mikroporównania pokazują lepszą wydajność bez niego. (I55555)

Wersja 1.6.0-alfa08

18 października 2023 r.

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

Nowe funkcje

  • Modifier.draggable2D to nowy modyfikator, który umożliwia łatwe przeciąganie dwuwymiarowe. Patrz przykład (Id95f5, b/214412658)

Zmiany w interfejsie API

  • Modifier.dragAndDrawSource Nazwę lambda onDrawDragShadow zmieniono na drawDragDecoration, a parametr rozmiaru DragAndDropInfo zmieniono na dragDecorationSize. (Id0e30, b/303904810)
  • Nazwa parametru decorationBox parametru BasicTextField2 została zmieniona na decorator. Zmieniono również jego typ na podobny zabawny interfejs: TextFieldDecorator. (I23c1c)

Poprawki błędów

  • Ulepszyliśmy dokumentację dotyczącą BasicTextField dotyczącą wymagań onValueChange. (I90fc9, b/160257648)

Wersja 1.6.0-alfa07

4 października 2023 r.

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

Zmiany w interfejsie API

  • Wprowadzono PlatformTextInputMethodTestOverride do pisania testów w niestandardowych edytorach tekstu. (Id159b)
  • Zmieniono nazwę GraphicsSurface na AndroidExternalSurface (I11680)
  • Dodano tymczasową flagę DisableNonLinearFontScalingInCompose, aby wyłączyć nieliniowe skalowanie czcionek. Ustaw DisableNonLinearFontScalingInCompose = true w testach, jeśli potrzebujesz czasu na ich czyszczenie. Ta flaga zostanie usunięta z wersji Compose w wersji 1.6.0-beta01. (Ic9486)
  • Dodano kolekcje ColorList i ColorSet, które pomijają przydziały. (I744bd)
  • Ta zmiana usuwa element shortSnapVelocityThreshold, który został przekształcony w szczegóły implementacji implementacji SnapLayoutInfoProvider. (I65f6d)
  • Dodaje modyfikator dragAndDropSource do rozpoczynania sesji przeciągania i upuszczania oraz modyfikator dragAndDropTarget do odbierania wiadomości z sesji przeciągania i upuszczania (Ib7828, b/286038936)
  • Aktualizowanie dokumentacji i metody pozycjonowania obiektu SnapPositionInLayout Wprowadź dopełnienia treści w metodzie określania pozycji w elemencie SnapPositionInLayout. (Id7938, b/300116110)
  • Do aplikacji TextFieldState dodano uprawnienia UndoState, które umożliwia cofanie/ponawianie zmian wprowadzonych przez użytkownika. (Icc024)

Poprawki błędów

  • Naprawiono brak animacji elementu basicMarquee po zmianie prędkości. (Id2e77, b/297974036)

Wersja 1.6.0-alfa06

20 września 2023 r.

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

Nowe funkcje

  • Nowe opakowania kompozycyjne w przypadku elementów SurfaceView, TextureView: GraphicsSurface() i EmbeddedGraphicsSurface(). Jest to eksperymentalny interfejs API, który może ulegać zmianom i modyfikacjom. (I9ddb2)
  • Modifier.magnifier() jest teraz stabilnym interfejsem API. Obejmuje to usunięcie parametru MagnifierStyle na rzecz parametrów wbudowanych w samym modyfikatorze. (I83bec, b/298381260, b/262367109, b/261438887)

Zmiany w interfejsie API

  • Wprowadziliśmy updateCurrentPage i updateTargetPage w ScrollScope te funkcje, czyli ostatnie elementy niezbędne do dostosowania animowanego przewijania PagerState.scroll. (I9cad5, b/267744105, b/243786897)
  • Usuń gęstość z tych elementów: SnapFlingBehavior. Wszystkie implementacje funkcji SnapLayoutInfoProvider umożliwiają już dostęp do gęstości, a zakres odbierający może zostać usunięty, co zmniejszy złożoność implementacji zarówno SnapFlingBehavior, jak i SnapLayoutInfoProviders. (I153c3)
  • Więcej modyfikatorów oznaczonych jako stabilne. (I56af1, b/298046462)
  • Użytkownik SnapStepSize został usunięty z listy SnapLayoutInfoProvider. Obliczenia należy wykonać na podstawie informacji o układzie i podać je przy użyciu metody) lub odsunięć przyciągania. (If320c)

Zmiany w działaniu

  • Podczas tworzenia wiadomości używane jest teraz nieliniowe skalowanie czcionek, które zapewnia lepszą czytelność i dostępność. Gdy w ustawieniach systemowych skala czcionki przekroczy 100%, mały tekst będzie się normalnie powiększał, a już duży tekst tylko nieco się zwiększy. Ponadto wysokości linii określone w SP są automatycznie dostosowywane w taki sposób, aby zachować proporcje do zamierzonej wysokości w skali 100%. Więcej informacji znajdziesz w opisie sprawdzonych metod dotyczących skalowania czcionek (I11518).

Poprawki błędów

Wersja 1.6.0-alfa05

6 września 2023 r.

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

Zmiany w interfejsie API

  • Dodaj przeciążenia do BasicSecureTextField, które akceptują wartość stałą, i wywołanie zwrotne w celu zmiany tej wartości, tak jak w przypadku obecnego interfejsu API BasicTextField. (Ia4882)
  • Dodaj element Modifier.preferKeepClear(), aby oznaczyć kompozycję jako preferowaną i ukryć okna pływające w interfejsie API 33 i nowszych. (Ib51d5, b/297260115)
  • Prędkość przesunięcia w komponentach widoku, takich jak ScrollView i RecyclerView, jest ograniczona do ViewConfiguration.ScaledMaximumFlingVelocity. Funkcja Utwórz zawiera teraz własną wersję elementu maximumFlingVelocity, która obowiązuje teraz w odniesieniu do Draggable. (Ibf974)
  • Usunięto wycofane przeciążenia typu Pager i PagerState. (Iea07e).
  • Dodano element BasicTooltipBox do aplikacji compose.foundation oraz zaktualizowano PlainTooltipBox i RichTooltipBox, aby używać elementu TooltipBox z nowymi elementami kompozycyjnymi PlainTooltip i RichTooltip. (I79e1d)

Wersja 1.6.0-alfa04

23 sierpnia 2023 r.

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

Zmiany w interfejsie API

  • Dodano interfejs ReusableComposition, który umożliwia zarządzanie cyklem życia i ponownym używaniem podkompozycji. (I812d1, b/252846775)
  • Interfejs Modifier.focusGroup został przekształcony w stabilne interfejsy API. (I7ffa3)
  • Dodaj przeciążenia do BasicTextField2, które akceptują wartość stałą, i wywołanie zwrotne w celu zmiany tej wartości, tak jak w przypadku obecnego interfejsu API BasicTextField. (I3f2b8)
  • GridItemSpan::currentLineSpan jest teraz stabilnym interfejsem API. (Icc29c)
  • Obszar roboczy, który akceptuje contentDescription, jest teraz stabilnym interfejsem API. (Ib3d29)
  • W ScrollState wprowadziliśmy funkcję viewportSize, która pozwala poznać rozmiar viewPort komponentu, który po przeprowadzeniu pomiaru używa pola ScrollState. (I8b85a, b/283102682)
  • Naprawiono problem, który powodował, że pobieranie z wyprzedzeniem w Pager nie pasowało do sposobu działania wyświetleń. (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) jest teraz stabilny.
    • Interfejs Deprecated Modifier.consumedWindowInsets API został usunięty. Użyj w zamian zasady Modifier.consumeWindowInsets. (Id72bb)

Wersja 1.6.0-alfa03

9 sierpnia 2023 r.

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

Zmiany w interfejsie API

  • Dodano przeciążenie obiektu LazyLayout. Akceptuje on 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

  • Naprawione pola tekstowe wyświetlające klawiaturę i dostępne do edycji, gdy readOnly ma wartość prawda. Rozwiązaliśmy też problem z wyświetlaniem klawiatury w przypadku zmiany ustawienia readOnly z prawda na fałsz (gdy jest zaznaczony). (I34a19, b/246909589)

Wersja 1.6.0-alfa02

26 lipca 2023 r.

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

Zmiany w interfejsie API

  • Wprowadzono PagerLayoutInfo z informacjami zebranymi po przeprowadzeniu pomiaru w Pager. Wprowadziliśmy też PageInfo – informacje o pojedynczej mierzonej stronie w Pager. (Iad003, b/283098900)
  • Dodatkowe adnotacje do określania dozwolonych danych wejściowych w obiektach kompozycyjnych (I51109)
  • Dodano SemanticsNodeInteraction.requestFocus jako wygodniejszy i łatwiejszy do znalezienia sposób wysyłania prośby o koncentrację w testach. (Ie8722)
  • Całkowicie nowy interfejs PlatformTextInput* API. (I6c93a, b/274661182, b/267235947, b/277380808)
  • Wersje SoftwareKeyboardController i LocalSoftwareKeyboardController nie są już eksperymentalne. Element LocalSoftwareKeyboardController jest teraz poprawnym elementem typu CompositionLocal. (I4c364)
  • Modifier.transformableUdostępnia teraz parametr delta przesunięcia w elemencie canPan, który ułatwia określenie kierunku przesunięcia, aby ją zezwolić lub zablokować. (I692aa, b/266829800)
  • Aktualizuje modyfikator consumeWindowInsets, aby rozszerzyć klasę nadrzędną AbstractComposeView (Iacd74, b/269479941)

Wersja 1.6.0-alfa01

21 czerwca 2023 r.

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

Nowe funkcje

  • W Podstawach wprowadziliśmy nowy interfejs API AnchoredDraggable. Pozwala tworzyć komponenty, które można przeciągać między różnymi stanami, np. modalne dolne plansze. Ten interfejs API zastępuje interfejs API Swipeable Material. (I4a2ed)

Zmiany w interfejsie API

  • Pomoc InputConnection#requestCursorUpdates (I0c69b)
  • Wprowadzono scrollAnimationSpec, aby umożliwić korzystanie ze specyfikacji animacji niestandardowych. Zaktualizowano: BringIntoViewCalculator na BringIntoViewScroller. (Idb741).
  • Dodaj typ ResourceResolutionException do zawijania obiektów zgłaszanych podczas próby wczytania zasobów bitmapy z opisem ścieżki zasobu, której nie udało się wczytać. (I19f44, b/230166331, b/278424788)
  • Dodano właściwości semantyczne i działania w celu 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 stron z możliwością przewijania, aby opcjonalnie akceptować instancję BringIntoViewCalculator. (Iaf5af)

Poprawki błędów

  • Dodaliśmy sprawdzanie lintowania, aby ostrzegać, gdy tworzysz element MutableInteractionSource w kompozycji bez jego zapamiętywania, podobnie jak w przypadku sprawdzania linta przy tworzeniu zmiennych stanów / Animatable. (I5daae)
  • Dodano obsługę zaznaczania myszką. Zaznaczanie dotykiem będzie się powiększać o kolejne słowo, a zmniejszać po znaku. (Ic0c6c, b/180639271)
  • Dodano interfejs FocusTargetModifierNode, którego można użyć do utworzenia niestandardowego elementu FocusTarget. (I9790e)

Wersja 1.5

Wersja 1.5.4

18 października 2023 r.

Aplikacja 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 r.

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

Aplikacja 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 powodował awarię w określonych okolicznościach, gdy semantyka była unieważniona.

Wersja 1.5.1

6 września 2023 r.

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

Poprawki błędów

  • Naprawione pola tekstowe wyświetlające klawiaturę i dostępne do edycji, gdy readOnly ma wartość prawda. Rozwiązaliśmy też problem z wyświetlaniem klawiatury w przypadku zmiany ustawienia readOnly z prawda na fałsz (gdy jest zaznaczony). (I34a19, b/246909589)

Wersja 1.5.0

9 sierpnia 2023 r.

Aplikacja androidx.compose.foundation:foundation-*:1.5.0 została zwolniona. Wersja 1.5.0 zawiera te zatwierdzenia.

Ważne zmiany 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 API Modifier.Node, co zmniejszyło nakład pracy nad początkową kompozycją.
  • Poprawa stabilności pagerów. Naprawiliśmy wiele błędów.
  • Parametry pageCount znajdują się teraz w tabeli PagerState, a nie w samym pagerze

Wersja 1.5.0-rc01

26 lipca 2023 r.

Aplikacja 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 wyspecjalizowanych w przypadku elementów podstawowych. Jego identyfikator lint to AutoboxingStateCreation. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby zobaczyć to ostrzeżenie w edytorze Android Studio oraz dane wyjściowe lint w Twoim projekcie, zmień jego wagę z informacyjnej na ostrzeżenie (lub wyższą), deklarując warning "AutoboxingStateCreation" w konfiguracji build.gradle lub build.gradle.kts modułu zgodnie z przykładem (I34f7e):

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

Wersja 1.5.0-beta03

28 czerwca 2023 r.

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

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

Aplikacja androidx.compose.foundation:foundation-*:1.5.0-beta01 została zwolniona. Wersja 1.5.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zaimplementuj aplikację PlatformDataProvider, aby otrzymywać informacje o tętnie i dziennej liczbie kroków. Interfejs SensorGateway został usunięty z publicznego interfejsu API. (I55b84)

Poprawki błędów

  • Zmniejsz przydziały podczas pomiarów leniwego list, siatki itp. (Iaf9e2)
  • Zmniejszone przydziały podczas stosowania zrzutów (I65c09)
  • Usunięto przydziały z animacji sprężynowych (Ie9431)
  • Usunięto przydział z modelu TextLayout (I0fd11)
  • Usunięto wiele alokacji ze śledzenia prędkości wskaźnika (I26bae)

Wersja 1.5.0-alfa04

10 maja 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.5.0-alpha04 i androidx.compose.foundation:foundation-layout:1.5.0-alpha04. Wersja 1.5.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano zoptymalizowane parametry TextStyle.merge(...) z pełną listą parametrów. (Iad234, b/246961787)
  • Wprowadź SnapLayoutInfoProvider, którego można używać z LazyGridState. (I92134, b/269237141, b/260914964)
  • Dla zakresu elementu leniwego rozłożonego w czasie siatki dodano eksperymentalny element Modifier.animateItemPlacement(). Możesz zastosować ją do elementów, aby uzyskać efekt zmiany pozycji lub kolejności animacji. (I4b62d, b/257034719)
  • Zmień wersję GridCells.FixedSize na stabilną. FixedSize określa element LazyGrid, w którym każda komórka ma dokładny rozmiar wzdłuż osi przekrojowej, a pozostałe miejsce jest rozkładane zgodnie z układem osi przekrojowej. (I8542f)
  • Wprowadzono zakres odbiorcy PagerScope dla pagera oraz funkcję użytkową do obliczania przesunięcia strony. (If2577)
  • Podczas tworzenia rzutu klamrowego wprowadź snapPositionalThreshold. Ten parametr służy do określania progu pozycjonowania dla krótkiego przyciągania w Pager. (If8f7f)
  • Tekst SnapLayoutInfoProvider.calculateSnappingOffsetBounds został zamieniony na calculateSnappingOffset. W tej nowej metodzie prosimy po prostu o następne przesunięcie. Obliczenie progów należy wykonać na poziomie implementacji, ponieważ może się ono różnić w zależności od tego, jak ma działać przyciąganie. (I923a4)
  • LazyStaggeredGrid interfejsów API zostało zmienionych na stabilne. (I633a5)
  • Usuń pageCount z konta Horizontal/VerticalPager. Należy ją podać podczas tworzenia stanu. Zaktualizowano PagerState i rememberPagerState, aby zaakceptować pageCount. (Ieb52d, b/266965072)
  • Usuń pageCount z konta Horizontal/VerticalPager. Należy ją podać podczas tworzenia stanu. Zaktualizowano PagerState i rememberPagerState, aby zaakceptować pageCount. (Ifa3cb, b/266965072)
  • Przedstaw shortSnapVelocityThreshold w filmie SnapFlingBehavior pagera. (I7379e, b/275579012)
  • Dodaje: FlowRowScope i FlowColumnScope. (I54fe2)

Poprawki błędów

  • Wywołania pozwalające uzyskać semantykę tekstu, gdy ograniczenia mają minWidth i minHeight, które nie ulegają już awarii. (Ibd072)
  • Naprawiono regresję, w przypadku której nie wyświetlała się klawiatura w przypadku pól tekstowych w oknach, które nie zostały utworzone przez funkcję Dialog kompozycyjną. (I82551, b/262140644)

Wersja 1.5.0-alfa03

19 kwietnia 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.5.0-alpha03 i androidx.compose.foundation:foundation-layout:1.5.0-alpha03. Wersja 1.5.0-alpha03 zawiera te zatwierdzenia.

W tej wersji dostępny jest nowy stos renderowania tekstu na potrzeby tworzenia wiadomości. Nowy stos jest zoptymalizowany pod kątem wydajności, więc nie powinno być widocznych żadnych 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. Ustawienie tej opcji wymusi zmianę kompozycji. Wszelkie różnice w działaniu zgłoś jako błędy.

Flaga debugowania zostanie usunięta przed wersją beta01 1.5.(Iada23, b/246960758).

Zmiany w interfejsie API

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

Wersja 1.5.0-alfa02

5 kwietnia 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.5.0-alpha02 i androidx.compose.foundation:foundation-layout:1.5.0-alpha02. Wersja 1.5.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy obsługę komórek o stałym rozmiarze w LazyGrid i ustawianie ich za pomocą układu osi między osiami. (I83ed9, b/235121277, b/267942510)
  • Dodano obsługę pasów o stałym rozmiarze w LazyStaggeredGrid i układanie ich za pomocą osi poprzecznej. (I7d519)
  • Obiekt UrlAnnotation w komórce AnnotatedString można teraz otwierać za pomocą usług ułatwień dostępu takich jak TalkBack. (If4d82, b/253292081)
  • Dodano działanie semantyczne InsertTextAtCursor dla pól tekstowych. (I11ed5)
  • Działania testowe związane z tekstem (np. performTextInput) będą teraz żądać zaznaczenia bezpośrednio, korzystając z działania semantycznego, zamiast klikać pole. (I6ed05)
  • Dodaje obsługę odstępów i układu na osi poprzecznej za pomocą elementów verticalArrangement w FlowRow i horizontalArrangement w FlowColumn. Usuwamy również verticalAlignment i horizontalAlignment najwyższego poziomu w: FlowRow/FlowColumn. Zamiast niego deweloperzy mogą używać właściwości Modifier.align. Pozwala to uniknąć nieporozumień między konwencjami nazewnictwa w verticalAlignment i verticalArrangement. (I87b60, b/268365538)

Wersja 1.5.0-alfa01

22 marca 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.5.0-alpha01 i androidx.compose.foundation:foundation-layout:1.5.0-alpha01. Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Tekst i elementy BasicText zostały refaktoryzowane, aby zastosować nowy system modyfikatorów. W wielu przypadkach prowadzi to do znacznej poprawy skuteczności. Żadne zmiany nie powinny być widoczne. (If1d17, b/246961435)
  • Dodano działanie semantyczne PerformImeAction w celu wywołania działania IME w węzłach edytora tekstu. (Ic606f, b/269633506)

Poprawki błędów

  • Zaktualizowano elementy wewnętrzne domeny Modifier.hoverable. Modyfikator hoverable będzie wyświetlany w inspektorze tylko wtedy, gdy jest włączony. (I82103)

Wersja 1.4

Wersja 1.4.3

3 maja 2023 r.

Wersje androidx.compose.foundation:foundation:1.4.3 i androidx.compose.foundation:foundation-layout:1.4.3 zostały opublikowane bez zmian (tylko wzrost wersji).

Wersja 1.4.2

19 kwietnia 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.4.2 i androidx.compose.foundation:foundation-layout:1.4.2. Wersja 1.4.2 zawiera te zatwierdzenia.

Wersja 1.4.1

5 kwietnia 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.4.1 i androidx.compose.foundation:foundation-layout:1.4.1. Wersja 1.4.1 zawiera te zatwierdzenia.

Wersja 1.4.0

22 marca 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.4.0 i androidx.compose.foundation:foundation-layout:1.4.0. Wersja 1.4.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.3.0

  • Dodano integrację dopasowywania emotikonów do aplikacji Text i TextField, a także do akapitu niższego poziomu. Jest ona domyślnie włączona, jeśli skonfigurowana jest funkcja emojicompat.
  • EmojiCompat można skonfigurować dla konkretnego tekstu za pomocą PlatformParagraphStyle.
  • Dodano obsługę spanu pełnego wiersza w elemencie LazyStaggeredGrid(I28252)
  • Dodaję eksperymentalną funkcję onHover do tablicy ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTest i funkcji create*ComposeRule, które akceptują parametry CoroutineContext. Kontekst będzie używany na potrzeby kompozycji testowej oraz wszelkich wywołań funkcji LaunchedEffect i rememberCoroutineScope() w kompozycji. (I10614, b/265177763)
  • Parametry FlowRow i FlowColumn są teraz dostępne w wersji @ExperimentalFoundationApi, co zapewnia bardziej elastyczny układ oparty na wierszach i kolumnach. Jeśli na osi głównej nie ma wystarczającej ilości miejsca, układa się w nową linię. (I3a7b2)
  • Funkcja Modifier.basicMarquee() jest dostępna w wersji eksperymentalnej w zakresie wyświetlania treści z efektem przewijania. (I2df44, b/139321650)

Wersja 1.4.0-rc01

8 marca 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.4.0-rc01 i androidx.compose.foundation:foundation-layout:1.4.0-rc01. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadziliśmy nowy, niskopoziomowy interfejs API PlatformTextInputAdapter służący do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)
  • Dodano obsługę odwrotnego układu do elementu LazyStaggeredGrid. (I3ef4a)

Poprawki błędów

  • Semantyka SetText elementu BasicTextField spowoduje teraz zaktualizowanie bufora tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (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

Opublikowano androidx.compose.foundation:foundation:1.4.0-beta02 i androidx.compose.foundation:foundation-layout:1.4.0-beta02. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano nowe wywołanie zwrotne Modifier.Node.onReset(), które umożliwia zresetowanie stanu lokalnego, by prawidłowo obsługiwać przypadek użycia elementu Layout (np. jako elementu elementu LazyColumn). Poprawiono działanie FocusTargetModifierNode, aby prawidłowo zresetować aktywny stan. (I65495, b/265201972)
  • Dodano 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(). Rozszerz ją bezpośrednio z adresu ModifierNodeElement. (Ie6d21).

Poprawki błędów

  • Dostosowywanie uchwytów wyboru nie pozwala już na zaznaczanie częściowego znaku. (Ided1)
  • Naprawianie awarii występującej po naciśnięciu klawiszy Ctrl + Backspace na pustym polu TextField (I0427f, b/244185537)

Wersja 1.4.0-beta01

8 lutego 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.4.0-beta01 i androidx.compose.foundation:foundation-layout:1.4.0-beta01. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Od wersji 1.3 dodaliśmy integrację emotikonów do Text i TextField, a także akapit niższego poziomu. Jest ona domyślnie włączona, jeśli skonfigurowana jest funkcja emojicompat.
  • EmojiCompat można skonfigurować dla konkretnego tekstu za pomocą PlatformParagraphStyle.

Zmiany w interfejsie API

  • Dodaliśmy wspólną implementację interfejsu API PinnableContainer używanego we wszystkich interfejsach LazyLayouts, aby zachować elementy, które wyjściły z kompozycji, ale nadal muszą być aktywne. (If45a4)
  • Zmieniono nazwę PinnableContainer.PinnedHandle.unpin() na release() (I4667a)

Wkład z zewnątrz

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

Wersja 1.4.0-alfa05

25 stycznia 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.4.0-alpha05 i androidx.compose.foundation:foundation-layout:1.4.0-alpha05. Wersja 1.4.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano obsługę spanu pełnego wiersza w: LazyStaggeredGrid (I28252)
  • Dodaję eksperymentalną funkcję onHover do tablicy ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTest i funkcji create*ComposeRule, które akceptują parametry CoroutineContext. Kontekst będzie używany na potrzeby kompozycji testowej oraz wszelkich wywołań funkcji LaunchedEffect i rememberCoroutineScope() w kompozycji. (I10614, b/265177763)

Zmiany w interfejsie API

  • Łączy interfejsy API używane przed i po OverscrollEffect w połączone funkcje applyToScroll i applyToFling „dekoratora”. Zapoznaj się ze zaktualizowanymi przykładami w dokumentacji, aby dowiedzieć się, jak wdrożyć efekt dalekiego przewijania za pomocą nowego kształtu interfejsu API. (I8a9c4, b/255554340)
  • Więcej typów/wartość null funkcji wbudowanych/wycofanych ukrytych (I24f91)
  • Interfejsy API LineBreak i Hyphens w TextStyle zostały wdrożone do wersji stabilnej. (Ic1e1d).

Poprawki błędów

  • Kursor w polach tekstowych będzie teraz migać nawet po wyłączeniu animacji. (I95e70, b/265177763)
  • Animacja Modifier.basicMarquee wyświetla się teraz nawet wtedy, gdy animacje są wyłączone w ustawieniach systemu. (I23389, b/262298306, b/265177763)

Wkład z zewnątrz

  • Metody notifyFocusedRect w TextInputSession i TextInputService nie zostały ponownie wycofane. (I23a04, b/262648050)

Wersja 1.4.0-alfa04

11 stycznia 2023 r.

Opublikowano androidx.compose.foundation:foundation:1.4.0-alpha04 i androidx.compose.foundation:foundation-layout:1.4.0-alpha04. Wersja 1.4.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Parametry FlowRow i FlowColumn są teraz dostępne w wersji @ExperimentalFoundationApi, co zapewnia bardziej elastyczny układ oparty na wierszach i kolumnach. Jeśli na osi głównej nie ma wystarczającej ilości miejsca, układa się w nową linię. (I3a7b2)
  • Funkcja Modifier.basicMarquee() jest dostępna w wersji eksperymentalnej w przypadku wyświetlania treści z efektem przewijania. (I2df44, b/139321650)

Zmiany w interfejsie API

  • Interfejs FocusRequesterModifier został wycofany i zastąpiony przez FocusRequesterNode (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529,5/18,{/13
  • Konstruktor AndroidFont z elementem 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 rozpowszechniany przez leniwe listy za pomocą lokalnej kompozycji, co pozwala przypiąć bieżący element. Oznacza to, że taki element nie zostanie zutylizowany, gdy przewiniesz go poza widok. Na przykład Modifier.focusable() przypnie aktualnie aktywny element za pomocą tego mechanizmu. (Ib8881, b/259274257, b/195049010)
  • Na nowo napisano sposób, w jaki elementy przewijane reagują na elementy bringIntoViewRequesters i obiekty do zaznaczania, aby lepiej modelować złożoność tych operacji i obsługiwać większą liczbę skrajnych przypadków. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • Więcej wartości null typu zwracanego w przypadku wycofanych ukrytych funkcji (Ibf7b0)
  • Do funkcji TextStyle dodano eksperymentalną funkcję TextMotion, która umożliwia określenie tekstu jako Static(default) lub animowany. Użyj funkcji TextMotion.Animated, jeśli tekst ma być skalowany, przetłumaczony lub obracany w animacji. (I24dd7)
  • Dodaj TextFieldFocusModifier, aby poprawić działanie nawigacji po kliknięciu na platformie Androida (I00303)
  • Zastąpiono argument maxSize: IntSize w drawText na size: Size, aby był wbudowany z innymi funkcjami DrawScope. size ma domyślnie wartość Size.Unspecified, co nie powinno zmieniać poprzedniego działania domyślnego. (Icd27d)

Poprawki błędów

  • Dostosowanie fizyki przyciągania w aplikacji SnapFlingBehaviour zapewnia bardziej naturalny efekt.

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ł pierwotnie zgłoszony problem. Poprawka została przesłana i będzie dostępna przy następnej aktualizacji tworzenia wiadomości. Aby obejść ten problem, zaktualizuj biblioteki androidx.compose.material i androidx.compose.material3 do najnowszej wersji(1.1.0-alfa04) lub zmień wersję androidx.compose.foundation na 1.4.0-alfa03.

Wersja 1.4.0-alfa03

7 grudnia 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.4.0-alpha03 i androidx.compose.foundation:foundation-layout:1.4.0-alpha03. Wersja 1.4.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • W testach interfejsu za pomocą reguły tworzenia kontynuacje wznawiane w trakcie wywołań zwrotnych withFrameNanos nie będą wysyłane, dopóki nie zakończą się wykonywanie wszystkich wywołań zwrotnych ramek. Odpowiada to zachowaniu tworzenia wiadomości w normalnym trybie działania. Jednak testy oparte na starym działaniu mogą się nie powieść. Powinno to mieć wpływ tylko na kod, który bezpośrednio wywołuje withFrameNanos lub withFrameMillis i działa logikę poza wywołaniem zwrotnym, przekazywanej do tych funkcji, które być może trzeba będzie przenieść wewnątrz wywołań zwrotnych. Zapoznaj się ze zmianami w testach animacji w tej liście zmian z przykładami.
  • Do konstruktora i funkcji fabrycznej TestMonotonicFrameClock dodano opcjonalny parametr onPerformTraversals: (Long) -> Unit, który umożliwia uruchamianie kodu po wywołaniach zwrotnych (withFrameNanos), ale przed wznowieniem programów wywołujących. (Idb413, b/254115946, b/222093277, b/255802670)
  • Wprowadź działania związane z ułatwieniami dostępu na stronie: PageUp, PageDown, PageLeft, PageRight. Pamiętaj, że są one dostępne tylko w interfejsie API 29. (Ida4ab).
  • Wprowadzenie HorizontalPager i VerticalPager – funkcji umożliwiającej wyświetlanie funkcji kompozycyjnych w formie pagera. Wprowadziliśmy funkcję PagerState, która pozwala kontrolować pagery i wysyłać zapytania o ich bieżący stan. Wprowadziliśmy funkcję PageSize, która pozwala kontrolować rozmiar strony pagera. Można ją wykorzystać do tworzenia karuzeli, np. pagerów. Wprowadziliśmy funkcję PagerSnapDistance, która pozwala kontrolować działanie przyciągania podczas rzucania pagera. (I01120).
  • W grze SnapFlingBehavior.performFling wprowadzono przeciążenie, aby ułatwić zrozumienie, gdzie ułożenie się skończy. (I569f6)
  • Czcionka OverscrollEffect#isEnabled została usunięta. Zamiast zapamiętywać i ustawiać tę flagę, po prostu nie wysyłaj zdarzeń do efektu dalekiego przewijania w przypadkach, gdy nie chcesz, aby były one wyświetlane (na przykład gdy funkcje ScrollableState#canScrollForward/backward zwracają wartość fałsz). (I1a4b0, b/255554340, b/255557085)
  • Dodano parametry ScrollableState#canScrollForward i ScrollableState#canScrollBackward, aby sprawdzić, czy element ScrollableState ma miejsce na przewijanie w dowolnym kierunku (niezależnie od tego, czy jest na poziomie minimalnym czy maksymalnym w zakresie). Ustawienie domyślne ma wartość „true” (prawda), aby zapewnić zgodność wsteczną z istniejącymi implementacjami pakietu ScrollableState. Konsumenci mogą użyć tej opcji, aby pokazać użytkownikowi, że jeszcze można przewinąć. W ten sposób można też uniknąć wysyłania delta do sekcji ScrollableStates, w której nie ma miejsca na przewijanie w danym kierunku, co pozwala ograniczyć niepotrzebne nakłady pracy. (Idf1a0, b/255557085)
  • Dodano interfejs Modifier API do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych. (I2ba9d, b/203141462).
  • Używane w interfejsie Clickable do prawidłowego opóźnienia interakcji z naciśnięciami, gdy gesty mogą stać się zdarzeniami przewijania.
  • Naprawiono nieprawidłowe opóźnianie zmarszczek Clickables występującego w obrębie elementu Scrollable ViewGroup.
  • Zaktualizowano Szuflady i Arkusze, aby prawidłowo opóźniać naciśnięcia, jeśli gesty mogą zmienić się w zdarzenia przewijania.
  • Zmień nazwy w elemencie snapStepSize, aby były zgodne z innymi metodami w SnapLayoutInfoProvider. (Ife67c)
  • Dodano: EmojiCompat do listy Compose (Ibf6f9, b/139326806)
  • Nazwa consumedWindowInsets() została zmieniona na consumeWindowInsets(), a withConsumedWindowInsets() na onConsumedWindowInsetsChanged(), a modyfikatory zostały upublicznione. (Ie44e1).

Poprawki błędów

  • Naprawiono awarię z funkcjami Modifier.animateItemPlacement() i leniwymi siatkami. Zdarzało się to w pewnych warunkach, gdy liczba nowych elementów była mniejsza niż w poprzedniej. (I0bcac, b/253195989)

Wersja 1.4.0-alfa02

9 listopada 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.4.0-alpha02 i androidx.compose.foundation:foundation-layout:1.4.0-alpha02. Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • awaitFirstDown i waitForUpOrCancellation akceptują teraz PointerEventPass, co zapewnia większą elastyczność. (I7579a, b/212091796)
  • Przywracanie interfejsu beyondBoundCount API z leniwych* interfejsów API (I12197)
  • Wprowadzono parametr w interfejsach Lazy API do tworzenia i umieszczania elementów poza widocznym obszarem (I69e89, b/172029355).
  • Do parametru BasicText i BasicTextField dodano parametr minLines. Pozwala ustawić minimalną wysokość funkcji kompozycyjnych pod kątem liczby wierszy (I24294, b/122476634)

Wersja 1.4.0-alfa01

24 października 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.4.0-alpha01 i androidx.compose.foundation:foundation-layout:1.4.0-alpha01. Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano nową metodę awaitEachGesture() do wykrywania gestów. Działanie tej funkcji jest podobne do funkcji forEachGesture(), ale zapętlenie gestów odbywa się tylko w obrębie interfejsu AwaitPointerEventScope, więc zdarzenia nie są pomijane w kolejnych iteracjach.
  • Interfejs forEachGesture() został wycofany i zastąpiony komponentem awaitEachGesture(), ponieważ dopuszcza on utratę zdarzeń między gestami. (Iffc3f, b/251260206)
  • Dodano WindowInsets.imeAnimationSource i WindowInsets.imeAnimationTarget, aby określić postęp animacji i dowiedzieć się, gdzie będzie się znajdować edytor IME. (I356f1, b/217770337)

Wersja 1.3

Wersja 1.3.1

9 listopada 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.3.1 i androidx.compose.foundation:foundation-layout:1.3.1. Wersja 1.3.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiąż problem z wydajnością w programie BeyondBoundsLayout (aosp/2255266)
  • ContentInViewModifier nie będzie odczytywać współrzędnych układu, chyba że dołączono aosp/2241316)

Wersja 1.3.0

24 października 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.3.0 i androidx.compose.foundation:foundation-layout:1.3.0. Wersja 1.3.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.2.0

  • Zostały wprowadzone wersje eksperymentalne systemów LazyVerticalStaggeredGrid i LazyHorizontalStaggeredGrid.
  • SnapFlingBehavior, rememberSnapFlingBehavior i inne powiązane interfejsy API zostały dodane w ramach eksperymentu.
  • Modifier.clickable, Modifier.toggleable i Modifier.selectable pokazują teraz echo po kliknięciu za pomocą klawiatury lub pada kierunkowego na pilocie.

Wersja 1.3.0-rc01

5 października 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.3.0-rc01 i androidx.compose.foundation:foundation-layout:1.3.0-rc01. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadzono funkcję lowVelocityAnimationSpec używaną na etapie podejścia, gdy prędkość rzutu jest zbyt mała, aby się roztopić. (Iaeb27)
  • Dodaliśmy nowe, eksperymentalne łączniki interfejsu API, które umożliwiają automatyczne łączenie w tekście (Iaa869).

Wersja 1.3.0-beta03

21 września 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.3.0-beta03 i androidx.compose.foundation:foundation-layout:1.3.0-beta03. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj opcje dostosowywania podziału wierszy w tekście. (I86907)
  • Podczas przetwarzania żądania BringIntoViewResponder mogą teraz uzyskać najbardziej aktualne wartości progowe żądania. (If86a5, b/241591211)
  • Wprowadź obsługę odstępów między elementami do eksperymentalnego elementu Staggered Grid (I10b82)
  • Wprowadź dopełnienie treści w eksperymentalnym elemencie Staggered Grid (I342ea)
  • Zmieniono argument size:IntSize o 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 element MutableWindowInsets, aby umożliwić łatwą zmianę elementu WindowInsets bez zmiany kompozycji. (I7fd28, b/237019262, b/243119659)

Wersja 1.3.0-beta02

7 września 2022 roku

Opublikowano androidx.compose.foundation:foundation:1.3.0-beta02 i androidx.compose.foundation:foundation-layout:1.3.0-beta02. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Początkowa wersja eksperymentu StaggeredGrid (Ia48be)
  • Zmieniono nazwy FocusDirection.In i FocusDirection.Out na FocusDirection.Enter i FocusDirection.Exit (Ia4262, b/183746982)
  • Wprowadziliśmy przeciążenie rememberSnapFlingBehavior, które umożliwia szybkie włączenie przyciągania w żądaniu 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 API korzystanie z konwersji Dp<->Px. (I54a11).
  • Zaktualizuj funkcję LazyLayoutMeasureScope.measure, aby zwrócić listę obiektów możliwych do umieszczenia z wyróżnieniem żądanej niezmienności zwracanej wartości. (I48b7c)
  • Wprowadzono funkcję SnapLayoutInfoProvider, która wymaga LazyListState, by utworzyć wystąpienie obiektu SnapLayoutInfoProvider, którego można użyć do włączenia przyciągania FlingBehavior dla LazyLists. (I2dd10)

Poprawki błędów

  • Refaktoruje funkcję AwaitPointerEventScope#awaitLongPressOrCancellation, aby dopasować ją do innych funkcji oczekiwania (I646e6)

Wersja 1.3.0-beta01

24 sierpnia 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.3.0-beta01 i androidx.compose.foundation:foundation-layout:1.3.0-beta01. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto: pointerPosition z elementu OverscrollEffect – efekty, które biorą pod uwagę pozycję wskaźnika, mogą używać funkcji Modifier.pointerInput { } w elemencie effectModifier, aby pobrać bieżącą pozycję wskaźnika. (I9f606, b/241239306)
  • Udostępniono AwaitPointerEventScope#awaitLongPressOrCancellation jako dodatkowy element składowy do wykrywania bardziej złożonych gestów (I04374, b/181577176).
  • Wprowadzono funkcję lazyListSnapLayoutInfoProvider, która włącza przyciąganie w leniwych listach. (I3ecdf).
  • Wprowadzono SnapFlingBehavior – funkcję zwijania umożliwiającą przyciąganie list. Podaj wystąpienie obiektu SnapLayoutInfoProvider z informacjami o układzie przyciągania. (Ie754c)

Wersja 1.3.0-alfa03

10 sierpnia 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.3.0-alpha03 i androidx.compose.foundation:foundation-layout:1.3.0-alpha03. Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Czcionki zasobów obsługują teraz ustawianie wariantów czcionek (API w wersji 26 i nowszych). (I900dd, b/143703328)
  • Obsługa zmiennych czcionek w języku DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Usunięto eksperymentalną adnotację z: PlatformTextStyle i LineHeightStyle. (I64bef)
  • Pola tekstowe będą teraz zwracać bardziej szczegółowe wyjątki, gdy funkcja OffsetMapping podana przez obiekt VisualTransformation zwróci nieprawidłowe indeksy. (Ie73f9, b/229378536)
  • Wprowadź eksperymentalne interfejsy API, aby udostępniać logikę dostawcy elementu między leniwymi układami. (Ic891c)
  • Aplikacja ScrollableDefaults.reverseDirection() nie jest już eksperymentalna. (Iba646)
  • Wycofano element SemanticsModifier.id i przenieśliśmy identyfikator semantyki do jednostki organizacyjnej LayoutInfo.semanticsId. (Iac808, b/203559524)
  • Aplikacja checkScrollableContainerConstraints() nie jest już eksperymentalna. (I2c290)
  • Aplikacja Modifier.clipScrollableContainer() nie jest już eksperymentalna. (Ia2b44).
  • Wycofaj: TextInputService.show|hideSoftwareKeyboard. Zamiast niego użyj SoftwareKeyboardController w kodzie aplikacji i TextInputSession w kodzie zarządzania IME. (I14e4c, b/183448615)

Wersja 1.3.0-alfa02

27 lipca 2022 roku

Opublikowano androidx.compose.foundation:foundation:1.3.0-alpha02 i androidx.compose.foundation:foundation-layout:1.3.0-alpha02. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano funkcję rozszerzenia drawText w DrawScope, aby umożliwić rysowanie wielostylowego tekstu w elementach kompozycyjnych i modyfikatorach, które działają na elementach DrawScope, takich jak Canvas i drawBehind. (I16a62, b/190787898)

Poprawki błędów

  • Klawiatura programowa jest teraz ukryta, gdy pole tekstowe jest wyłączone, gdy jest zaznaczone. (I6e3e4, b/237308379)
  • Podczas dodawania zdarzeń InputEventChange do narzędzia Velocity Tracker weźmiemy pod uwagę teraz delta zamiast pozycji. Dzięki temu prędkość będzie obliczana prawidłowo we wszystkich przypadkach nawet wtedy, gdy element docelowy się porusza (Icea9d, b/216582726, b/223440806, b/227709803)
  • Gdy element podrzędny przewijany ma zaznaczony element podrzędny, to element podrzędny przewija się prawidłowo, aby zaznaczone elementy były widoczne po zmniejszeniu jego rozmiaru, nawet jeśli rozmiar jest animowany. (I80867, b/230756508, b/220119990)
  • Naprawiono awarię, w wyniku której pole TextField było czyszczone i uzupełniane ponownie, gdy zaznaczenie było aktywne. (I1235b, b/208655565, b/214253689)

Wersja 1.3.0-alfa01

29 czerwca 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.3.0-alpha01 i androidx.compose.foundation:foundation-layout:1.3.0-alpha01. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadzono typ adnotacji UrlAnnotation i powiązane metody, aby umożliwić obsługę linków TalkBack w AnnotatedString. (I1c754, b/231495122)

Poprawki błędów

  • BasicTextField cursorBrush może być teraz animowany bez ponownego uruchamiania minutnika kursora. (I812e6, b/236383522)

Wersja 1.2

Wersja 1.2.1

10 sierpnia 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.1 i androidx.compose.foundation:foundation-layout:1.2.1. Wersja 1.2.1 zawiera te zatwierdzenia.

Wersja 1.2.0

27 lipca 2022 roku

Opublikowano androidx.compose.foundation:foundation:1.2.0 i androidx.compose.foundation:foundation-layout:1.2.0. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • LazyVerticalGrid i LazyHorizontalGrid są obecnie stabilne.
  • Możesz teraz określić typ treści elementów na leniwym listach i siatkach. Dzięki temu komponenty będą mogły efektywniej korzystać z elementów.
  • Leniwe listy i siatki mają teraz parametr userScrollEnabled, który pozwala wyłączyć przewijanie gestami użytkownika.
  • Dodano nowy eksperymentalny interfejs API o nazwie LazyLayout. To interfejs API, którego używamy wewnętrznie do tworzenia list i siatek leniwych.
  • Interfejs API OverscrollEffect został wprowadzony w wersji eksperymentalnej. Możesz definiować niestandardowe efekty dalekiego przewijania, a także dodawać standardową platformę 1 do niestandardowych kontenerów przewijanych.
  • Wprowadziliśmy interfejsy API do interoperacyjności przewijania w zagnieżdżonych, aby umożliwić interoperacyjność między widokami i tworzenie podmiotów przewijających.
  • Przewijanie za pomocą myszy i touchpada zostało dodane do wszystkich przewijanych kontenerów.

Wersja 1.2.0-rc03

29 czerwca 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-rc03 i androidx.compose.foundation:foundation-layout:1.2.0-rc03. 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.

Opublikowano androidx.compose.foundation:foundation:1.2.0-rc02 i androidx.compose.foundation:foundation-layout:1.2.0-rc02. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.

Wersja 1.2.0-rc01

15 czerwca 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-rc01 i androidx.compose.foundation:foundation-layout:1.2.0-rc01. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadziliśmy eksperymentalną funkcję OverscrollEffect, aby umożliwić stosowanie niestandardowych efektów nadmiernego przewijania, oprócz przeciążeń Modifier.scrollable, które je akceptują.
  • Eksperymentalny LocalOverScrollConfiguration został przeniesiony z pakietu foundation.gesture do pakietu podstawowego i jego nazwa została zmieniona na LocalOverscrollConfiguration (If19fb, b/204650733)
  • Interfejsy w bibliotekach tworzenia wiadomości są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1)
  • Wprowadziliśmy eksperymentalną funkcję API checkScrollableContainerConstraints(), która umożliwia sprawdzenie, czy nie zagnieżdżamy kontenerów z możliwością przewijania. Możesz go używać podczas tworzenia własnych leniwych układów z możliwością przewijania w elemencie LazyLayout. (Id6fab, b/233352497)
  • Usunięto wycofaną zasadę LazyVerticalGrid z pakietu androidx.compose.foundation.lazy. Nowy stabilny interfejs API znajduje się w lokalizacji androidx.compose.foundation.lazy.grid (I73c76, b/225192009)

Wersja 1.2.0-beta03

1 czerwca 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-beta03 i androidx.compose.foundation:foundation-layout:1.2.0-beta03. Wersja 1.2.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano nowe eksperymentalne funkcje (IntervalList i MutableIntervalList). Pozwala reprezentować niektóre listy wartości za pomocą wielu przedziałów czasu. Jest to przydatne, gdy chcesz zdefiniować własny DSL podobny do tego używanego w LazyColumn, w którym elementy list można definiować za pomocą wielu wywołań item/items. (I2d05e, b/228580728)

Poprawki błędów

  • Doprecyzowaliśmy dokumentację dotyczącą WindowInsets.ime, aby stwierdzać, że wstawiane elementy typu ime są raportowane od wersji API 23, ale tylko animowane w wersji 30 lub nowszej (Ia7fc0, b/230756508).
  • Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie powoduje awarii.
  • Argumenty konstruktora DeleteSurroundingTextCommand i DeleteSurroundingTextInCodePointsCommand muszą być teraz nieujemne. (Ica8e6, b/199919707)

Wersja 1.2.0-beta02

18 maja 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-beta02 i androidx.compose.foundation:foundation-layout:1.2.0-beta02. Wersja 1.2.0-beta02 zawiera te zatwierdzenia.

  • Rozdzielczość czcionki do pobrania, która nie zmienia rozmiaru układu tekstu, lub TextField, która wcześniej nie była ponownie przerysowana, co powoduje wyświetlanie nieaktualnych czcionek. Ta poprawka błędu sprawia, że układ tekstu zawsze aktywuje ponowne rysowanie (b/229727404). (I1d49e, b/229727404)

Wersja 1.2.0-beta01

11 maja 2022 roku

Opublikowano androidx.compose.foundation:foundation:1.2.0-beta01 i androidx.compose.foundation:foundation-layout:1.2.0-beta01. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • To jest pierwsza wersja beta 1.2.

Zmiany w interfejsie API

  • Dodano eksperymentalną funkcję BeyondBoundsInterval, której można używać w niestandardowych implementacjach LazyList, gdy elementy układu wykraczają poza widoczne granice (Ifabfb, b/184670295)
  • Nazwa zasobu LineHeightBehavior została zmieniona na LineHeightStyle
  • Nazwa zasobu LineVerticalAlignment została zmieniona na LineHeightStyle.Alignment
  • Zmienia nazwę elementu LineHeightTrim na LineHeightStyle.Trim
  • Domyślne wartości konstruktora z LineHeightStyle zostały usunięte (I582bf, b/181155707)
  • Dodaliśmy domyślne wartości dla opcjonalnych członków interfejsu LazyLayoutItemProvider. (Iba8a0)
  • W interfejsie API LazyLayoutItemProvider zamiast fabryki zwracającej funkcję kompozycyjną według indeksu mamy teraz prostszą funkcję kompozycyjną, która akceptuje indeks. (Id2196)
  • Nazwa komponentu LazyLayoutItemsProvider została zmieniona na LazyLayoutItemProvider (I0638c).
  • Nazwa kampanii LazyLayoutItemsProvider.itemsCount została zmieniona na itemCount (Id409c)
  • Do interfejsów TextStyle i SpanStyle dodano pędzel, który umożliwia rysowanie tekstu przy użyciu koloru gradientowego. (I53869, b/187839528)
  • trimFirstLineTop, trimLastLineBottom atrybutów obiektu LineHeightBehavior zostało zmienionych w jedną wartość wyliczeniową: LineHeightTrim. LineHeightTrim ma wartości 4 stanów zdefiniowanych przez 2 wartości logiczne: FirstLineTop, LastLineBottom, oba i Brak (Ifc6a5, b/181155707)
  • Dodanie LineHeightBehavior do elementów TextStyle i ParagraphStyle. LineHeightBehavior określa, czy wysokość wiersza ma być stosowana u góry pierwszego i u dołu ostatniego wiersza. Określa też wyrównanie linii w przestrzeni udostępnianej przez funkcję TextStyle(lineHeight).

    Można na przykład uzyskać działanie podobne do tego, co określa CSS w zasadzie LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

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

  • Dodano eksperymentalny modyfikator imeNestedScroll(), aby programiści mogli sterować edytorem IME za pomocą przewijania. (I60759)

Poprawki błędów

  • Naprawiono regresję, w której pola tekstowe nie ukrywały klawiatury po usunięciu z kompozycji po jej zaznaczeniu. (I7a410, b/230536793, b/225541817)
  • Obsługuj wielokropek, gdy wysokość jest ograniczona i nie pasuje do wszystkich wierszy tekstu (Ie528c, b/168720622).
  • BringIntoViewRequester.bringIntoView będzie teraz zawieszać się zawsze, dopóki żądanie nie zostanie ukończone lub nie zostanie przerwane przez nowe, niepokrywające się żądanie. Nakładające się żądania zostaną umieszczone w kolejce. (I43e7f, b/216790855)
  • Równoczesne wywołania funkcji BringIntoViewRequester.bringIntoView całkowicie nakładające się prostokąty będą uwzględniać tylko żądanie większego prostokąta. (I34be7, b/216790855, b/184760918)
  • Włączono domyślne ustawienie includeFontPadding. Możesz wyłączyć includeFontPadding za pomocą atrybutu TextStyle.platformTextStyle. W najbliższej przyszłości zmienimy działanie domyślne, ale do tego czasu umożliwi nam to lepszą integrację ulepszonej wysokości linii (aosp/2058653) i rozwiązywanie problemów z przycinaniem w TextField. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester nie korzysta już z: onGloballyPositioned. (I630f5)

Wkład z zewnątrz

  • Tabela MouseInjectionScope.scroll(delta = someDelta) jest teraz odwrócona na Androidzie, gdy przewijamy w pionie (jeśli wartość parametru Delta ma wartość dodatnią, przewija się w dół) (Ifb697, b/224992993)

Wersja 1.2.0-alfa08

20 kwietnia 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-alpha08 i androidx.compose.foundation:foundation-layout:1.2.0-alpha08. Wersja 1.2.0-alpha08 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Podczas korzystania z FontFamily.SansSerif wyświetlaj wszystkie dostępne wagi czcionek systemowych na Androidzie. Spowoduje to wewnętrznie użycie zastępczych nazw czcionek, takich jak Sans-serif-medium, w interfejsie API 21–28. Jest to zmiana sposobu działania, ponieważ wcześniej w interfejsach API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992)
  • Akapit i MultiParagraph akceptują teraz parametr Ograniczenia. Zdanie Constraints.maxHeight jest obecnie niemożliwe, ale umożliwi to w przyszłości wykonanie obliczeń, np. elipsy na podstawie wysokości. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akceptuje teraz niestandardową klasę MutableSet-like, która nie pozwala na dodawanie do niej nowych elementów. (Icd314)
  • Częściowe wykorzystanie (pozycja niżej LUB) zostało wycofane w PointerInputChange. Możesz użyć consume(), aby w pełni zastosować tę zmianę. Za pomocą funkcji isConsumed możesz sprawdzić, czy ktoś inny korzystał wcześniej ze zmiany.
  • Teraz usługa PointerInputChange::copy() zawsze tworzy małą kopię. Oznacza to, że po wykorzystaniu jednej z nich kopie PointerInputChange zostaną zużyte. Jeśli chcesz utworzyć niepowiązany obiekt PointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)
  • Wprowadziliśmy nowy, eksperymentalny interfejs API LazyLayout. Dzięki temu możesz tworzyć własne komponenty, np. LazyColumn z LazyVerticalGrid. Pamiętaj, że interfejs API jest we wczesnej fazie rozwoju i można go zmienić w kolejnych wersjach. (Iba2bc, b/166591700)
  • AndroidFont przyjmuje teraz parametr typefaceLoader jako parametr konstruktora. (I2c971)
  • Reklama towarzysząca WindowInsets wyświetla teraz jej widoczność (niezależnie od tego, czy nakłada się na ekran, niezależnie od tego, czy nakłada się na okno) oraz jej rozmiar, jeśli są dostępne na urządzeniu, ale nie są obecnie aktywne. (I65182, b/217770337)

Wersja 1.2.0-alfa07

6 kwietnia 2022 roku

Opublikowano androidx.compose.foundation:foundation:1.2.0-alpha07 i androidx.compose.foundation:foundation-layout:1.2.0-alpha07. Wersja 1.2.0-alpha07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano interfejs API PinnableParent, który umożliwia elementom podrzędnym leniwych układów zapobieganie utylizacji obecnie utworzonych elementów (Ibbdd0, b/184670295)
  • LazyListLayoutInfo i LazyGridLayoutInfo mają teraz pola beforeContentPadding i afterContentPadding (I3b628, b/200920410)
  • Dodano element KeyboardType.Decimal jako alternatywę dla Keyboard.Number w celu uwzględnienia separatora dziesiętnego w edytorze IME. (Iec4c8, b/209835363)
  • Dodaj nowy deskryptor czcionek Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane przez system w łańcuchach zastępczych czcionek. (I30468, b/219754572)
  • PointerEventType.Scroll i PointerEvent.scrollDelta to obecnie stabilne interfejsy API (I574c5, b/225669674)
  • Dodanej tymczasowej konfiguracji zgodności dla zasobu includeFontPadding w regionie TextStyle/ParagraphStyle. includeFontPadding można zmienić w TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Jest to tymczasowa opcja konfiguracji, która umożliwia włączenie migracji i zostanie usunięta. (If47be, b/171394808)
  • Zaktualizowano FontFamily.Resolver, aby zintegrować ustawienie ułatwień dostępu do pogrubienia tekstu w całym systemie (I6c1e7)
  • Właściwość rozszerzenia consumeWindowInsets interfejsu ComposeView umożliwia programistom wyłączenie użycia elementów WindowInset w Androidzie. Dzięki temu różne elementy ComposeViews w hierarchii mogą stosować do każdego z nich WindowInsets bez zakłócania siebie. (I0ef08, b/220943142)

Wersja 1.2.0-alfa06

23 marca 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-alpha06 i androidx.compose.foundation:foundation-layout:1.2.0-alpha06. Wersja 1.2.0-alpha06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano działanie semantyczne RequestFocus, aby zażądać skupienia na celu, który można zaznaczyć. (I17b71)
  • FocusOrder Został scalony w FocusProperties i focusProperties() ma teraz wszystkie możliwości focusOrder(). Reguły FocusOrder i focusOrder() zostały wycofane. Parametr focusOrder(), który akceptuje focusRequester, należy zastąpić modyfikatorem focusRequester() w połączeniu z wartością focusProperties(). Dzięki temu modyfikatory lepiej rozdzielają potencjalne problemy. (I601b7)
  • Dodano WindowInsets.asPaddingValues(Density), aby umożliwić programistom konwersję bez konieczności planowania. (I94c35)
  • Zaktualizowano analizowanie elementów rysowanych wektorowych, aby umożliwić automatyczne odbicie lustrzane w celu odwrócenia zawartości elementu VectorPainter, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237)

Poprawki błędów

  • Modyfikatory przewijania (Modifier.verticalScroll(), Modifier.horizontalScroll() i Modifier.scrollable()) przewijają teraz, aby wyróżniona funkcja kompozycyjna była widoczna, jeśli rozmiar obszaru przewijania został zmieniony i zaznaczony element kompozycyjny był wcześniej widoczny.
  • Pola tekstowe będą teraz zachowywane nad klawiaturą, gdy są zaznaczone, a klawiatura jest widoczna, gdy znajduje się w nie leniwym przewijaniu i w trybie nietrwałego wprowadzania jest ADJUST_RESIZE. (I4a485, b/190539358, b/192043120, b/216842427)

Wersja 1.2.0-alfa05

9 marca 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-alpha05 i androidx.compose.foundation:foundation-layout:1.2.0-alpha05. Wersja 1.2.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • LazyVerticalGrid i LazyHorizontalGrid są teraz stabilne. (I307c0)
  • Pole LazyGridItemInfo.Unknown zostało zastąpione osobnymi komponentami 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. W przypadku wysokich skryptów problemy z przycinaniem wynikające z metody includeFontPadding=false są obsługiwane. Przycinanie nie powinno występować. (I31c84, b/171394808)
  • Pomiar interfejsu ujawnia teraz właściwość rodzica (I3313f)
  • Wprowadzono eksperyment Modifier.onFocusedBoundsChanged, aby umożliwić obserwację granic elementów podrzędnych. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • Dodano element LazyHorizontalGrid. (I61ae7, b/191238807)
  • Dodano nowy interfejs API LazyVerticalGrid do definiowania rozmiarów osi krzyżowej (I17723).
  • Dodano modyfikator FocusGroup (I64bc0, b/213508274, b/184670295)

Poprawki błędów

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

Wkład z zewnątrz

  • Zaktualizowano, aby używać współprogramów Kotlinx 1.6.0 (I3366d)

Wersja 1.2.0-alfa04

23 lutego 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-alpha04 i androidx.compose.foundation:foundation-layout:1.2.0-alpha04. Wersja 1.2.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Jednostki BringIntoViewResponders nie muszą już ręcznie przekazywać żądań do użytkowników nadrzędnych. Zamiast tego muszą natychmiast zwracać prostokąt, który mają wyświetlić ich element nadrzędny. (I8e66a)
  • Obsługa asynchronicznego wczytywania czcionek w tekście (I77057, b/214587005)
  • LazyVerticalGrid obsługuje teraz line breaking przed elementami, których zakres nie mieści się w bieżącym wierszu. (I05c40, b/207462103)
  • Zmieniono nazwę excludeFromSystemGestures na systemGesturesExclusion (I19526)
  • Układ LazyVerticalGrid obsługuje teraz odwrócony układ. (I6d7d7, b/215572963, b/211753558)
  • Dodaj metodę WindowInsets.only(), aby umożliwić programistom uwzględnianie tylko wymiarów z metody WindowInset. (I14c94, b/217768486)
  • Dodano właściwości ComposableTarget, ComposableTargetMarker i ComposableOpenTarget, które umożliwiają kompilowanie raportowania czasu, gdy funkcja kompozycyjna jest wywoływana w celu kierowania na aplikację, do której nie została zaprojektowana.

    W większości przypadków adnotacje mogą zostać wywnioskowane przez wtyczkę kompilatora compose, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Przypadki, których nie można wywnioskować, obejmują tworzenie i używanie niestandardowych aplikacji, abstrakcyjnych funkcji kompozycyjnych (takich jak metody interfejsu), pól lub zmiennych globalnych, które są zmiennymi kompozycyjnymi (wywnioskowane są zmienne lokalne i parametry) oraz korzystanie z funkcji ComposeNode lub powiązanych funkcji kompozycyjnych.

    W przypadku aplikacji niestandardowych funkcje kompozycyjne, które wywołują funkcje ComposeNode lub ReusableComposeNode, muszą dodać adnotację CompoableTarget do funkcji i dowolnych typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji z adnotacją ComposableTargetMarker, a następnie użycie oznaczonej adnotacji bezpośrednio zamiast ComposableTarget. Adnotacja kompozycyjna oznaczona za pomocą atrybutu ComposableTargetMarker jest odpowiednikiem ComposbleTarget z pełną i jednoznaczną nazwą klasy atrybutu jako parametru stosującego. Przykład użycia właściwości ComposableTargetMarker znajdziesz tutaj: anroidx.compose.ui.UiComposable. (I38f11)

Poprawki błędów

  • Teraz można przekazywać ujemne przesunięcia przewijania do funkcji LazyGridState.scrollToItem() i LazyGridState.animateScrollToItem(). (I025c6, b/211753558)
  • Obsługują asynchroniczne wczytywanie czcionek w TextField. (Icc4bf, b/214587005)

Wersja 1.2.0-alfa03

9 lutego 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-alpha03 i androidx.compose.foundation:foundation-layout:1.2.0-alpha03. Wersja 1.2.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Metody notifyFocusedRect w TextInputSession i TextInputService zostały wycofane i nie będą wywoływane. Użyj w zamian pola BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Animacje zostały włączone dla elementów leniwego siatki z funkcją Modifier.animateItem Placement(). (Ib6621, b/211753218)
  • BringIntoViewRequester przekazuje teraz żądania do hostowanego widoku Androida. (Ia7a51)
  • FontFamilyResolver jest teraz dostępny w LocalFontFamilyResolver.current
    • Dodano znaczniki createFontFamilyResolver(context) i createFontFamilyResolver(context, coroutineScope), aby umożliwić tworzenie nowych resolverów FontFamily (niezastosowanych do tworzenia).
    • Akapit i wieloakapit zajmują teraz FontFamily.Resolver
    • Plik TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolver używany w tym układzie, który został wycofany z wersji TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)
  • Dodaliśmy AndroidFont – nowy niskopoziomowy interfejs API do obsługi nowych typów deskryptorów zasobów czcionek na Androidzie. Dotyczy to na przykład wczytywania czcionek z backendu właściwego dla aplikacji, opcjonalnie lokalizowania wstępnie zainstalowanych czcionek na urządzeniu lub wczytywania czcionki z zasobu, który nie jest obecnie dostępny przez fabryki czcionek.
    • Rozwinięto interfejs Font.ResourceLoaded API, aby umożliwić opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy, aby deweloperzy aplikacji używali tego interfejsu API bezpośrednio. Aby dodać nowe typy czcionek, zobacz AndroidFont.
    • Funkcja rozszerzenia Font.AndroidResourceLoader umożliwia utworzenie Font.ResourceLoader poza kompozycją.
    • Do czcionek opartych na zasobach dodaliśmy parametr loadingStrategy, by umożliwić wczytywanie asynchroniczne, gdy czcionka zasobu odwołuje się do pliku XML z czcionkami do pobrania. (Ie5aea, b/174162090)
  • Konstruktor Typeface(FontFamily) został wycofany. Wcześniej było to używane do wstępnego wczytywania czcionek, co mogło zająć do 10 sekund w przypadku czcionek do pobrania. W przypadku czcionek do pobrania to wywołanie może zostać zablokowane na 10 sekund. Zamiast nich używaj elementu FontFamilyResolver.preload.
    • Interfejs fontResource(FontFamily): Typeface został wycofany. Wcześniej było to używane do wstępnego wczytywania czcionek, co mogło zająć do 10 sekund w przypadku czcionek do pobrania. Zamiast tego użyj FontFamilyResolver.preload (If8e7c, b/174162090)
  • Możesz teraz określić typ treści dla elementów LazyVerticalGrid. Funkcje elementów/elementów w LazyGridScope akceptują teraz taki parametr. Podanie takich informacji pomaga w wykorzystywaniu logiki w kompozycji elementów, co zwiększa efektywność jej działania, a jednocześnie umożliwia ponowne wykorzystywanie treści tylko między elementami 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 LazyColumn/LazyRow – funkcje elementów/elementów w LazyListScope akceptują teraz taki parametr. Podanie takich informacji pomaga w wykorzystywaniu logiki w kompozycji elementów, co zwiększa efektywność jej działania, a jednocześnie umożliwia ponowne wykorzystywanie treści tylko między elementami tego samego typu. (I26506)
  • Konstruktor SubcomposeLayoutState akceptujący maxSlotsToRetainForReuse jest teraz przestarzały. Zamiast tego dostępny jest nowy konstruktor akceptujący SubcomposeSlotReusePolicy – nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które przedziały powinny być zachowane do wykorzystania w przyszłości. (I52c4d)
  • Dodaje modyfikatory elementów WindowInsets zarówno do dopełnienia, jak i do rozmiaru. W ten sposób część treści będzie rozszerzać się do obszaru docięcia, ale główna treść pozostanie poza tym obszarem. Na przykład komponent windowInsetsPadding może służyć do wygładzania obszaru treści, co pozwala uniknąć obszarów, które mogą być zakryte w całości lub częściowo. (Id0395, b/213942085)

Poprawki błędów

  • Pola tekstowe będą teraz zachowywane nad klawiaturą, gdy są zaznaczone, a klawiatura jest widoczna, gdy tryb nietrwałego wprowadzania to ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Komputer korzysta z lokalnej kompozycji FontFamily.Resolver
    • Komputer FontLoader został wycofany
    • Nowa fabryka urządzenia createFontFamilyResolver na komputerze (I6bbbb, b/174162090)
  • Typ wprowadzania danych z klawiatury programowej nie migocze przy zmianie zaznaczenia między polami tekstowymi. (I1bf50, b/187746439)
  • Pola tekstowe nie wymagają już dodatkowego kliknięcia przycisku z tyłu, gdy widoczny jest uchwyt kursora. (Ideb4b, b/205726883)
  • Działanie lupy zaznaczenia tekstu zostało dopracowane tak, aby odpowiadało działaniu lupy na platformie. (Idd918, b/206833278)

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-alpha02 i androidx.compose.foundation:foundation-layout:1.2.0-alpha02. Wersja 1.2.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano NonRestartableComposable do metod, które przeciążają istniejące metody bez złożonej logiki. Ogranicza to liczbę kontroli zapamiętanych przez kompilator (równa się) w przypadku wszystkich parametrów powtarzanych w wywoływanej funkcji wewnętrznej. (I90490)
  • Dodano modyfikatory excludeFromSystemGesture ułatwiające dostęp do urządzenia setSystemGestureExclusionRects z Androidem (I46f07)

Poprawki błędów

  • Działanie lupy zaznaczenia tekstu zostało dopracowane tak, aby odpowiadało działaniu lupy na platformie. (Idd918, b/206833278)
  • Kontenery LazyColumn, LazyRow, Modifier.verticalScroll i inne używające pola Modifier.scrollable obsługują teraz przewijanie kółkiem myszy. (I2b5e1, b/198214718)

Wersja 1.2.0-alfa01

12 stycznia 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.2.0-alpha01 i androidx.compose.foundation:foundation-layout:1.2.0-alpha01. Wersja 1.2.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Do usług LazyColumn, LazyRow i LazyVerticalGrid dodano nowy parametr userScrollEnabled, aby umożliwić użytkownikom tymczasowe lub trwałe wyłączenie inicjowanego przez użytkownika przewijania za pomocą gestów dotykowych oraz działań ułatwień dostępu. Przewijanie programowe za pomocą metod dotyczących stanu nadal będzie dozwolone. (I7eae9, b/201150093)
  • Dodaj wywołanie zwrotne funkcji onSizeChanged do modyfikatora powiększenia. (I6879f)
  • Widżet lupy wyświetla się teraz podczas przeciągania uchwytów zaznaczenia w elemencie SelectionContainer. (I30b38, b/139320979)

Poprawki błędów

  • Naprawiono uchwyt kursora TextField, który nie ukrywał się po przewinięciu 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.

Opublikowano androidx.compose.foundation:foundation:1.1.1 i androidx.compose.foundation:foundation-layout:1.1.1. Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

Wersja 1.1.0

9 lutego 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.1.0 i androidx.compose.foundation:foundation-layout:1.1.0. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.0.0

  • Stabilna obsługa efektu sygnalizowania końca przewijania w Androidzie 12.
  • Ulepszenia rozmiaru docelowych elementów dotykowych
  • Pamiętaj, że w przypadku interfejsu Compose 1.0 komponenty Material będą rozszerzały swoją przestrzeń układu, aby spełnić wytyczne dotyczące ułatwień dostępu w zakresie rozmiaru docelowego elementu dotykowego. Na przykład element dotykowy przycisku rozwinie się do minimalnego rozmiaru 48 x 48 dp, nawet jeśli ustawisz jego mniejszy rozmiar. Dzięki temu interfejs Compose Material jest taki sam jak w przypadku komponentów Material Design, co zapewnia spójne zachowanie w przypadku łączenia widoków i tworzenia. Ta zmiana sprawi też, że gdy tworzysz interfejs z użyciem komponentów Compose Material, będą one spełnione minimalne wymagania dotyczące ułatwień dostępu w elementach dotykowych.
  • Stabilna obsługa Nawigacja Rail
  • Przekształcanie wielu wcześniej eksperymentalnych interfejsów API w stabilne
  • obsługa nowszych wersji Kotlin,

Wersja 1.1.0-rc03

26 stycznia 2022 r.

Opublikowano androidx.compose.foundation:foundation:1.1.0-rc03 i androidx.compose.foundation:foundation-layout:1.1.0-rc03. Wersja 1.1.0-rc03 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano do obsługi Material Design w wersji 1.1.0-rc03

Wersja 1.1.0-rc01

15 grudnia 2021 roku

Opublikowano androidx.compose.foundation:foundation:1.1.0-rc01 i androidx.compose.foundation:foundation-layout:1.1.0-rc01. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

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

Wersja 1.1.0-beta04

Grudzień 1, 2021

Opublikowano androidx.compose.foundation:foundation:1.1.0-beta04 i androidx.compose.foundation:foundation-layout:1.1.0-beta04. Wersja 1.1.0-beta04 zawiera te zatwierdzenia.

Nowe funkcje

  • Zaktualizowano w celu zapewnienia zgodności z Kotlin 1.6.0

Zmiany w interfejsie API

  • Wyczyszczono wartość null w zakresie androidx.core.view(I7078a, b/204917439)
  • Dodano eksperymentalne interfejsy API, które umożliwiają wykorzystywanie wartości PointerInputchange w całości lub sprawdzanie, czy zostały wykorzystane. (I2e59d)
  • Wyświetlaj widżet lupy podczas przeciągania kursora lub uchwytów zaznaczania w polach tekstowych. (I5391e, b/203781358)

Poprawki błędów

  • Naprawa nieruchomych uchwytów tekstowych w przypadku zmiany widoczności IME. (I25f2e)

Wersja 1.1.0-beta03

17 listopada 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.1.0-beta03 i androidx.compose.foundation:foundation-layout:1.1.0-beta03. Wersja 1.1.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano obsługę rozpiętości poziomej. (I7e2fa, b/176758183)
  • Dodano eksperymentalną możliwość animowania pozycji elementów na listach leniwych. W obrębie LazyItemScope dostępny jest 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ą LazyListScope.item lub LazyListScope.items, ten modyfikator włączy animacje zmiany kolejności elementów. Oprócz zmiany kolejności elementów animowane będą również wszystkie inne zmiany pozycji spowodowane takimi zdarzeniami jak zmiana układu czy wyrównania. (I59e7b, b/150812265)

Wersja 1.1.0-beta02

3 listopada 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.1.0-beta02 i androidx.compose.foundation:foundation-layout:1.1.0-beta02. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Echo i inne wskaźniki będą teraz opóźnione tylko wtedy, gdy znajdują się w kontenerze Modifier.scrollable(), a nie będą zawsze opóźnione w przypadku zdarzenia wyłączenia. (Ibefe0, b/203141462)
  • Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie żądania do elementów nadrzędnych tak, aby przewijali je i wyświetlili dany element (Ib918d, b/195353459).

Wkład z zewnątrz

  • Dodano Modifier.pointerHoverIcon (I95f01)

Wersja 1.1.0-beta01

27 października 2021 roku

Opublikowano androidx.compose.foundation:foundation:1.1.0-beta01 i androidx.compose.foundation:foundation-layout:1.1.0-beta01. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie żądania do elementów nadrzędnych tak, aby przewijali je i wyświetlili dany element (Ib918d, b/195353459).

Wersja 1.1.0-alfa06

13 października 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.1.0-alpha06 i androidx.compose.foundation:foundation-layout:1.1.0-alpha06. Wersja 1.1.0-alpha06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zastosowano w przypadku Układu przeciążenie bez elementów podrzędnych z większą wydajnością (Ib0d9a).
  • SemanticsNodeInteraction.performSemanticsAction zwraca teraz wartość SemanticsNodeInteraction, która została wywołana przez funkcję. (I9e5db)
  • Dodano element performScrollToNode(matcher: SemanticsMatcher), który umożliwia przewijanie przewijanego kontenera do treści pasującej do podanej funkcji dopasowania. (Ic1cb8)

Wersja 1.1.0-alfa05

29 września 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.1.0-alpha05 i androidx.compose.foundation:foundation-layout:1.1.0-alpha05. Wersja 1.1.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

Poprawki błędów

  • Rozwiązanie problemu z ułatwieniami dostępu w przypadku elementów przewijanych (zarówno leniwych, jak i nieleniwych) w zakresie przewijania (I6cdb0).

Wersja 1.1.0-alfa04

15 września 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.1.0-alpha04 i androidx.compose.foundation:foundation-layout:1.1.0-alpha04. Wersja 1.1.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wycofane funkcje performGesture i GestureScope, które zostały zastąpione przez performTouchInput i TouchInjectionScope. (Ia5f3f, b/190493367)
  • Do elementu SemanticsNode dodano element touchBoundsInRoot, który uwzględnia minimalny rozmiar docelowych elementów dotykowych, aby deweloperzy mogli zagwarantować, że docelowe elementy dotykowe spełniają minimalne wymagania związane z ułatwieniami dostępu. (I2e14b, b/197751214)

Poprawki błędów

  • Na urządzeniach z Androidem 12 dodaliśmy obsługę rozszerzonego przewijania. (Iccf3c, b/171682480)

Wersja 1.1.0-alfa03

1 września 2021 roku

Opublikowano androidx.compose.foundation:foundation:1.1.0-alpha03 i androidx.compose.foundation:foundation-layout:1.1.0-alpha03. Wersja 1.1.0-alpha03 zawiera te zatwierdzenia.

Nowe funkcje

  • Zaktualizowano element Tworzenie 1.1.0-alpha03, aby bazował na Kotlin 1.5.30. (I74545)

Zmiany w interfejsie API

  • Dodano efekt poświaty podczas przewijania. Dodano nowy, eksperymentalny interfejs API Over ScrollConfiguration, który umożliwia konfigurację efektu wizualnego sygnalizowania końca przewijania. Aby wyłączyć efekt dalekiego przewijania, podaj wartość null. (I0c304, b/171682480)
  • AwaitPointerEventScope ma teraz funkcje withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Dodano metodę testową, która pozwala uzyskać obcięte progi. (I6b28e)
  • Do klasy ViewConfiguration dodaliśmy minimalny rozmiar docelowego elementu dotykowego, który można wykorzystać w semantyce i wprowadzaniu wskaźnika w celu zapewnienia dostępności. (IE861c)

Wersja 1.1.0-alfa02

18 sierpnia 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.1.0-alpha02 i androidx.compose.foundation:foundation-layout:1.1.0-alpha02. Wersja 1.1.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

Wersja 1.1.0-alfa01

4 sierpnia 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.1.0-alpha01 i androidx.compose.foundation:foundation-layout:1.1.0-alpha01. Wersja 1.1.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zaktualizowano metodę DrawScope#drawImage, która używa prostokątów źródłowych i docelowych w celu korzystania z opcjonalnego parametru FilterQuality. Jest to przydatne w przypadku grafiki pikselowej, która po skalowaniu ma być pikselowana. Zaktualizowano narzędzie BitmapPainter i obraz kompozycyjny, aby aktywowało też opcjonalny parametr FilterQuality (Ie4fb0, b/180311607).
  • Pole tekstowe usuwa teraz zaznaczenie po naciśnięciu przycisku Wstecz, co odpowiada działaniu funkcji EditText w Androidzie. (I3ca16, b/174173645)
  • Dodaj uchwyt kursora. (I07a82, b/173016579)

Poprawki błędów

  • Przewijanie za pomocą działań semantycznych w przypadku komponentów leniwego przewijania i komponentów zwykłego przewijania jest teraz animowane (Id9066, b/190742024).

Wkład z zewnątrz

  • Funkcja LazyVerticalGrid akceptuje teraz zarówno parametry układu w poziomie, jak i w pionie. (If9c92)

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.5 i androidx.compose.foundation:foundation-layout:1.0.5. Wersja 1.0.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięto problem ze śledzeniem awarii w przypadku instancji pochodnej klasy. (Aosp/1792247)

Wersja 1.0.4

13 października 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.4 i androidx.compose.foundation:foundation-layout:1.0.4. Wersja 1.0.4 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano w celu dopasowania do Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.3 i androidx.compose.foundation:foundation-layout:1.0.3. Wersja 1.0.3 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano w celu dopasowania do Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

Opublikowano androidx.compose.foundation:foundation:1.0.2 i androidx.compose.foundation:foundation-layout:1.0.2. Wersja 1.0.2 zawiera te zatwierdzenia.

Zaktualizowano, aby obsługiwać wersję 1.0.2 tworzenia wiadomości. Funkcja Utwórz 1.0.2 jest nadal zgodna z Kotlinem 1.5.21.

Wersja 1.0.1

4 sierpnia 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.1 i androidx.compose.foundation:foundation-layout:1.0.1. Wersja 1.0.1 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano zgodnie z kotlinem 1.5.21.

Wersja 1.0.0

28 lipca 2021 roku

Opublikowano androidx.compose.foundation:foundation:1.0.0 i androidx.compose.foundation:foundation-layout:1.0.0. Wersja 1.0.0 zawiera te zatwierdzenia.

Główne funkcje wersji 1.0.0

To jest pierwsza stabilna wersja funkcji Compose. Więcej informacji znajdziesz na oficjalnym blogu dotyczącym wydania wiadomości.

Znane problemy

  • Jeśli używasz Androida Studio Bumblebee Canary 4 lub AGP 7.1.0-alpha04/7.1.0-alpha05, może wystąpić ta awaria:

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

    Aby rozwiązać ten problem, tymczasowo zwiększ wartość minSdkVersion do poziomu 24+ w pliku build.gradle. Ten problem zostanie rozwiązany w następnej wersji Androida Studio Bumblebee i interfejsu API 7.1. (b/194289155)

Wersja 1.0.0-rc02

14 lipca 2021 roku

Opublikowano androidx.compose.foundation:foundation:1.0.0-rc02 i androidx.compose.foundation:foundation-layout:1.0.0-rc02. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.

  • Zaktualizowaliśmy renderowanie obramowań dla kształtów ogólnych, aby rozwiązać problemy ze ścieżkami zdefiniowanymi o stałych wymiarach. (Aosp/1748871, b/191817116)

Wersja 1.0.0-rc01

1 lipca 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.0-rc01 i androidx.compose.foundation:foundation-layout:1.0.0-rc01. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Canvas obsługuje teraz parametr contentDescription związany z ułatwieniami dostępu. (Ib547c)

Poprawki błędów

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

Wersja 1.0.0-beta09

16 czerwca 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.0-beta09 i androidx.compose.foundation:foundation-layout:1.0.0-beta09. Wersja 1.0.0-beta09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Czcionka ManualFrameClock została usunięta. Jeśli chcesz sterować animacjami, użyj interfejsu composeTestRule.mainClock. (I3c3e8, b/189951065)
  • zmień rolę wyliczenia i LiveRegionMode na klasy wbudowane z prywatnym konstruktorem (Id1890)
  • Wielkie litery z klawiatury są przekształcane w klasy wbudowane. (Id5a1c).
  • Wartość TextOverflow została zmieniona na klasę wbudowaną. (I433af)

Poprawki błędów

  • Gdy określisz unikalne klucze dla elementów LazyColumn/Row, pozycja przewijania będzie zachowywana na podstawie klucza. Oznacza to, że jeśli dodasz lub usuniesz elementy przed obecnie widocznym elementem, element z danym kluczem zostanie zachowany jako pierwszy widoczny. (Id263f, b/184257857)
  • Najważniejsze stałe stałe to obecnie @ExperimentalComposeUiApi. Wykorzystanie kodu może zadeklarować stałe prywatne przed stabilizacją. (Ia5d48)
  • Do reguły AndroidComposeTestRule dodano funkcję IdlingStrategy, której można używać przez testowanie platform do instalowania alternatywnego mechanizmu, który będzie czekać lub osiągnąć uśpienie. Użyj AndroidComposeTestRule.setIdlingStrategyFactory(), zanim test rozpocznie instalację własnej strategii. (I608fa)

Dodane reguły profilu

Ta wersja dodaje reguły profilu do tych modułów tworzenia wiadomości (I14ed6):

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

Co to są reguły profilu?

  • Reguły profilu biblioteki są określone w pliku tekstowym baseline-prof.txt znajdującym się w katalogu src/main lub podobnym. Każda reguła jest podana w pliku w oddzielnym wierszu. W tym przypadku reguła jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART zrozumiałego dla człowieka, który jest używany podczas korzystania z funkcji adb shell profman --dump-classes-and-methods .... Reguły te mogą mieć 2 formy kierowania na metody lub klasy.

  • Reguła metody będzie miała następujący wzorzec:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Reguła dotycząca klasy będzie miała następujący wzorzec:

    <CLASS_DESCRIPTOR>
    
  • <FLAGS> to co najmniej jeden ze znaków H, S i P wskazujący, czy ta metoda ma być oznaczona jako „Hot”, „Startup” lub „Post Startup”.

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

  • <METHOD_SIGNATURE> to podpis metody, który zawiera nazwę, typy parametrów oraz zwracane typy metody. Na przykład metoda fun isPlaced(): Boolean na LayoutNode ma podpis isPlaced()Z.

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

Jaką rolę pełnią reguły?

  • Metoda z flagą H wskazuje, że jest to metoda „gorąca” i należy ją skompilować z wyprzedzeniem.

  • Metoda z flagą S wskazuje, że jest ona wywoływana podczas uruchamiania i powinna zostać skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretowania jej podczas uruchamiania.

  • Metoda z flagą P wskazuje, że jest wywoływana po uruchomieniu.

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

Jak to działa?

  • Biblioteki mogą definiować te reguły, które zostaną spakowane do artefaktów AAR. Gdy zostanie utworzona aplikacja, która zawiera te artefakty, reguły te są scalane, a scalone reguły są wykorzystywane do stworzenia kompaktowego binarnego profilu ART specyficznego dla danej aplikacji. ART może wykorzystać ten profil, gdy aplikacja jest zainstalowana na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji w celu zwiększenia wydajności aplikacji, zwłaszcza jej 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.

Opublikowano androidx.compose.foundation:foundation:1.0.0-beta08 i androidx.compose.foundation:foundation-layout:1.0.0-beta08. Wersja 1.0.0-beta08 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wyliczenie Nested ScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
  • Zrefaktoryzowano przypadki użycia wyliczenia w klasach wbudowanych, aby uniknąć problemów z wyczerpywaniem ich zakresu przy dodawaniu nowych wartości enum. (I2b5eb)
  • Dodaje czas oczekiwania na kliknięcie do przełączania, aby zapobiec wyświetlaniu zmarszczek podczas przewijania lub przeciągania (Ia2704, b/168524931)
  • Właściwości ContentDescription i semantyka tekstu nie są już pojedynczymi wartościami, tylko listami. Dzięki temu można je scalić w takiej postaci, w jakiej są, zamiast konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które pozwalają wykorzystać te zmiany (Ica6bf, b/184825850).
  • Interfejs Modifier.focusModifier() został wycofany i zastąpiony przez komponent Modifier.focusTarget() (I6c860)
  • Lista w polu KeyboardType została zastąpiona klasą w tekście. (I73045, b/187055290)
  • Zastąpiono wyliczenie FocusState interfejsem FocusState (Iccc1a, b/187055290).
  • Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
  • AnnotatedString.withAnnotation to teraz ExperimentalTextApi, a nie ExperimentalComposeApi. (I0cd0a)
    • Konstruktor TextUnit o typie TextUnitType jest teraz nazywany ExperimentalTextApi zamiast ExperimentalComposeApi.
  • Wartość PaddingValues ma teraz wartość @Stable, a nie @Immutable (I88c50)

Poprawki błędów

  • Naprawianie awarii spowodowanych przytrzymaniem pustego obszaru w tekście. (I33ab5, b/187437299)
  • Pokaż pasek narzędzi po wybraniu opcji SelectAll (I495d9, b/185919613)
  • Poprawiono przewijane kontenery przycinające elementy podrzędne na osi krzyżowej. Łatwo było go odtworzyć, jeśli masz leniwy wiersz z elementami na karcie. Teraz cień nie zostanie przycięty. (Icb635, b/186318448)
  • Naprawiono błąd, który powodował, że oderwy lub inne oznaczenia zatrzymywały się po długim kliknięciu podczas korzystania z interfejsu Modifier.combinedClickable (I2298c, b/186223077)
  • Teraz detectDragGesures, detectVerticalGestures i detectHorizontalGestures automatycznie przejmują zmianę pozycji, nie trzeba wywoływać funkcji change.consumePositionChange w wywołaniach zwrotnych onDrag (I42fc4, b/185096350, b/187320697)
  • Parametr Modifier.onGloballyPositioned() został zmieniony tak, by raportować współrzędne tego modyfikatora w łańcuchu modyfikatora, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że teraz kolejność modyfikatorów wpływa na to, jakie współrzędne będą raportowane. (Ieb67d, b/177926591)

Wersja 1.0.0-beta07

18 maja 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.0-beta07 i androidx.compose.foundation:foundation-layout:1.0.0-beta07. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Kolejna widoczna logika wstępnego pobierania elementów została wprowadzona w przypadku LazyColumn/Row (I8a4bc, b/184940225).
  • Dodano uchwyt wyboru klipu (Iff80d, b/183408447)

Poprawki błędów

  • LazyColumn/Row zachowa teraz maksymalnie 2 widoczne wcześniej elementy (nie wyrzucone), nawet jeśli zostaną już przewinięte. Dzięki temu komponent może ponownie wykorzystywać aktywne kompozycje podrzędne, gdy trzeba utworzyć nowy element, który zwiększa szybkość przewijania. (IE5555)
  • Usuń paintBackground. (I38660)
  • Narysuj tło zaznaczenia za pomocą aplikacji DrawScope. (I73c61, b/186674472)
  • Została naprawiona regresja w wersji beta06 wpływająca na wiersz/kolumnę korzystającą z rozmieszczenia odstępu SpacedBy z elementami podrzędnymi ważonymi w układzie. (Ifaf8c, b/187326588)

Wersja 1.0.0-beta06

5 maja 2021 roku

Opublikowano androidx.compose.foundation:foundation:1.0.0-beta06 i androidx.compose.foundation:foundation-layout:1.0.0-beta06. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Rozwiąż konflikt gestu nawigacji (I1145e)
  • Dodaliśmy interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które pozwalają oznaczać kolekcję i jej elementy na potrzeby usług ułatwień dostępu (Id54ef, b/180479017).
  • Dodano element SemanticsActions.ScrollToIndex, aby przewijać listę ze zindeksowanymi elementami do elementu o określonym indeksie oraz SemanticsProperties.IndexForKey, aby pobierać indeks elementu na liście z elementami oznaczonymi jako kluczem. Oba działania są zaimplementowane za pomocą LazyList.
    • Dodano element SemanticsNodeInteraction.performScrollToIndex, który przewija listę do danego indeksu, i SemanticsNodeInteraction.performScrollToKey, który przewija listę do elementu o danym kluczu. (I4fe63, b/178483889, b/161584524)
  • Obsługa zapisu AdnotatedString w TextFieldValue.Saver. Do elementu AnnotatedString.Builder (I8cbdc, b/178446304) dodano funkcje narzędziowe addTtsAnnotation i Adnotation
  • Domyślne wartości parametrów 0.dp zostały dodane do: PaddingValues(horizontal, vertical) (I05571, b/181336792)

Poprawki błędów

  • Elementy podrzędne wierszy i kolumn z wartością weight(fill = false) nie wypełniają już całej dostępnej przestrzeni osi głównej. (Ied94d, b/186012444, b/184355105)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.0-beta05 i androidx.compose.foundation:foundation-layout:1.0.0-beta05. Wersja 1.0.0-beta05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

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

Poprawki błędów

  • Naprawiliśmy czynności związane z przewijaniem ułatwień dostępu w usługach ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight i accessibilityActionScrollDown. Zamiast przewijania do końca przewijany będzie teraz o jeden ekran w danym kierunku. (Ieccb0)
  • Pliki AndroidManifest z elementów 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.

Opublikowano androidx.compose.foundation:foundation:1.0.0-beta04 i androidx.compose.foundation:foundation-layout:1.0.0-beta04. Wersja 1.0.0-beta04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmień nazwy ukrywań SoftwareKlawiatura i show SoftwareList na kontrolerze SoftwareKeyboardController na odpowiednio hide() i show().
    • Udostępniaj pełny interfejs CompositionLocal na kontrolerze lokalnego oprogramowania klawiaturowego, umożliwiając jego skonfigurowanie (przydatne zwłaszcza w testach) (I579a6).
  • Przedstawiamy TextOverflow.Visible. (Ic8f89)
  • Publiczne instancje RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope zostały usunięte. (I4e83e, b/181869067)

Poprawki błędów

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

    Podsumujmy ten przykład:

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

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

Wersja 1.0.0-beta03

24 marca 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.0-beta03 i androidx.compose.foundation:foundation-layout:1.0.0-beta03. Wersja 1.0.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Interfejs DefaultMonotonicFrameClock został wycofany. Połączenie z numerem withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez użycia danych MonotonicFrameClock spowoduje błąd 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.

Opublikowano androidx.compose.foundation:foundation:1.0.0-beta02 i androidx.compose.foundation:foundation-layout:1.0.0-beta02. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano wiele małych optymalizacji w logice pomiarowej LazyColumn (Ic6889).
  • Dodano nowy lokalny interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKeyboardController w TextField. (I5951e, b/168778053)
  • Dodano nowy lokalny interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKeyboardController w TextField. (I84472, b/168778053)

Poprawki błędów

  • Egzekwuj ograniczenia dotyczące publicznego użytkowania eksperymentalnych interfejsów API (I6aa29, b/174531520)

Wersja 1.0.0-beta01

24 lutego 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.0-beta01 i androidx.compose.foundation:foundation-layout:1.0.0-beta01. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

To jest pierwsza wersja beta funkcji tworzenia wiadomości w wersji 1.0.0.

Zmiany w interfejsie API

  • Dodano wywołanie zwrotne onStart do numeru detectDragGestures (I67269, b/179995594)
  • Modyfikatory rozmiaru dla jednostek wewnętrznych nie są już eksperymentalne. (I15744)
  • Usunięto asercje dp (I798d2)
  • Ze wszystkich pól tekstowych usunęliśmy wywołanie zwrotne SoftwareKeyboardController. Wkrótce zastąpimy je nowym interfejsem API. (Iae869, b/168778053)
  • Nazwa MeasureBlocks została zmieniona na MeasurePolicy, dzięki czemu stała się ona ciekawym interfejsem. Interfejsy Layout API zostały zaktualizowane lub uproszczone, tak aby można było używać MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • Element InteractionState został zastąpiony elementem [Mutable]InteractionSource
    • Interfejsy odpowiadają za generowanie / zbieranie zdarzeń interakcji.
    • Zamiast przekazywać atrybut interactionState = remember { InteractionState() } do komponentów takich jak Button i Modifier.clickable(), użyj interactionSource = remember { MutableInteractionSource() }.
    • Zamiast Interaction.Pressed in interactionState używaj funkcji rozszerzenia InteractionSource, takich jak InteractionSource.collectIsPressedAsState().
    • W złożonych przypadkach użycia możesz użyć funkcji InteractionSource.interactions, aby obserwować strumień 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 w przypadku właściwości positionInParent i boundsInParent (I580ed, b/169874631, b/175142755)
  • Utworzono nowe TextInputSession na potrzeby sesji wejściowych z komponentów tekstowych niskiego poziomu, takich jak CoreTextField. (I8817f, b/177662148)
  • Element Placeable umieszcza teraz MeasurementSize, czyli rozmiar, do którego zmierzył układ podrzędny. Ten rozmiar może nie spełniać ograniczeń dotyczących pomiarów. (Ib2729, b/172560206, b/172338608)
  • Dodaj modyfikator selectGroup, który umożliwia oznaczenie kolekcji kart lub opcji na potrzeby ułatwień dostępu (Ie5c29).
  • Dodaj LazyListState.animate ScrollToItem

    Ta metoda umożliwia płynne przewijanie do konkretnego elementu na liście. (I4bfd7)

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

  • Mój modyfikator.transformable został zastąpiony przez modyfikator.zoomable. Funkcja smoothPanBy została dodana jako funkcja smoothRotationBy. (Ifc32b, b/175294473)

  • Pole defaultFactory dla właściwości compositionLocalOf i staticCompositionLocalOf jest teraz wymagane zamiast opcjonalnego.

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

    W przypadku typów z wartością null rozważ podanie { null } jako domyślnej fabryki.

    Nie zalecamy używania lokalnych z typami bez wartości null, chyba że możesz podać rozsądną wartość domyślną. Jeśli nie ma żadnej rozsądnej wartości domyślnej, lambda defaultFactory powinna zgłosić wyjątek. Złożenie wyjątku oznacza jednak, że konsumenci będą pośrednio zależnić od jego podania, który nie jest egzekwowany przez system typów. (Ifbd2a)

  • Zmieniono Indication#createIndication() na Indication#rememberUpdatedIndication(InteractionState) i usunięto InteractionState parametr z IndicationInstance#drawIndication(). IndicationInstance powinna być odpowiedzialna tylko za rysowanie efektów wizualnych i nie uruchamianie animacji / stanu zapisu w odpowiedzi na zmiany InteractionState. Te animacje i zapisy stanu powinny odbywać się w obrębie rememberUpdatedIndication(). Parametr indication w obiekcie Modifier.indication również został zmieniony na parametr wymagany. (Ic1764, b/152525426)

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

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

  • Pozycja przewijania w funkcji Modifier.vertical Scroll()/horizontal Scroll() jest teraz reprezentowana przy użyciu funkcji Ints (I81298).

  • Zmieniono pakiety metod smooth ScrollBy i ScrollBy na androidx.compose.foundation.gestures.* (I3f7c1, b/175294473)

  • Nazwa FlingConfig została zmieniona na FlingBehavior, co pozwala na dostosowanie animacji zawieszenia zamiast wstępnie zdefiniowanego rozpadu. (I02b86, b/175294473)

  • Zmieniono nazwę modyfikatorów rozmiaru. Nazwa parametru Modifier.width/height/size została zmieniona na requiredwidth/requiredHeight/requiredSize. Nazwa parametru Modifier.preferredWidth/preferredHeight/preferredSize została zmieniona na szerokość/wysokość/rozmiar. (I5b414)

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

  • Element Modifier.tapgesFilter został usunięty. Użyj w zamian zasady Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

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

  • Orientacja została przeniesiona do pakietu podstawowych. Usługa VelocirtTracker została przeniesiona z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)

  • Podklasy AnimationClockObservable zostały usunięte. Usunięto Animację. (Icde52, b/177457083)

  • Funkcje panelerState.open() i panelerState.close() powodują teraz zawieszenie funkcji. Użyj funkcji saveCoroutineScope(), aby uzyskać zakres kompozycji, aby ją wywołać (I16f60, b/175294473)

  • Nazwa dostawców została zmieniona na CompositionLocalProvider

    • Konstruktor kompozycji nie akceptuje już parametru klucza i został wycofany.
    • Element 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
    • Obiekt ComposableLambda został przekształcony w interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
    • Obiekt ComposableLambdaN został przekształcony w interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
    • Funkcja zrzutFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
    • Metoda scalania SnapshotMutationPolicy nie jest już eksperymentalna
    • Funkcja ClearRoots najwyższego poziomu @TestOnly została usunięta. Nie jest już potrzebna.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Element Composer.collectKeySourceInformation został usunięty. Nie jest już potrzebna.
    • Metody isJoinedKey,joinKeyLeft i joinKeyRight zostały usunięte. Nie są już potrzebne.
    • Różne interfejsy API najwyższego poziomu zostały przeniesione i uporządkowane w różne pliki. Ze względu na semantykę klasy plików stosowanej przez Kotlin powoduje to przerwanie zgodności plików binarnych, ale nie zgodności ze źródłem. U większości użytkowników nie powinno to stanowić problemu.
    • (I99b7d, b/177245490)
  • Ulepszyliśmy funkcję Modifier.scrollable. Teraz zamiast klasy ScrollableController używa interfejsu ScrollableControl (I4f5a5, b/174485541, b/175294473).

  • Modifier.draggable akceptuje teraz element DraggableState zamiast prostego obiektu lambda. Możesz utworzyć stan za pomocą rememberDraggableState { delta -> }, by uzyskać takie samo działanie jak wcześniej (Ica70f, b/175294473)

  • Aby określić wymagany rozmiar zgodnie z rozmiarem wewnętrznym, dodano modyfikatory requiredWidth(IntrinsicSize) i requiredHeight(IntrinsicSize). (I0a6b4)

  • Wycofane komponenty typu emptyContent() zostały usunięte. Użyj w zamian zasady {}. (Idb33f, b/179432510)

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

Poprawki błędów

  • Dodano nowy lokalny interfejs API kompozycji Local SoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKeyboardController w polu TextField. (I658b6, b/168778053)

Wersja 1.0.0-alfa12

10 lutego 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.0-alpha12 i androidx.compose.foundation:foundation-layout:1.0.0-alpha12. Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Modifier.pointerInput wymaga teraz zapamiętania klawiszy, aby wskazać, kiedy powinna ponownie uruchomić się sterownik wykrywania danych wejściowych wskaźnika w przypadku nowych zależności. (I849cd)
  • Testowanie aktualizacji: funkcja hasText() sprawdzi zarówno dane wejściowe, jak i tekst etykiety, podpowiedzi/zastępczego tekstu w polu tekstowym (Iab803).
  • Dodano element PaddingValues.Bezwzględne i można go używać w interfejsach API obsługujących wartość PaddingValues. (Ia5f30)
  • Funkcja onImeActionPerformed została wycofana. Zamiast niej użyj KeyboardActions (If0bbd, b/179071523)
  • Aby zapewnić lepsze dopasowanie do konwencji nazewnictwa w formatach ImageBitmap i ImageVector, nazwa ImagePainter została zmieniona na BitmapPainter. (Iba381, b/174565889)
  • Lepsze interfejsy API do testowania podłańcuchów z podłańcuchem jako argumentem (Icbe78)
  • Wprowadziliśmy element kontekstu współużytkowania InfiniteAnimationPolicy, który będzie stosowany w nieskończonych animacjach. Domyślnie nie są zainstalowane żadne zasady z wyjątkiem testowania przy użyciu ComposeTestRule. (I50ec4, b/151940543)
  • Animatable.snapTo i Animatable.stop to teraz funkcje zawieszania (If4288).
  • Komponent KomponentActivity.setContent został przeniesiony do strony androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
  • Metody niszczenia struktury i metody copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
  • Dodano obsługę kluczy niestandardowych w przypadku LazyColumn i LazyRow. Dzięki temu możemy sprawniej zarządzać kolejnością produktów. Jeśli więc zmienisz kolejność elementów lub usuniesz element ze środka, stan zapisany w blokach {} będzie przesuwał się razem z elementem.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Zmieniono wartość Indication#createInstance na @Composable i zmieniono element LocalIndication tak, aby zawierał wskazanie, a nie () -> Indication. (I5eeea, b/157150564)

  • Pole Constraints.enforce zostało zastąpione przez Constraints.constrain. (I8b8ea)

  • Funkcja loadFontResource została wycofana. Użyj interfejsu fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj elementu paintterResource. (I6b809)

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

  • Dodano semantyka EditableText wskazującą edytowalny tekst wejściowy w polu tekstowym na potrzeby ułatwień dostępu oraz odpowiadające im metody testowe do sprawdzania semantyki (I8e07a).

  • Modifier.clickable nie obsługuje teraz podwójnego i długiego kliknięcia. Aby korzystać z tej funkcji, użyj parametru 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)

  • Funkcja Modifier.draggesFilter została wycofana. Użyj w zamian zasady Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć metody Modifier.draggable dla jednej osi przeciągnięć (I0ba93, b/175294473)

  • Zmieniono nazwy trybu Ambients, aby dopasować je do nazwy Ambient -> CompositionLocal. Oświetlenie nazywane wcześniej AmbientFoo, teraz CompositionLocals to LocalFoo. (I2d55d)

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

  • Podobnie jak w przypadku wcześniejszego usunięcia funkcji state { 0 } z funkcji kompozycyjnej, a teraz promujemy korzystanie z funkcji takiej jak remember { mutableStateOf(0) }, usuniemy właściwość savedInstanceState { 0 }. Użyj zamiast niego metody rememberSaveable { mutableStateOf(0) }. Zapisze ona i przywróci automatycznie, jeśli typ używany w obrębie MutableState może zostać zapisany w pakiecie. Jeśli wcześniej przekazywano niestandardowy obiekt oszczędzania, teraz musisz użyć nowego przeciążenia elementów saveSaveable, które zawiera parametr stateSaver. Użycie będzie wyglądać tak: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • Dodano semantyka haseł na potrzeby ułatwień dostępu (I231ce).

  • Dodano element ProgressBarRangeInfo.Indeterminate, aby oznaczać nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05).

  • Czas odtwarzania animacji jest teraz ograniczony do nanosekund (If776a)

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

    Rozszerzenie @ComposableContract(restartable = false) zmieniło się w @NonRestartableComposable. @ComposableContract(readonly = true) zmieniło się w @ReadOnlyComposable @ComposableContract(preventCapture = true) zostało zmienione na @DisallowComposableCalls @ComposableContract(tracked = true) zostało usunięte. (I60a9d)

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

  • Narzędzie do tworzenia kopii zapasowych można teraz zamknąć. Zamknięte narzędzia do rekompozycji będą kontynuowane do momentu ukończenia komponowania podrzędnych współużytkowań. Nazwa Recomposer.shutDown została zmieniona, aby anulować i kontrastować z zamknięciem. (Ib6d76)

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

  • Nazwa parametru saveCacheState() została zmieniona na zapamiętajSaveable() i została przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)

  • Nazwa RestorableStateHolder została zmieniona na SaveableStateHolder i została przeniesiona do pakietu androidx.compose.runtime.saveable. Nazwa metody wewnętrznej RestorableStateProvider została zmieniona na SaveableStateProvider. Typ ogólny został usunięty, więc można po prostu przekazywać dowolne elementy jako klucz. Adnotacja eksperymentalna nie jest już potrzebna. (I0902e, b/174598702)

  • Oszczędzanie, listSaver(), mapSaver(), autoSaver zostało przeniesione 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 wycofanych od dawna interfejsów API z pakietu UI zostało usuniętych. (I2f2dc)

  • Artefakt compose:runtime-dispatch został wycofany. Element MonotonicFrameClock można teraz znaleźć w komponencie compose:runtime, a AndroidUiDispatcher – w kompozycji:ui. (Ib5c36)

  • Zmieniono nazwę parametrów w atrybutach RounderCornerkształt, CutCornerkształt i CornerBasedCharacter z lewej/prawej na początek/koniec. Umożliwiono obsługę automatycznego odbicia lustrzanego kształtu w kierunku RTL. Na potrzeby sytuacji, w których automatyczne odbicie lustrzane nie jest pożądane, wprowadziliśmy funkcje absolutrounderCornerkształt i obiekty absolutneCornerkształty. (I61040, b/152756983)

  • Element canDrag został usunięty z interfejsu Modifier.scrollable. (Id66e7, b/175294473)

  • Interfejs API, na który kierowana jest wtyczka kompilatora Compose, został refaktoryzowany tak, aby używał interfejsu zamiast konkretnej klasy. Interfejs nie używa już parametru typu.

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

  • Usunięto element Modifier.scaleGeFilter. Użyj interfejsu Modifier.zoomable. Możesz też użyć właściwości Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473).

  • Wycofaliśmy funkcjęAnimationValue/Float. Użyj tej wersji. (I71345, b/177457083)

    • Usunięto CoreText i CoreTextField z publicznego interfejsu API
    • Usunięto wycofane przeciążenie SelectionContainer (I99c19).
  • Usunięcie wycofanych niezawieszonych funkcji przewijania Po wprowadzeniu zmian w poprzedniej wersji wszystkie funkcje przewijania niezawieszone są teraz całkowicie usuwane. Przejdź na funkcje zawieszania o tych samych nazwach. Zakres współużytkowania można uzyskać za pomocą funkcji rememberCoroutineScope() (I3d39c, b/178169563)

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

  • Metody tapGeFilter, doubleTapGeFilter, longPressGeFilter i PressIndicaitongesFilter zostały wycofane. Użyj zamiast tego funkcji Modifier.clickable lub Modifier.pointerInput z funkcjądetectTapgess. (I6baf9, b/175294473)

  • Czcionka Recomposer.current() została usunięta. [Abstract]ComposeView teraz domyślnie ustawia się na leniwe tworzenie obiektu Recomposers o zakresie na poziomie okna, które są wywoływane przez zasadę ViewTreeLifecycleOwner w przypadku okna. Zmiana kompozycji i znaczniki animacji oparte na ramceNanos są wstrzymywane, gdy cykl życia hosta jest zatrzymywany. (I38e11)

  • Funkcja Recomposer.runningRecomposers oferuje teraz globalny przepływ stanu kompozycji (tylko do odczytu) obiektu RecomposerInfo, który umożliwia obserwowanie ciągłego stanu kompozycji w trakcie tego procesu. Wolę ten interfejs API niż Recomposer.current(), który został już wycofany. (If8ebe)

Wersja 1.0.0-alfa11

28 stycznia 2021 roku

Opublikowano androidx.compose.foundation:foundation:1.0.0-alpha11 i androidx.compose.foundation:foundation-layout:1.0.0-alpha11. Wersja 1.0.0-alpha11 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wycofaj niezawieszone przewijanie ScrollBy, usuń niezawieszone ScrollTo

    Obecnie zalecamy używanie funkcji zawieszania do sterowania przewijaniem i poczekania na jego zakończenie. W ramach tego procesu wycofujemy lub usuwamy niezawieszone wersje tych funkcji. (E9ced)

  • Wycofaj funkcję smooth ScrollBy, która nie zawiesza się, zalecamy używanie funkcji zawieszania do sterowania przewijaniem i oczekiwania na zakończenie przewijania. W ramach tej zmiany wycofujemy ich wersje, które nie są zawieszone. (I12880)

  • Do obrazu i ikony dodano parametr Opis treści. Jest używany do dodawania opisu do usług ułatwień dostępu (I2ac4c).

  • Usługa BasicTextField otrzymała nowy parametr o nazwie „decorationBox”. Pozwala dodać dekoracje, takie jak ikony, symbole zastępcze, etykiety i podobne do pola tekstowego, i zwiększyć jego docelowy obszar działania. (I16996)

  • Usunięto parametr canDrag z pliku Modifier.draggable (Ic4bec, b/175294473)

  • Plik animacjaAnimationFloat.fling, który akceptuje FlingConfig, został usunięty. Użyj tego kodu zawieszaj Animatable.animateDecay. (I4659b, b/177457083)

  • Użytkownik data class został usunięty z tych zajęć:

    • Zawartość wbudowanego tekstu
    • Lista języków
    • (I605c7)
  • można teraz utworzyć poza kompozycją (I0a130, b/172938345, b/175294473)

  • Kolumna ScrollableColumn/Row została wycofana. Używanie ScrollableColumn jest mniej efektywne w porównaniu z użyciem LazyColumn w przypadku dużych przewijanych treści, ponieważ LazyColumn pozwala tylko tworzyć, mierzyć i rysować widoczne elementy. Aby uchronić użytkowników przed niewydajnym działaniem, zdecydowaliśmy się wycofać elementy ScrollableColumn i ScrollableRow i zamiast nich promować stosowanie LazyColumn i LazyRow. Użytkownicy mogą zdecydować, że nie potrzebują leniwego działania, i używać 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 jeśli ich użyjesz, musisz je zaimportować ręcznie. Nowe przeciążenia rozszerzeń dla tablic: items(items: tablica) i itemsIndexed(Array) (I803fc, b/175562574)

  • Usunięto wycofaną wartość absolutną. (Iffa96, b/177641870)

  • Do usługi Box dodano parametr ProMinConstraints, który umożliwia określenie, czy przychodzące ograniczenia dotyczące wartości minimalnych mają być przekazywane do zawartości pola, czy nie. 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 przez SideEffect oraz DisposableEffect API (If760e)
  • Funkcja WithConstraints została zmieniona na BoxWithConstraints, a następnie przeniesiono ją do Foundation.layout. (I9420b, b/173387208)
  • Zmiany w funkcjach fabrycznych dotyczących czcionek, rodziny czcionek i krojów czcionek

    • dodane funkcje fabryczne rozpoczynające się wielką literą,
    • Wycofane funkcje fabryczne z pierwszymi małymi literami
    • Nowe funkcje fabryczne zwracają FontFamily zamiast podklas,
    • Ukryto konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
    • Nazwa Font.asFontFamily została zmieniona na Font.toFontFamily
    • (I42aa7)
  • Wprowadzono nazwę ComposeContentTestRule, która obejmuje zakres ComposeTestRule i określa nazwę setContent, która została usunięta z ComposeTestRule. Dodano metodę fabryczną createEmptyComposeRule(), która zwraca wartość ComposeTestRule i nie uruchamia dla Ciebie aktywności. Użyj go, gdy chcesz uruchomić swoją aktywność podczas testu, np. używając ActivityScenario.launch (I9d782, b/174472899)

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

  • Gęstość jest teraz zakresem odbiornika dla interfejsów układu. (I18aad).

  • TextFieldValue akceptuje ciąg AnnotatedString. Jest to jednak zmiana związana tylko z interfejsem API, a edycja tekstu w wielu stylach nie została jeszcze wdrożona.

    • Usunięto element initial z parametrów konstruktora EditBuffer. (I326d5)
  • Metody metody invalidate i enterpriseReference() zostały teraz wycofane. Zastąpiły one obecne RecomposeScope i zapamiętaCompositionReference. (I583a8)

  • Parametr AnnotatedString został zmieniony w taki sposób, aby wykraczał poza kotlin.CharSequence. Dlatego też długość i sekwencja podrzędna 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 od tych klas. (Ia33b2, b/175142755, b/177420019)

  • PamiętajObserver zastępuje CompositionLifecycleObserver, a usługa CompositionLifecycleObserver została wycofana.

    RememberObserver zastępuje CompositionLifecycleObserver zmodyfikowaną semantyką i nowymi metodami. Przejście na nowy interfejs API można wprowadzić mechanicznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to i nadal jest zalecane. Jeśli jednak odwołanie zostało zapisane więcej niż raz w kompozycji, funkcja onRemembered jest wywoływana dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. Obiekt onEnter został wywołany wiele razy, jeśli był używany w kompozycjach podrzędnych, takich jak WithConstraints i Scaffold, przez co pojedyncze wywołanie onEnter było niewiarygodne i został usunięty dla RememberObserver.

    RememberObserver dodaje element onAbandoned, który jest wywoływany, jeśli instancja RememberObserver jest zwracana z wywołania zwrotnego przekazanego do remember, ale nie została zapamiętana w stanie kompozycji, dlatego nigdy nie będzie wywoływana onRemembered. Może się tak zdarzyć, gdy wyjątek zakończy kompozycję przed ukończeniem lub zostanie ona odrzucona, ponieważ państwo tworzy kompozycję, która jest już nieaktualna lub z innego powodu nie jest już potrzebna. Jeśli instancja RememberObserver zgodnie z powyższym zaleceniem referencyjnym śledzi zasób zewnętrzny, zarówno onForgotten, jak i onAbandoned oznacza, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte zadania lub zasoby przydzielone w onRemembered, element onAbandoned może zostać zignorowany, ponieważ nie zostanie wywołany po wywołaniu funkcji onRemembered. (I02c36)

  • Nazwa TransformedText.transformedText została zmieniona 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
    • Grubość czcionki
    • Dekoracje tekstu
    • TextGeometricTransform
    • Indeks tekstu
    • WynikUkład tekstu
    • TekstUkład wejściowy (Iaff99)
  • Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374)

  • Wycofaliśmy metody globalnych współrzędnych i wprowadziliśmy nowe metody współrzędnych opartych na oknach. (Iee284)

  • Użyj ImeAction.None zamiast ImeAction.NoAction

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

  • Nazwa elementu SemanticsPropertyLocationr.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. StanOpisRange został zmieniony na progressBarRangeInfo. Nazwa Accessibility ScrollState została zmieniona na ScrollAxisRange. horizontalAccessibility8State ma teraz nazwę leveltal ScrollAxisRange. Zmiana nazwy parametru Accessibility ScrollState na pionowy ScrollAxisRange. (Id3148)

  • Zmieniono VisualTransformation na interfejs funkcjonalny (I3bba4).

  • Wykorzystywanie narzędzia TestCoroutineDispatcher do testowania (I532b6)

  • Usunięto PointerInputData i zmodyfikowano PointerInputChange, aby dać mu wszystkie pola PointerInputData. Stworzono wewnętrzne PointerInputEvent i PointerInputEventData, ponieważ nie są one używane w publicznym interfejsie API. (Ifff97, b/175142755)

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

  • Usuń parametr displaySize, którego należy unikać. Zwykle lepiej jest użyć rozmiaru onRoot() lub co najmniej rozmiaru okna. (I62db4)

Wersja 1.0.0-alfa10

13 stycznia 2021 r.

Opublikowano androidx.compose.foundation:foundation:1.0.0-alpha10 i androidx.compose.foundation:foundation-layout:1.0.0-alpha10. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • ImeOptions i KeyboardOptions nie są już klasą danych (I3c898, b/168684531).
  • Zmiany interfejsu VisualTransformation API
    • Zmieniono nazwę OffsetMap na OffsetMapping
    • Zmieniono nazwę OffsetMapping.identityOffsetMap na OffsetMapping.Identity
    • PasswordTransformation nie jest już klasą danych
    • Przeniesiono OffsetMapping do własnego pliku
    • (I0bdf3)
  • Zmiany interfejsu EditOperations API
    • Nazwa operacji Editoperation została zmieniona na EditCommand
    • Dodano sufiks polecenia do konkretnych implementacji EditOperation.
    • Polecenia EditCommand nie są już klasami danych
    • Nazwa funkcji EditOperation.process została zmieniona na applyTo
    • Zmieniono nazwę elementu FeedEventListener na informacje o funkcji InternalEventCallback
    • (I0a366)
  • Zmodyfikowano prędkość, by uzyskać części składowe i działania matematyczne. (Ib0447)
  • Zmieniliśmy nazwę @ExperimentalTesting na @ExperimentalTestApi, aby zachować spójność z podobnymi eksperymentalnymi adnotacjami interfejsu API (Ia4502, b/171464963).
  • Dodano eksperymentalną metodę stickyHeader w przypadku LazyColumn/LazyRow (I0a81d).
  • Zmieniono nazwę Kolor.useOrElse() na Color.takeOrElse() (Ifdcf5)
  • Wycofano narzędzie TestUiDispatcher. Zamiast niej użyj Dispatchers.Main (Ic171f, b/175385255)
  • Dodaj przełącznik do podstawowych plików Strings.kt (I4a5b7, b/172366489)
  • Przeniesiono klasę natywny do modułu i stan wewnętrzna. Zaktualizowano przypadki użycia natywnej klasy w implementacjach równa się, tak aby zamiast niej używała „is MyClass”. (I4f734)
  • FlowRow i FlowColumn zostały wycofane. Użyj układu niestandardowego. (I09027)
  • Funkcje Modifier.focus() i Modifier.focusRequester() zostały wycofane. Użyj interfejsu Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • Wprowadzono funkcję SelectionRegistrar.notifySelectableChange, aby powiadamiać o aktualizacjach z możliwością wyboru w menedżerze wyboru. (I6ff30, b/173215242)
  • Zmieniono fun Dp.isFinite() na val Dp.isFinite (I50e00)
  • Opcja Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
  • Dodano atrybut isokreślony, nieokreślony i nieokreślony, a także operator orElse dla klas wbudowanych z nieokreśloną stałą. (I93f7b, b/174310811)

Poprawki błędów

  • Nowy interfejs API Animatable oparty na współczynnikach, który zapewnia wzajemne wykluczanie się animacji. Nowa funkcja DecayAnimationSpec do obsługi wielowymiarowych animacji rozkładu (I820f2, b/168014930)
  • Dodano obsługę wyłączonych pól tekstowych i pól tekstowych tylko do odczytu (I35279, b/171040474, b/166478534).
  • Pole animate() jest teraz zastąpione wartością animateAsState(), która zwraca wartość State<T> zamiast T. Zwiększa to skuteczność, ponieważ zakres unieważniania można zawęzić do miejsca, w którym jest odczytywana wartość stanu. (Ib179e)
  • Dodaj interfejs Semantics role API i dodaj Role jako parametr do możliwego do kliknięcia, wyboru i przełączania SemanticsModifier. Zmieniliśmy mechanizm Modifier.progressSemantics, aby mógł on również używać suwaka. (I216cd)
  • Dostęp do natywnego zdarzenia KeyEvent można teraz uzyskać za pomocą polecenia keyEvent.nativeKeyEvent (I87c57, b/173086397).

Wersja 1.0.0-alfa09

16 grudnia 2020 roku

Opublikowano androidx.compose.foundation:foundation:1.0.0-alpha09 i androidx.compose.foundation:foundation-layout:1.0.0-alpha09. Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj interfejs przewijany

    Dzięki temu ScrollState i LazyListState będzie traktowany jako wspólny typ, co pozwala zaimplementować przewijanie niestandardowe w obu typach.

    Ta funkcja przenosi też funkcję smooth ScrollBy do funkcji rozszerzenia w funkcji Scrollable. (I2153b)

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

  • Wycofaliśmy LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego użyj LazyColumn i LazyRow (I5b48c)

  • W przypadku interfejsów API do wprowadzania danych zawieszania wskaźnika zmieniono nazwę HandlePointerInputScope na AwaitPointerEventScope, a handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)

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

  • Usunięto adnotację ExperimentalPointerInput (Ia7a24)

  • Dodano obsługę InteractionState w polach tekstowych. (I61d91)

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

  • Do LazyColumn został dodany parametr układ pionowy. Dla LazyRow został dodany parametr układów poziomych. Układ pozwala nam dodawać odstępy między elementami i określać rozmieszczenie elementów, gdy nie ma ich wystarczająco dużo, by wypełnić cały minimalny rozmiar. (Icf79a, b/170394300)

  • Funkcja wykrywania gestów dotykowych używa teraz jednego wywołania zwrotnego z połączonymi parametrami centrum, przesuwania, powiększania i obracania. (Ie6e1c)

  • Element ContentDrawScope został przeniesiony do modułu ui-graficznego w celu zastosowania DrawScope. (Iee043, b/173832789)

Poprawki błędów

  • Lambda w modyfikatorach przesunięcia zwraca teraz wartość IntOffset, a nie liczbę zmiennoprzecinkową. (Ic9ee5, b/174137212, b/174146755)
  • Usunięto SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Są one teraz dostępne tylko w module tworzenia wiadomości.

    Funkcje CompositionData i CompositionGroup zostały dodane jako zamienniki interfejsu API narzędzi do interfejsu i wykorzystywane do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie powinny być używane poza interfejsem API ui-tooling, ponieważ zawierają nieprzetworzone informacje interpretowane przez ten interfejs API (I31a9c).

  • Zrefaktoryzowano ShaderBrush, aby leniwie utworzyć instancję cieniowania, gdy dostępne są informacje o rozmiarze środowiska rysowania. Jest to przydatne do definiowania gradientów, które zajmują pełne granice obiektu kompozycyjnego w momencie kompozycji, bez konieczności implementowania niestandardowych implementacji DrawModifier.

    Wycofano interfejsy API konstruktora funkcji gradientu zamiast metod fabrycznych w obiekcie Gradient. (I511fc, b/173066799)

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

  • Interfejs Autofill API to teraz eksperymentalny, który wymaga akceptacji (I0a1ec)

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

  • Nazwa opcji „AccessibilityLabel” została zmieniona na contentDescription. Nazwa „accessibilityValue” to „StateDescription”. (I250f2)

  • Wprowadziliśmy kilka nowych funkcji w interfejsie SelectionRegistrar, a także nazwę onPositionChange. (Ifbaf7)

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

  • Nowa funkcja nieskończonościowa do tworzenia obiektu InfiniteRepeatableSpec (I668e5)

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

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

    Dodano nową metodę: insertBottomUp().

    W zależności od tego, który wariant ma lepszą skuteczność, aplikacja wstawia węzły do edytowanego drzewa za pomocą metody insertTopDown() lub insertBottomUp().

    W przypadku niektórych drzew, np. LayoutNode i View, konstruowanie od dołu jest znacznie skuteczniejsze niż w przypadku drzew rosnących. Przed tą zmianą wdrożyliśmy stos wstawek w celu wdrożenia modelu oddolnego, który trzeba kopiować do każdego wnioskodawcy, który w celu zwiększenia skuteczności wymagał tworzenia oddolnego poziomu. W związku z tą zmianą właściwość Applier zastępuje właściwość insertBottomUp(), aby utworzyć strukturę od dołu do góry, a element insertTopDown() – od góry. (Icbdc2)

  • Dodano interfejs API Painter do obsługi nieprzezroczystego wczytywania obiektów Painter z formatów zasobów zrastrowanych (np. PNG) lub VectorDrawable. Konsumenci nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter dla obiektów kompozycyjnych obrazu i modyfikatorów malarskich. (I2c703, b/173818471)

  • Dodano funkcję fabryki buildAnnotatedString, by utworzyć obiekt AnnotatedString. Wycofano funkcję kompilacji annotatedString. (Idfe0b).

Wersja 1.0.0-alfa08

Grudzień 2, 2020

Opublikowano androidx.compose.foundation:foundation:1.0.0-alpha08 i androidx.compose.foundation:foundation-layout:1.0.0-alpha08. Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto parametr maxLines z parametru CoreTextField. Jeśli chcesz ograniczyć wysokość pola tekstowego liczbą wierszy, użyj parametru BasicTextField. (Iec002)
  • Zmieniliśmy metody await*TouchSlop(), tak aby nie wykrywały wskaźnika, i zostały zmienione na *OrCancellation. Nie trzeba też używać parametru orientationLock. (Ie96e1).
  • Dodano sprawdzanie lintowania pod kątem nazewnictwa i pozycji parametrów kompozycyjnych lambda w celu sprawdzenia zgodności ze wskazówkami dotyczącymi tworzenia wiadomości. Przeprowadzono też migrację niektórych interfejsów API, używając children jako nazwy końcowej lambda do content, zgodnie ze sprawdzaniem lintowania i wskazówkami. (Iec48e).
  • foundation:foundation-text API zostało przeniesione do interfejsu foundation:foundation. Struktura pakietu pozostała bez zmian (Id3eb2)
  • Nowy wykrywacz gestów wielodotykowych, w tym elementy pomocnicze do wykrywania obrotu, powiększenia i przesuwania. (IC459d)
  • Nowy wzorzec do wykrywania gestów przeciągania, zawieszający interfejs API do wprowadzania danych wskaźnika, w tym blokowanie orientacji. (Icef25)
  • Zgodnie z wytycznymi rady interfejsu API zmieniono nazwę zasobu Vector Asset na ImageVector, a zasób wektorowy został zmieniony na Builder, aby był wewnętrzną klasą ImageVector. Dodano alias typu VectorAssetBuilder, aby połączyć z ImageVector.Builder. (Icfdc8)
  • Zmieniliśmy nazwę obiektu ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
  • Właściwości semantyki podstawowych zostały przeniesione do UI (I6f05c)
  • Dodaj interfejsy API przewijania oparte na współużytkowaniu:

    Dodaje 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óre pozwalają kontrolować przewijanie, które czeka na zakończenie przewijania, zanim nastąpi jego zwrócenie. (Ie5642)

  • Dodano parametr singeLine do BasicTextField, TextField i OutlinedTextField. Ustaw ten parametr na „true”, aby przekształcić pole tekstowe w pojedynczą linię, którą można przewijać w poziomie. (I57004, b/168187755)

  • Czujnik gestów dotykania, 2-krotnego dotykania, przytrzymywania i naciśnięcia, został dodany jako wskaźnik zawieszenia. Dodaliśmy też kilka narzędzi, które ułatwiają programistom pisanie własnych wzorców do wykrywania gestów. (I00807)

  • Trzeba dodać funkcję Modifier.focusable. Służy do dodawania do komponentu zachowań, które można zaznaczyć, z poprawną semantyką i ułatwieniami dostępu. (I41eb9, b/152525426, b/162865824)

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

  • Nazwa funkcji Bezwzględnego układu została zmieniona na Rozmieszczenie.Bezwzględne. (If26f2)

Poprawki błędów

  • Interfejsy DrawModifier API zostały przeniesione z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifier przypisane.kt, aby uwzględnić metody typealiases/helper w celu ułatwienia migracji z wycofanych interfejsów API do obecnych. (Id6044, b/173834241)
  • Na podstawie opinii rady interfejsu API zmieniliśmy nazwę Modifier.drawLayer na Modifier.graphicsLayer. Na podstawie opinii rady interfejsu API zaktualizowaliśmy też powiązane klasy na GraphicsLayer. (I0bd29, b/173834241)
  • Element <T> został usunięty z deklaracji układu podrzędnego. Możesz go teraz użyć bez określania typu. (IB60c8)
  • Wprowadzono wartość niedopuszczającą wartości null w polach czasu działania i pozycji PointerInputData. (Id468a)
  • MaterialTheme ustawia teraz poprawne kolory uchwytów wyboru i tła wyboru. Aplikacje inne niż Material mogą ręcznie wybierać kolory używane do zaznaczania, używając AmbientTextSelectionColors. (I1e6f4, b/139320372, b/139320907)
  • Nazwa parametru wyrównywania pola Box została zmieniona na contentalignment. (I2c957)
  • Zmieniono nazwę modyfikatorów shiftPx na przesunięcie. Przyjmują teraz parametry lambda zamiast stanu. (Ic3021, b/173594846)
  • Dodano obiekt WindowManager.isWindowFocused, aby sprawdzać, czy okno hosta jest aktywne, oraz obiekt WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
  • Dodano parametr resetInput do TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • Zaktualizowano interfejs TextFieldValue API
    • przyznano TextFieldValue.composition tylko do odczytu
    • usunięto wyjątek dla nieprawidłowego zakresu wyboru (I4a675, b/172239032)
  • Wycofano elementy otoczenia, których sufiks to Ambient, i zastąpiono je nowymi usługami z przedrostkiem Ambient zgodnie z innymi wytycznymi dotyczącymi interfejsu Ambients i Compose. (I33440)
  • Dodano opakowanie kroju czcionki Androida. Krój czcionki Androida można wczytać za pomocą funkcji typeface, np. typeface(Typeface.DEFAULT). Zmieniono też nazwę typefaceFromFontFamily() na typeface() (I52ab7)
  • Dodaliśmy sprawdzanie lintowań, aby sprawdzać, czy fabryki modyfikatorów używają wewnętrznie androidx.compose.ui.composed {}, zamiast oznaczać je jako @Composable. (I3c4bc)
  • Dodaliśmy sprawdzanie lintowania, aby sprawdzić, czy funkcje fabryki modyfikatorów są zdefiniowane jako rozszerzenia w Modyfikatorze, dzięki czemu można je płynnie łączyć. (I07981)
  • Nazwa argumentu semantyka scalAllDescendants została zmieniona na mergeDescendants. (Ib6250)
  • Kontrola czasu w testach (TestAnimationClock i jej zastosowania) jest obecnie w fazie eksperymentalnej (I6ef86, b/171378521)
  • Usuń stary moduł testu interfejsu użytkownika i jego wycinki (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 już prawidłowo. (I46a07, b/172311734)
  • Moduł foundation:foundation-text został scalony z modułem foundation:foundation (Idac0f)
  • Wycofaj właściwość „place(Offset)” i „placeRelative” (odsunięcie). Zamiast tego użyj przeciążeń z przesunięciami całkowitymi (I4c5e7)
  • Zmieniono nazwę użytkownika id na layoutId dla konta LayoutIdParentData. Zmieniono nazwę etykiety Measurable.id na Measurable.layoutId. (Iadbcb, b/172449643)

Wersja 1.0.0-alfa07

11 listopada 2020 roku

Opublikowano 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. Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Podobnie jak w przypadku Modifier.fillMaxSize[Width|Height], obsługujemy teraz ułamki w Modifier.fillParentMaxSize[Width|Height] w zakresie LazyColumn/Row (I797e2, b/166586426)
  • Usunięto KeyboardOptions.toImeOptions z publicznego interfejsu API. (Ic2e45).
  • Podstawowe elementy AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast tego używaj nowych wersji dostępnych w bibliotece Material. W przypadku aplikacji innych niż Material warto utworzyć własny, specyficzny dla systemu motyw scenariusz, który można wykorzystać we własnych komponentach. (I74acc, b/172067770)
  • Fundacja.Text została wycofana i zastąpiona przez materiał.Text. Podstawowy, niezrozumiały interfejs API tekstu, który nie przetwarza wartości z motywu, znajdziesz na stronie androidx.compose.foundation.PodstawyText. (If64cb)
  • Dodano element maxLines do pól tekstowych (Ib2a5b)
  • Zaktualizuj pola tekstowe, aby akceptowały KeyboardOptions (Ida7f3)
  • Dodano element keyOptions do użytku w polach tekstowych (I9ca32).
  • Dodaje interfejs BasicText jako niezależny od projektu interfejs API dla tekstu, równolegle do interfejsu BasicTextField. (I28268)
  • Usunięto adnotację ExperimentalLazyDsl. Można teraz używać LazyColumn/LazyRow bez dodawania @OptIn (Idab7a, b/166584730)
  • Pole BaseTextField zostało wycofane. Użyj interfejsu BasicTextField. (I896eb)
  • Funkcja BasicTextField została dodana jako zamiennik zarówno dla CoreTextField, jak i BaseTextField (Id4cea).
  • Usuń wycofane elementy LazyColumnItems/LazyRowItems (I1d8a8)
  • Wycofane funkcje kompozycyjne służące do dopasowywania rozmiaru do wewnętrznych pomiarów zostały usunięte. (I18537, b/171811496)
  • Zmieniono nazwę względnąPaddingFrom na LaunchFrom. Aby ułatwić określanie odległości od granic układu do punktów odniesienia tekstu, dodano modyfikator wyświetlającym uzupełnienie elementu Baseline. (I0440a, b/170633813)
  • Parametr matchHeightConstraintsFirst został dodany do modyfikatora aspektRatio, którego można używać do określania modyfikatora dopasowania do ograniczeń wysokości przed próbą dopasowania szerokości. (Ie7c43, b/155290593)
  • Wycofane ograniczenia DpConstraints zostały usunięte. (I87884, b/171702471)

Poprawki błędów

  • Wprowadzono klasę wbudowanej ScaleFactor do reprezentowania współczynników skali dla osi poziomej i pionowej niezależnie od siebie w celu obsługi niejednolitego skalowania.
    • Dodano metodę computeScaleFactor do ContentScale.
    • Dodano element ContentScale.FillBounds, aby umożliwić skalowanie nierównomierne w celu rozciągania granic źródła do pełnego obszaru docelowego.
    • Dodaliśmy metody operatora do obliczania parametrów ScaleFactor z użyciem parametrów Rozmiar.
    • (Ic96a6, b/172291582)
  • CapToBitmap przeniesiono do recordToImage. (I86385)
  • Oznacza CoreText jako @InternalTextApi. Użyj interfejsu BasicText. (I6aaeb)
  • Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
  • Przeniesiono klawisze KeyboardType i ImeAction do opcji KeyboardOptions (I910ce).
  • CoreTextField został oznaczony jako @InternalTextApi. Użyj interfejsu BasicTextField (Ie2469)
  • Usunięto adnotację ExperimentalSubcomposeLayoutApi. SubcomposeLayout można teraz używać bez dodawania @OptIn (I708ad)
  • Wprowadzenie modułu ui-test-junit4 (Ib91f8)
  • Zaktualizowano interfejs API Icon API tak, aby przyjmował kolor.Nieokreślony jako możliwy kolor, który spowoduje narysowanie podanego zasobu lub malarstwa bez filtra ColorFilter. Wcześniej próbowano ignorować zabarwienie z użyciem koloru.Nieokreślone to odcień przezroczysty, które w ogóle nie było renderowane. (I049e2, b/171624632)
  • Parametr MeasureResult został przeniesiony poza 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 obiekt SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Dodano testy pozycji elementów SelectionHandles w wybranych kontenerach. (Ie93db)
  • Dodano opcję automatycznej korekty IME klawiatury (I57b8d)

Wersja 1.0.0-alfa06

28 października 2020 r.

Opublikowano 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. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Ikona androidx.compose.foundation.Icon została przeniesiona pod adres androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material, możesz użyć komponentu Obraz / Modifier.paint() z narzędziem do malowania. (I9f622)
  • Dodano element activityState do elementów Modifier.scrollable, ScrollableColumn i LazyColumnFor (I81566, b/169509805).
  • Opcja WyrównajByBaseline została dodana do RowScope, a TakeWithSiblings została zmieniona na matchBy (I06503, b/170628732)
  • Aplikacja Box została przekształcona w funkcję wbudowaną. (Ibce0c, b/155056091)
  • Dodano element maxLines do CoreTextField (Ibee58, b/143687793)
  • Do CoreTextField dodano element softwrap. (I21a4b).

Poprawki błędów

  • Zrezygnuj z funkcji VectorPainter na rzecz PamiętajVectorPainter, aby móc lepiej wskazać, że kompozycyjny interfejs API wykorzystuje wewnętrznie „pamięć” do przechowywania danych w komponentach. (Ifda43)
  • Włącz przejścia w elemencie ComposeTestRule. Usuń tę opcję, aby włączyć migający kursor w elemencie ComposeTestRule. (If0de3)
  • Dodano opcję klawiatury jednowierszowej do CoreTextField (I72e6d).
  • Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlić jego użycie w komponencie. Zaktualizowana dokumentacja potwierdza, że ujemne promienie narożników są zaciśnięte do zera. (I130c7, b/168762961)
  • Dodano możliwość określania informacji inspektora w modyfikatorze tworzenia (Idee08, b/163494569)
  • Dodano opcję IME do wprowadzania wielkich liter z klawiatury (I8ac38).
  • Ustal pozycję uchwytu Rtl. (I6e1e0).
  • Zmiana niezbędna: usunięto wartość zwracaną z parametru PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane wykorzystania. Zamiast zwracać dane z PointerInputFilter.onPointerEvent(...), możesz teraz po prostu modyfikować dane wykorzystania przekazywane przez zdarzenia PointerEvents. (I6acd0).
  • Do menu wyboru dodano opcję SelectAll (Ief02b).

Wersja 1.0.0-alfa05

14 października 2020 r.

Opublikowano 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. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • CoreTextField obsługuje teraz funkcję kursora (Id23aa)
  • Wycofuje interfejsy API contentColor() i currentTextStyle(), i zastępuje je odpowiednio treściami AmbientContentColor oraz AmbientTextStyle. Aby uzyskać dostęp do bieżącej wartości, użyj właściwości .current we właściwości otoczenia, tak jak w przypadku innych elementów otoczenia. Ta zmiana ma na celu zapewnienie spójności i uniknięcia konieczności utrzymywania różnych sposobów osiągania tego samego celu. Dodatkowo zmienia nazwy niektórych właściwości otoczenia, aby lepiej opisać ich przeznaczenie:

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

Poprawki błędów

  • W ramach standaryzacji wartości wskaźnika dla klas wbudowanych zmień nazwę Kolor.Unset to Color.Nieokreślony, aby zachować spójność z innymi klasami w tekście (I97611, b/169797763).
  • Dodano działania ułatwień dostępu Kopiuj/wklej/wycinaj (I6db4f).
  • Dodaliśmy funkcję TextOverflow.None. Gdy wartość atrybutu nadmiarowego ma wartość Brak, tekst nie będzie już obsługiwać tego rozmiaru, a jego rzeczywisty rozmiar zostanie zgłoszony do Układu Node. (I175c9, b/158830170)
  • Zaktualizowano wartość Float.NaN zamiast Float.POSITIVE_INFINITY, aby określić nieokreślone parametry. Zaktualizowano implementacje malarskie, aby porównywały je z rozmiarami nieokreślonymi i nieskończonymi. (I95a7e)
  • Dodano moduł tworzenia stronicowania i integrację stronicowania (Ib85da).
  • Zmodyfikuj LazyListScope, aby otrzymywać wartości null (I1765b)
  • Nazwa OnPositionedModifier została zmieniona na OnGloballyPositionedModifier, a funkcja onPositioned() – na onGloballyPositioned(). (I587e8, b/169083903).
  • Dodano przykłady w wierszu LazyColumn (Idc16d)
  • Poprawiono metody usuwania elementów i elementów itemsIndexed, które zezwalają na pustąList (I06647)
  • Dodaj DSL do określania informacji o inspektorze (Ic9a22)
  • Przenieś element LongPress do tekstu. (Iff2bc)
  • Wyłącz zaznaczanie w tekście oraz prezentację. (Ie7e97).
  • Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907)
  • Czcionka PointerInputFilter.onPointerInput(...) została usunięta. Zamiast niej należy użyć parametru PointerInputFilter.onPointerEvent(...). (I6f04a)

Wersja 1.0.0-alfa04

1 października 2020 roku

Opublikowano 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. Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Nazwa stosu została zmieniona na Box. Dotychczasowa funkcja Foundation.Box zostanie wycofana i zastąpiona nową usługą Box w pliku compose.foundation.layout. Nowa funkcja Box gromadzi elementy podrzędne jedna nad drugą, gdy ma wiele elementów podrzędnych. Działa to inaczej niż w przypadku poprzedniego pola, które działa podobnie jak kolumna. (I94893, b/167680279)
  • Parametry dekoracji pól zostały wycofane. Jeśli chcesz użyć dekoracji/dopełnienia pola, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.dopełnienie) (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ą funkcji rememberLazyListState() i przekazywać ją do parametru stanu komponentu. Obecnie w tej początkowej wersji można zobaczyć pierwszy widoczny element i przesunięcia. (Ic7cb7, b/159307669)
  • Pozycja leniwej listy i przesunięcie przewijania są teraz zapisywane i przywracane w przypadku odtwarzania aktywności (Ie045f, b/166589058).
  • Dodaj semantykę długiego kliknięcia (I6281b, b/156468846)
  • Dodano narzędzie Mutatormutex służące do utrzymywania pojedynczego mutatora stanu współdzielonego na przestrzeni czasu i anulowania mutatorów powodujących konflikty według priorytetu (I3f975)
  • z adnotacjami: rootAnimationClockFactory, przejściesEnabled,blinkingCursorEnabled i textInputServiceFactory z @visibleForTesting, wewnętrzny interfejs API i ukrycie pliku kdoc (I554eb, b/168308412).
  • Usunięto parametr inlineContent z tekstu z użyciem ciągu znaków. Nie zostanie on użyty, ponieważ element inlineContent musi działać z AdnotatedString. (Ief403)
  • Wycofane interfejsy API układu niestandardowego zostały usunięte. (Ic576d, b/168297922, b/168297923)
  • Parametr unbounded został dodany do modyfikatorów wrapContentSize, który umożliwia pomiar elementu układu z nieskończonymi ograniczeniami maksymalnymi. (I77951, b/158559319)
  • Zablokowaliśmy statyczne importowanie zawartości zakresów układów (np. matchWithSiblings w RowScope). Zamiast niej należy użyć alternatywnego zakresu: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Poprawki błędów

  • Zaktualizowano wiele interfejsów Graphics API.
    • Zaktualizowaliśmy interfejsy API przekształcania skalowania i rotacji, aby przetwarzać pojedynczy parametr przesunięcia do reprezentowania współrzędnych obrotu, zamiast osobnych parametrów x/y dla współrzędnych x/y w DrawScope i DrawTransform
    • Usunięto metody Rect.expandToinclude i Rect.join
    • Zaktualizowaliśmy dokumentację wyznaczania promienia, aby podawać wymiary eliptyczne i eliptyczne.
    • Dodaliśmy dokumentację wskazującą, że publiczny konstruktor klasy promieniowania wbudowanego nie może być wywoływany bezpośrednio, ale instancje promieni powinny być tworzone za pomocą ich konstruktorów funkcji.
    • Usunęliśmy interfejsy RoundRect API, które umożliwiają wysyłanie zapytań dotyczących górnegoRight, dołuRight, dołuCenter itp.
    • Wycofanie funkcji Rect.shift na rzecz Rect.translate
    • Usunięto interfejsy API RoundRect.grow i Rect.shrink
    • Nazwa okna RoundRect.outerRect została zmieniona na Rect.boundingRect
    • Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Nazwa RoundRect.longestSide została zmieniona na RoundRect.maxDimension
    • Nazwa RoundRect.shortestSide została zmieniona na RoundRect.minDimension
    • Zmieniono funkcję RoundRect.center, a nie funkcję.
    • Zaktualizowano konstruktor RoundRect, tak aby korzystał z właściwości promienia zamiast poszczególnych parametrów promienia x/y
    • Usunięto interfejsy API rozmiaru, które zakładały, że był to prostokąt o źródle równym 0,0.
    • Do promienia dodano niszczycielski interfejs API
    • Funkcje rozszerzeń RoundRect zostały przeniesione do właściwości właściwości.
    • (I8f5c7, b/168762961)
  • Optymalizacje wydajności w przypadku LazyColumnFor/LazyRowFor przewijanie przez unikanie niepotrzebnych zmian kompozycji podczas każdego przewijania (I64f65, b/168293643, b/167972292, b/165028371)
  • Usunięto awarię LazyColumnFor/LazyRowFor po przewinięciu, a następnie zmianę elementów oraz zaimplementowano automatyczne przewijanie w górę, gdy wcześniej widoczny element został usunięty, dzięki czemu nie wyświetlamy już pustych luk na końcu (I220ab, b/161480164, b/167855468).
  • Zagnieżdżanie, które można przewijać w kontenerach o tym samym kierunku, takich jak ScrollableContainer i LazyColumnFor, nie jest już dozwolone. Nigdy nie było obsługiwane i przerwało romans i płynność tworzenia elementów LazyColumnFor (I6e101).
  • Zaktualizowano wiele interfejsów Graphics API.
    • Zaktualizowaliśmy interfejsy API DrawScope o metody przekształcania zakresu, aby wskazać, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po wywołaniu wywołania zwrotnego
    • Zaktualizowana dokumentacja clipPath, która odnosi się do ścieżki zamiast do zaokrąglonego prostokąta
    • Stałe odstępy w dokumentacji dla właściwego parametru w ClipPath
    • Nazwa DrawScope.drawCanvas została zmieniona na DrawScope.drawCanvas, a parametr rozmiaru został usunięty.
    • Zmieniliśmy nazwy parametrów dx/dy w metodzie wstawiania na poziome i pionowe.
    • Dodano przeciążenie, które zapewnia tę samą wartość wstawienia we wszystkich 4 granicach
    • Usunęliśmy dokumentację dotyczącą metody wstawiania wskazującej, że wstawienie zostanie zastosowane do wszystkich 4 stron
    • Zaktualizowana dokumentacja klasy Rect
    • Zaktualizowano komentarze do parametrów Rect, aby pasowały do stylu kdoc
    • Usunięto Rect.join i Rect.expandToDołącz
    • Utworzono przeciążenie obiektu Rect.translate(offset) i wycofano Rect.shift
    • (If086a, b/167737376)
  • dodać Accessibility ScrollState do właściwości semantycznych. (Ifeda9)
  • Ustaw obiekt TextRange w tekście, aby uniknąć tworzenia obiektu. (Id034b).
  • Ograniczenia akapitu zostały usunięte. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712)

Wersja 1.0.0-alfa03

16 września 2020 roku

Opublikowano 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. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Nazwa elementu InnerPadding została zmieniona na PaddingValues. (I195f1, b/167389171)
  • Nazwy przypadków użycia grawitacji były spójne pod kątem wyrównywania lub wyrównywania w interfejsach API układu. (I2421a, b/164077038)
  • Do sekcji Stos dodano parametr wyrównywania, który umożliwia określenie domyślnego wyrównania dla wszystkich elementów podrzędnych Stosu. (Ie80ca, b/164085265)

Poprawki błędów

  • Ograniczenia DpConstraints i interfejsy API, które ich używają, zostały wycofane. (I90cdb, b/167389835)
  • Nazwy parametrów minWidth i maxWidth z widthIn zostały zmienione na min i max. Analogicznie w przypadku preferredWidthIn, heightIn, preferredHeightIn. (I0e5e1, b/167389544)
  • Dodano metody globalne onNode i inne metody globalne w ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
  • Stały sposób obliczania rozmiaru i pozycji w Gezakresie, który między innymi powodował 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-alfa02

2 września 2020 r.

Opublikowano 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. Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.

Poprawki błędów

  • TestUiDispatcher jest oznaczony jako eksperyment (Iae99d, b/161247083)
  • Dodano element ManualFrameClock.hasAwaiters, który sprawdza, czy jest jakiś czas na wyjęcie klatki z tego zegara. runWithManualClock zamiast na runBlocking w przypadku testów wymagających ManualFrameClock; TestUiDispatcher.Main, który zapewnia łatwy dostęp do głównego dyspozytora interfejsu użytkownika w testach.

    Na przykład:

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

    (I0a85b, b/161247083)

Wersja 1.0.0-alfa01

26 sierpnia 2020 r.

Opublikowano 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. Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

Opublikowano 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. Wersja 0.1.0-dev17 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Do wierszy i kolumn dodano układ spacedBy, 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 jeden obok drugiego i wyrównywanie w wierszach/kolumnach zgodnie z wyrównaniem. Poprzednia metoda Arrangement.Vertical#arrange i Arrangement.Horizontal#arrange została wycofana, a pisanie niestandardowych układów nie będzie obsługiwane w przyszłości. (I6733d, b/161985975)
  • Przesunięcie stało się klasą wbudowaną (Iaec70)
  • Usunięto wywołania zwrotne onFocusChanged z pola tekstowego. Użyj interfejsu Modifier.focusObserver. (I51089, b/161297615)
  • Funkcja Modifier.drawBorder została wycofana. Użyj interfejsu Modifier.border. Klasa danych obramowania została zastąpiona przez BorderStroke (I4257d, b/158160576)
  • Funkcje Vertical Scroller i Horizontal Scroller zostały usunięte. Użyj zamiast tego elementu ScrollableColumn/Row. Usunięto element Modifier.drawBackground. Użyj elementu Modifier.background (I73b0d, b/163019183)
  • Usuń z LazyItemScope wycofane modyfikatory FillMax*, które utrudniają prawidłowe dodawanie takich modyfikatorów do elementów, które nie są bezpośrednimi elementami podrzędnymi LazyColumnFor (Ifa78d)
  • dodano implementację LazyColumn/LazyRow jako DSL (I93cc6)
  • Ograniczenia to teraz klasa wbudowana (I88736).
  • Dodano możliwość zmiany rozmiaru układu do ułamka dostępnego miejsca przy użyciu modyfikatorów fillMaxWidth, fillMaxHeight i fillMaxSize. (I945bb, b/161562591)

Poprawki błędów

  • Dodano parametr modyfikatora do SelectionContainer (I4aada, b/161487952).
  • Do klucza SemanticsPropertyKey dodano lambda zasady kreatora e-maili. Możesz go użyć do zdefiniowania niestandardowej zasady łączenia semantyków kreatora e-mailiDescendants. Zgodnie z zasadą domyślną jest używana wartość nadrzędna, jeśli istnieje już wartość. W przeciwnym razie jest używana wartość podrzędna. (Iaf6c4, b/161979921)
  • Nazwa elementu (PlacementScope.placeAbsolute()) została zmieniona na PlacementScope.place(), a poprzednia nazwa „PlacementScope.place()” – „PlacementScope.placeRelative()”. W rezultacie metoda PlacementScope.place() nie będzie już automatycznie powielać pozycji w kontekstach od prawej do lewej. Jeśli chcesz, użyj zasady PlacementScope.placeRelative(). (I873ac, b/162916675)
  • Usunięto wycofany komponent FilledTextField. Aby uzyskać implementację Wypełnionego pola tekstowego, użyj interfejsu Material Design. (I5E889)
  • Dodano parametr backgroundColor do elementu LinearProgressIndicator i usunięte wewnętrzne dopełnienie z CircularProgressIndicator. Dodano nowy parametr ProgressIndicatorConstants.DefaultProgressAnimationSpec, którego można używać jako domyślnego AnimationSpec w przypadku animowania postępu między wartościami (If38b5, b/161809914, b/161804677).
  • Funkcja kompozycyjna state { ... } została wycofana i wycofana z funkcji remember { mutableStateOf(...) }, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem i dopasowywane do wzorca by mutableStateOf() na potrzeby przekazywania właściwości klasy. (Ia5727)
  • Zmieniliśmy nazwę RRect na RoundRect, aby lepiej dopasować do wzorców nazewnictwa tworzenia Utworzyliśmy konstruktory funkcji podobne do konstruktorów funkcji RRect i wycofanych konstruktorów funkcji RRect (I5d325)
  • Usunięto element onChildPositioned i OnChildPositionedModifier. W układzie podrzędnym deweloperzy powinni stosować właściwości onPositioned i OnPositionedModifier. (I4522e, b/162109766)
  • IntSize jest teraz klasą wbudowaną (I2bf42).
  • Naciśnij i przytrzymaj pusty obszar, aby go edytować. (Ib1e5b)
  • Ukryj pływający pasek narzędzi po kliknięciu tekstu. (If4525)
  • Ukryj Pływający pasek narzędzi podczas aktualizowania zaznaczenia. (I8444c)
  • Odznacz opcję Gdy rozmycie. (I781a2)

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

Opublikowano 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. Wersja 0.1.0-dev16 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano element LazyItemScope dla parametru itemContent w listach Leniwych. Zawiera modyfikatory wypełniające maksymalny rozmiar nadrzędny. To rozwiązanie sprawdza się w sytuacji, gdy element powinien wypełnić 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 UI (I47fa6)
  • Dodano LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które udostępniają zarówno indeks, jak i element w funkcji itemCallback. Jest to przydatne, gdy oprócz bieżącego elementu musisz znać też bieżący indeks. (I65ff3)
  • Nazwa Modifier.deternimateProgress została zmieniona na Modifier.progressSemantics (I9c0b4)
  • Nazwa elementu LazyColumnItems została zmieniona na LazyColumnFor. Nazwa elementu LazyRowItems została zmieniona na LazyRowFor (I84f84).
  • Dodaj znaczniki/adnotacje, aby poznać sprawdzone metody. (I66b20)
  • Pakiet Foundation.shape.corner został spłaszczony do fundacji.share (I46491, b/161887429)
  • Dodano parametr ciężkości osi kreskowej dla elementów LazyRowItems/LazyColumnItems. Elementy LazyRowItems i LazyColumnItems teraz obsługują zachowanie zawijania treści. (Ib39fc)
  • Nazwa ZoomableState została zmieniona na ZoomableController. Na potrzeby obiektu smoothScale dodano obsługę krzywej niestandardowej. Dodano funkcje enabled i onZoomStarted (If8b8f)
  • Nazwa Material FilledTextField została zmieniona na TextField, a podstawowe pole TextField zostało – na BaseTextField, aby ułatwić wyszukiwanie i używanie interfejsu API (Ia6242, b/155482676)
  • Wcześniej wycofana karta AdapterList została usunięta. Zamiast tego użyj elementu LazyColumnItems (I12b9b)
  • Nazwa Modifier.drawBackground została zmieniona na Modifier.background (I13677).
  • Stara wersja DSL ConstraintUkład została usunięta. Nazwa ConstraintSet2 została zmieniona na ConstraintSet. (If58d1, b/162450908)
  • Dodano Modifier.absoluteOffset() i Modifier.absoluteOffsetPx(). W przeciwieństwie do modyfikatorów przesunięcia bezwzględnego modyfikatory przesunięcia bezwzględnego nie są automatycznie odzwierciedlane w kontekście tekstu od prawej do lewej (I3aa21).
  • Parametry Row i Column są teraz wbudowane, co znacznie zmniejsza koszty związane z ich używaniem. (I75c10)

Poprawki błędów

  • Wprowadzono poprawki dla przybliżonego interfejsu API (I077bc).
    1. Usuń nieużywany interfejs OffsetBase
    2. wyrównaj klasy Offset i IntOffset, aby uzyskać spójną powierzchnię interfejsu API,
    3. Zmień nazwę IntOffset.Origin na IntOffset.Zero, aby zachować spójność z interfejsem Offset API
    4. Przeniesienie metody natywnejCanvas z interfejsu Canvas w celu umożliwienia konsumentom tworzenia własnych instancji Canvas
    5. Utworzono klasę EmptyCanvas w celu refaktoryzacji DrawScope na parametr niepusty zamiast lateinit i zapewnił brak wartości null w polu
    6. Zmieniono nazwy wyliczenia ClipOp na Pascal Case
    7. Zmieniono nazwy wyliczeń filtra Quality Quality na Pascal Case
    8. Zmiana nazw wyliczeń StrokeJoin na Pascal Case
    9. Zmieniono nazwy wyliczeń PointMode na wielkość liter Pascal
    10. Zmieniono nazwy wyliczeń w PaintingStyle na Pascal Case
    11. Zmieniono nazwy wyliczeń PathFillType na Pascal
    12. Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
    13. Zaktualizowano implementację DrawCache, aby nie używać już parametrów latinit
    14. Zaktualizowano DrawScope, aby nie używać już leniwego przekazywania w parametrach wewnętrznych fillPaint i fingerPaint
    15. Zaktualizowano obraz kompozycyjny, aby uniknąć użycia Box i zminimalizować koszty
    16. Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
    17. Zaktualizowano PathNode, dodając do każdej instrukcji ścieżki @Stałe adnotacje
    18. Zaktualizowana podkompozycja wektorowa zawiera zbędne kontrole warunkowe pod kątem równości, ponieważ są one już obsługiwane
    19. Wycofaliśmy metody konstruktorów towarzyszących prostokątne na rzecz konstruktorów funkcji,
    20. Zaktualizowanie klas pędzla i konstruktorów funkcji za pomocą interfejsów API @Immutable i @Stable
    21. Zmieniono wyliczenie VertexMode na PascalCase
    22. Zaktualizowano metodę DrawScope selectPaint, aby warunkowo zastępować parametry kreski na obrazie, jeśli ulegną one zmianie
    23. Zaktualizowano rozmiar, aby dodać interfejs API destrukturyzacji, zmienić nazwę UnspecifiedSize na Nieokreślone i usunięte nieużywane metody
  • Dodano funkcję MonotonicFrameAnimationClock, która umożliwia użycie MonotonicFrameClock jako obiektu AnimationClockObservable w celu wypełnienia luki między nowymi zegarami opartymi na współpracownikach a interfejsami API, które nadal korzystają ze starych zegarów opartych na wywołaniach zwrotnych.

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

  • Czcionka SemanticsNodeInteraction.performPartialGesture została usunięta. Użyj w zamian zasady 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 element LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Usunięto interfejsy Modifier.rtl i Modifier.ltr. (I080b3)

  • Funkcja Modifier.plus została wycofana. Zamiast niej użyj elementu Modifier.then. „Następnie” zawiera silniejszy sygnał porządkowania, ale zabrania też wpisywania Modifier.padding().background() + anotherModifier, co powoduje pęknięcie łańcucha i jest trudniejsze do odczytania (Iedd58, b/161529964).

  • Dodano element SemanticsMatcher: isFocused() i isNotFocused(). (I0b760)

  • Dodano element RemeasurementModifier. Dzięki temu użytkownicy mogą synchronicznie ponownie mierzyć układ. Zwykle nie są one potrzebne, ponieważ ponowne pomiary/przekazywanie odbywa się automatycznie, ale używamy ich w ramach elementów LazyColumnItems podczas przewijania. (I5f331, b/160791058)

  • Zgodnie z najnowszymi wskazówkami system isSystemInDarkTheme zawsze zawsze bierze pod uwagę ustawienie ciemnego motywu stosowanego w całym systemie i ignoruje stan oszczędzania energii przed Q. (I0c10c)

  • Funkcja OnChildPositioned została wycofana. Zamiast tego użyj opcji OnPositioned w elemencie podrzędnym. (I87f95, b/162109766)

  • Nazwa reguły AndroidComposeTestRule została zmieniona na „createAndroidComposeRule”. (I70aaf)

  • Dodaj działanie ułatwień dostępu, aby uzyskać TextUkładResult (I9d6e6)

Wersja 0.1.0-dev15

22 lipca 2020 r.

Opublikowano 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. Wersja 0.1.0-dev15 zawiera te zatwierdzenia.

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

Aktualizacja zależności

  • Aby korzystać z wersji tworzenia wiadomości w wersji 0.1.0-dev15, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu podanymi powyżej w sekcji Deklarowanie zależności.

Zmiany w interfejsie API

  • Podobnie jak nowy parametr w funkcjach ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems teraz także ma parametr contentPadding, który umożliwia dodanie dopełnienia treści po jej obcięciu. Nie jest to możliwe w przypadku wyłącznie parametru modyfikatora. Umożliwia też dodanie odstępu tylko przed pierwszym lub po ostatnim elemencie. (Ibc24e)
  • Wywołanie zwrotne onFocusChange w polach tekstowych zostało zmienione na onFocusChanged (Ida4a1)
  • Funkcje Vertical Scroller i Horiziontal Scroller zostały wycofane. Użyj funkcji ScrollableColumn i ScrollableRow, aby wbudowane funkcje związane z zachowaniem i parametrami dotyczącymi kolumn/wierszy. Własne atrybuty Modifier.vertical poprawne przewijanie oraz Modifier.horizontal Scroll umożliwiają. Podobnie parametr ScrollerPosition został wycofany i zastąpiony przez ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • Przerobiliśmy interfejsy API Modifier.draggable i Modifier.scrollable. Element DragDirection został usunięty i zastąpiony funkcją Orientacja. Stan wymagany na potrzeby przewijania został uproszczony. Nazwa ScrollableState została zmieniona na ScrollableController (Iab63c, b/149460415).
  • Właściwości semantyki pojedynczej wartości używają teraz stylu wywołującego. Na przykład zapis „semantics { hide = true }” został zapisany jako: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Rozmiary narożników używane przez RoundedCornerkształt i CutCorner shape mogą być teraz większe niż 50% (Id2340, b/160400213).
  • Zmieniliśmy domyślny parametr ContentScale obrazu kompozycyjnego z Wewnątrz na Dopasowanie. Pozwoliło to uzyskać możliwość skalowania bazowego obszaru malarstwa w górę, jeśli rozmiar układu jest większy niż wewnętrzny rozmiar malarza przy zachowaniu współczynnika proporcji. To działanie lepiej odpowiada oczekiwaniom w zakresie udostępniania obrazów o stałych rozmiarach i nie wpływa na działanie domyślne, jeśli do obliczenia rozmiaru elementu kompozycyjnego używany jest tylko rozmiar wewnętrzny. (I40ae3, b/159838006)
  • Użyj AnimationSpec zamiast AnimationBuilder w interfejsach API najwyższego poziomu, aby wyjaśnić pojęcie specyfikacji statycznych animacji. – Ulepszenie DSL przejścia przez usunięcie wymogu lambda do tworzenia specyfikacji animacji, takich jak tween, sprężyna. Zamiast tego bezpośrednio przyjmują parametry konstruktora. – Poprawa ogólnej łatwości korzystania z AnimationSpec, przez co konstruktory nie są już potrzebne – Zamiast korzystać z monterów: zmień czas trwania i opóźnienia dla klatek kluczowych i Tween na Int. Eliminuje to niepotrzebne rzutowanie typów i przeciążenie metod (na potrzeby obsługi zarówno długich, jak i Int). (Ica0b4)
  • Usunięto klikalne elementy. Użyj elementu Modifier.clickable (I84bdf)
  • Dodano LazyRowItems – przewijany w poziomie odpowiednik elementu LazyColumnItems (Ibbcf7).
  • Wprowadzono bezstanowe interfejsy API animacji niskiego poziomu. te interfejsy API (I63bf7),
  • Metody androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Obiekty TextField, FilledTextField i CoreTextField, które korzystają z tego typu, również zostały wycofane. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • Zastąpiono użycie IntPx wartością IntPx wartością IntPxPosition zastąpioną wartością IntOffset. Zastąpiono wartość IntPxSize wartością IntSize. (Ib7b44)
  • Usunięto metodę androidx.ui.foundation.shape.banner shape. Użyj androidx.ui.graphics.banner shape (I94939, b/154507984)
  • Aby skonsolidować liczbę klas używanych do reprezentowania informacji o rozmiarze, ustandaryzuj wykorzystanie klasy size zamiast PxSize. Dzięki temu klasa wbudowanej wykorzystuje wartości zmiennoprzecinkowe do pakowania 2 wartości zmiennoprzecinkowych do reprezentowania szerokości i wysokości w postaci liczby zmiennoprzecinkowej. (Ic0191).
  • Aby skonsolidować liczbę klas służących do reprezentowania informacji o pozycjonowaniu, ustandaryzuj wykorzystanie klasy Offset zamiast PxPosition. Dzięki temu klasa wbudowanej wykorzystuje wartości zmiennoprzecinkowe do pakowania typu „long-to pack” (wartości zmiennoprzecinkowe) reprezentujące przesunięcia X i Y w postaci liczby zmiennoprzecinkowej. (I3ad98)
  • Dodano element Modifier.zoomable do powiększania, ściąganiem palców (Id5d63).
  • Komponent, który można przełączać, został wycofany. Użyj interfejsu Modifier.toggleable (I35220, b/157642842)
  • Funkcja MutuallyExclusiveSetItem została wycofana. Zamiast niej użyj elementu Modifier.selectable. (I02b47, b/157642842)
  • Funkcja TestTag została wycofana. Zamiast tego użyj parametru Modifier.testTag. (If5110, b/157173105)
  • Dodaje do tekstu parametr fontWeight, który nie został wcześniej dodany przez przypadek (I56937)
  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (I19d02).
  • Wyjątkowa funkcja Vertical Scroller teraz udostępnia kolumnę Column. Horizontal Scroller teraz udostępnia wiersz z opcją. (Ieca5d, b/157020670)
  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (Iede0b).
  • Do pakietu podstawowych dodano element Modifier.indication. Służy do wyświetlania informacji o naciśnięciu, przeciągnięciu lub innych elementach interaktywnych (I8425f, b/155287131).
  • Przewijanie pionowe i poziome obsługują teraz odwrotne przewijanie. W polu ScrollerPosition (I953bd) ustawiono odwrotne przewijanie.
  • Obsługa dodawania elementów kompozycyjnych do układu tekstu. (I1373c)
  • Skonsolidowaliśmy wdrożenia CanvasScope. Teraz dostępne są tylko DrawScope i ContentDrawScope Nazwa CanvasScope została zmieniona na DrawScope. Zaktualizowaliśmy DrawScope, aby wdrożyć interfejs Density i udostępnić podklasę Układ Usunięto DrawScope w ContentDrawScope Painter i PainterModifier zostały zaktualizowane tak, aby nie zarządzały już właściwością RTL, ponieważ DrawScope już ją udostępnia (I1798e)
  • Usunęliśmy wycofany interfejs DrawBackground API i zastąpiliśmy go w Modifierie interfejsami API rozszerzenia DrawBackground. Zrefaktoryzowano stosowanie kolorów, pędzli i malarstwa do rysowania tła, aby zmniejszyć ścieżki w kodzie, oraz wyeliminowaliśmy konieczność tworzenia modyfikatora w ramach kompozycji. (I0343a)
  • Zaktualizowane interfejsy API tworzenia wyższego poziomu, które udostępniają obiekt Canvas na potrzeby korzystania z CanvasScope. Dzięki temu nie muszą oni utrzymywać własnych obiektów Paint. Klienci, którzy nadal potrzebują dostępu do Canvas, mogą użyć metody rozszerzenia pullCanvas, która udostępnia wywołanie zwrotne do wysyłania poleceń rysowania za pomocą bazowego obiektu Canvas. (I80afd)
  • Horizontal Scroller i Vertical Scroller nie przywraca pozycji przewijania przy użyciu zapisanego stanu instancji. (Ia0fae, b/155075048)
  • Element FocusManagerAmbient został usunięty. Aby uzyskać fokus, użyj interfejsu FocusModifier.requestFocus. (Ic4826)
  • Układ tabeli został tymczasowo usunięty, dopóki nie udostępnimy go ponownie za pomocą odświeżonego interfejsu API. (Id88a7).
  • Utworzono interfejs CanvasScope API, który opakowuje obiekt Canvas w celu udostępnienia bezstanowej, deklaratywnej powierzchni interfejsu API do rysowania. Przekształcenia są zawarte w zakresie odbiorcy, a informacje o rozmiarze również są ograniczone do odpowiednich granic w tekście. Nie wymaga ona utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.

    Dodaliśmy CanvasScopeSample oraz zaktualizowaliśmy aplikację demonstracyjną, dodając do niej deklaratywną wersję demonstracyjną (Ifd86d).

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

  • Dodaj dostosowanie koloru kursora do pola tekstowego (I6e33f)

  • Teraz można ukryć lub wyświetlić klawiaturę programową za pomocą narzędzia SoftwareKeyboardController obsługiwanego przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).

  • Wartość TextFieldValue używana w polu TextField może teraz działać poza okresem odtwarzania 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 obecnie tworzysz lokalny styl tekstu do przekazywania niewielkiej liczby tych parametrów, np. Text(style = TextStyle(textAlign = TextAlign.Center)), możesz teraz po prostu podać je bezpośrednio: Text(textAlign = TextAlign.Center) (I82768).

  • Zastąpiliśmy parametr CoreTextField/TextField scanIdentifier, koncentracją na FocusNode, aby zintegrować go z podsystemem fokusu. (I7ea48)

  • Aktualizacja pola tekstowego – w wymiarze poziomym będzie ono zajmowało całą dostępną przestrzeń (Ib08df, b/154638552)

  • Dodaliśmy InteractionState i Interaction, które ułatwiają tworzenie komponentów reagujących na zmiany stanu interfejsu, takie jak naciśnięcie i przeciąganie (Icfe25, b/152525426).

  • Prostota kształtu została przeniesiona z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Zastąpiono wszystkie używane w interfejsie wartości null wartości koloru w interfejsie API wartością niedopuszczalną i użyliśmy wartości 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)

  • Zmieniono nazwę ScaleFit na ContentScale. Przeniesiono ContentScale z interfejsu ui-graficznie na moduł ui-core. Obiekt znajduje się w tym samym module co interfejs API wyrównania. Zmieniono nazwę FillMaxDimensions na Crop Zmieniano nazwę FillMinDimension na Fit Dostosowano nazwę Fit na Wewnątrz, aby lepiej dopasować ImageView.ScaleType Dodana dokumentacja, która wskazuje, że kombinacja Crop andrating.Center daje taki sam wynik jak w funkcji ImageView.ScaleType.CENTER_CROP i Fit wykorzystanego w przypadku scalenia.Center. Uzyskuje takie same wyniki jak w przypadku elementu ImageView.Center.00000

  • Usuwa komponent ProvideContentColor. Zamiast tego używaj elementu ContentColorAmbient bezpośrednio z atrybutem Providers (Iee942)

  • Dodaje do tekstu parametr koloru, co umożliwia zastąpienie koloru stylu tekstu bez konieczności ręcznego scalania ze stylem określonym w motywie. (I41a66)

  • Ulepsz DrawModifier API:

    • Utworzono zakres odbiornika pull() ContentDrawScope
    • Usunięto wszystkie parametry z funkcji pull()
    • DrawScope ma ten sam interfejs co poprzednia wersja CanvasScope
    • ContentDrawScope ma metodę pullContent() (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 został zaktualizowany zgodnie ze specyfikacją Material Design. Teraz możesz wybrać małe, średnie i duże kształty do wykorzystania przez większość komponentów (Ifb4d1).

  • Zastąpiono operator plusa z funkcjami rozszerzeń fabrycznych (I225e4).

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

  • Przeniesiono aplikację Text do pakietu androidx.ui.foundation z androidx.ui.core. (I87ce5)

  • dodaj parametr enabled do pól wyboru, przełączników i przełączników (I41c16)

  • Ripple to teraz modyfikator. Chociaż element „Clickable” nie został jeszcze przekonwertowany, zalecane użycie to Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

  • Dodaliśmy interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API w grafice wektorowej. W efekcie złożoności podrzędnej powstają w wyniku użycia obiektu VectorPainter, a nie DrawModifier. Wycofano poprzedni element kompozycyjny DrawVector na rzecz VectorPainter.

    Zmieniono nazwę interfejsu API Image(Painter) na PaintBox(Painter) Utworzono obiekt kompozycyjny wektorowy, który działa jak element kompozycyjny obrazu, ale z wyjątkiem komponentu VectorAsset, a nie komponentu ImageAsset (I9af9a, b/149030271).

  • Utworzono obraz kompozycyjny do określania rozmiaru i układu, a także do rysowania określonego zasobu ImageAsset na ekranie. Ten obiekt kompozycyjny umożliwia też rysowanie dowolnych instancji malowanych z uwzględnieniem ich wewnętrznego rozmiaru, a także obsługę danego stałego lub minimalnego rozmiaru (Ibcc8f).

  • Button, FloatingActionButton i Clickable mają teraz osobny parametr enabled. Nazwy niektórych parametrów elementu Button zostały zmienione lub zmieniono ich kolejność. (I54b5a)

  • Zmieniliśmy nazwę obrazu na ImageAsset, aby lepiej odróżnić dane obrazu od nadchodzącego elementu kompozycyjnego obrazu, który będzie używany do określania układu i rysowania treści.

    Utworzono metodę rozszerzenia w android.graphics.Bitmap, Bitmap.asImageAsset(), by utworzyć instancję obiektu ImageAsset, która może być przydatna do połączenia tradycyjnego tworzenia aplikacji na Androida z platformą compose. (Id5bbd).

  • Element kompozycyjny DrawImage został usunięty. Użyj ImagePainter, aby rysować w obecnym układzie, lub SimpleImage, aby przedstawić obraz, który zajmuje miejsce (I595e1, b/149827027)

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

  • Dodano ikony, IconButton i iconToggleButton oraz usunąć AppBarIcon. Dotychczasowe zastosowania AppBarIcon można zastąpić bezpośrednio elementem IconButton. Dzięki temu będą one miały prawidłowy docelowy element dotykowy. Zapoznaj się z przykładami informacji o korzystaniu i zobacz ikony przedstawiające dostępne ikony materiałów, których można używać bezpośrednio z tymi komponentami. (I96849)

  • Element kompozycyjny Drawkształt został usunięty. Użyj modyfikatora DrawBackground. (I7ceb2)

  • Dodaliśmy AdapterList – komponent przewijanej listy, który tylko komponuje i rozmieszcza widoczne elementy. Znane problemy obejmują między innymi to, że usługa działa tylko w pionie i nie obsługuje w pełni wszystkich przypadków zmian w elementach podrzędnych. (Ib351b)

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

  • Zmieniono nazwę tła na DrawBackground i ustawiliśmy je jako domyślne (Ia0bd3)

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

  • Dodano komponent Canvas. Ten element kompozycyjny zajmuje pewien rozmiar (podany przez użytkownika) i umożliwia rysowanie przy użyciu CanvasScope (I0d622)

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

  • Dodano komponent Box łączący funkcje układu i rysowania. (I6e2a7)

  • W przypadku przewijających treści widoczne są teraz natywne zachowanie Androida polegającego na przesuwaniu palcem. (I922af, b/147493715)

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

  • Nazwa parametru Modifier.tag została zmieniona na Modifier.layoutId, aby uniknąć nieporozumień z elementem Modifier.testTag. (I995f0)

  • Parametr procentu podczas tworzenia wskazówek dotyczących ConstraintLayout został zmieniony na ułamek. (Ida2db).

  • Dodano obsługę marginesów ograniczenia układu. (I47ffe)

  • Poprawiono obsługę RTL w ConstraintLayout. Dodano nieświadome interfejsy API. (I3b1c7)

  • Dodano nowy DSL dla układu ograniczeń. Więcej szczegółów znajdziesz w przykładach. (Icaa9a)

  • Dodano adnotację @Eksperymentalny układ. ConstraintUkład, FlowRowRow i FlowColumn są teraz za pomocą tego tagu, aby zaznaczyć, że ich interfejsy API ulegną zmianie. (I412a8)

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

  • Usunięto wycofane funkcje Wyrównaj wiersze, Kolumny Kolumny i Wiersze. (If60d4, b/155858731)

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

  • Dodano modyfikator układu shiftPx, który może służyć do definiowania (dynamicznych) przesunięć w pikselach. (I5af57)

  • Funkcja kompozycyjna {9}LineOffset została wycofana. Zamiast niej użyj modyfikatora relatedPaddingFrom(). Element kompozycyjny CenterWyrównajLine został usunięty. (I60107)

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

  • Kontener został usunięty. Użyj usługi Box (Ibbc2b, b/151407926)

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

  • Dodano 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 w modyfikatorach szerokości i wysokości, który powodował pomiar opakowanego układu bez ograniczeń względem przeciwległej osi. (I210b8, b/154797971)

  • Dodano parametry pionowe grawitacji i poziome grawitacja odpowiednio do wierszy i kolumn. (I7dc5a)

  • Zaktualizowano wartości wrapContentWidth i wrapContentHeight, aby uzyskać wyrównanie pionowe lub poziome, a nie wyrównanie. Modyfikator grawitacji został zaktualizowany, aby akceptować wyrównanie w pionie lub poziomie. Wiersze, kolumny i stosy zostały zaktualizowane tak, by umożliwić obsługę niestandardowego ciągłego wyrównywania. (Ib0728)

  • Utworzono wystąpienia wyrównania z dowolnymi wartościami. Dodano wyrównanie w 1D. (Ia0c05)

  • Zmieniono nazwy opcji EdgeInsets na InnerPadding. Zmieniono nazwę parametru innerPadding opcji Material Buttons na wiosłowanie. (I66165)

  • alignToSiblings; teraz akceptowalny obiekt Measured zamiast Placeable. (I5788d)

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

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

  • Usunięto wycofane funkcje kompozycyjne funkcji Zawijanie i Wyśrodkuj. (I29e23)

  • Dodano UkładModifier2 – nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac)

  • Użytkownicy RowScope i ColumnScope są teraz dostępni poza wierszami i kolumnami. (I3a641)

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

  • Dodano modyfikator LayoutOffset pozwalający przesunąć pozycję układu (I0b8a3).

  • Wstępna obsługa Rtl w układzie Compose (Ia5519)

  • Zaktualizowano Układ, aby nie wypełniać już dostępnego miejsca (I2b14f)

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

  • Usunęliśmy modyfikator UkładInflexible dotyczący wierszy i kolumn (I0d820).

  • Zastosuj uchwyty wyboru przeciągania, aby zmienić zaznaczenie pola tekstowego. (I27032)

  • Implementacja narzędzia LongPressAndDrag do zaznaczania pola tekstowego. (I17919)

Poprawki błędów

  • Interfejs FocusModifier został wycofany i zastąpiony przez Modifier.focus, Modifier.focusRequester i modifier.focusObserver. Opcje FocusState i FocusState zostały wycofane i zostały zastąpione FocusState2 (I46919, b/160822875, b/160922136)
  • Nazwa etykiety runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Zmieniono nazwy kilku testowych interfejsów API, 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 wycofaną wcześniej funkcję Modifier.ripple. Opcja „Klikalna” korzysta teraz z wskaźnika Echo (jeśli w aplikacji jest ustawiony MaterialTheme {}), więc w większości przypadków możesz po prostu bezpłatnie użyć wskaźnika fali. Jeśli musisz dostosować parametr koloru, rozmiaru lub ograniczenia fali, możesz ręcznie utworzyć parametr RippleIndication i przekazać go do klikalnych parametrów jako wskaźnika. (I663b2, b/155375067)
  • Usunięto przestarzałe interfejsy API do testowania rozmiaru. (Iba0a0)
  • Utworzono eksperymentalny interfejs API UkładNode (I4f2e9)
  • Wersja 1 blokowania orientacji przewijania jest zaimplementowana w usłudze Tworzenie. (I1ce7a, b/150289741)
  • Wyskakujące okienka, okna i menu dziedziczą kontekstowy element MaterialTheme (Ia3665, b/156527485)
  • Usunięto parametr kierunku układu z bloku pomiaru w funkcji Układ(). Kierunek układu jest jednak dostępny w wywołaniu zwrotnym za pomocą obiektu zakresu pomiaru (Ic7d9d)
  • Dodaj bezwzględny układ – umożliwia rozmieszczanie elementów podrzędnych w wierszu bez automatycznego tworzenia odbicia lustrzanego od prawej do lewej (I3a1df).
  • Adnotacja @Nieśledzona została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e).
  • Przed tą zmianą wtyczka kompilatora compose w łatwy sposób przechwytuje wywołania konstruktorów wewnątrz funkcji @Composable, jeśli istniała ona (I5205a, b/158123804)
  • Dodanie funkcji viewModel() composable, która umożliwia utworzenie lub uzyskanie już utworzonego obiektu ViewModel, podobnie jak to działa w przypadku aktywności lub fragmentu (I5fdd1)
  • Zrefaktoryzowano klasę promienia na klasę wbudowaną. Usunęliśmy metody tworzenia elementów towarzyszących na rzecz konstruktora funkcji z domyślnym parametrem, dzięki któremu promień na osi Y odpowiadał obowiązkowemu parametrowi promienia osi X.

    Zaktualizowano element DrawScope.drawRoundRect tak, aby w przypadku promienia wzdłuż osi x i Y przetwarzał 1 parametr Radius zamiast 2 osobnych wartości zmiennoprzecinkowych (I46d1b).

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu parametrów pikseli tylko na typach Dp i podstawowych. Usunięto całą klasę Px (I3ff33)

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (I086f4).

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (Id3434).

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (I97a5a).

  • Kursor w polu TextField ma migającą animację (Id10a7)

  • Częściowe gesty nie wymagają już przekazywania tokena GeToken (Id7ae5)

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (I57bff).

  • Funkcja Modifier.semantics została wycofana, aby można było korzystać z komponentów wysokiego poziomu. (I4cfdc)

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

  • Zaktualizowany interfejs Tracking API i dodatkowa obsługa wyrównania bezwzględnego (które nie powoduje automatycznego odbicia lustrzanego w kontekście Rtl) (I38cd3)

  • Elementy podrzędne Layout i LayoutModifier można mierzyć, korzystając z innego kierunku układu. (Ibd731)

  • Wprowadź do ImagePainter dodatkowy opcjonalny parametr rect, aby umożliwić rysowanie podsekcji bazowego zasobu ImageAsset (I0ea9e).

  • Usunięto awarię listy adapterów podczas usuwania elementów (Ic64b0, b/153195921).

  • Zmieniliśmy sposób mierzenia pierwszego układu umieszczonego w bloku activity.setContent { }. Wcześniej trzeba było wypełnić cały ekran aktywności, a teraz układ działa tak, jakby umieszczał się w stosie: może być mniejszy niż ekran i znajduje się w lewym górnym rogu ekranu. Jeśli wolisz stary sposób, możesz zastosować do swojego układu funkcję Modifier.fillMaxSize(). (Ie88a7, b/153453714)

  • Nazwa modułu ui-text-compose to teraz ui-text. Moduł ui-text zawiera teraz obiekty kompozycyjne CoreText i CoreTextField (Ib7d47).

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

  • Przeniesiono platformę ui-framework/CoreText i elementy kompozycyjne CoreTextField w obszarze ui-text-compose. Możesz dodać do projektu polecenie ui-text-compose. (I32042)

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

  • [Mutable]Operatorzy delegowani przez władze stanowe zostali przeniesieni do rozszerzeń, aby umożliwić optymalizowanie przekazywania dostępu w Kotlin w wersji 1.4. Aby nadal korzystać z metody by state { ... } lub by mutableStateOf(...), wywołujące muszą dodać importy. (I5312c)

  • W metodach DrawLayerModifier i drapLayer() są teraz domyślne ustawienie clipToBounds i clipToOutline na false. (I0eb8b, b/152810850)

  • Nazwa elementu LayoutResult została zmieniona na MeasureResult. (Id8c68)

  • Wycofany element kompozycyjny: Center. Należy ją zastąpić modyfikatorem UkładSize.Fill + Układ.Center albo jednym z elementów kompozycyjnych Box lub Stack z zastosowanymi odpowiednimi modyfikatorami (Idf5e0).

  • Zmieniono nazwę UkładuElastycznego na UkładWeight. Zmieniono nazwę ścisłego parametru na wypełnienie. (If4738)

  • Funkcja DrawVector została zmieniona ze zwykłej funkcji kompozycyjnej do zwracania funkcji modyfikatora pullVector(), która rysuje wektor jako tło układu. (I7b8e0)

  • Zastąp funkcję kompozycyjną Clip z modyfikatorem drawClip(). DrawClipToBounds to wygodny modyfikator, którego można używać, gdy chcesz przyciąć tylko krawędzie warstwy za pomocą prostokątnego kształtu. (If28eb)

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

  • Strona androidx.compose.ViewComposer została przeniesiona do androidx.ui.node.UiComposer androidx.compose.Emittable została usunięta. Komponent ComputeNode był nadmiarowy. androidx.compose.ViewAdapters został usunięty. Nie są już obsługiwane. Atrybut Compose.composeInto został wycofany. Użyj w zamian zasady setContent lub setViewContent. Parametr Compose.disposeComposition został wycofany. Użyj zamiast tego metody dispose w obiekcie Composition zwróconym przez setContent. Nazwa androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto KomponentNode#emitInsertAt został zmieniony na KomponentNode#insertAt KomponentNode#emitRemoveAt został zmieniony na KomponentNode#removeAt KomponentNode#emitMode został zmieniony na KomponentNode#emitMode.

  • Wycofany funkcja kompozycyjna zawijania. Można ją zastąpić modyfikatorem UkładWyrównaj lub kompozycyjnym Stosem (Ib237f).

  • Umożliwiono rozpowszechnianie kierunku układu z nadrzędnego węzła układu do elementów podrzędnych. Dodano modyfikator kierunku układu. (I3d955)

  • Nowo utworzony modyfikator ma nazwę Painter.toModifier, ponieważ zawiera odwołanie do oryginalnego elementu Painter, które może być współdzielone przez wiele instancji modyfikatorów (I7195b).

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

  • Połączyliśmy funkcje DensityScope i DensityScope w jeden interfejs. Zamiast parametru nieaktywnyDensity() możesz teraz użyć funkcji DensityAmbient.current. Zamiast parametru Gęstość(gęstość) tylko w wartości(gęstość) (I11cb1)

  • Usunięto klasę ValueHolder. Zmodyfikowaliśmy strukturę pola animowanegoValue i AnimationFloat, aby pole wartości animacji stało się abstrakcyjne, tak aby podklasy mogły obserwować aktualizację wartości.

    • Dodano klasy modelu do animacjiAnimationValue,AnimationFloat itp.
    • Dodaliśmy nowy zestaw lekkiego interfejsu API @Composable do animowania między wartościami.
    • (I79530)
  • Najważniejsze zmiany w interfejsie API wygaszacza. Szczegółowe informacje znajdziesz w dzienniku i dokumentacji Ambient<T> (I4c7ee, b/143769776).

  • Pozycje całkowite linii wyrównania zwrócone przez funkcję Placeable#get(BalancementLine) nie mają teraz wartości null. Jeśli brakuje żądanej linii wyrównania, zostanie zwrócona wartość TrackingLine.Unspecified. (I896c5, b/158134875)

  • Naprawiliśmy błąd dotyczący układu ograniczeń, który powodował awarię przy rekompozycji. (Ibee5a, b/158164341)

  • Zmieniono interfejs API lambda na końcu WithConstraints. Zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń i układu DirectionDirections udostępnia właściwości minWidth, maxWidth, minHeight i maxHeight w Dp (I91b9a, b/149979702).

  • Zmieniliśmy nazwę elementu LayoutModifier2 na LayoutModifier. (Id29f3).

  • Funkcje pomiarów wewnętrznych w funkcjach Layout i UkładModifier2 mają teraz odbiornik IntrinsicMeasureScope, który zapewnia wewnętrzny interfejs API zapytań z niejawnie rozpowszechnianym kierunkiem układu. (Id9945)

  • Interfejs LayoutDirectionAmbient został wycofany. Aby odczytać kierunek układu zdefiniowany przez język, użyj parametru localeUkładDirection w komponencie ConfigurationAmbient (I851b1)

  • Dodano element positionInParent i boundsInParent do współrzędnych układu. (Icacdd, b/152735784)

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

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

  • Nie zezwalaj na dopełnienie ujemne w elemencie LayoutPadding. Zamiast tego do przesunięcia pozycji ujemnych należy używać parametru LayoutOffset. (Ifb5b1)

  • WithConstraints pobiera parametr UkładDirection (I6d6f7)

  • Zaktualizowano flagę ComposeFlags.COMPOSER_PARAM na true, co zmieni strategię generowania kodu wtyczki tworzenia wiadomości. Ogólnie rzecz biorąc, funkcje @Composable są generowane z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań funkcji @Composable w celu prawidłowego zarządzania wykonywaniem w środowisku wykonawczym. Jest to znacząca zmiana, która powoduje uszkodzenie kodu binarnego, ale powinna zachować zgodność na poziomie źródła we wszystkich sankcjach dotyczących tworzenia wiadomości. (I7971c)

  • Zmieniono układ LayoutCoordinates, aby zamiast mapy w interfejsie LayoutCoordinates ustawić opcję ProvideMatchLines Ułatwia to modyfikatorom modyfikowanie jednej lub wielu wartości w zestawie bez konieczności tworzenia nowego zbioru dla każdego modyfikatora. (I0245a)

  • W przypadku układu UkładCoordinates nie ma już właściwości pozycji. Właściwośćposition nie ma sensu przy rozważaniu użycia modyfikatorów układu, rotacji czy skalowania. Zamiast tego do obliczenia przekształcenia z jednego koordynatora układu do innego programiści powinni używać funkcji nadrzędnych i podrzędnych (childToLocal()).

    Układ LayoutCoordinates używa właściwości „size” z atrybutu IntPxSize, a nie PxSize. Układy używają liczb całkowitych w pikselach w przypadku układów, dlatego we wszystkich układach należy stosować liczby całkowite, a nie liczby zmiennoprzecinkowe. (I9367b)

  • Ulepszenia powierzchni interfejsu API Ograniczeń (I0fd15)

  • Dodano TextDirection.Content (I48f36)

  • W menu paska narzędzi należy wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955)

  • Dodaj element FloatingToolbar do zaznaczania pola tekstowego. (IE8B07)

  • Nazwa elementu TextDirectionAlgorithm została zmieniona na TextDirection (I75ce8).

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

  • Dodano informacje haptyczne do wyboru pola tekstowego. (I58050)

  • Dodano metody kopiowania, wycinania i wklejania do wyboru pola tekstowego. (Idb70b).

  • Znacznik testowy i Semantyka zostały usunięte. Zamiast tego użyj elementów Modifier.testTag i Modifier.semantics (I15ff0, b/158841414).

  • Zmieniono nazwę pakietu dla ustawień 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 dla operacji tekstowych. (I49d53)

  • Nowa funkcja LifecycleOwnerAmbient jest już dostępna. Aktywność, której używasz teraz w interfejsie tworzenia, powinna mieć rozszerzenie androidx.activity.ObjectActivity (lub AppCompatActivity). Funkcja setContent w android.app.Activity została wycofana (Idb25a, b/153141084)

  • Nazwę pakietu ui-android-text (androidx.text) zastąpiono przez androidx.ui.text.platform, aby zapewnić zgodność z zasadami Androidax. (I42711).