Podstawy tworzenia
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
{1x{/pose}Foundation.compose.API
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.
Grupa | Opis |
---|---|
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.foundation | Pisz 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.
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 elementuLinkAnnotation
i analizowania ciągu znaków HTML z zastosowaniem metodyMaterialTheme
do linków. (I98532, b/139312671) - W usługach
LazyVerticalGrid
iLazyHorizontalGrid
dodaliśmy obsługę animacji z wyglądem i zniknięciem. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
na potrzeby wyświetlania animacji w miejscach docelowych (zmianie ich kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 typów animacji: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (Ib7d12, b/330510929) - W usługach
LazyVerticalStaggeredGrid
iLazyHorizontalStaggeredGrid
dodaliśmy obsługę animacji z wyglądem i zniknięciem elementu. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
na potrzeby wyświetlania animacji w miejscach docelowych (zmianie ich kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 typów animacji: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (I69bc9, b/330511290)
Zmiany w interfejsie API
- Dodaje pole
ContextMenuColors
i powiązane z nimLocalContextMenuTheme
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ą funkcjiPlaceable.PlacementScope.withDirectManipulationPlacement
. Podobnie układ, który często zmienia pozycję swoich elementów podrzędnych, może teraz umieszczać je za pomocą elementuwithDirectManipulationPlacement
(np. Scroll (domyślnie zaimplementowany). W ten sposób sprawia, że animacje oparte naapproachLayout
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
dlaLazyStaggeredGrid
. 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 funkcjarequestScrollToItem
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 funkcjarequestScrollToPage
zostanie wywołana. (Ic4213) - Wprowadzono
requestScrollToItem
dlaLazyGrids
. 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 funkcjarequestScrollToItem
zostanie wywołana. (I0a7a0) - Interfejs
ClickableText
został oznaczony jako wycofany. Aby dodać linki do tekstu, utwórzAnnotatedString
z elementemLinkAnnotation
odpowiadającym Twojemu linkowi i prześlij tenAnnotatedString
do funkcji kompozycyjnejText
(I34d4b, b/323346994) - Interfejs
UrlAnnotation
został wycofany. Użyj interfejsuLinkAnnotation.Url
. Jeśli stosujesz motywy Material, użyj obiektuTextDefaults
, aby utworzyć adnotację z tematyką Material Design (I8d180, b/323346545). - Nazwa etykiety
String.parseAsHtml
została zmieniona naAnnotatedString.Companion.fromHtml
(I43dcd) - Dodano argumenty stylu (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) i detektor interakcji z linkiem do metodyparseAsHtml
. Podczas analizy ciągu znaków HTML z tagami<a>
ta metoda tworzy elementLinkAnnotation.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 iLinkInteractionListener
. Dodaj tę adnotację do elementuAnnotatedString
, aby uzyskać hiperlink. Przekazując atrybutyfocusedState
lubhoveredState
, 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 parametrtextObfuscationCharacter
, który określa, którego znaku ma być używany przy zaciemnianiu treści. (I0588b) - Źródła (
NestedScroll
) zostały zastąpione przezUserInput
iSideEffect
, 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. PoleTextFieldBuffer.originalValues
zostało zastąpione przezTextFieldBuffer.originalText
iTextFieldBuffer.originalSelection
. (I2c7d6) ImeOptions.hintLocales
nie może już zawierać wartości null. Jeśli chcesz przekazać pustą listę języków, użyj poleceniaLocaleList.Empty
. (Ic5bc4)- Nazwa elementu
getOffsetFractionForPage
została zmieniona nagetOffsetDistanceInPages
. (Ia05e2).
Poprawki błędów
- Po połączeniu elementów typu
InputTransformations
z tabeląnext
ich wartości typuKeyboardOptions
są teraz prawidłowo scalone przez poszczególne opcje za pomocą nowej metodyKeyboardOptions.merge
. (Ie5304, b/295951492) targetValue
AnchoredDraggableState
nie uwzględnia już progów pozycjonowania. Teraz ma wartość progową równą 50%, co oznacza, żetargetValue
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
iLazyRow
dodaliśmy obsługę animacji z wyglądem i zniknięciem elementu. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
na potrzeby wyświetlania animacji w miejscach docelowych (zmianie ich kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 typów animacji: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (I2d7f7, b/150812265) - Klienci 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 parametrAnnotatedString
. 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 instancjiGraphicsLayer
oraz obsługuje wbudowane funkcje renderowania bez konieczności koordynowania z implementacjami funkcji Composable w celu określenia instancji z modyfikatoremGraphicsLayer
.
Zmiany w interfejsie API
- Wszystkie parametry
KeyboardOptions
mają teraz domyślnie nieokreśloną wartość. Dodano metodęKeyboardOptions.merge
. - Zmieniono nazwę
KeyboardOptions.autoCorrect
naautoCorrectEnabled
i dokonano wartości null, gdzie null oznacza, że nie określono żadnej wartości. (Ia8ba0, b/295951492) - Nazwa elementu
outOfBoundsPageCount
została zmieniona nabeyondViewportPageCount
. (I129c6) - Zmieniono wartość „
fun ClipEntry.getMetadata()
” na „val ClipEntry.clipMetadata
”. (I50155) - Czcionka
TextFieldState.valueAsFlow()
została usunięta. Wolę użyć właściwościsnapshotFlow { state.text }
lubsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629) - Zmieniono kolejność parametrów (
InputTransformation.transformInput
). UżytkownikoriginalValue: TextFieldCharSequence
został usunięty. Zamiast tegoTextFieldBuffer
nosi teraz tę wartość o tej samej nazwie. Usunięto też parametrvalueWithChanges: TextFieldBuffer
.TextFieldBuffer
jest teraz zakresem odbiorcy funkcji. (I919cc) - Do przetwarzania działań wykonywanych za pomocą klawiatury programowej (
BasicTextField(state)
) i w interfejsieBasicSecureTextField
używany jest terazKeyboardActionHandler
zamiastKeyboardActions
. (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 nashowKeyboardOnFocus
. (Ib4b7a, b/295951492) - Usunięto parametr
hintMediaTypes
z metodyModifier.contentReceiver
. Zachęcamy deweloperów do sprawdzenia typu multimediów odebranegoTransferableContent
, ponieważ może on być niezgodny ze skonfigurowanym elementemhintMediaTypes
. (I82f99) - Zmieniono kolejność parametrów elementu
BasicSecureTextField
. Usunęliśmy parametrykeyboardType
iimeAction
na rzecz pełnej klasyKeyboardOptions
przy zachowaniu tych samych wartości domyślnych odpowiednich dla parametruBasicSecureTextField
. Usunięto też parametrscrollState
. (Ibbfa9) - Zmieniono typ użytkownika
TextFieldState.text
z „TextFieldCharSequence
” na „CharSequence
”. Dlatego dodanoTextFieldState.selection: TextRange
iTextFieldState.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
iClipboardManager.hasClip
. Aby odczytać metadane bieżącego klipu, użyjclipEntry.getMetadata()
. Aby dowiedzieć się, czy schowek zawiera bieżący klip, sprawdź też wynik funkcjiClipboardManager.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ążenieModifier.receiveContent
, które przyjmuje lambda, ponieważReceiveContentListener
jest teraz interfejsem funkcji. - Nazwa aplikacji
Modifier.receiveContent
została zmieniona naModifier.contentReceiver
. (I1e6af) - Nazwa elementu
TransferableContent.consumeEach
została zmieniona naTransferableContent.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 metodyModifier.Node
. (I05bb1) - Cofnięto ostatnią zmianę umowy, w wyniku której wywołania funkcji
AnchoredDraggableState#anchoredDrag
były przyciągane po zakończeniu operacjianchoredDrag
. (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ą argumentuonLinkClicked
. 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
iTextFieldBuffer
. Usunięto też sufiksyinChars
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ścisettledValue
, 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. InterfejsPlatformTextInputTestOverride
został wycofany. (I862ed, b/322680547) - Podziel
restrictedConstraints()
na 2 metody:fitPrioritizingWidth()
ifitPrioritizingHeight()
(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ęzykhintLocales
, aby umożliwić użytkownikowiTextFields
dodanie instrukcji w edytorze IME z konkretnymi językami umożliwiającymi ustawienie preferowanego języka. (Id18c2). - Usunięto przeciążenia eksperymentalne
BasicTextField2
iBasicSecureTextField
, które miały parametryvalue: String
ionValueChange: () -> String
. (I568b4) - Dodaj do elementu
InputTransformation
opcjonalną funkcjęapplySemantics
, aby wpłynąć na semantykę obiektuBasicTextField2
, 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 naBasicTextField
. (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 AndroidaView
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
lubreadOnly
obiektuTextField
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 aktualnegoLayoutCoordinates
dla:Modifier.Node
bez konieczności zastępowaniaonPlaced
i samodzielnego zapisywania współrzędnych w nieruchomości. (Ia8657) - Wprowadzono
DelegatableNode.currentLayoutCoordinates
jako sposób na uzyskanie aktualnegoLayoutCoordinates
dla:Modifier.Node
bez konieczności zastępowaniaonPlaced
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 pakiecieandroidx.compose.foundation.text2
są przenoszone doandroidx.compose.foundation.text
. (I9f635)BasicTextField2
nie akceptuje już parametruCodepointTransformation
. Użyj kontaBasicSecureTextField
lubOutputTransformation
. (Id34ff).- Dodano metodę porównywania tylko adnotacji 2 elementów
AnnotatedStrings
. (I32659) - Przedstawiamy
ContextualFlowRow
i ulepszonyFlowRow
/Column
obejmującyMaxLines
iOverflow
. Z przyjemnością informujemy, że oprócz wersjiContextualFlowRow
iContextualFlowColumn
wprowadzamy ulepszenia do eksperymentalnych wersjiFlowRow
iFlowColumn
, które oferują terazmaxLines
i obsługę dodatkowych obszarów. Ta aktualizacja ma zapewnić optymalne działanie komponentów, przy czymContextualFlow*
jest idealnym rozwiązaniem w przypadku dużej liczby elementów korzystających z małej konfiguracjimaxLines
, a dynamiczna +N pozwala uzyskać więcej przycisków.FlowRow
iFlowColumn
to idealne rozwiązanie w przypadku niewielkiej liczby elementów, poniżej 100 elementów. Ważne: aby zachować dotychczasowe działanie funkcjiFlowRow
lubFlowColumn
, w której tworzą się wszystkie elementy niezależnie od tego, czy mieszczą się w maksymalnej wartości na osi krzyżowej, podczas inicjowania ustawoverflow
naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. PoznajContextualFlowRowSample
iFlowRowSample
, aby zobaczyć przykłady tych nowych funkcji w praktyce. (Ib9135, b/293577082)
Poprawki błędów
- Animacja kursora nie wysyła już żądań klatek między stanem włączenia i wyłączenia. (Ia2253)
- Wycofane 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
iPagerState
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ę zBasicTextField2
, 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ągiemTargetedFlingBehavior
, 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
– obiektFlingBehavior
, 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 interfejsuIndication
w porównaniu z poprzednim (już wycofanym) interfejsemrememberUpdatedInstance
API. Informacje o migracji znajdziesz na developer.android.com. clickable / combinedClickable / selectable / toggleable
akceptuje teraz parametrMutableInteractionSource
z wartością null. Jeśli parametr ma wartość null, a podanyIndication
toIndicationNodeFactory
, elementIndication
można utworzyć tylko w razie potrzeby, co zwiększa wydajność. Jeśli nie podnosisz i nie używasz interfejsuMutableInteractionSource
, zalecamy przekazywanie wartości null.
Zmiany w interfejsie API
- Wprowadź
DecayAnimation
wAnchoredDraggable
. Ta zmiana dodaje doAnchoredDraggable
parametrdecayAnimationSpec
, który umożliwia korzystanie z animacji spadku udziału w przypadku jednej z kotwice. Ta zmiana obejmuje też zmianę nazwy istniejącegoanimationSpec
nasnapAnimationSpec
, 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 funkcjamiBasicTextField
, 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 naBasicTextField
i zostanie przeniesiona do tego samego pakietu. - Wprowadziliśmy pierwszą wersję roboczą interfejsu
OutputTransformation
API dlaBasicTextField2
. Ten interfejs API zastępuje większość przypadków użyciaVisualTransformation
w starej wersjiBasicTextField
. 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 zachowanieBasicTextField
polegające na zażądaniu włączenia klawiatury programowej.- Metody
TextInputService
iLocalTextInputService
zostały wycofane. Zamiast tego użyjPlatformTextInputModifierNode
, 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 APIIndicationNodeFactory
.
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
lubreadOnly
obiektuTextField
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ągModifier.swipeable
. Z przewodnika po migracji dowiesz się, jak korzystać z tej usługi i przeprowadzić migrację zModifier.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
iAndroidEmbeddedExternalSurface
, aby ułatwić dodawanie komponentów opartych na powierzchni do użycia w komponencie. - Różne zmiany i ulepszenia interfejsów API w
Pager
isnapFlingBehaviour
- 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 poleceniaobject: 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()
iLookaheadScope
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 elementDragAndDropTarget
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 jednostkimaximumFlingVelocity
. (I8adc7) Nazwa
onDragAndDropStart
w fabryceDragAndDropModifierNode
została zmieniona naacceptDragAndDropTransfer
.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 parametrDragAndDropTarget
, 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 poluAnchoredDraggable
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 typuDragAndDropModifierNode.drag
przyjmuje teraz parametry dla właściwościtransferData
, rozmiar dekoracji i przeciągaj lambdaDrawScope
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ądzeniaDragAndDropModifierNode
została zmieniona naonDragAndDropStart
, aby lepiej informować, że podany parametrDragAndDropTarget
jest prawidłowy tylko w danej sesji przeciągania i upuszczaniaDragAndDropEventType
został usunięty (I645b1)Nazwa elementu
PlatformTextInputModifierNode.runTextInputSession
została zmieniona naestablishTextInputSession
. (I03cd0)Zastąp
OriginalText
nazwąTextSubstitution
. (Ifa5a8)Nazwa elementu
PlatformTextInputModifierNode.textInputSession
została zmieniona narunTextInputSession
. (Ie9c6b)Elementy podrzędne elementu
SubcomposeLayout
(i układów takich jakLazyColumn
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 APIassertIsDeactivated()
. Pozostałe testowe interfejsy API odfiltrowują domyślnie wyłączone węzły. (I2ef84, b/187188981)Nazwa parametru
clippingEnabled
parametruModifier.magnifier
została zmieniona naclip
.Parametr
magnifierCenter
elementuModifier.magnifier
może mieć wartość null, ale 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 elementuminWidth
iminWidth
był mniejszy niż początkowe ograniczenia pomiarumaxWidth
(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ę lambdaonDrawDragShadow
zmieniono nadrawDragDecoration
, a parametr rozmiaruDragAndDropInfo
zmieniono nadragDecorationSize
. (Id0e30, b/303904810)- Nazwa parametru
decorationBox
parametruBasicTextField2
została zmieniona nadecorator
. 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
naAndroidExternalSurface
(I11680) - Dodano tymczasową flagę
DisableNonLinearFontScalingInCompose
, aby wyłączyć nieliniowe skalowanie czcionek. UstawDisableNonLinearFontScalingInCompose = 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
iColorSet
, które pomijają przydziały. (I744bd) - Ta zmiana usuwa element
shortSnapVelocityThreshold
, który został przekształcony w szczegóły implementacji implementacjiSnapLayoutInfoProvider
. (I65f6d) - Dodaje modyfikator
dragAndDropSource
do rozpoczynania sesji przeciągania i upuszczania oraz modyfikatordragAndDropTarget
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 elemencieSnapPositionInLayout
. (Id7938, b/300116110) - Do aplikacji
TextFieldState
dodano uprawnieniaUndoState
, 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()
iEmbeddedGraphicsSurface()
. 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 parametruMagnifierStyle
na rzecz parametrów wbudowanych w samym modyfikatorze. (I83bec, b/298381260, b/262367109, b/261438887)
Zmiany w interfejsie API
- Wprowadziliśmy
updateCurrentPage
iupdateTargetPage
wScrollScope
te funkcje, czyli ostatnie elementy niezbędne do dostosowania animowanego przewijaniaPagerState.scroll
. (I9cad5, b/267744105, b/243786897) - Usuń gęstość z tych elementów:
SnapFlingBehavior
. Wszystkie implementacje funkcjiSnapLayoutInfoProvider
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ównoSnapFlingBehavior
, jak iSnapLayoutInfoProviders
. (I153c3) - Więcej modyfikatorów oznaczonych jako stabilne. (I56af1, b/298046462)
- Użytkownik
SnapStepSize
został usunięty z listySnapLayoutInfoProvider
. 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
- Usuń możliwość używania etykiet przez
rememberSaveable
. (Icc131, b/299500338)
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 APIBasicTextField
. (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
iRecyclerView
, jest ograniczona doViewConfiguration.ScaledMaximumFlingVelocity
. Funkcja Utwórz zawiera teraz własną wersję elementumaximumFlingVelocity
, która obowiązuje teraz w odniesieniu doDraggable
. (Ibf974) - Usunięto wycofane przeciążenia typu
Pager
iPagerState
. (Iea07e). - Dodano element
BasicTooltipBox
do aplikacjicompose.foundation
oraz zaktualizowanoPlainTooltipBox
iRichTooltipBox
, aby używać elementuTooltipBox
z nowymi elementami kompozycyjnymiPlainTooltip
iRichTooltip
. (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 APIBasicTextField
. (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ć rozmiarviewPort
komponentu, który po przeprowadzeniu pomiaru używa polaScrollState
. (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 zasadyModifier.consumeWindowInsets
. (Id72bb)
- Interfejs
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ściLazyLayoutItemProvider
, a nie zwykły obiekt, jak wcześniej. Poprzednie przeciążenie zostało wycofane. (I42a5a) - Dodano obsługę konfigurowania usługi
privateImeOptions
(Idb772).
Poprawki błędów
- 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 ustawieniareadOnly
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 wPager
. Wprowadziliśmy teżPageInfo
– informacje o pojedynczej mierzonej stronie wPager
. (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
iLocalSoftwareKeyboardController
nie są już eksperymentalne. ElementLocalSoftwareKeyboardController
jest teraz poprawnym elementem typuCompositionLocal
. (I4c364) Modifier.transformable
Udostępnia teraz parametr delta przesunięcia w elemenciecanPan
, 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 APISwipeable
Material. (I4a2ed)
Zmiany w interfejsie API
- Pomoc
InputConnection#requestCursorUpdates
(I0c69b) - Wprowadzono
scrollAnimationSpec
, aby umożliwić korzystanie ze specyfikacji animacji niestandardowych. Zaktualizowano:BringIntoViewCalculator
naBringIntoViewScroller
. (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 jakScrollable
odpowiadają na żądaniabringIntoView
. 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 elementuFocusTarget
. (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 ustawieniareadOnly
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 APIModifier.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 tabeliPagerState
, 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 toAutoboxingStateCreation
. 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ącwarning "AutoboxingStateCreation"
w konfiguracjibuild.gradle
lubbuild.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. InterfejsSensorGateway
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ć zLazyGridState
. (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 elementLazyGrid
, 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 nacalculateSnappingOffset
. 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 kontaHorizontal/VerticalPager
. Należy ją podać podczas tworzenia stanu. ZaktualizowanoPagerState
irememberPagerState
, aby zaakceptowaćpageCount
. (Ieb52d, b/266965072) - Usuń
pageCount
z kontaHorizontal/VerticalPager
. Należy ją podać podczas tworzenia stanu. ZaktualizowanoPagerState
irememberPagerState
, aby zaakceptowaćpageCount
. (Ifa3cb, b/266965072) - Przedstaw
shortSnapVelocityThreshold
w filmieSnapFlingBehavior
pagera. (I7379e, b/275579012) - Dodaje:
FlowRowScope
iFlowColumnScope
. (I54fe2)
Poprawki błędów
- Wywołania pozwalające uzyskać semantykę tekstu, gdy ograniczenia mają
minWidth
iminHeight
, 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órceAnnotatedString
można teraz otwierać za pomocą usług ułatwień dostępu takich jakTalkBack
. (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
wFlowRow
ihorizontalArrangement
wFlowColumn
. Usuwamy równieżverticalAlignment
ihorizontalAlignment
najwyższego poziomu w:FlowRow/FlowColumn
. Zamiast niego deweloperzy mogą używać właściwościModifier.align
. Pozwala to uniknąć nieporozumień między konwencjami nazewnictwa wverticalAlignment
iverticalArrangement
. (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
. Modyfikatorhoverable
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
iTextField
, 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 tablicyClickableText
(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
i funkcjicreate*ComposeRule
, które akceptują parametryCoroutineContext
. Kontekst będzie używany na potrzeby kompozycji testowej oraz wszelkich wywołań funkcjiLaunchedEffect
irememberCoroutineScope()
w kompozycji. (I10614, b/265177763) - Parametry
FlowRow
iFlowColumn
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
elementuBasicTextField
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
iperformTextSelection
używają terazSemanticsActions
. (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 elementuLayout
(np. jako elementu elementuLazyColumn
). Poprawiono działanieFocusTargetModifierNode
, aby prawidłowo zresetować aktywny stan. (I65495, b/265201972) - Dodano parametr
BlendMode
do metodDrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508) - Usunięto interfejs API
modifierElementOf()
. Rozszerz ją bezpośrednio z adresuModifierNodeElement
. (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
iTextField
, 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 interfejsachLazyLayouts
, aby zachować elementy, które wyjściły z kompozycji, ale nadal muszą być aktywne. (If45a4) - Zmieniono nazwę
PinnableContainer.PinnedHandle.unpin()
narelease()
(I4667a)
Wkład z zewnątrz
- Dodano właściwość
mainAxisItemSpacing
do:LazyListLayoutInfo
,LazyGridLayoutInfo
iLazyStaggeredGridItemInfo
(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 tablicyClickableText
(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
i funkcjicreate*ComposeRule
, które akceptują parametryCoroutineContext
. Kontekst będzie używany na potrzeby kompozycji testowej oraz wszelkich wywołań funkcjiLaunchedEffect
irememberCoroutineScope()
w kompozycji. (I10614, b/265177763)
Zmiany w interfejsie API
- Łączy interfejsy API używane przed i po
OverscrollEffect
w połączone funkcjeapplyToScroll
iapplyToFling
„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
iHyphens
wTextStyle
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
wTextInputSession
iTextInputService
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
iFlowColumn
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 przezFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529,5/18,{/13 - Konstruktor
AndroidFont
z elementemvariationSettings
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ładModifier.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 jakoStatic(default)
lub animowany. Użyj funkcjiTextMotion.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
wdrawText
nasize: Size
, aby był wbudowany z innymi funkcjamiDrawScope
.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
doandroidx.compose.foundation:1.4.0-alpha04
może wystąpić błądjava.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 bibliotekiandroidx.compose.material
iandroidx.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łujewithFrameNanos
lubwithFrameMillis
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 parametronPerformTraversals: (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
iVerticalPager
– 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 funkcjeScrollableState#canScrollForward/backward
zwracają wartość fałsz). (I1a4b0, b/255554340, b/255557085) - Dodano parametry
ScrollableState#canScrollForward
iScrollableState#canScrollBackward
, aby sprawdzić, czy elementScrollableState
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 pakietuScrollableState
. 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 sekcjiScrollableStates
, 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 elementuScrollable 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 wSnapLayoutInfoProvider
. (Ife67c) - Dodano:
EmojiCompat
do listyCompose
(Ibf6f9, b/139326806) - Nazwa
consumedWindowInsets()
została zmieniona naconsumeWindowInsets()
, awithConsumedWindowInsets()
naonConsumedWindowInsetsChanged()
, 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
iwaitForUpOrCancellation
akceptują terazPointerEventPass
, 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
iBasicTextField
dodano parametrminLines
. 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 funkcjiforEachGesture()
, ale zapętlenie gestów odbywa się tylko w obrębie interfejsuAwaitPointerEventScope
, więc zdarzenia nie są pomijane w kolejnych iteracjach. - Interfejs
forEachGesture()
został wycofany i zastąpiony komponentemawaitEachGesture()
, ponieważ dopuszcza on utratę zdarzeń między gestami. (Iffc3f, b/251260206) - Dodano
WindowInsets.imeAnimationSourc
e iWindowInsets.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
iLazyHorizontalStaggeredGrid
. SnapFlingBehavior
,rememberSnapFlingBehavior
i inne powiązane interfejsy API zostały dodane w ramach eksperymentu.Modifier.clickable
,Modifier.toggleable
iModifier.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
oconstraints: Constraints
w metodzieTextMeasurer.measure
, aby obsługiwał ograniczenia minimalnej szerokości. (I37530, b/242707525) - Dodano
Modifier.withConsumedWindowInsets()
, aby wykorzystaćWindowInsets
do wykorzystania pozawindowInsetsPadding
. - Dodano element
MutableWindowInsets
, aby umożliwić łatwą zmianę elementuWindowInsets
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
iFocusDirection.Out
naFocusDirection.Enter
iFocusDirection.Exit
(Ia4262, b/183746982) - Wprowadziliśmy przeciążenie
rememberSnapFlingBehavior
, które umożliwia szybkie włączenie przyciągania w żądaniuLazyLists
. (Ifb48a) - Zastąpiliśmy fabrykę urządzenia
snapFlingBehavior
betonową klasąSnapFlingBehavior
. Ograniczono zakres metodSnapLayoutInfoProvider
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 wymagaLazyListState
, by utworzyć wystąpienie obiektuSnapLayoutInfoProvider
, którego można użyć do włączenia przyciąganiaFlingBehavior
dlaLazyLists
. (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 elementuOverscrollEffect
– efekty, które biorą pod uwagę pozycję wskaźnika, mogą używać funkcjiModifier.pointerInput { }
w elemencieeffectModifier
, 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 obiektuSnapLayoutInfoProvider
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
iLineHeightStyle
. (I64bef) - Pola tekstowe będą teraz zwracać bardziej szczegółowe wyjątki, gdy funkcja
OffsetMapping
podana przez obiektVisualTransformation
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 organizacyjnejLayoutInfo.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żyjSoftwareKeyboardController
w kodzie aplikacji iTextInputSession
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
wDrawScope
, aby umożliwić rysowanie wielostylowego tekstu w elementach kompozycyjnych i modyfikatorach, które działają na elementachDrawScope
, takich jakCanvas
idrawBehind
. (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ówTalkBack
wAnnotatedString
. (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
iLazyHorizontalGrid
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 pakietufoundation.gesture
do pakietu podstawowego i jego nazwa została zmieniona naLocalOverscrollConfiguration
(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 elemencieLazyLayout
. (Id6fab, b/233352497) - Usunięto wycofaną zasadę
LazyVerticalGrid
z pakietuandroidx.compose.foundation.lazy
. Nowy stabilny interfejs API znajduje się w lokalizacjiandroidx.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
iMutableIntervalList
). 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 wLazyColumn
, 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 typuime
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
iDeleteSurroundingTextInCodePointsCommand
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 implementacjachLazyList
, gdy elementy układu wykraczają poza widoczne granice (Ifabfb, b/184670295) - Nazwa zasobu
LineHeightBehavior
została zmieniona naLineHeightStyle
- Nazwa zasobu
LineVerticalAlignment
została zmieniona naLineHeightStyle.Alignment
- Zmienia nazwę elementu
LineHeightTrim
naLineHeightStyle.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 naitemCount
(Id409c) - Do interfejsów
TextStyle
iSpanStyle
dodano pędzel, który umożliwia rysowanie tekstu przy użyciu koloru gradientowego. (I53869, b/187839528) trimFirstLineTop
,trimLastLineBottom
atrybutów obiektuLineHeightBehavior
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ówTextStyle
iParagraphStyle. 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
itrimLastLineBottom
działają poprawnie tylko wtedy, gdyincludeFontPadding
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ą atrybutuTextStyle.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 wTextField
. (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ą funkcjiisConsumed
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 kopiePointerInputChange
zostaną zużyte. Jeśli chcesz utworzyć niepowiązany obiektPointerInputChange
, użyj konstruktora. (Ie6be4, b/225669674) - Wprowadziliśmy nowy, eksperymentalny interfejs API
LazyLayout
. Dzięki temu możesz tworzyć własne komponenty, np.LazyColumn
zLazyVerticalGrid
. Pamiętaj, że interfejs API jest we wczesnej fazie rozwoju i można go zmienić w kolejnych wersjach. (Iba2bc, b/166591700) AndroidFont
przyjmuje teraz parametrtypefaceLoader
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
iLazyGridLayoutInfo
mają teraz polabeforeContentPadding
iafterContentPadding
(I3b628, b/200920410)- Dodano element
KeyboardType.Decimal
jako alternatywę dlaKeyboard.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
iPointerEvent.scrollDelta
to obecnie stabilne interfejsy API (I574c5, b/225669674)- Dodanej tymczasowej konfiguracji zgodności dla zasobu
includeFontPadding
w regionieTextStyle/ParagraphStyle. includeFontPadding
można zmienić wTextStyle(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
interfejsuComposeView
umożliwia programistom wyłączenie użycia elementów WindowInset w Androidzie. Dzięki temu różne elementyComposeViews
w hierarchii mogą stosować do każdego z nichWindowInsets
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 wFocusProperties
ifocusProperties()
ma teraz wszystkie możliwościfocusOrder()
. RegułyFocusOrder
ifocusOrder()
zostały wycofane. ParametrfocusOrder()
, który akceptujefocusRequester
, należy zastąpić modyfikatoremfocusRequester()
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()
iModifier.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
iLazyHorizontalGrid
są teraz stabilne. (I307c0)- Pole
LazyGridItemInfo.Unknown
zostało zastąpione osobnymi komponentamiLazyGridItemInfo.UnknownRow
iLazyGridItemInfo.UnknownColumn
(I56d51) LazyVerticalGrid
/LazyHorizontalGrid
i wszystkie powiązane interfejsy API zostały przeniesione do.grid
podpakietu. Zaktualizuj importy zandroidx.compose.foundation.lazy
doandroidx.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 metodyincludeFontPadding=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 terazline breaking
przed elementami, których zakres nie mieści się w bieżącym wierszu. (I05c40, b/207462103)- Zmieniono nazwę
excludeFromSystemGestures
nasystemGesturesExclusion
(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
iComposableOpenTarget
, 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
lubReusableComposeNode
, 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 zamiastComposableTarget
. Adnotacja kompozycyjna oznaczona za pomocą atrybutuComposableTargetMarker
jest odpowiednikiemComposbleTarget
z pełną i jednoznaczną nazwą klasy atrybutu jako parametru stosującego. Przykład użycia właściwościComposableTargetMarker
znajdziesz tutaj:anroidx.compose.ui.UiComposable
. (I38f11)
Poprawki błędów
- Teraz można przekazywać ujemne przesunięcia przewijania do funkcji
LazyGridState.scrollToItem()
iLazyGridState.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
wTextInputSession
iTextInputService
zostały wycofane i nie będą wywoływane. Użyj w zamian polaBringIntoViewRequester
. (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 wLocalFontFamilyResolver.current
- Dodano znaczniki
createFontFamilyResolver(context)
icreateFontFamilyResolver(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 wersjiTextLayoutResult.layoutInput.resourceLoader
, ponieważ nie jest już używany. (Id5a45, b/174162090)
- Dodano znaczniki
- 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 utworzenieFont.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)
- Rozwinięto interfejs
- 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 elementuFontFamilyResolver.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żyjFontFamilyResolver.preload
(If8e7c, b/174162090)
- Interfejs
- Możesz teraz określić typ treści dla elementów
LazyVerticalGrid
. Funkcje elementów/elementów wLazyGridScope
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
iLazyGridLayoutInfo
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ącymaxSlotsToRetainForReuse
jest teraz przestarzały. Zamiast tego dostępny jest nowy konstruktor akceptującySubcomposeSlotReusePolicy
– 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)
- Komputer
- 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ądzeniasetSystemGestureExclusionRects
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 polaModifier.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
iLazyVerticalGrid
dodano nowy parametruserScrollEnabled
, 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
- Popraw
NullPointerException
na stronieandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Naprawiono awarię spowodowaną zawartością schowka podczas odczytu ze schowka na Androidzie. (I06020, b/197769306)
- Stały RTL w
LazyVerticalGrid
(aosp/1931080, b/207510535)
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()
iLazyListState.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
lubLazyListScope.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)
- Gdy podasz klucz za pomocą
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
- Dodano eksperymentalne wskaźniki historyczne do pola PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
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
iGestureScope
, które zostały zastąpione przezperformTouchInput
iTouchInjectionScope
. (Ia5f3f, b/190493367) - Do elementu
SemanticsNode
dodano elementtouchBoundsInRoot
, 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 Kotlin1.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
- Dodano wersje DpSize dla
Modifier.size
irequiredSize
(I3fc7e, b/194219828)
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 API7.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 interfejsucomposeTestRule.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 katalogusrc/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 funkcjiadb 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ówH
,S
iP
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 klasaandroidx.compose.runtime.SlotTable
miałaby deskryptor o wartościLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
to podpis metody, który zawiera nazwę, typy parametrów oraz zwracane typy metody. Na przykład metodafun isPlaced(): Boolean
naLayoutNode
ma podpisisPlaced()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 komponentModifier.focusTarget()
(I6c860) - Lista w polu KeyboardType została zastąpiona klasą w tekście. (I73045, b/187055290)
- Zastąpiono wyliczenie
FocusState
interfejsemFocusState
(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
idetectHorizontalGestures
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 orazSemanticsProperties.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, iSemanticsNodeInteraction.performScrollToKey
, który przewija listę do elementu o danym kluczu. (I4fe63, b/178483889, b/161584524)
- Dodano element
- 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
iaccessibilityActionScrollDown
. 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()
ishow()
.- 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 parametrucount
. 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 numeremwithFrameNanos
lubRecomposer.runRecomposeAndApplyChanges
bez użycia danychMonotonicFrameClock
spowoduje błądIllegalStateException
. (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 jakButton
iModifier.clickable()
, użyjinteractionSource = 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ścicompositionLocalOf
istaticCompositionLocalOf
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()
naIndication#rememberUpdatedIndication(InteractionState)
i usuniętoInteractionState
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ębierememberUpdatedIndication()
. Parametrindication
w obiekcieModifier.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życiuComposeTestRule
. (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 przezConstraints.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 jakremember { mutableStateOf(0) }
, usuniemy właściwośćsavedInstanceState { 0 }
. Użyj zamiast niego metodyrememberSaveable { 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 parametrstateSaver
. 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)
iitemsIndexed(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 zakresComposeTestRule
i określa nazwęsetContent
, która została usunięta zComposeTestRule
. 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ącActivityScenario.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)
- Usunięto element
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ępujeCompositionLifecycleObserver
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, funkcjaonRemembered
jest wywoływana dla każdego odwołania, w którym elementonEnter
jest wywoływany tylko raz. ObiektonEnter
został wywołany wiele razy, jeśli był używany w kompozycjach podrzędnych, takich jakWithConstraints
iScaffold
, przez co pojedyncze wywołanieonEnter
było niewiarygodne i został usunięty dlaRememberObserver
.RememberObserver
dodaje elementonAbandoned
, który jest wywoływany, jeśli instancjaRememberObserver
jest zwracana z wywołania zwrotnego przekazanego doremember
, ale nie została zapamiętana w stanie kompozycji, dlatego nigdy nie będzie wywoływanaonRemembered
. 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 instancjaRememberObserver
zgodnie z powyższym zaleceniem referencyjnym śledzi zasób zewnętrzny, zarównoonForgotten
, jak ionAbandoned
oznacza, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte zadania lub zasoby przydzielone wonRemembered
, elementonAbandoned
może zostać zignorowany, ponieważ nie zostanie wywołany po wywołaniu funkcjionRemembered
. (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()
naval 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>
zamiastT
. 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, aLazyListState.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 nainsertTopDown()
.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()
lubinsertBottomUp()
.W przypadku niektórych drzew, np.
LayoutNode
iView
, 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 elementinsertTopDown()
– 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 parametruCoreTextField
. Jeśli chcesz ograniczyć wysokość pola tekstowego liczbą wierszy, użyj parametruBasicTextField
. (Iec002) - Zmieniliśmy metody
await*TouchSlop()
, tak aby nie wykrywały wskaźnika, i zostały zmienione na*OrCancellation
. Nie trzeba też używać parametruorientationLock
. (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 docontent
, zgodnie ze sprawdzaniem lintowania i wskazówkami. (Iec48e). foundation:foundation-text
API zostało przeniesione do interfejsufoundation: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()
natypeface()
(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łemfoundation: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
nalayoutId
dla kontaLayoutIdParentData
. Zmieniono nazwę etykietyMeasurable.id
naMeasurable.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 wModifier.fillParentMaxSize[Width|Height]
w zakresieLazyColumn/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ć parametruPointerInputFilter.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
imaxWidth
zwidthIn
zostały zmienione namin
imax
. Analogicznie w przypadkupreferredWidthIn
,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
iAndroidInputDispatcher
zandroidx.ui.test.android
doandroidx.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 narunBlocking
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") } }
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 naPlacementScope.place()
, a poprzednia nazwa „PlacementScope.place()
” – „PlacementScope.placeRelative()
”. W rezultacie metodaPlacementScope.place()
nie będzie już automatycznie powielać pozycji w kontekstach od prawej do lewej. Jeśli chcesz, użyj zasadyPlacementScope.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 funkcjiremember { mutableStateOf(...) }
, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem i dopasowywane do wzorcaby 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
ionZoomStarted
(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
iColumn
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).
- Usuń nieużywany interfejs OffsetBase
- wyrównaj klasy Offset i IntOffset, aby uzyskać spójną powierzchnię interfejsu API,
- Zmień nazwę IntOffset.Origin na IntOffset.Zero, aby zachować spójność z interfejsem Offset API
- Przeniesienie metody natywnejCanvas z interfejsu Canvas w celu umożliwienia konsumentom tworzenia własnych instancji Canvas
- Utworzono klasę EmptyCanvas w celu refaktoryzacji DrawScope na parametr niepusty zamiast lateinit i zapewnił brak wartości null w polu
- Zmieniono nazwy wyliczenia ClipOp na Pascal Case
- Zmieniono nazwy wyliczeń filtra Quality Quality na Pascal Case
- Zmiana nazw wyliczeń StrokeJoin na Pascal Case
- Zmieniono nazwy wyliczeń PointMode na wielkość liter Pascal
- Zmieniono nazwy wyliczeń w PaintingStyle na Pascal Case
- Zmieniono nazwy wyliczeń PathFillType na Pascal
- Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
- Zaktualizowano implementację DrawCache, aby nie używać już parametrów latinit
- Zaktualizowano DrawScope, aby nie używać już leniwego przekazywania w parametrach wewnętrznych fillPaint i fingerPaint
- Zaktualizowano obraz kompozycyjny, aby uniknąć użycia Box i zminimalizować koszty
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano PathNode, dodając do każdej instrukcji ścieżki @Stałe adnotacje
- Zaktualizowana podkompozycja wektorowa zawiera zbędne kontrole warunkowe pod kątem równości, ponieważ są one już obsługiwane
- Wycofaliśmy metody konstruktorów towarzyszących prostokątne na rzecz konstruktorów funkcji,
- Zaktualizowanie klas pędzla i konstruktorów funkcji za pomocą interfejsów API @Immutable i @Stable
- Zmieniono wyliczenie VertexMode na PascalCase
- Zaktualizowano metodę DrawScope selectPaint, aby warunkowo zastępować parametry kreski na obrazie, jeśli ulegną one zmianie
- 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 zasadySemanticsNodeInteraction.performGesture
. (Id9b62).Zmieniono nazwę
SemanticsNodeInteraction.getBoundsInRoot()
naSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)Interfejsy API do obsługi tekstu od prawej do lewej zostały zaktualizowane. Dodano 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()
iisNotFocused()
. (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)
naPaintBox(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
naDrawBorder
(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 narunOnIdle
(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
irunOnUiThread
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 { ... }
lubby 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
lubsetViewContent
. Parametr Compose.disposeComposition został wycofany. Użyj zamiast tego metodydispose
w obiekcieComposition
zwróconym przezsetContent
. 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
natrue
, 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 naannotatedString(builder: Builder)
. (Ia6377)Zmiana w interfejsie API: nazwa
AnnotatedString.Item
została zmieniona naAnnotatedString.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).