Tworzenie materiału
androidx.compose.material
androidx.compose.material.icons
(Informacje o wszystkich pakietach compose znajdziesz w dokumentacji interfejsu API)
Ostatnia aktualizacja | Wersja stabilna | Wersja kandydująca | Wersja Beta | Wersja alfa |
---|---|---|---|---|
11 grudnia 2024 r. | 1.7.6 | - | - | 1.8.0-alpha07 |
Struktura
Składnik to kombinacja 7 identyfikatorów grupy Maven w ramach androidx
. Każda grupa zawiera określony podzbiór funkcji, z którym wiąże się własny zestaw informacji o wydańach.
Ta tabela zawiera informacje o grupach i linki do poszczególnych zestawów informacji o wersji.
Grupa | Opis |
---|---|
compose.animation | tworzyć animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników. |
compose.compiler | Przekształcaj funkcje @Composable i włącz optymalizacje za pomocą wtyczki kompilatora Kotlin. |
compose.foundation | Pisać aplikacje Jetpack Compose za pomocą gotowych elementów składowych i rozwijać podstawy, aby tworzyć własne elementy systemu projektowania. |
compose.material | Twórz interfejsy Jetpack Compose za pomocą gotowych komponentów Material Design. Jest to punkt wejścia na wyższym poziomie w Compose, który ma na celu udostępnianie komponentów odpowiadających komponentom opisanym na stronie www.material.io. |
compose.material3 | Twórz interfejsy Jetpack Compose za pomocą komponentów Material Design 3, czyli kolejnej generacji Material Design. Material 3 obejmuje zaktualizowane motywy i elementy oraz funkcje personalizacji Material You, takie jak dynamiczne kolory. Jest on zgodny z nowym stylem wizualnym Androida 12 i interfejsem systemu. |
compose.runtime | Podstawowe elementy modelu programowania i zarządzania stanem w Compose oraz środowisko uruchomieniowe główne dla wtyczki kompilatora Compose, na które ma być nakierowany. |
compose.ui | Podstawowe elementy interfejsu tworzenia wiadomości, które są potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie danych. |
Deklarowanie zależności
Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy Google.
Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle
aplikacji lub modułu:
Groovy
dependencies { implementation "androidx.compose.material:material:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.material:material:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.8
Wersja 1.8.0-alpha07
11 grudnia 2024 r.
androidx.compose.material:material-*:1.8.0-alpha07
został zwolniony. Wersja 1.8.0-alpha07 zawiera te komity.
Poprawki błędów
- Rozwiązanie problemu polegający na tym, że modyfikatory rozmiaru pól tekstowych czasami nie są stosowane. (I90d4c, b/356905963)
Wersja 1.8.0-alpha06
13 listopada 2024 r.
androidx.compose.material:material-*:1.8.0-alpha06
został zwolniony. Wersja 1.8.0-alpha06 zawiera te komisy.
Wersja 1.8.0-alpha05
30 października 2024 r.
androidx.compose.material:material-*:1.8.0-alpha05
został zwolniony. Wersja 1.8.0-alpha05 zawiera te komisy.
Poprawki błędów
- Zoptymalizuj zachowanie szkieletu
contentPadding
, aby uniknąć ciągłego zmieniania treści w polu tekstowym po każdej zmianie wartościcontentPadding
. (I8c8e2, b/373904168) - Spraw, aby suwak materiału zmieniał swoją wartość po naciśnięciu klawiszy sterujących. (I1c442)
Wersja 1.8.0-alpha04
16 października 2024 r.
androidx.compose.material:material-*:1.8.0-alpha04
został zwolniony. Wersja 1.8.0-alpha04 zawiera te komisy.
Zmiany w interfejsie API
- Usuń
readOnly
zTextFields
, aby przypiąć stabilną wersję podstawy. (I3aaba)
Poprawki błędów
- Dodaje obsługę efektu falowania w rozwijanych elementach w Androidzie S+, np. karty, która rozwija się po kliknięciu. Wcześniej efekt falowania nie wypełniał nowego rozmiaru, ale teraz będzie się rozszerzać do nowych granic. (If509a, b/183019123)
Wersja 1.8.0-alpha02
18 września 2024 r.
androidx.compose.material:material-*:1.8.0-alpha02
został zwolniony. Wersja 1.8.0-alpha02 zawiera te komity.
Wersja 1.8.0-alpha01
4 września 2024 r.
androidx.compose.material:material-*:1.8.0-alpha01
został zwolniony. Wersja 1.8.0-alpha01 zawiera te komity.
Zmiany w interfejsie API
- Dodano nowy kreator
NavGraphBuilder.bottomSheet
do tworzenia bottomSheet z bezpiecznymi argumentami ((I28589, I777db, b/351858980))
Wersja 1.7
Wersja 1.7.6
11 grudnia 2024 r.
androidx.compose.material:material-*:1.7.6
został zwolniony. Wersja 1.7.6 zawiera te komity.
Wersja 1.7.5
30 października 2024 r.
androidx.compose.material:material-*:1.7.5
został zwolniony. Wersja 1.7.5 zawiera te komitowane zmiany.
Wersja 1.7.4
16 października 2024 r.
androidx.compose.material:material-*:1.7.4
został zwolniony. Wersja 1.7.4 zawiera te komitowane zmiany.
Wersja 1.7.2
18 września 2024 r.
androidx.compose.material:material-*:1.7.2
został zwolniony. Wersja 1.7.2 zawiera te komitowane zmiany.
Wersja 1.7.1
10 września 2024 r.
- Brak zmian w artefaktach na Androida. Usunięto
-desktop
artefakty i dodano-jvmStubs
oraz-linuxx64Stubs
. Żadnego z tych celów nie należy używać. Są to elementy zastępcze, które ułatwiają pracę Jetbrains Compose.
Wersja 1.7.0
4 września 2024 r.
androidx.compose.material:material-*:1.7.0
został zwolniony. Wersja 1.7.0 zawiera te komity.
Ważne zmiany od wersji 1.6.0
- Komponenty Material Design zostały przeniesione do nowych interfejsów API rippling i nie odwołują się już do
RippleTheme
. - Komponenty Material Design, które wcześniej akceptowały typ
MutableInteractionSource
i miały domyślną wartośćremember { MutableInteractionSource() }
, teraz akceptują typMutableInteractionSource
z możliwością wartości null i zamiast domyślnej wartości mają wartość null. Jeśli nie używasz funkcjiMutableInteractionSource
, prześlij wartość null. Dzięki temu niektóre komponenty mogą tworzyć instancje tylko wtedy, gdy jest to potrzebne, co poprawia wydajność. Zalecamy też wprowadzenie podobnych zmian w własnych komponentach. - Interfejsy API
BottomDrawer
,ModalBottomSheet
,BackdropScaffold
i standardowy Bottomsheet zostały przeniesione do stabilnego interfejsu API.
Wersja 1.7.0-rc01
21 sierpnia 2024 r.
androidx.compose.material:material-*:1.7.0-rc01
został zwolniony. Wersja 1.7.0-rc01 zawiera te komity.
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
androidx.compose.material:material-*:1.7.0-beta07
został zwolniony. Wersja 1.7.0-beta07 zawiera te komity.
Wersja 1.7.0-beta06
24 lipca 2024 r.
androidx.compose.material:material-*:1.7.0-beta06
został zwolniony. Wersja 1.7.0-beta06 zawiera te komity.
Wersja 1.7.0-beta05
10 lipca 2024 r.
androidx.compose.material:material-*:1.7.0-beta05
został zwolniony. Wersja 1.7.0-beta05 zawiera te komisy.
Wersja 1.7.0-beta04
26 czerwca 2024 r.
androidx.compose.material:material-*:1.7.0-beta04
został zwolniony. Wersja 1.7.0-beta04 zawiera te komity.
Wersja 1.7.0-beta03
12 czerwca 2024 r.
androidx.compose.material:material-*:1.7.0-beta03
został zwolniony. Wersja 1.7.0-beta03 zawiera te zatwierdzenia.
Wersja 1.7.0-beta02
29 maja 2024 r.
androidx.compose.material:material-*:1.7.0-beta02
został zwolniony. Wersja 1.7.0-beta02 zawiera te komity.
Zmiany w interfejsie API
- Aktualizacja interfejsu API służącego do stylizacji linków: przeniesienie
TextLinkStyles
doTextStyle
i usunięcieTextDefaults
z materiału (I5477b)
Wersja 1.7.0-beta01
14 maja 2024 r.
androidx.compose.material:material-*:1.7.0-beta01
został zwolniony. Wersja 1.7.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zaktualizowano interfejs API w celu uzyskiwania linków w motywie Material w Tekście. W szczególności usunęliśmy z
TextDefaults
metody tworzenia tematycznychLinkAnnotations
i analizowania kodu HTML za pomocą tematycznych linków. Zamiast tego dodaliśmy klasęTextLinkStyles
, która umożliwia stylizowanie linków jako parametru w komponowalnym elemencie tekstu. (I31b93)
Wersja 1.7.0-alpha08
1 maja 2024 r.
androidx.compose.material:material-*:1.7.0-alpha08
został zwolniony. Wersja 1.7.0-alpha08 zawiera te komity.
Zmiany w interfejsie API
- Rozwiązanie problemu polegający na tym, że
backgroundColor
nie jest stosowany w przypadkuTextFieldDecorationBox
iOutlinedTextFieldDecorationBox
. Pudełka dekoracyjne obsługują teraz parametrshape
. (I371c2, b/307694651) - Pole
RippleConfiguration#isEnabled
zostało usunięte, a poleLocalRippleConfiguration
zostało oznaczone jako dopuszczające wartość pustą. Aby wyłączyć efekt falowania, zamiastRippleConfiguration
z wartościąisEnabled = false
użyjnull
z wartościąLocalRippleConfiguration
. (I22725) - Oprócz normalnego stylowania, stylowania po najechaniu kursorem i po zaznaczeniu linki tekstowe mają opcję stylowania w stanie wciśniętym. Metody
TextDefaults
mają argumentpressedStyle
, który to umożliwia. (Ic473f, b/139312671)
Poprawki błędów
OutlinedTextField
Dolne wypełnienie etykiety uwzględnia teraz rozmiar czcionki systemu. (Idc781)
Wersja 1.7.0-alpha07
17 kwietnia 2024 r.
androidx.compose.material:material-*:1.7.0-alpha07
został zwolniony. Wersja 1.7.0-alpha07 zawiera te komity.
Zmiany w interfejsie API
- Oprócz normalnego stylowania, stylowania po najechaniu kursorem i po zaznaczeniu linki tekstowe zyskały opcję stylowania w stanie wciśniętym. (I5f864, b/139312671)
- Dodano obiekt
TextDefaults
, który zawiera metody służące do tworzenia obiektuLinkAnnotation
i analizowania ciągu znaków z tagami HTML, które mają zastosowanie do linków.MaterialTheme
(I98532, b/139312671)
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
androidx.compose.material:material-*:1.7.0-alpha06
został zwolniony. Wersja 1.7.0-alpha06 zawiera te komisy.
Ogłoszenie
androidx.compose.material
nie wymaga już używania tej samej wersji każdego artefaktu w tej grupie Maven. Użytkownicy mogą mieszać wersje bibliotek fundamentu Compose (Ie5fba)
Zmiany w interfejsie API
- Przeniesiono więcej domyślnych wartości
ModalDrawer
iBottomDrawer
do obiektuDrawerDefaults
. (Ib5b2e)
Wersja 1.7.0-alpha05
20 marca 2024 r.
androidx.compose.material:material-*:1.7.0-alpha05
został zwolniony. Wersja 1.7.0-alpha05 zawiera te komity.
Zmiany w interfejsie API
- Oznaczenie
ScaffoldSubcomposeInMeasureFix
zostało usunięte. (I67363)
Wersja 1.7.0-alpha04
6 marca 2024 roku
androidx.compose.material:material-*:1.7.0-alpha04
został zwolniony. Wersja 1.7.0-alpha04 zawiera te komity.
Nowe funkcje
- Dodano nowy artefakt
androidx.compose.material:material-navigation
, który obsługuje dolne panele jako miejsca docelowe podczas korzystania z elementu Składanie nawigacji. Zastępuje bibliotekę materiałów nawigacyjnych towarzysza. (d65d57, b/180247978)
Wersja 1.7.0-alpha03
21 lutego 2024 r.
androidx.compose.material:material-*:1.7.0-alpha03
został zwolniony. Wersja 1.7.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
BottomDrawer
został przeniesiony z wersji eksperymentalnej do stabilnej.BottomDrawerState
teraz wyświetla postęp jako funkcję, co umożliwia zapytanie o postęp między określonymi celami. ElementBottomDrawerState
umożliwia teraz dostosowywanie specyfikacji animacji, a elementconfirmStateChange
nie jest już końcową lambda. (I9c029, b/261423850)BackdropScaffold
został przeniesiony z wersji eksperymentalnej do stabilnej. Specyfikacja animacji jest teraz specyfikacjątween
zgodnie ze wskazówkami. Aby uniknąć pomyłek z funkcjami lambda, parametrsnackbarHost
funkcjiBackdropScaffold
nie jest już ostatnim parametrem. UsługaBackdropScaffoldState
udostępnia interfejs APIprogress(from, to)
do zapytania o postęp między punktami kotwiczenia. (I73f48, b/261423218)- Standardowe karty dolne zostały przeniesione z wersji eksperymentalnej do stabilnej. Wycofane konstruktory zostały usunięte. Specyfikacja animacji jest teraz specyfikacją przejścia zgodnie z wytycznymi. (I3c1a8, b/278692145, b/261409034)
- Modalne plansze dolne zostały przeniesione z wersji eksperymentalnej do stabilnej. Wycofane konstruktory zostały usunięte. Specyfikacja animacji jest teraz specyfikacją
tween
zgodnie ze wskazówkami. (Ic53f4, b/278692145, b/266780235, b/261409034)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował awarię
BackdropScaffold
w określonych scenariuszach w połączeniu zLookaheadScope
. (I51396) - Usunięto podkompozycję w komponentach
BottomSheetScaffold
, aby zwiększyć wydajność. Rozwiązaliśmy problem, który powodował zawieszanie się aplikacjiBottomSheetScaffold
w określonych sytuacjach w połączeniu z aplikacjąLookaheadScope
. (I2f90c) - Usunięto podkompozycję wewnątrz
ModalBottomSheetLayout
, co poprawia wydajność. (I7a025)
Wersja 1.7.0-alpha02
7 lutego 2024 r.
androidx.compose.material:material-*:1.7.0-alpha02
został zwolniony. Wersja 1.7.0-alpha02 zawiera te commity.
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
androidx.compose.material:material-*:1.7.0-alpha01
został zwolniony. Wersja 1.7.0-alpha01 zawiera te commity.
Zmiany w zachowaniu
- Komponenty Material Design zostały przeniesione do nowych interfejsów API ripple i nie odwołują się już do
RippleTheme
.
Zmiany w interfejsie API
Interfejsy
rememberRipple
iRippleTheme
zostały wycofane z material-ripple, a nowe interfejsyRippleConfiguration
iRippleConfiguration
zostały dodane do bibliotek material i innych bibliotek systemu projektowania.Składniki Material, które wcześniej akceptowały wartość
MutableInteractionSource
i domyślnie zapamiętywały wartość{ MutableInteractionSource() }
, teraz akceptują wartość nullMutableInteractionSource
i zamiast tego domyślnie ustawiają wartość null. Jeśli nie używasz funkcjiMutableInteractionSource
, prześlij wartość null. Dzięki temu niektóre komponenty mogą tworzyć instancje tylko wtedy, gdy jest to potrzebne, co poprawia wydajność. Zalecamy też wprowadzenie podobnych zmian w własnych komponentach.
Wersja 1.6
Wersja 1.6.8
12 czerwca 2024 r.
androidx.compose.material:material-*:1.6.8
został zwolniony. Wersja 1.6.8 zawiera te komisy.
Wersja 1.6.7
1 maja 2024 r.
androidx.compose.material:material-*:1.6.7
został zwolniony. Wersja 1.6.7 zawiera te komitowane zmiany.
Wersja 1.6.6
17 kwietnia 2024 r.
androidx.compose.material:material-*:1.6.6
został zwolniony. Brak zmian od ostatniej wersji.
Wersja 1.6.5
3 kwietnia 2024 r.
androidx.compose.material:material-*:1.6.5
został zwolniony. Wersja 1.6.5 zawiera te komity.
Wersja 1.6.4
20 marca 2024 r.
androidx.compose.material:material-*:1.6.4
został zwolniony. Wersja 1.6.4 zawiera te komitowane zmiany.
Wersja 1.6.3
6 marca 2024 roku
androidx.compose.material:material-*:1.6.3
został zwolniony. Wersja 1.6.3 zawiera te komisy.
Poprawki błędów
- Napraw regresję w
ExposedDropdownMenu
, aby można było ponownie ustawić ostrość. (c0e0ed, b/323694447)
Wersja 1.6.2
21 lutego 2024 r.
androidx.compose.material:material-*:1.6.2
został zwolniony. Wersja 1.6.2 zawiera te commity.
Wersja 1.6.1
7 lutego 2024 r.
androidx.compose.material:material-*:1.6.1
został zwolniony. Wersja 1.6.1 zawiera te zatwierdzenia.
Wersja 1.6.0
24 stycznia 2024 r.
androidx.compose.material:material-*:1.6.0
został zwolniony. Wersja 1.6.0 zawiera te zatwierdzenia.
Wersja 1.6.0-rc01
10 stycznia 2024 r.
androidx.compose.material:material-*:1.6.0-rc01
został zwolniony. Wersja 1.6.0-rc01 zawiera te commity.
Wersja 1.6.0-beta03
13 grudnia 2023 r.
androidx.compose.material:material-*:1.6.0-beta03
został zwolniony. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.
Wersja 1.6.0-beta02
29 listopada 2023 r.
androidx.compose.material:material-*:1.6.0-beta02
został zwolniony. Wersja 1.6.0-beta02 zawiera te commity.
Wersja 1.6.0-beta01
15 listopada 2023 r.
androidx.compose.material:material-*:1.6.0-beta01
został zwolniony. Wersja 1.6.0-beta01 zawiera te commity.
Wersja 1.6.0-alpha08
18 października 2023 r.
androidx.compose.material:material-*:1.6.0-alpha08
został zwolniony. Wersja 1.6.0-alpha08 zawiera te commity.
Zmiany w interfejsie API
- Oznacz jako przestarzałą funkcję
materialIcon
na rzecz jej przeciążenia, która przyjmuje parametrautoMirror
. (Ia338d)
Poprawki błędów: - automatyczne zwiększanie wysokości elementu nawigacji w przypadku dużych treści. (0c4ecc, b/272336962)
Wersja 1.6.0-alpha07
4 października 2023 roku
androidx.compose.material:material-*:1.6.0-alpha07
został zwolniony. Wersja 1.6.0-alpha07 zawiera te commity.
- Aktualizacje zależności
Wersja 1.6.0-alpha06
20 września 2023 r.
androidx.compose.material:material-*:1.6.0-alpha06
został zwolniony. Wersja 1.6.0-alpha06 zawiera te commity.
Zachowanie powodujące niezgodność
- Usunięto z
BottomSheetScaffold
funkcje związane z szufladą. Aby uzyskać poprzednią funkcjonalność, owiń komponentBottomSheetScaffold
w komponent typu Drawer. Przykład znajdziesz w sekcjiBottomSheetScaffoldWithDrawerSample
. (I1dcc8)
Zmiany w interfejsie API
- Wprowadziliśmy tymczasową flagę, która pozwala kontrolować, czy Scaffold ma mierzyć swoje elementy podrzędne podczas pomiaru czy podczas umieszczania. Domyślnie jest to pomiar. Jeśli masz problemy z nowym działaniem, prześlij zgłoszenie. (If6e3b)
Wersja 1.6.0-alpha05
6 września 2023 r.
androidx.compose.material:material-*:1.6.0-alpha05
został zwolniony. Wersja 1.6.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy obsługę automatycznego lustrzanego odwzorowania ikon podczas renderowania układów z od prawej do lewej. Ikony w modułach material-icons-core i material-icons-extended zawierają teraz dodatkowe zestawy ikon, które umożliwiają automatyczne lustrzane odwzorowanie, jeśli ikona na to pozwala. Nowe zestawy mają przedrostek
Icons.AutoMirrored.Filled...
itp. i zawierają ikony, które będą automatycznie odzwierciedlane w układach RTL. Lista ikon Material zawiera ikony, które mogą (i powinny) być automatycznie lustrzane.
Zmiany w interfejsie API
- Dodaliśmy obsługę automatycznego lustrzanego odwzorowania ikon podczas renderowania układów z od prawej do lewej. Ikony w modułach material-icons-core i material-icons-extended zawierają teraz dodatkowe zestawy ikon, które umożliwiają automatyczne lustrzane odwzorowanie, jeśli ikona na to pozwala. Nowe zestawy mają przedrostek
Icons.AutoMirrored.Filled...
itp. i zawierają ikony, które będą automatycznie odzwierciedlane w układach RTL. Lista ikon Material zawiera ikony, które mogą (i powinny) być automatycznie lustrzane. Właściwości tych ikon zostały oznaczone jako wycofane i zaproponowano blok zastępczy, aby ułatwić migrację. Jeśli nie masz specjalnego sposobu obsługi lustrzanego odbicia ikon w językach RTL, zalecamy przejście na nowy zestaw ikon. Na przykładIcons.Filled.ArrowBack
należy przerobić naIcons.AutoMirrored.Filled.ArrowBack
. (I4b511)
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
androidx.compose.material:material-*:1.6.0-alpha04
został zwolniony. Wersja 1.6.0-alpha04 zawiera te commity.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że niektóre komponenty korzystające z elementu
Subcomposition
(np.BottomSheetScaffold
) w ramach elementu Scaffold w komponencieLookaheadScope
próbowały odczytać swój rozmiar zbyt wcześnie. (If2c5d) - Naprawiono obliczenia
DropdownMenu
, aby przesunięcia X zależały tylko od lokalnego kierunku układu, a przesunięcia Y nie będą już odwracane, gdy menu znajduje się w pobliżu dołu ekranu.offset
(Iccc74, b/294103942) - Zoptymalizowaliśmy wewnętrzny układ
BottomSheetScaffold
i rozwiązaliśmy potencjalny problem z elementemBottomSheetScaffold
w elementachLookaheadLayout
. (Ic0afa)
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
androidx.compose.material:material-*:1.6.0-alpha03
został zwolniony. Wersja 1.6.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Komponenty Material2 mają teraz oddzielny interfejs API do przekazywania wartości
windowInsets
, aby obsługiwać na Androidzie funkcje sięgające od krawędzi do krawędzi. W przeciwieństwie do komponentów material3 komponenty material2 nie obsługują domyślnie wstawek, dlatego wartość należy podać ręcznie. Aby uzyskać wskazówki, zapoznaj się z odpowiednimi przykładami. (I655e8)
Wersja 1.6.0-alpha02
26 lipca 2023 r.
androidx.compose.material:material-*:1.6.0-alpha02
został zwolniony. Wersja 1.6.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Przenosimy zależność od gęstości na poziom komponentu. Dotyczy to tych komponentów:
SwipeToDismiss
i komponentów opartych na arkuszach. Użyj nowej podanej przeciążenia, w której gęstość jest parametrem. (I1846e) - Dodatkowe adnotacje określające dozwolone dane wejściowe dla komponentów (I51109)
- Zaktualizowano pliki interfejsu API, aby dodać adnotacje do pominięcia zgodności (I8e87a, b/287516207).
- Dodano nowe wyrównanie Start dla
FabPosition
(Ib7aea, b/170592777). - W Material 2 element
TextFieldColorsWithIcons
został zastąpiony elementemTextFieldColors
. Gdy zastępujeszleadingIconColor
lubtrailingIconColor
, zastąp też przeciążenie za pomocąinteractionSource
. (Id57ed, b/199377790)
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
androidx.compose.material:material-*:1.6.0-alpha01
został zwolniony. Wersja 1.6.0-alpha01 zawiera te commity.
Zmiany w zachowaniu
- W typografii Material 2
includeFontPadding
jest teraz domyślnie ustawione nafalse
. Domyślny styl wysokości wiersza został również zmieniony naTrim.None
iAlignment.Center
, a doTextStyle
Typography
dodano jawnelineHeight
(w sp). Jeśli chcesz dostosować te wartości, zapoznaj się z dokumentacją interfejsu API. Szczegółowe informacje o tych zmianach znajdziesz w tym poście na blogu. (Icabc3, I3f801, I04c03)
Zmiany w interfejsie API
- Interfejsy API
Swipeable
Materialu zostały wycofane. Zapoznaj się z interfejsami API FoundationAnchoredDraggable
, które są zoptymalizowane pod kątem prostych i złożonych zastosowań. (I732e0)
Poprawki błędów
- Elementy
BottomSheetState
,ModalBottomSheetState
iBottomDrawerState
udostępniają teraz właściwość postępu, która wskazuje postęp między bieżącą (ustabilizowaną) kotwicą a najbliższą kotwicą w kierunku przesunięcia. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)
Wersja 1.5
Wersja 1.5.4
18 października 2023 r.
androidx.compose.material:material-*:1.5.4
został zwolniony. Wersja 1.5.4 zawiera te zatwierdzenia.
Wersja 1.5.3
4 października 2023 roku
androidx.compose.material:material-*:1.5.3
został zwolniony. Ta wersja nie zawiera żadnych zmian
Wersja 1.5.2
27 września 2023 r.
androidx.compose.material:material-*:1.5.2
został zwolniony. Wersja 1.5.2 zawiera te zatwierdzenia.
Wersja 1.5.1
6 września 2023 r.
androidx.compose.material:material-*:1.5.1
jest opublikowany bez wprowadzenia zmian. Wersja 1.5.1 zawiera te zatwierdzenia.
Wersja 1.5.0
9 sierpnia 2023 r.
androidx.compose.material:material-*:1.5.0
został zwolniony. Wersja 1.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.4.0
Zmiany w interfejsie API
- W interfejsach Swipeable1 API w
BottomSheetScaffold
uwzględniono zmiany. ParametrconfirmStateChange
w modeluBottomSheetState
został przemianowany naconfirmValueChange
. Wartośćprogress
jest teraz wyświetlana jako liczba zmiennoprzecinkowa. WartościanimateTo
isnapTo
są wewnętrzne. Zamiast niej użyj zasadexpand()
icollapse()
. Zasobydirection
ioverflow
zostały usunięte. Wartośćoffset
została zastąpiona wartościąrequireOffset()
. I323b4 - Oznacz funkcję
snapTo
w menu bocznym jako interfejs API, który nie jest eksperymentalny. (Ib9c18, b/261425368) - Dodaliśmy parametr koloru ścieżki dla kółkowych wskaźników postępu oraz parametr zakończenia obrysu zarówno dla kółkowych, jak i liniowych wskaźników postępu. (Ie668c, b/216325962, b/222964817)
- Nazwa
confirmStateChange
w aplikacjachModalBottomSheetState
,ModalBottomSheetState.Saver
irememberModalBottomSheetState
została zmieniona naconfirmValueChange
. (Ib48d1) - Dodaj
Modifier.minimumInteractiveComponentSize
. Można go użyć, aby zarezerwować co najmniej 48 dp, aby uniknąć niejednoznaczności interakcji dotykowych, jeśli element ma być mniejszy. (I33f58, b/258495559) - W
ModalBottomSheetLayout
uwzględniono zmiany w interfejsach API do przesuwania. Funkcja animateTo obiektuModalBottomSheetState
nie przyjmuje już parametruanimationSpec
, a wyświetlany offset może teraz przyjmować wartość null. Użyj parametrurequireOffset
, aby wymagać przesunięcia. (Ia2e79) - Dodawanie adnotacji
@JvmDefaultWithCompatibility
(I8f206) - Wprowadziliśmy zmiany w interfejsach API Swipeable w
ModalDrawer. DrawerState
. MetodaanimateTo
została zastąpiona metodami open i close, a offset może teraz przyjmować wartość null. Użyj parametrurequireOffset
, aby wymagać przesunięcia. (I3de9e) - Zaktualizowano Drawers i Sheets, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
- Dodano parametr
minLines
do komponentów material i material3 Text,TextField
iOutlinedTextField
, który umożliwia ustawienie minimalnej wysokości komponentu w ujęciu liczby wierszy (I4af1d).
Poprawki błędów
- Rozwiązanie problemu, który powodował, że
pullRefresh
nie zużywało prędkości, co powodowało wyświetlanie przewijania. Zmieniliśmy też sygnaturę interfejsu API funkcjionRelease
lambda w funkcjiModifier.pullRefresh
, aby zwracała typ Float dla prędkości zużycia (I7db65, b/266874741) - Elementy
BottomSheetState
,ModalBottomSheetState
iBottomDrawerState
udostępniają teraz właściwość postępu, która wskazuje postęp między bieżącą (ustabilizowaną) kotwicą a najbliższą kotwicą w kierunku przesunięcia. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861) - Naprawiono błąd, przez który działanie
AlertDialog
odrzucania było wyświetlane pod działaniem potwierdzenia, gdy działania nakładały się na siebie, aby zmieścić się w szerokości okna. Ta poprawka dopasowuje implementację do specyfikacji Material Design (I029de, b/235454277). - Gdy parametr
gesturesEnabled
ma wartość Fałsz, elementBottomSheetScaffold
nie będzie już uczestniczyć w przewijaniu zagnieżdżonym. (I634f3, b/215403277) - Naprawiliśmy błąd, który powodował awarię
BottomSheetScaffold
, gdy sloty miały puste treści. (Ib24a5, b/235588730) - Rozwiązano problem z przechwytywaniem zdarzeń kliknięcia lub wskaźnika.
PullRefreshIndicator
(2494256, b/271777421) - Rozwiązaliśmy problem, który powodował awarię
ModalBottomSheetLayout
w skrajnym przypadku zmiany orientacji. Animacje układu (np.Modifier.animateContentSize
) w treści arkusza działają teraz płynnie. (I2f981, b/266780234)
Wersja 1.5.0-rc01
26 lipca 2023 r.
androidx.compose.material:material-*:1.5.0-rc01
został zwolniony. Wersja 1.5.0-rc01 zawiera te commity.
Wersja 1.5.0-beta03
28 czerwca 2023 r.
androidx.compose.material:material-*:1.5.0-beta03
został zwolniony. Wersja 1.5.0-beta03 zawiera te commity.
Poprawki błędów
- Elementy
BottomSheetState
,ModalBottomSheetState
iBottomDrawerState
udostępniają teraz właściwość postępu, która wskazuje postęp między bieżącą (ustabilizowaną) kotwicą a najbliższą kotwicą w kierunku przesunięcia. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)
Wersja 1.5.0-beta02
7 czerwca 2023 r.
androidx.compose.material:material-*:1.5.0-beta02
został zwolniony. Wersja 1.5.0-beta02 zawiera te commity.
Wersja 1.5.0-beta01
24 maja 2023 r.
androidx.compose.material:material-*:1.5.0-beta01
został zwolniony. Wersja 1.5.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Wartości offset w elementach
DrawerState
iBottomDrawerState
nie mogą już być pustymi. Zamiast tego zwracają wartośćFloat.NaN
, aby wskazać brak przesunięcia. (Ie9855) - Dodano opcję przekazywania wartości
ScrollState
podczas tworzenia obiektuDropdownMenu
lubExposedDropdownMenu
, aby kontrolować stan przewijania pionowego wyświetlanych elementów menu. (Idb009, b/185304441) - Dodaj obsługę włączania i wyłączania gestu
ModalBottomSheetLayout
, aby użytkownik mógł skonfigurować tę opcję w przypadku więcej polecanych kart dostępnych u dołu (I40af0) - Dodano parametr koloru do
BasicText
, aby umożliwić wydajne animowanie lub ustawianie koloru tekstu. (Iffd88, b/246961787) - Zmiana nazwy usługi Semantics o nazwie
isContainer
naisTraversalGroup
(I121f6)
Poprawki błędów
- Naprawiono błąd, przez który działanie
AlertDialog
odrzucania wyświetlało się pod działaniem potwierdzenia, gdy działania nakładały się na siebie, aby zmieścić się w szerokości okna. Ta poprawka dopasowuje implementację do specyfikacji Material Design (I029de, b/235454277).
Wersja 1.5.0-alpha04
10 maja 2023 r.
androidx.compose.material:material-*:1.5.0-alpha04
został zwolniony. Wersja 1.5.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Przenosimy zależność od gęstości na poziom komponentu. Dotyczy to tych komponentów:
BottomDrawer
,ModalBottomSheetLayout
,BottomSheetScaffold
,Switch
iModalDrawer
. Użyj nowej podanej przeciążenia, w której gęstość jest parametrem. (I8fbd8)
Wersja 1.5.0-alpha03
19 kwietnia 2023 r.
androidx.compose.material:material-*:1.5.0-alpha03
został zwolniony. Wersja 1.5.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Zaktualizuj wewnętrzne elementy
BottomDrawer
, aby używać nowych interfejsów APISwipeableV2
. Z tego powodu interfejsBottomDrawerState
będzie teraz zawierał tylko interfejsy API zdefiniowane na poziomie klasy i nie będzie dziedziczył metod ani właściwości z interfejsuSwipeableState
. Używamy kompozycji z wewnętrznymSwipeableV2State
. Odstęp jest teraz właściwością zmiennoprzecinkową, która może przyjmować wartość pustą. Do bieżącej wartości i wartości docelowej przesunięcia można nadal uzyskać dostęp za pomocą właściwości currentValue i targetValue. Wciąż obsługiwane są poprzednie metody na poziomie klasy, takie jak otwieranie/rozwijanie/zamykanie, oraz właściwości, takie jakisOpen/isClosed
. (Iad40c, b/178529942, b/220676296)
Poprawki błędów
- Zaktualizowano wewnętrzne elementy komponentu Switch. Podczas przeciągania przełącznik będzie teraz wyświetlać podgląd najbliższego (docelowego) stanu. (Id90d4)
- Animowane treści arkuszy (np.
Modifier.animateContentSize
w treści arkusza) wBottomSheetScaffold
zostały zoptymalizowane i działają płynnie. (Ia913c, b/270518202, b/254446195) - Gdy wartość
gesturesEnabled
zostanie ustawiona nafalse
, elementBottomSheetScaffold
nie będzie już uwzględniany w przewijaniu zagnieżdżonym. (I634f3, b/215403277)
Wersja 1.5.0-alpha02
5 kwietnia 2023 r.
androidx.compose.material:material-*:1.5.0-alpha02
został zwolniony. Wersja 1.5.0-alpha02 zawiera te commity.
Poprawki błędów
- Naprawiliśmy błąd, który powodował awarię
BottomSheetScaffold
, gdy sloty miały puste treści. (Ib24a5, b/235588730) - Rozwiązano problem z
PullRefreshIndicator
przechwytywaniem kliknięć / zdarzeń wskaźnika (2494256, b/271777421)
Wersja 1.5.0-alpha01
22 marca 2023 r.
androidx.compose.material:material-*:1.5.0-alpha01
został zwolniony. Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.
Poprawki błędów
- Dodaj przykład przepływu elementów w grupie elementów. Zaktualizuj poziome wypełnienie między elementami podrzędnymi w przykładowym elemencie chipgroup w jednej linii, aby odpowiadało specyfikacji. (I3b155)
- Rozwiązaliśmy problem, który powodował awarię
ModalBottomSheetLayout
w skrajnym przypadku zmiany orientacji. Animacje układu (np.Modifier.animateContentSize
) w treści arkusza działają teraz płynnie. (I2f981, b/266780234)
Wersja 1.4
Wersja 1.4.3
3 maja 2023 r.
androidx.compose.material:material-*:1.4.3
jest publikowana bez zmian (tylko z podwyższeniem wersji).
Wersja 1.4.2
19 kwietnia 2023 r.
androidx.compose.material:material-*:1.4.2
został zwolniony. Wersja 1.4.2 zawiera te zatwierdzenia.
Wersja 1.4.1
5 kwietnia 2023 r.
androidx.compose.material:material-*:1.4.1
został zwolniony. Wersja 1.4.1 zawiera te zatwierdzenia.
Wersja 1.4.0
22 marca 2023 r.
androidx.compose.material:material-*:1.4.0
został zwolniony. Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
Zmiany w interfejsie API
- Dodaj
Modifier.minimumInteractiveComponentSize
. Można go użyć, aby zarezerwować co najmniej 48 dp, aby uniknąć niejednoznaczności interakcji dotykowych, jeśli element ma być mniejszy. (I33f58, b/258495559) - W
ModalDrawer
uwzględniono zmiany w interfejsach API do przesuwania. MetodaanimateTo
klasyDrawerState
została zastąpiona metodami open i close, a argument offset może teraz przyjmować wartość null. Użyj parametrurequireOffset
, aby wymagać przesunięcia. (I3de9e) - Dodano parametr
minLines
do komponentów material i material3 Text,TextField
iOutlinedTextField
, który umożliwia ustawienie minimalnej wysokości komponentu w ujęciu liczby wierszy (I4af1d). - Dodano parametr
minLines
doBasicText
iBasicTextField
. Umożliwia ustawienie minimalnej wysokości tych komponentów pod względem liczby wierszy (I24294, b/122476634).
Wersja 1.4.0-rc01
8 marca 2023 r.
androidx.compose.material:material-*:1.4.0-rc01
jest opublikowany bez wprowadzenia zmian. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Wersja 1.4.0-beta02
22 lutego 2023 roku
androidx.compose.material:material-*:1.4.0-beta02
został zwolniony. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- W
BottomSheetScaffold
uwzględniono zmiany w interfejsach API do przesuwania. ParametrconfirmStateChange
w modeluBottomSheetState
został przemianowany naconfirmValueChange
. Wartośćprogress
jest teraz wyświetlana jako liczba zmiennoprzecinkową. WartościanimateTo
isnapTo
są wewnętrzne. Zamiast niej użyj zasadexpand()
icollapse()
. Zasobydirection
ioverflow
zostały usunięte. Wartośćoffset
została zastąpiona wartościąrequireOffset()
. (I323b4)
Poprawki błędów
- Usunięto role semantyczne z klikalnych i wybieralnych powierzchni. Zaktualizowano komponenty, które używały tych ról, aby ustawiały role za pomocą atrybutu modifier.semantics (Ibb4ba).
- Niewielka aktualizacja rozszerzonych ikon Material Design, która wprowadza zmiany w pełnych ikonach
desktop_mac
,directions
ikitchen
. (I65f5e)
Wersja 1.4.0-beta01
8 lutego 2023 r.
androidx.compose.material:material-*:1.4.0-beta01
został zwolniony. Wersja 1.4.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Rozwiązanie problemu, który powodował, że
pullRefresh
nie zużywało prędkości, co powodowało wyświetlanie przewijania. Zmieniliśmy też sygnaturę interfejsu API funkcjionRelease
lambda w funkcjiModifier.pullRefresh
, aby zwracała typ Float dla prędkości zużycia (I7db65, b/266874741) - Przywrócono metodę
LocalMinimuTouchTargetEnforcement
gettera właściwości, oznaczono ją jako przestarzałą i przekierowano doLocalMinimumInteractiveComponentEnforcement
. (I60dd5)
Wersja 1.4.0-alpha05
25 stycznia 2023 r.
androidx.compose.material:material-*:1.4.0-alpha05
został zwolniony. Wersja 1.4.0-alpha05 zawiera te commity.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował nieprawidłowe obliczanie stanu
ModalBottomSheetLayout's HalfExpanded
i wyświetlanie arkusza jako pływającego. (I8c615, b/265610459) - Naprawiliśmy błąd w
ModalBottomSheetLayout
, który powodował awarię arkusza w niektórych przypadkach, gdy w arkuszu zmieniano stan z ukrytego na widoczny. (Ia9265, b/265444789)
Wersja 1.4.0-alpha04
11 stycznia 2023 r.
androidx.compose.material:material-*:1.4.0-alpha04
został zwolniony. Wersja 1.4.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Dodano właściwość semantyki
IsContainer
w sekcji Powierzchnie. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie semantycznego znaczenia elementów, takich jak powierzchnie. (I63379) - Oznacz funkcję
snapTo
w menu bocznym jako interfejs API, który nie jest eksperymentalny. (Ib9c18, b/261425368) - Dodaliśmy parametr koloru ścieżki dla kółkowych wskaźników postępu oraz parametr obrysu dla kółkowych i liniowych wskaźników postępu. (Ie668c, b/216325962, b/222964817)
- Nazwa
confirmStateChange
w aplikacjachModalBottomSheetState
,ModalBottomSheetState.Saver
irememberModalBottomSheetState
została zmieniona naconfirmValueChange
. (Ib48d1) - Dodanie możliwości zwracania wartości null do ukrytych funkcji wycofanych (Ibf7b0)
- Dodaj
Modifier.minimumInteractiveComponentSize
. Można go użyć, aby zarezerwować co najmniej 48 dp, aby uniknąć niejednoznaczności interakcji dotykowych, jeśli element ma być mniejszy. (I33f58, b/258495559) - W
ModalBottomSheetLayout
uwzględniono zmiany w interfejsach API do przesuwania. FunkcjaModalBottomSheetState
nie przyjmuje już parametruanimationSpec
, a wyświetlana funkcjaoffset
nie może już zwracać wartości null.animateTo
Aby wymagaćoffset
, użyj właściwościrequireOffset
. (Ia2e79)
Poprawki błędów
- Maksymalna szerokość arkusza
ModalBottomSheetLayout
wynosi teraz 640 dp. (I71a4f, b/234927577) - Rozwiązanie problemu polegającego na tym, że
rememberPullRefreshState
nie aktualizował wartościrefreshThreshold
irefreshingOffset
w czasie. (Ifed10, b/263159832) - Wskaźniki postępu są teraz prawidłowo ograniczone do oczekiwanego zakresu. (I8a7eb, b/262262727)
- Jeśli
ModalBottomSheetState
nie otrzymał jeszcze żadnych kotwic, zaktualizujecurrentValue
bez animacji, gdy wywołane zostanąsnapTo
lubanimateTo
, zamiast zgłaszać wyjątek. (I2c91b) - Naprawiono stan włączenia w ramach implementacji Material 2
FilterChip
. (Id326a, b/261329817) - Naprawiliśmy błąd, który powodował awarię aplikacji
ModalBottomSheetLayout
, jeśliHalfExpanded
został obrócony z orientacji pionowej na poziomą. Upewnij się, że przekazujesz prawidłową wartośćinitialValue
, na przykład sprawdzając konfigurację. (Ie8df7, b/182882364) - Rozwiązaliśmy problem, który powodował awarię
ModalBottomSheetLayout
, jeśli zawartość arkusza była pusta.ModalBottomSheetLayout
teraz zezwala na pustą zawartość arkusza. Jeśli zawartość arkusza jest pusta, będzie miała tylko stan Ukryty. (Ic2288, b/200980998, b/216693030)
Znany problem
- Podczas aktualizacji z wersji
androidx.compose.foundation:1.4.0-alpha03
naandroidx.compose.foundation:1.4.0-alpha04
może wystąpić błądjava.lang.NoSuchFieldError
. Tutaj został pierwotnie zgłoszony problem. Przesłaliśmy poprawkę, która będzie dostępna w ramach następnej aktualizacji Compose. Aby obejść ten problem, zaktualizuj bibliotekiandroidx.compose.material
iandroidx.compose.material3
do najnowszej wersji(1.1.0-alpha04) lub obniż wersję bibliotekiandroidx.compose.foundation
do 1.4.0-alpha03.
Wersja 1.4.0-alpha03
7 grudnia 2022 r.
androidx.compose.material:material-*:1.4.0-alpha03
został zwolniony. Wersja 1.4.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Dodawanie adnotacji
@JvmDefaultWithCompatibility
(I8f206) - W interfejsach API
Swipeable
w wersjiModalDrawer
uwzględniono zmiany. MetodaanimateTo
klasyDrawerState
została zastąpiona metodamiopen
iclose
, a wartość przesunięcia może teraz być pusta. Użyj parametrurequireOffset
, aby wymagać przesunięcia. (I3de9e) - Dodano interfejs API Modifier, aby zapytać o informacje dotyczące przewijania przodków (I2ba9d, b/203141462).
- Służy w
Clickable
do prawidłowego opóźnienia interakcji z przyciskiem, gdy gesty mogą stać się zdarzeniami przewijania. - Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów
Clickables
, gdy są używane w ramachScrollable ViewGroup
. - Zaktualizowano Drawers i Sheets, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował zablokowanie funkcji
PullRefreshIndicator
po wywołaniu funkcjionRefresh
, jeśli stan odświeżania nie został zmieniony na „prawda”. (Ie2416, b/248274004)
Aktualizacje zależności
- Interfejs Compose UI i Compose Material są teraz zależne od Lifecycle 2.5.1. (I05ab0, b/258038814)
Wersja 1.4.0-alpha02
9 listopada 2022 r.
androidx.compose.material:material-*:1.4.0-alpha02
został zwolniony. Wersja 1.4.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Aby zapewnić większą elastyczność, atrybuty
awaitFirstDown
iwaitForUpOrCancellation
obsługują teraz atrybutyPointerEventPass
. (I7579a, b/212091796) - Dodano parametr
minLines
do komponentów material i material3 Text,TextField
iOutlinedTextField
, który umożliwia ustawienie minimalnej wysokości komponentu w ujęciu liczby wierszy (I4af1d). - Dodano parametr
minLines
doBasicTex
t iBasicTextField
. Umożliwia ustawienie minimalnej wysokości tych komponentów w ujęciu liczby linii (I24294, b/122476634)
Wersja 1.4.0-alpha01
24 października 2022 r.
androidx.compose.material:material-*:1.4.0-alpha01
został zwolniony. Wersja 1.4.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
- Dodano nową metodę
awaitEachGesture()
do wykrywania gestów. Działa ona podobnie doforEachGesture()
, ale pętla gestów działa całkowicie w ramachAwaitPointerEventScope
, dzięki czemu nie dochodzi do utraty zdarzeń między iteracjami. - Element
forEachGesture()
został wycofany na rzecz elementuawaitEachGesture()
, ponieważ pozwala on na utratę zdarzeń między gestami. (Iffc3f, b/251260206)
Wersja 1.3
Wersja 1.3.1
9 listopada 2022 r.
androidx.compose.material:material-*:1.3.1
został zwolniony. Wersja 1.3.1 zawiera te commity.
Wersja 1.3.0
24 października 2022 r.
androidx.compose.material:material-*:1.3.0
został zwolniony. Wersja 1.3.0 zawiera te commity.
Ważne zmiany od wersji 1.2.0
Złamanie zasad
- Maksymalna obsługiwana wysokość w oknach dialogowych i wyskakujących została zmniejszona do 8 dp.
Zmiany w interfejsie API
- Dodaj do Compose komponent „Przeciągnij, aby odświeżyć” (I29168).
- Zmień nazwę parametru z wartości na wartość w suwaku zakresu (I3b79a).
Wersja 1.3.0-rc01
5 października 2022 r.
androidx.compose.material:material-*:1.3.0-rc01
został zwolniony. Wersja 1.3.0-rc01 zawiera te commity.
Wersja 1.3.0-beta03
21 września 2022 r.
androidx.compose.material:material-*:1.3.0-beta03
został zwolniony. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodawanie do Compose komponentu „Przeciągnij, aby odświeżyć” (I29168)
Wersja 1.3.0-beta02
7 września 2022 roku
androidx.compose.material:material-*:1.3.0-beta02
został zwolniony. Wersja 1.3.0-beta02 zawiera te commity.
Brak zmian od wersji 1.3.0-beta01
Wersja 1.3.0-beta01
24 sierpnia 2022 r.
androidx.compose.material:material-*:1.3.0-beta01
został zwolniony. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Złamanie zasad
Maksymalna obsługiwana wysokość w oknach dialogowych i wyskakujących została zmniejszona do 8 dp.
Maksymalna obsługiwana wysokość dla okienek dialogowych i wyskakujących w komponencie Redagowanie została zmniejszona z 30 dp na 8 dp. Ta zmiana dotyczy zarówno dialogów i wyskakujących okienek w Material Design, jak i w UI. Ta zmiana została wprowadzona, aby załagodzić problem z ułatwieniami dostępu w wersjach Androida niższych niż S oraz zapewnić, że usługi ułatwień dostępu w tych oknach będą mogły wchodzić w interakcję z treścią w dialogu lub wyskakującym okienku.
Ta zmiana będzie miała wpływ tylko wtedy, gdy tworzysz niestandardową implementację okna dialogowego lub wyskakującego z wysokością wyższą niż 8 dp. Rozważ obniżenie położenia okna dialogowego lub wyskakującego. Jeśli chcesz zrezygnować z tego nowego zachowania, rozważ utworzenie własnego okna dialogowego lub wyskakującego z odpowiednim ustawieniem poziomu. Nie jest to zalecane, ponieważ może to negatywnie wpłynąć na ułatwienia dostępu. Deweloper musi zadbać o to, aby dolna część okna dialogowego lub wyskakującego okna była interaktywna i czytelna dla usług ułatwień dostępu.
Wersja 1.3.0-alpha03
10 sierpnia 2022 r.
androidx.compose.material:material-*:1.3.0-alpha03
został zwolniony. Wersja 1.3.0-alpha03 zawiera te commity.
Wersja 1.3.0-alpha02
27 lipca 2022 roku
androidx.compose.material:material-*:1.3.0-alpha02
został zwolniony. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.
Darowizna zewnętrzna
- Rozwiązanie problemu
AnimatedVisibility
zFloatingActionButton
w Scaffold (I3a0ae, b/224005027)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
androidx.compose.material:material-*:1.3.0-alpha01
został zwolniony. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmień nazwę parametru z values na value w
RangeSlider
(I3b79a)
Poprawki błędów
- Zaktualizuj przykład plakietki, aby zawierał bardziej szczegółowy opis treści. (I10b9d)
Wersja 1.2
Wersja 1.2.1
10 sierpnia 2022 r.
androidx.compose.material:material-*:1.2.1
został zwolniony. Wersja 1.2.1 zawiera te zatwierdzenia.
Wersja 1.2.0
27 lipca 2022 roku
androidx.compose.material:material-*:1.2.0
został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.
Wersja 1.2.0-rc03
29 czerwca 2022 r.
androidx.compose.material:material-*:1.2.0-rc03
został zwolniony. Wersja 1.2.0-rc03 zawiera te zatwierdzenia.
- Brak zmian od wersji 1.2.0-rc02.
Wersja 1.2.0-rc02
22 czerwca 2022 r.
androidx.compose.material:material-*:1.2.0-rc02
został zwolniony. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.
Wersja 1.2.0-rc01
15 czerwca 2022 r.
androidx.compose.material:material-*:1.2.0-rc01
został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejsy w bibliotekach kompozytowych są teraz tworzone za pomocą domyślnych metod interfejsu JDK 8 (I5bcf1).
Poprawki błędów
- Zaktualizowano plakietkę z ikoną na karcie, aby przypiąć plakietkę do etykiety zamiast ikony. (I90993)
Wersja 1.2.0-beta03
1 czerwca 2022 r.
androidx.compose.material:material-*:1.2.0-beta03
został zwolniony. Wersja 1.2.0-beta03 zawiera te commity.
Poprawki błędów
- Naprawiono błąd polegający na tym, że
BottomSheetScaffold
nakładała się na cień górnego paska aplikacji.BottomSheetScaffold
teraz podczas umieszczania pasków informacji bierze pod uwagę stan arkusza: w stanie zwiniętym paski informacji są umieszczane nad arkuszem i przyciskiem szybkiego dostępu, a w stanie rozwiniętym są zakotwiczone u dołu arkusza. (Ia80b5, b/187771422)
Wersja 1.2.0-beta02
18 maja 2022 r.
androidx.compose.material:material-*:1.2.0-beta02
został zwolniony. Wersja 1.2.0-beta02 zawiera te commity.
Wersja 1.2.0-beta01
11 maja 2022 roku
androidx.compose.material:material-*:1.2.0-beta01
został zwolniony. Wersja 1.2.0-beta01 zawiera te commity.
Nowe funkcje
- To pierwsza wersja beta 1.2.
Zmiany w interfejsie API
- Zmieniono nazwę nakładki
TextFieldDefaults.BorderStroke
, która rysuje obrys w komponowalnym elemencieOutlinedTextField
, naTextFieldDefaults.BorderBox
. (I5f295)
Wersja 1.2.0-alpha08
20 kwietnia 2022 r.
androidx.compose.material:material-*:1.2.0-alpha08
został zwolniony. Wersja 1.2.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Częściowe wyświetlanie (obniżanie lub pozycja) zostało wycofane w wersji
PointerInputChange
. Możesz użyćconsume()
, aby w pełni wdrożyć zmianę. Możesz użyćisConsumed
, aby sprawdzić, czy ktoś inny wcześniej nie wprowadził tej zmiany. PointerInputChange::copy()
zawsze tworzy teraz kopię powierzchowną. Oznacza to, że kopiePointerInputChange
zostaną wykorzystane, gdy wykorzystana zostanie jedna z nich. Jeśli chcesz utworzyć niewiążącą instancjęPointerInputChange
, użyj konstruktora. (Ie6be4, b/225669674)
Wersja 1.2.0-alpha07
6 kwietnia 2022 roku
androidx.compose.material:material-*:1.2.0-alpha07
został zwolniony. Wersja 1.2.0-alpha07 zawiera te commity.
Wersja 1.2.0-alpha06
23 marca 2022 r.
androidx.compose.material:material-*:1.2.0-alpha06
został zwolniony. Wersja 1.2.0-alpha06 zawiera te commity.
Zmiany w interfejsie API
- Aktualizacje interfejsu clickableCard API, które naśladują zmiany w interfejsie Surface API (I56bcb)
- Aktualizacje interfejsu Material 2 Surface API, które dodają dodatkowe przeciążone funkcje dla powierzchni do wyboru i przełączania. (Ifcca5)
Wersja 1.2.0-alpha05
9 marca 2022 r.
androidx.compose.material:material-*:1.2.0-alpha05
został zwolniony. Wersja 1.2.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Funkcje
LazyVerticalGrid
iLazyHorizontalGrid
są teraz stabilne. (I307c0) LazyVerticalGrid/LazyHorizontalGrid
i wszystkie powiązane interfejsy API zostały przeniesione do podpakietu .grid. Zaktualizuj importy z androidx.compose.foundation.lazy na androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)- Przywróciliśmy poprzednią zmianę polegającą na korzystaniu wyłącznie z widoku
WindowInsetsControllerCompat
i ponownie wymagamy użycia okna, które jest wymagane do zarządzania niektórymi flagami okna. FunkcjaViewCompat.getWindowInsetsController
została wycofana na rzecz funkcjiWindowCompat.getInsetsController
, aby zapewnić używanie odpowiedniego okna (np. gdy widok znajduje się w oknie dialogowym). (I660ae, b/219572936) - Tekst:
includeFontPadding
jest teraz domyślnie wyłączony. Problemy z przycinaniem wynikające z użyciaincludeFontPadding=false
zostały rozwiązane i w przypadku wysokich skryptów nie powinno już występować przycinanie. (I31c84, b/171394808) - Dodano nowy interfejs API
LazyVerticalGrid
do definiowania rozmiarów na osi poprzecznej (I17723)
Wersja 1.2.0-alpha04
23 lutego 2022 r.
androidx.compose.material:material-*:1.2.0-alpha04
został zwolniony. Wersja 1.2.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
Add support for filter chips
(I39a6e, b/192585545)- Dodano
TextFieldDecorationBox
iOutlinedTextFieldDecorationBox
. Korzystanie z nich w połączeniu z elementemBasicTextField
pomoże Ci utworzyć niestandardowe pole tekstowe oparte na polach tekstowych w stylu Material Design, ale z większymi możliwościami dostosowywania. - Dodano możliwość dostosowania poziomych i pionowych marginesów w polach tekstowych. (I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617)
Dodano funkcje
ComposableTarget
,ComposableTargetMarker
iComposableOpenTarget
, które umożliwiają raportowanie w czasie kompilacji, gdy wywoływana jest funkcja typu „composable” kierowana na obiekt, który nie jest przeznaczony do jej użycia.W większości przypadków adnotacje mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc rzadko trzeba używać ich bezpośrednio . Do przypadków, w których nie można wywnioskować typu danych, należą tworzenie i używanie niestandardowego aplikatora, abstrakcyjnych funkcji składanych (np. metod interfejsu), pól lub zmiennych globalnych, które są składanymi funkcjami lambda (lokalne zmienne i parametry są wywnioskowane) oraz używanie funkcji
ComposeNode
lub powiązanych funkcji składanych.W przypadku niestandardowych funkcji dopasowujących funkcje składane, które wywołują
ComposeNode
lubReusableComposeNode
, muszą dodać adnotacjęCompoableTarget
dla funkcji i wszystkich typów parametrów funkcji składanych lambda. Zalecamy jednak utworzenie adnotacji z oznaczeniemComposableTargetMarker
, a następnie używanie adnotacji z oznaczeniem zamiast bezpośrednioComposableTarget
. Kompozytowa adnotacja oznaczona symbolemComposableTargetMarker
jest równoważna atrybucieComposbleTarget
z pełną nazwą klasy atrybutu jako parametrem aplikatora. Przykład użycia funkcjiComposableTargetMarker
znajdziesz w sekcjianroidx.compose.ui.UiComposable
. (I38f11)
Wersja 1.2.0-alpha03
9 lutego 2022 r.
androidx.compose.material:material-*:1.2.0-alpha03
został zwolniony. Wersja 1.2.0-alpha03 zawiera te komisy.
Poprawki błędów
- Dodanie próbki grupy elementów (I97080, b/192585545)
Wersja 1.2.0-alpha02
26 stycznia 2022 r.
androidx.compose.material:material-*:1.2.0-alpha02
został zwolniony. Wersja 1.2.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Dodaliśmy
NonRestartableComposable
do metod, które są przeciążeniem istniejących metod bez złożonej logiki. Zmniejsza to liczbę generowanych przez kompilator sprawdzeń zapamiętywania (równa) w przypadku wszystkich parametrów, które są powtarzane w wyzwanej funkcji wewnętrznej. (I90490) - Dodanie obsługi elementu czynności (I07100, b/192585545)
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
androidx.compose.material:material-*:1.2.0-alpha01
został zwolniony. Wersja 1.2.0-alpha01 zawiera te commity.
Aktualizacje zależności
- Teraz zależy od Kotlina
1.6.10
.
Darowizna zewnętrzna
ModalBottomSheetState
ma teraz flagęisSkipHalfExpanded
. Może on być ustawiany w konstruktoramie lub aktualizowany później przez ustawienie właściwościModalBottomSheetState
isSkipHalfExpanded
na wartośćtrue
. Zmiana wartościisSkipHalfExpanded
powoduje ponowne skompilowanie arkusza. (I18b86, b/186669820)
Wersja 1.1
Wersja 1.1.1
23 lutego 2022 r.
androidx.compose.material:material-*:1.1.1
został zwolniony. Wersja 1.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw
NullPointerException
wandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462). - Naprawiono awarię spowodowaną przez zawartość schowka podczas odczytu ze schowka na Androidzie. (I06020, b/197769306)
- Naprawiono RTL w
LazyVerticalGrid
(aosp/1931080, b/207510535).
Wersja 1.1.0
9 lutego 2022 r.
androidx.compose.material:material-*:1.1.0
został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.0.0
- stabilna obsługa efektu przewijania do końca w Androidzie 12,
- Ulepszone dopasowywanie rozmiaru dotyku
- Pamiętaj, że w wersji Compose 1.0 komponenty Material Design będą rozszerzać swoją przestrzeń układu, aby spełniać wytyczne Material Design dotyczące rozmiaru docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku będzie miał minimalny rozmiar 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu komponenty Compose będą działać tak samo jak komponenty Material Design, co zapewni spójność, jeśli użyjesz widoków i Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu użytkownika za pomocą komponentów Compose Material zostaną spełnione minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
- Stabilna obsługa kolumny nawigacji
- przekształciliśmy kilka wcześniej eksperymentalnych interfejsów API w stabilne.
- Obsługa nowszych wersji Kotlina
Wersja 1.1.0-rc03
26 stycznia 2022 r.
androidx.compose.material:material-*:1.1.0-rc03
został zwolniony. Wersja 1.1.0-rc03 zawiera te commity.
Zmiany w zachowaniu
Pamiętaj, że w wersji Compose 1.0 komponenty Material Design będą rozszerzać swoją przestrzeń układu, aby spełniać wymagania wytycznych dotyczących ułatwień dostępu dotyczące docelowego obszaru dotykowego. Na przykład docelowy element dotykowy przycisku będzie miał minimalny rozmiar 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu komponenty Compose będą działać tak samo jak komponenty Material Design, co zapewni spójność, jeśli użyjesz widoków i Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu użytkownika za pomocą komponentów Compose Material zostaną spełnione minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
Poprawki błędów
- Dodano lepsze informacje debugowania dla inspektora układu podczas sprawdzania minimalnych modyfikatorów docelowego elementu dotykowego. (aosp/1955036)
Wersja 1.1.0-rc01
15 grudnia 2021 roku
androidx.compose.material:material-*:1.1.0-rc01
został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawić promień zaokrąglenia rogów stosowany w przypadku
Checkbox
(I38b03, b/175198975, b/202309440)
Wersja 1.1.0-beta04
1 grudnia 2021 r.
androidx.compose.material:material-*:1.1.0-beta04
został zwolniony. Wersja 1.1.0-beta04 zawiera te commity.
Nowe funkcje
- Zaktualizowano, aby zapewnić zgodność z Kotlin
1.6.0
Wersja 1.1.0-beta03
17 listopada 2021 r.
androidx.compose.material:material-*:1.1.0-beta03
został zwolniony. Wersja 1.1.0-beta03 zawiera te commity.
Wersja 1.1.0-beta02
3 listopada 2021 r.
androidx.compose.material:material-*:1.1.0-beta02
został zwolniony. Wersja 1.1.0-beta02 zawiera te commity.
Poprawki błędów
- Fale i inne wskazania będą teraz opóźniane tylko wtedy, gdy znajdują się w kontenerze Modifier.scrollable(), a nie zawsze, gdy występuje zdarzenie down. (Ibefe0, b/203141462)
Wersja 1.1.0-beta01
27 października 2021 roku
androidx.compose.material:material-*:1.1.0-beta01
został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.
Nowe funkcje
- Efekty falowania obsługują teraz stany najechania kursorem i aktywności, więc po najechaniu kursorem na element, np. przycisk, będzie wyświetlana odpowiednia nakładka stanu.
Wersja 1.1.0-alpha06
13 października 2021 r.
androidx.compose.material:material-*:1.1.0-alpha06
został zwolniony. Wersja 1.1.0-alpha06 zawiera te commity.
Zmiany w interfejsie API
- Dodano przeciążenie bez podrzędnych dla Layoutu, które zwiększa wydajność (Ib0d9a)
- Implementacja funkcji
ExposedDropdownMenu
na podstawie funkcjiExposedDropdownMenuBox
z funkcjamiTextField
iDropdownMenu
(If60b2) - Do usługi
PopupProperties
dodano kolumnędismissOnOutsideClick
, która zastąpiła kolumnędismissOnClickOutside
, która została wycofana. Nowa właściwość odbiera pozycję kliknięcia i zakresy kotwicy, co zapewnia większą kontrolę nad tym, czy wywołać metodę onDismissRequest. Może to być przydatne na przykład do zapobiegania zamykaniu kotwicy po dotknięciu.- Do
PopupProperties
dodanoupdateAndroidWindowManagerFlags
, który zapewnia kontrolę na niskim poziomie nad flagami przekazywanymi przez wyskakujące okienko do Menedżera okien Androida. Parametrem funkcji lambda będą flagi obliczone na podstawie wartości PopupProperties, które prowadzą do flag WindowManager, np. focusable. Wynikiem funkcji lambda będą ostateczne flagi, które zostaną przekazane do WindowManagera Androida. Domyślnie funkcja updateAndroidWindowManagerFlags pozostawia flagi obliczone na podstawie parametrów bez zmian. Z tego interfejsu API należy korzystać ostrożnie, tylko wtedy, gdy wyskakujące okienko ma bardzo specyficzne wymagania dotyczące działania. (I6e9f9)
- Do
Wersja 1.1.0-alpha05
29 września 2021 r.
androidx.compose.material:material-*:1.1.0-alpha05
został zwolniony. Wersja 1.1.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Dodaje minimalny rozmiar docelowego elementu dotykowego w przypadku komponentów Material Design, które nie mają dostępnego docelowego elementu dotykowego. Dodanie dodatkowego odstępu wokół komponentów, aby zapewnić wystarczająco duży docelowy obszar dotykowy, może zmienić istniejące interfejsy użytkownika, które zakładają, że rozmiar tych komponentów jest ich rozmiarem wizualnym i nie uwzględnia rozmiaru docelowego obszaru dotykowego. Możesz użyć eksperymentalnej kompozycji lokalnej
LocalMinimumTouchTargetEnforcement
, aby wyłączyć to zachowanie w całej hierarchii, ale jest to tylko tymczasowe rozwiązanie na czas aktualizacji istniejących interfejsów użytkownika pod kątem nowego minimalnego rozmiaru. (I9b966, b/149691127, b/171509422) - Dodano eksperymentalny interfejs TextFieldColorsWithIcons, który rozszerza TextFieldColors o dostęp do obiektu InteractionSource w przypadku leadingColor i trailingColor. Umożliwia to modyfikowanie wyglądu pola tekstowego w zależności od stanu fokusa. (I66923, b/198402662)
Wersja 1.1.0-alpha04
15 września 2021 r.
androidx.compose.material:material-*:1.1.0-alpha04
został zwolniony. Wersja 1.1.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Wycofane parametry
performGesture
iGestureScope
, które zostały zastąpione przez parametryperformTouchInput
iTouchInjectionScope
. (Ia5f3f, b/190493367) - Dodano
touchBoundsInRoot
doSemanticsNode
, które zawiera minimalny rozmiar docelowego elementu dotykowego, aby deweloperzy mogli mieć pewność, że docelowe elementy dotykowe spełniają minimalne wymagania dotyczące dostępności. (I2e14b, b/197751214)
Poprawki błędów
- Zezwalanie na rozszerzenie granic docelowego elementu dotykowego poza region klipu w celu zapewnienia minimalnego docelowego elementu dotykowego. (I43e10, b/171509422)
- Zaktualizowano kompozyt
Divider
, aby uwzględniał wartośćDp.Hairline
w przypadku parametru grubości, co umożliwia rysowanie rozdzielaczy jednopikselowych niezależnie od gęstości wyświetlacza. (I16ffb, b/196840810)
Wersja 1.1.0-alpha03
1 września 2021 roku
androidx.compose.material:material-*:1.1.0-alpha03
został zwolniony. Wersja 1.1.0-alpha03 zawiera te commity.
Nowe funkcje
- Zaktualizowano Compose
1.1.0-alpha03
, aby zależało od Kotlina1.5.30
. (I74545)
Zmiany w interfejsie API
- Dodano metodę testową, która umożliwia uzyskanie ograniczonych granic. (I6b28e)
- Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i wejściu wskaźnika w celu zapewnienia ułatwień dostępu. (Ie861c)
Wersja 1.1.0-alpha02
18 sierpnia 2021 r.
androidx.compose.material:material-*:1.1.0-alpha02
został zwolniony. Wersja 1.1.0-alpha02 zawiera te commity.
Darowizna zewnętrzna
- Naprawiliśmy działanie SwipeableState w przypadku, gdy przesunięcie przesunięcia jest w zakresie błędu zaokrąglenia kotwicy. (I03d39, b/191993377)
Wersja 1.1.0-alpha01
4 sierpnia 2021 r.
androidx.compose.material:material-*:1.1.0-alpha01
został zwolniony. Wersja 1.1.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
- Zaktualizowana metoda
DrawScope#drawImage
, która używa prostokątów źródła i miejsca docelowego do użycia opcjonalnego parametru FilterQuality. Jest to przydatne w przypadku grafiki pikseli, która ma być pikselizowa, gdy zostanie powiększona do grafiki pikseli. Zaktualizowano kompozyt BitmapPainter + Image, aby używać opcjonalnego parametru FilterQuality (Ie4fb0, b/180311607). - Zmieniliśmy nazwę komponentu BadgeBox na BadgedBox i zmieniliśmy parametry, aby można było używać komponentu Badge. Dodano komponent Plakietka, który jest typową treścią plakietki dla elementu typu BadgedBox. (I639c6)
- Dodano komponent NavigationRail. Informacje o sposobie jego użycia znajdziesz w dokumentacji i w próbkach kodu (I8de77)
Poprawki błędów
- Dodano przykładową aplikację z użyciem NavigationRail umieszczonego u dołu ekranu oraz aplikację katalogu z demonstracją. (I3cffc)
- Dialogi są teraz dostosowywane do rozmiaru platformy. Aby zmienić to zachowanie, ustaw usePlatformDefaultWidth na wartość false. (Iffaed, b/192682388)
- Dodano do aplikacji katalogu demonstrację paska nawigacyjnego (I04960).
- Dodano demonstrację plakietki do aplikacji katalogu (If285d).
Wersja 1.0
Wersja 1.0.5
3 listopada 2021 r.
androidx.compose.material:material-*:1.0.5
został zwolniony. Wersja 1.0.5 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem ze śledzeniem awarii w przypadku instancji derivedStateOf. (aosp/1792247)
Wersja 1.0.4
13 października 2021 r.
androidx.compose.material:material-*:1.0.4
został zwolniony. Wersja 1.0.4 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależało od Kotlina
1.5.31
Wersja 1.0.3
29 września 2021 r.
androidx.compose.material:material-*:1.0.3
został zwolniony. Wersja 1.0.3 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależało od Kotlina
1.5.30
Wersja 1.0.2
1 września 2021 roku
androidx.compose.material:material-*:1.0.2
został zwolniony. Wersja 1.0.2 zawiera te zatwierdzenia.
Zaktualizowano, aby obsługiwać wersję 1.0.2
aplikacji Compose. Compose 1.0.2
jest nadal zgodny z Kotlinem 1.5.21
.
Wersja 1.0.1
4 sierpnia 2021 r.
androidx.compose.material:material-*:1.0.1
został zwolniony. Wersja 1.0.1 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależało od Kotlina
1.5.21
.
Wersja 1.0.0
28 lipca 2021 roku
androidx.compose.material:material-*:1.0.0
został zwolniony. Wersja 1.0.0 zawiera te zatwierdzenia.
Najważniejsze funkcje wersji 1.0.0
To pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu Compose Release.
Znane problemy
Jeśli używasz Android Studio Bumblebee Canary 4 lub AGP
7.1.0-alpha04
/7.1.0-alpha05
, możesz napotkać ten błąd:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Aby to naprawić, tymczasowo zwiększ wartość minSdkVersion w pliku
build.gradle
do 24 lub więcej. Ten problem zostanie rozwiązany w następnej wersji Android Studio Bumblebee i AGP7.1
. (b/194289155)
Wersja 1.0.0-rc02
14 lipca 2021 roku
androidx.compose.material:material-*:1.0.0-rc02
został zwolniony. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Dialogi są teraz dostosowywane do rozmiaru platformy. Aby zmienić to zachowanie, ustaw wartość
usePlatformDefaultWidth
na „False” (fałsz). (Iffaed, b/192682388)
Wersja 1.0.0-rc01
1 lipca 2021 r.
androidx.compose.material:material-*:1.0.0-rc01
został zwolniony. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano komponent
BadgeBox
. Informacje o sposobie jego użycia znajdziesz w dokumentacji i przykładach (I5e284). - Nazwa
useDefaultMaxWidth
wPopupProperties
została zmieniona nausePlatformDefaultWidth
. (I05710) - Dialogi mogą teraz wykorzystywać całą szerokość ekranu. (I83929, b/190810877)
- Dodano implementację suwaka zakresu eksperymentalnego (I2f4b3).
Poprawki błędów
- Aby dostosować się do specyfikacji Material Design, w przypadku pola tekstowego z wypełnieniem w postaci obrysu i nieprawidłowego wejścia nie używamy już koloru błędu dla etykiety, gdy etykieta jest używana jako element zastępczy. Ta ostatnia wartość jest prawdziwa, gdy w polu tekstowym nie ma tekstu, a pole tekstowe nie jest zaznaczone. Wraz z tą zmianą zmieniło się też znaczenie parametru
error:Boolean
w funkcjiTextFieldColors.labelColor()
: teraz zwraca on wartośćfalse
, nawet jeśli dane wejściowe są nieprawidłowe, jeśli etykieta jest używana jako element zastępczy. (I45f78)
Wersja 1.0.0-beta09
16 czerwca 2021 r.
androidx.compose.material:material-*:1.0.0-beta09
został zwolniony. Wersja 1.0.0-beta09 zawiera te commity.
Zmiany w interfejsie API
- Dodano parametr Shape do pola tekstowego OutlinedTextField, aby umożliwić dostosowywanie kształtu obramowania (I8f39e, b/181322957).
- TextOverflow został zmieniony na klasę wbudowaną. (I433af)
Poprawki błędów
- Ekran zastępczy w BottomDrawer, BackdropScaffold i ModalBottomSheetLayout zniknie, gdy zostanie przekazany Color.Unspecified (I2d899, b/182063309)
Dodano reguły profilu
W tej wersji dodaliśmy 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 równoważnym. Plik określa regułę na wiersz, gdzie reguła w tym przypadku jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest superzbiorem czytelnego dla człowieka formatu profilu ART, który jest używany podczas korzystania zadb shell profman --dump-classes-and-methods ...
. Te reguły mogą mieć jedną z 2 form, aby kierować się na metody lub klasy.Reguła metody ma taki wzór:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Reguła klasy będzie miała ten wzór:
<CLASS_DESCRIPTOR>
Tutaj
<FLAGS>
to co najmniej jeden z znakówH
,S
lubP
, który wskazuje, czy ta metoda powinna być oznaczona jako „Aktywna”, „Uruchamianie” lub „Po uruchomieniu”.<CLASS_DESCRIPTOR>
to deskryptor klasy, do której należy docelowa metoda. Na przykład klasaandroidx.compose.runtime.SlotTable
miałaby opisLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
to sygnatura metody, która zawiera nazwę, typy parametrów i typ zwracany metody. Na przykład metodafun isPlaced(): Boolean
w klasieLayoutNode
ma sygnaturęisPlaced()Z
.Te wzorce mogą zawierać symbole wieloznaczne (
**
,*
i?
), aby jedno reguła obejmowała wiele metod lub klas.
Do czego służą 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 to metoda wywoływana podczas uruchamiania, i powinna zostać skompilowana wcześniej, aby uniknąć kosztów kompilacji i interpretacji metody podczas uruchamiania.Metoda z flagą
P
wskazuje, że jest wywoływana po uruchomieniu.Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i należy ją wstępnie przydzielić do stosu, aby uniknąć kosztów wczytywania klasy.
Jak to działa?
- Biblioteki mogą definiować te reguły, które zostaną zapakowane w artefakty AAR. Gdy kompilujesz plik APK, który zawiera te elementy, reguły są scalane, a następnie używane do utworzenia kompaktowego profilu binarnego ART, który jest specyficzny dla tego pliku APK. Następnie ART może wykorzystać ten profil, gdy plik APK zostanie zainstalowany na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji i w ten sposób poprawić jej wydajność, zwłaszcza podczas pierwszego uruchomienia. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.
Wersja 1.0.0-beta08
2 czerwca 2021 r.
androidx.compose.material:material-*:1.0.0-beta08
został zwolniony. Wersja 1.0.0-beta08 zawiera te commity.
Nowe funkcje
Zmiany w interfejsie API, które powodują zmiany zachowania
- ZMIANY W ZACHOWANIU: karta teraz zużywa kliknięcia, przez co kliknięcia dodane za pomocą
Card(Modifier.clickable)
nie są wykonywane. Użyj nowego eksperymentalnego przeciążenia karty, która akceptuje funkcję onClick. (Ia8744, b/183775620)- Dodano nową funkcję przeciążenia karty, która obsługuje kliknięcia oraz inne funkcje klikalne: wskazanie, interactionSource, włączone/wyłączone. Nie można było użyć zwykłej karty bez możliwości kliknięcia z opcją
Modifier.clickable
, ponieważ w takich przypadkach karta nie będzie przycinać efektu falowania.
- Dodano nową funkcję przeciążenia karty, która obsługuje kliknięcia oraz inne funkcje klikalne: wskazanie, interactionSource, włączone/wyłączone. Nie można było użyć zwykłej karty bez możliwości kliknięcia z opcją
- ZMIANY W ZACHOWANIU: funkcja Surface zużywa teraz kliknięcia, przez co kliknięcia dodane za pomocą funkcji
Surface(Modifier.clickable)
nie będą działać. Używaj nowej eksperymentalnej funkcji Surface, która akceptuje parametr onClick. (I73e6c, b/183775620)- Dodano nowe przeciążenie powierzchni, które obsługuje kliknięcia oraz inne funkcje klikalne: wskazanie, interactionSource, włączone/wyłączone. Nie można było użyć zwykłej powierzchni, na której nie można kliknąć, z elementem
Modifier.clickable
, ponieważ w takich przypadkach powierzchnia nie będzie przycinać efektu falowania.
- Dodano nowe przeciążenie powierzchni, które obsługuje kliknięcia oraz inne funkcje klikalne: wskazanie, interactionSource, włączone/wyłączone. Nie można było użyć zwykłej powierzchni, na której nie można kliknąć, z elementem
Zmiany w interfejsie API
FabPosition
zostało przekonwertowane z enumeracji na inline class, aby umożliwić potencjalne rozszerzenie w przyszłości (I030fb)- Przekształciliśmy użycie wyliczeń w klasy wbudowane, aby uniknąć problemów z wyczerpującymi instrukcjami warunkowymi, gdy dodawane są nowe wartości wyliczenia. (I2b5eb)
- Dodanie czasu oczekiwania na kliknięcie lub przełączenie, aby zapobiec wyświetlaniu efektu falowania podczas przewijania lub przeciągania (Ia2704, b/168524931).
- Właściwości ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je łączyć w postaci niemodyfikowanej, a nie w postaci konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które wykorzystują te zmiany (Ica6bf, b/184825850).
- Środowisko wykonawcze
Modifier.focusModifier()
zostało wycofane i zastąpione środowiskiemModifier.focusTarget()
(I6c860) - Wymiana enumu
FocusState
na interfejsFocusState
(Iccc1a, b/187055290) - Usunięto
LocalRippleNativeRendering
, ponieważ implementacja efektu falowania opartego na widoku jest stabilna (I7fab3, b/188569367).
Poprawki błędów
Modifier.onGloballyPositioned()
zostało zmienione, aby raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że kolejność modyfikatorów wpływa na to, jakie współrzędne zostaną zgłoszone. (Ieb67d, b/177926591)- Dodano README dla dotychczasowego katalogu komponentów Compose. (If9191)
Wersja 1.0.0-beta07
18 maja 2021 r.
androidx.compose.material:material-*:1.0.0-beta07
został zwolniony. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nie musisz już używać metod rozszerzeń do obsługi tras w komponencie Nawigacja. (I22beb, b/172823546)
Wersja 1.0.0-beta06
5 maja 2021 roku
androidx.compose.material:material-*:1.0.0-beta06
został zwolniony. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Aplikacja Ripple została przeniesiona do wewnętrznego użycia na urządzeniach z Androidem.
RippleDrawable
Oznacza to, że animacje falowania będą wykonywane przez RenderThread, dzięki czemu będą płynne nawet wtedy, gdy wątek interfejsu użytkownika jest obciążony, np. podczas przełączania się między ekranami. Nie powoduje to zmiany interfejsu API usługi ripple, ale może spowodować zmiany w zachowaniu. Aby ułatwić migrację, dodano parametrLocalRippleNativeRendering
. Aby skorzystać z poprzedniej implementacji funkcji ripple w ramach CompositionLocalProvider, podaj w tym przypadku wartośćfalse
. Ten interfejs API jest tymczasowy i zostanie usunięty w przyszłości, więc jeśli napotkasz problemy, które zmuszą Cię do korzystania z tego interfejsu API, zgłoś błąd. (I902f8, b/168777351, b/183019123) - Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i jej elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
- Dodano interfejs API ułatwień dostępu
error
, który umożliwia oznaczanie węzła zawierającego nieprawidłowy element wejściowy (I12997, b/180584804, b/182142737).
Poprawki błędów
- Zaktualizowano implementację wstawek katalogu Material Compose: https://github.com/google/accompanist/pull/365. (I25dc3)
- Elementy potomne wiersza i kolumny z wartością wagi(wypełnienie = fałsz) nie powodują już, że element nadrzędny wypełnia całą dostępną przestrzeń osi głównej. (Ied94d, b/186012444, b/184355105)
Wersja 1.0.0-beta05
21 kwietnia 2021 r.
androidx.compose.material:material-*:1.0.0-beta05
został zwolniony. Wersja 1.0.0-beta05 zawiera te commity.
Poprawki błędów
- Dodaliśmy do istniejącego katalogu komponentów Compose obrazy komponentów, selektor motywów i bardziej szczegółowe adresy URL menu. (I9b58e)
Wersja 1.0.0-beta04
7 kwietnia 2021 r.
androidx.compose.material:material-*:1.0.0-beta04
został zwolniony. Wersja 1.0.0-beta04 zawiera te commity.
Zmiany w interfejsie API
- ZMIANY W INTERFEJSIE API: stan
DrawerState
nie rozszerza już eksperymentalnej klasy SwipeableState.- ZMIANY W INTERFEJSIE API:
BottomDrawerState
jest teraz oznaczony jako element eksperymentalny, aby pasował do już eksperymentalnej funkcji BottomDrawer (I81114, b/181656094).
- ZMIANY W INTERFEJSIE API:
- Zmień nazwy
hideSoftwareKeyboard
ishowSoftwareKeyboard
naSoftwareKeyboardController
nahide()
ishow()
.- Udostępnij pełny interfejs CompositionLocal dla klasy LocalSoftwareKeyboardController, aby umożliwić jej ustawienie (szczególnie przydatne w przypadku testów) (I579a6)
- Dodano interfejs API dostępności LiveRegion. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadomią użytkownika o zmianach (Idcf6f, b/172590946)
Poprawki błędów
- Dodano implementację katalogu Compose Material do dotychczasowego modułu. Obecnie brakuje: obrazów kafelków komponentów i selektora motywów (zostanie dodany w kolejnych zmianach). (Ie7a94)
Wersja 1.0.0-beta03
24 marca 2021 r.
androidx.compose.material:material-*:1.0.0-beta03
został zwolniony. Wersja 1.0.0-beta03 zawiera te komitowane zmiany.
Zmiany w interfejsie API
- Środowisko wykonawcze
DefaultMonotonicFrameClock
zostało wycofane. Wywołanie funkcjiwithFrameNanos
lubRecomposer.runRecomposeAndApplyChanges
bez parametruMonotonicFrameClock
spowoduje wyjątekIllegalStateException
. (I4eb0d) - Dodaliśmy nowy interfejs API
LeadingIconTab
, który obsługuje wyświetlanie ikony i tekstu wstawionego na karcie. (I23267)
Darowizna zewnętrzna
- [autorstwa Jossi Wolf]
BottomDrawer
teraz kończy wyświetlanie zawartości sekcji szuflady.BottomDrawer
nie powoduje błęduIllegalStateException
, gdy element nadrzędny ma nieskończoną wysokość. Dolna szuflada będzie teraz otwierać się w rozwiniętym stanie, jeśli jest mniejsza niż 50% elementu nadrzędnego. Dokumenty dotycząceBottomDrawerState
iModalBottomSheetLayoutState
zostały zaktualizowane. FunkcjaBottomDrawerState#isOpen
zwraca teraz wartość true, jeśli element jest otwarty lub rozwinięty. (I87241)
Wersja 1.0.0-beta02
10 marca 2021 r.
androidx.compose.material:material-*:1.0.0-beta02
został zwolniony. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano nowy interfejs API do tworzenia lokalnych kompozycji
LocalSoftwareKeyboardController
, który zastępuje poprzedni interfejsSoftwareKeyboardController
w przypadku pola tekstowego. (I5951e, b/168778053)
Poprawki błędów
- Wprowadzanie ograniczeń dotyczących publicznego używania eksperymentalnych interfejsów API (I6aa29, b/174531520)
- Domyślne wyrównanie poziome paska górnego i dolnego zmieniono na „Start”, aby było zgodne z paskiem (Ib2dc7).
- Dodano nowy moduł i interfejs zastępczy dla katalogu Compose Material, który jest obecnie zagnieżdżony w dotychczasowych demonstracjach testów integracji. (Idfcb3)
androidx.compose.ui:ui
nie zależy już od AppCompat ani Fragment. Jeśli w aplikacji używasz widoku ComposeView i fragmentu lub interfejsu AppCompat, upewnij się, że używasz interfejsu AppCompat w wersji 1.3 lub nowszej albo Fragment w wersji 1.3 lub nowszej. Te wersje są potrzebne do prawidłowego ustawienia cyklu życia i właścicieli zapisanego stanu wymaganych przez widok ComposeView. (I1d6fa, b/161814404)
Wersja 1.0.0-beta01
24 lutego 2021 r.
androidx.compose.material:material-*:1.0.0-beta01
został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.
To pierwsza wersja Compose 1.0.0 w wersji beta.
Zmiany w interfejsie API
- Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmienne width/height/size zostały przemianowane na requiredWidth/requiredHeight/requiredSize. Nazwa Modifier.preferredWidth/preferredHeight/preferredSize została zmieniona na width/height/size. (I5b414)
- imageResource i vectorResource są teraz funkcjami rozszerzenia odpowiednio dla ImageBitmap i ImageVector. Funkcje load{Image,Vector,Font}Resource zostały usunięte. (I89130)
- Modyfikatory służące do dopasowywania rozmiaru do wartości bezwzględnych nie są już eksperymentalne. (I15744)
- Usunięto stwierdzenia dotyczące dp (I798d2)
- Z wszystkich pól tekstowych usunięto wywołanie metody SoftwareKeyboardController, które wkrótce zostanie zastąpione nowym interfejsem API. (Iae869, b/168778053)
- Lambda akcji typu Switch, Checkbox i RadioButton może teraz być opcjonalna. Zaktualizowano przykłady pól wyboru w klikalnych wierszach, aby można było z nich korzystać. (If601b, b/171819073)
- Wartość
InteractionState
została zastąpiona wartością[Mutable]InteractionSource
- Interfejsy odpowiadają za emitowanie i zbieranie zdarzeń interakcji.
- Zamiast przekazywania wartości
interactionState = remember { InteractionState() }
do komponentów takich jakButton
iModifier.clickable()
, użyj wartościinteractionSource = remember { MutableInteractionSource() }
. - Zamiast:
Interaction.Pressed in interactionState
użyj funkcji rozszerzenia w źródle interakcji, np. InteractionSource.collectIsPressedAsState(). - W skomplikowanych przypadkach możesz używać parametru InteractionSource.interactions do obserwowania strumienia interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących źródła interakcji.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Dodaj interfejs AccessibilityMananger i LocalAccessibilityMananger w CompositionLocals (I53520)
- Usunięto przestarzałe metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent należy używać funkcji (I580ed, b/169874631, b/175142755).
- Suwak obsługuje teraz stan włączony/wyłączony (I6d56b, b/179793072).
- Utworzono nową klasę TextInputSession na potrzeby sesji wprowadzania danych z niskiego poziomu komponentów tekstowych, takich jak CoreTextField. (I8817f, b/177662148)
- Parametr AnimationEndReason.Interrupted został usunięty. Jeśli animacja zostanie przerwana, zostanie rzucony wyjątek CancellationException. (I2cbbc, b/179695417)
- Usunięto klasę
@ExperimentalRippleApi
, a klasęRippleAlpha
zmieniono tak, aby była klasą z właściwościami zamiast interfejsem. (I6df7c) - Dodano interfejs TextFieldColors, aby reprezentować różne kolory używane w TextField i OutlinedTextField w różnych stanach. Domyślną implementację znajdziesz w TextFieldDefaults.textFieldColors i TextFieldDefaults.outlinedTextFieldColors.
- Nazwa parametru isErrorValue w elementach TextField i OutlinedTextField została zmieniona na isError. (I831f9, b/171305338, b/168004067)
- Dodaj modyfikator selectionGroup, który umożliwia oznaczanie kolekcji kart lub przycisków opcji na potrzeby ułatwień dostępu (Ie5c29)
Dodaj LazyListState.animateScrollToItem
Ta metoda płynnie przewija do konkretnego elementu na liście. (I4bfd7)
Nazwa
ScrollableState.smoothScrollBy()
została zmieniona naanimateScrollBy()
,LazyListState.snapToItemIndex()
nascrollToItem()
, aScrollState.smoothScrollTo()
naanimateScrollTo()
(I35ded).Wszystkie komponenty oznaczone symbolem
@ReadOnlyComposable
są teraz sprawdzane w czasie kompilacji, aby mieć pewność, że wywołują tylko inne komponenty o takim oznaczeniu (I58961)@ReadOnlyComposables
Interfejs TargetAnimation API został usunięty. (If47d1, b/177457083)
Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana za pomocą typów Int (I81298)
Pakiety metod smoothScrollBy i scrollBy zostały zmienione na
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)Element FlingConfig został przemianowany na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych wartości zanikania. (I02b86, b/175294473)
Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmienne width/height/size zostały przemianowane na requiredWidth/requiredHeight/requiredSize. Nazwa Modifier.preferredWidth/preferredHeight/preferredSize została zmieniona na width/height/size. (I5b414)
Parametr defaultMinSizeConstraints zmienił nazwę na defaultMinSize. (I4eaae)
Orientacja została przeniesiona do pakietu podstawy. Moduł VelocityTracker został przeniesiony z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)
Funkcje drawerState.open() i drawerState.close() są teraz zawieszone. Aby uzyskać zakres kompozycji, w której są wywoływane, użyj funkcji rememberCoroutineScope(). (I16f60, b/175294473)
Providers zostało zmienione na CompositionLocalProvider
- Konstruktor kompozycji nie akceptuje już parametru key i został wycofany.
- currentCompositeKeyHash została przekształcona z funkcji na najwyższym poziomie na funkcję składaną na najwyższym poziomie.
- Komponenty CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- Typ ComposableLambda został zastąpiony interfejsem, a typy nie są już parametrami.
- Zmienna ComposableLambdaN została zamieniona na interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
- Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime.
- metoda scalania w SnapshotMutationPolicy nie jest już eksperymentalna
- Funkcja
@TestOnly
poziomu najwyższego clearRoots została usunięta. Nie jest już potrzebne. - Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
- Funkcja Composer.collectKeySourceInformation została usunięta. Nie jest już potrzebne.
- Metody isJoinedKey, joinedKeyLeft i joinedKeyRight zostały usunięte. Nie są już potrzebne.
- Różne interfejsy API najwyższego poziomu zostały przeniesione i zreorganizowane w różnych plikach. Ze względu na semantykę klasy plików w Kotlinie spowoduje to utratę zgodności binarnej, ale nie źródłowej, więc nie powinno stanowić problemu dla większości użytkowników.
- (I99b7d, b/177245490)
Funkcja Modifier.scrollable została zmieniona. Teraz zamiast klasy ScrollableController używa interfejsu Scrollable (I4f5a5, b/174485541, b/175294473)
Funkcja Modifier.draggable przyjmuje teraz typ DraggableState zamiast prostej funkcji lambda. Możesz utworzyć stan za pomocą funkcji
rememberDraggableState { delta -> }
, aby uzyskać takie samo zachowanie jak wcześniej (Ica70f, b/175294473)ZoomableController.smoothScaleBy i ZoomableController.stopAnimation są teraz funkcjami zawieszania. (I7f970, b/177457083)
Usunięto niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932)
Wprowadziliśmy następujące zmiany w Material API:
- Dodano parametr contentPadding do paska górnego i dolnego, aby umożliwić dostosowanie domyślnego wypełnienia.
- Zmieniliśmy kolejność parametrów w BackdropScaffold, aby były zgodne z wytycznymi dotyczącymi interfejsu API, zgodnie z którymi wymagane parametry są umieszczane przed opcjonalnymi.
- Parametr
icon
w BottomNavigationItem został przeniesiony za parametryselected
ionClick
. - Zmieniono nazwę parametru
alwaysShowLabels
w BottomNavigationItem naalwaysShowLabel
. - Parametry
bodyContent
w kilku komponentach zostały przemianowane nacontent
. - Zmieniono kolejność parametrów w plikach
ButtonDefaults.buttonColors()
. Pamiętaj, że typ parametrów się nie zmienił, więc nie spowoduje to błędu w kodzie. Upewnij się, że używasz parametrów nazwanych lub zaktualizujesz ręcznie kolejność parametrów. W przeciwnym razie kod nie będzie działać tak samo jak wcześniej. - Do elementu
darkColors()
dodano parametrsecondaryVariant
. Zwykle jest to ten sam kolor cosecondary
w ciemnym motywie, ale dodanie go zapewnia spójność i umożliwia dalsze dostosowywanie. - Usunęliśmy z publicznego interfejsu API funkcje ElevationDefaults i animateElevation(), ponieważ nie były one powszechnie używane ani przydatne.
- Zmieniono nazwę kolumny
onValueChangeEnd
w tabeliSlider
naonValueChangeFinished
i nadano jej atrybuty null. - Zmieniono nazwę parametru
text
w sekcjiSnackbar
nacontent
, aby zachować spójność. - Do parametru
DropdownMenuItem
dodano parametrcontentPadding
, aby umożliwić dostosowywanie domyślnego wypełnienia, oraz ustawiono parametrcontent
jako rozszerzenie parametruRowScope
. - Nazwa
ModalDrawerLayout
została zmieniona naModalDrawer
. - Nazwa
BottomDrawerLayout
została zmieniona naBottomDrawer
. - (I1cc66)
Pole tekstowe podstawowe obsługuje teraz pędzel zamiast koloru w celu lepszego dostosowania (I83a36)
imageResource i vectorResource są teraz funkcjami rozszerzenia odpowiednio dla ImageBitmap i ImageVector. Funkcje load{Image,Vector,Font}Resource zostały usunięte. (I89130)
Zmieniono funkcję Indication#createIndication() na Indication#rememberUpdatedIndication(InteractionState) i usunięto parametr InteractionState z funkcji IndicationInstance#drawIndication(). Obiekt IndicationInstance powinien odpowiadać tylko za rysowanie efektów wizualnych, a nie uruchamianie animacji ani zapisywanie stanu w odpowiedzi na zmiany stanu InteractionState. Te animacje i zapisywanie stanu powinny odbywać się w ramach
rememberUpdatedIndication()
. Zmieniono też parametrindication
w plikuModifier.indication
, aby był wymagany. (Ic1764, b/152525426)
Poprawki błędów
- Dodano nowe lokalne API kompozycyjne LocalSoftwareKeyboardController, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I658b6, b/168778053)
Wersja 1.0.0-alpha12
10 lutego 2021 r.
androidx.compose.material:material-*:1.0.0-alpha12
został zwolniony. Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Funkcja Modifier.pointerInput wymaga teraz kluczy zapamiętania, aby wskazywać, kiedy coroutine wykrywania danych wejściowych wskaźnika powinna zostać ponownie uruchomiona w przypadku nowych zależności. (I849cd)
- BottomDrawerLayout i ListItem zostały oznaczone jako @ExperimentalMaterialApi (Id766e).
- Dodano typ PaddingValues.Absolute, który można używać w interfejsach API obsługujących typ PaddingValues. (Ia5f30)
- Metoda onImeActionPerformed została wycofana. Zamiast niej używaj metody KeyboardActions (If0bbd, b/179071523).
- Aby lepiej dopasować konwencje nazewnictwa do bibliotek ImageBitmap i ImageVector, zmieniliśmy nazwę klasy ImagePainter na BitmapPainter, a klasy VectorPainter – na VectorPainter. (Iba381, b/174565889)
- Animatable.snapTo i Animatable.stop są teraz funkcjami zawieszania (If4288)
- ComponentActivity.setContent zostało przeniesione do androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
- Z kilku klas, w których były rzadko używane, usunięto metody destrukturyzacji i copy(). (I26702, b/178659281)
- Utworzenie funkcji halfExpand() i expand() w ModalBottomSheetState (Ic914e)
- Zmieniono Indication#createInstance na @Composable oraz zmodyfikowano LocalIndication tak, aby zawierała obiekt Indication, a nie () – Indication. (I5eeea, b/157150564)
- AlertDialog i DropdownMenu są teraz dostępne tylko na Androidzie. Dodano parametr PopupProperties do DropdownMenu, aby umożliwić dalszą konfigurację wyskakującego okienka. (I9c443)
- Metoda loadFontResource została wycofana. Zamiast nich użyj fontResource. Metody imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj painterResource. (I6b809)
- Usunięto parametry
toggle
itoggleModifier
z funkcji DropdownMenu oraz zmieniono nazwy parametrówdropdownModifier
,dropdownOffset
idropdownContent
namodifier
,offset
icontent
. Element DropdownMenu działa teraz tak samo jak elementPopup
, w którym do określania pozycji menu używany jest układ nadrzędnego. W większości przypadków możesz przenieść elementtoggle
, aby był elementem siostrzanym elementuDropdownMenu
, i obejmuje je elementBox
. Więcej informacji o używaniu tego interfejsu API znajdziesz w aktualizowanym przykładzie w dokumentacji. (I884fb) - Funkcja toIntPx() została przemianowana na roundToPx(). (I9b7e4, b/173502290)
- Nazwa interfejsu API IntBounds została zmieniona na IntRect, a sam interfejs API został ulepszony. (I1f6ff)
- Dodano semantyczne działania rozwijania i zwijania. Dodano expand i halfExpand w ModalBottomSheetState (Ib5064)
- Metoda Modifier.dragGestureFilter została wycofana. Zamiast tego użyj pola
Modifier.pointerInput { detectDragGestures (...)}
. Możesz też użyć Modifier.draggable do przeciągania po jednej osi (I0ba93, b/175294473). - Zmieniliśmy nazwę sekcji Ambients, aby pasowała do nazwy Ambient -> CompositionLocal. Elementy tła miały kiedyś nazwę „AmbientFoo”, a teraz mają nazwę „LocalFoo”. (I2d55d)
- Zaznaczenie zostało przeniesione do modelu podstawowego. (I7892b)
- Podobnie jak w przypadku usunięcia kompozytowego komponentu
state { 0 }
i promocji komponenturemember { mutableStateOf(0) }
, usuniemy kompozytowy komponentsavedInstanceState { 0 }
. Zamiast tego użyj funkcjirememberSaveable { mutableStateOf(0) }
, która automatycznie zapisuje i przywraca stan, jeśli typ użyty w MutableState może być przechowywany w pakiecie. Jeśli wcześniej przekazywałeś niestandardowy obiekt zapisywania, teraz musisz użyć nowej przeciążonej funkcji rememberSaveable, która ma parametrstateSaver
. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczyć nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05).
Annotatorka @ComposableContract została wycofana na rzecz 3 bardziej szczegółowych adnotacji.
@ComposableContract(restartable = false)
stał(a) się@NonRestartableComposable
@ComposableContract(readonly = true)
stał(a) się@ReadOnlyComposable
@ComposableContract(preventCapture = true)
stał(a) się@DisallowComposableCalls
@ComposableContract(tracked = true)
został(a) usunięty(a).- (I60a9d)
Narzędzia
emptyContent()
i(@Composable () -> Unit).orEmpty()
zostały wycofane, ponieważ nie mają już żadnego pozytywnego wpływu na wydajność ani wartości (I0484d)Metoda rememberSavedInstanceState() została przemianowana na rememberSaveable() i przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)
Saver, listSaver(), mapSaver(), autoSaver zostały przeniesione z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6)
Parametry RounderCornerShape, CutCornerShape i CornerBasedShape zostały przemianowane z left/right (lewo/prawo) na start/end (początek/koniec), aby umożliwić automatyczne lustrzane odwzorowanie kształtu w kierunku RTL. Parametry AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone w przypadkach, gdy automatyczne lustrzane odbicie nie jest pożądane. (I61040, b/152756983)
Zmiana parametrów
text
iicon
komponentu Tab oraz parametrulabel
komponentu BottomNavigationItem tak, aby można było je pominąć. Ma to na celu lepsze odzwierciedlenie zachowania komponentu, gdy te parametry są podawane lub nie, ponieważ wpływa to na rozmiar i układ komponentu. Jeśli obecnie przekazujesz wartośćemptyContent()
, aby wskazać brak tekstu, ikony lub etykiety, użyj zamiast tego wartościnull
. (I57ed4)Zmieniono nazwę parametru contentColorFor na backgroundColor (I5bb67).
Wycofano TabDefaults i zastąpiono je TabRowDefaults. (I0f189)
Wprowadziliśmy interfejs API ColorMatrix, który służy do modyfikowania wartości RGB treści źródłowych. Przekształciliśmy interfejs API ColorFilter w interfejs i dopasowaliśmy go do implementacji PathEffect. (Ica1e8)
Właściwość AnimatedValue/Float została wycofana. Zamiast tego użyj interfejsu Animatable. (I71345, b/177457083)
Dodano interfejs SemanticsProperties.PaneTitle API. (I20d5a)
Do elementów Tab i BottomNavigationItem dodaliśmy parametry enabled, aby uniemożliwić ich klikanie. Zmieniono BottomNavigationItem na RowScope.BottomNavigationItem, aby lepiej odzwierciedlić wymagania dotyczące układu w interfejsie API. (Id683d)
Filtry tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)
Dodaj parametr layoutDirection do metody createOutline obiektu Shape. Umożliwia to tworzenie kształtów uwzględniających kierunek układu. (I57c20, b/152756983)
Użytkownik
Recomposer.current()
został usunięty. [Abstract]ComposeView jest teraz domyślnie ustawiony na leniwie tworzone, ograniczone do okna rekompilatory, które są obsługiwane przez ViewTreeLifecycleOwner dla okna. Rekompozycja i ticki animacji oparte na metodzie FrameNano są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (I38e11)
Poprawki błędów
- Ikona będzie teraz skalowana, aby dopasować ją do rozmiaru, z uwzględnieniem modyfikatorów rozmiaru. Na przykład
Icon(.., modifier = Modifier.size(50.dp)
będzie teraz rysować w polu 50 x 50 dp. (Ib2ba9, b/178796190)
Wersja 1.0.0-alpha11
28 stycznia 2021 roku
androidx.compose.material:material-*:1.0.0-alpha11
został zwolniony. Wersja 1.0.0-alpha11 zawiera te commity.
Zmiany w interfejsie API
- Promowanie niektórych interfejsów Material API jako nieużywanych (I5d20e)
@Experimental
- Do obrazu i ikony dodano parametr opisu treści. Służy do przekazywania opisu usług ułatwień dostępu (I2ac4c).
- Zmiana interfejsów parametrów stanu Material, aby zawierały funkcje @Composable zwracające
State<T>
. DodajeAnimatable.asState()
, aby ułatwić konwertowanie obiektu Animatable na stan. Zmienia też animateElevation na zawieszone rozszerzenie w Animatable. (If613c) - Obiekty Snackbar, SnackbarHost i SnackbarHostState nie są już
@ExperimentalMaterialAPI
(Id1fb5) - Zmiana typów danych Typography, Shapes i TabPosition na niebędące już klasami danych. Dodaje funkcję kopiowania czcionek i kształtów, aby zastąpić wygenerowane. (I40037)
- Usunięto niektóre wycofane wcześniej interfejsy API Material (Ifaa25)
Poprawki błędów
- Interfejsy onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect (If760e).
- Wycofanie przejścia opartego na TransitionDefinition (I0ac57)
- Stan początkowy w updateTransition jest teraz obsługiwany (Ifd51d)
- Element WithConstraints został przerobiony na BoxWithConstraints i przeniesiony do pakietu foundation.layout. (I9420b, b/173387208)
Wycofaj nie zawieszające scrollBy i usuń nie zawieszające scrollTo
Zalecamy teraz używanie funkcji zawieszania, aby kontrolować przewijanie i czekać na jego zakończenie. W ramach tego przejścia wycofujemy lub usuwamy wersje tych funkcji, które nie zostały zawieszone. (Ie9ced)
Wycofanie funkcji smoothScrollBy, która nie zawiesza animacji. Zalecamy teraz używanie funkcji zawieszania, aby kontrolować przewijanie i czekać na jego zakończenie. W ramach tego przejścia wycofujemy wersje tych funkcji, które nie zostały zawieszone. (I12880)
Wprowadziliśmy funkcję
ComposeContentTestRule
, która rozszerza funkcjęComposeTestRule
i definiuje funkcjęsetContent
, która została usunięta z funkcjiComposeTestRule
. Dodano metodę fabrycznącreateEmptyComposeRule()
, która zwracaComposeTestRule
i nie uruchamia Activity. Użyj tego, gdy chcesz uruchomić aktywność podczas testu, np. za pomocąActivityScenario.launch
(I9d782, b/174472899)Efekt falowania używany w przyciskach Button i FloatingActionButton nie może już być dostosowywany przez podanie nowego wskazania za pomocą elementu AmbientIndication. Nie było to nigdy zamierzone jako sposób dostosowywania tych komponentów, a obecnie te komponenty są spójne z innymi komponentami Material Design. Aby dostosować efekty falowania w aplikacji, zobacz tematy falowania. (I546c5)
animateAsState jest teraz animateFooAsState, gdzie Foo to typ zmiennej, której dotyczy animacja, np. Float, Dp, Offset itp. (Ie7e25)
Pole tekstowe podstawowe otrzymało nowy parametr o nazwie
decorationBox
. Umożliwia dodawanie elementów dekoracyjnych, takich jak ikony, elementy zastępcze, etykiety itp., do pola tekstowego i zwiększanie obszaru docelowego tego pola. (I16996)Naprawiono błąd, który uniemożliwiał ustawienie szerokości pola tekstowego w materiale na mniejszą niż 280 dp (I78373)
Parametr canDrag został usunięty z funkcji Modifier.draggable (Ic4bec, b/175294473).
Usuń displaySize, ponieważ nie należy go używać. Zwykle lepiej jest użyć rozmiaru z onRoot() lub co najmniej rozmiaru okna. (I62db4)
Element powierzchni może teraz mieć wiele elementów podrzędnych układu. (I66a92, b/144488459)
Funkcje invalidate i compositionReference() zostały wycofane na rzecz odpowiednio funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)
Zmiana PopupPositionProvider, aby używać współrzędnych względem okna, a nie współrzędnych globalnych. Zmiana nazwy parentGlobalBounds na anchorBounds i windowGlobalBounds na
windowSize: IntSize
(I2994a)Czas trwania i czas działania zostaną zastąpione wartością Długie milisekundy, a ten krok usuwa zależność od wejścia wskaźnika w tych klasach. (Ia33b2, b/175142755, b/177420019)
Usunięto AnimatedFloat.fling, który przyjmuje FlingConfig. Zamiast tego użyj funkcji suspend Animatable.animateDecay. (I4659b, b/177457083)
Teraz można tworzyć elementy klikalne, przełączalne i wybierane poza kompozycją (I0a130, b/172938345, b/175294473).
Zmiana interfejsu wygładzania na interfejs funkcjonalny (Ib14e5)
Komórka/wiersz z możliwością przewijania zostały wycofane. Korzystanie z ScrollableColumn jest mniej wydajne niż z LazyColumn, gdy masz duży skrót treści, ponieważ za pomocą LazyColumn możemy tylko komponować, mierzyć i rysować widoczne elementy. Aby uniemożliwić użytkownikom korzystanie z nieefektywnych metod, zdecydowaliśmy się wycofać klasy ScrollableColumn i ScrollableRow oraz zachęcić do korzystania z klas LazyColumn i LazyRow. Użytkownicy mogą zrezygnować z zachowania typu lazy i używać modyfikatorów bezpośrednio w ten sposób: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Nowa metoda fabryczna
items(count: Int)
dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. Funkcjeitems(items: List)
iitemsIndexed(items: List)
są teraz funkcjami rozszerzenia, więc musisz je ręcznie importować. Nowe przeciążenia rozszerzenia dla tablic:items(items: Array)
iitemsIndexed(Array)
(I803fc, b/175562574)Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).
wycofane metody dotyczące współrzędnych globalnych i wprowadziliśmy nowe metody dotyczące współrzędnych opartych na oknie; (Iee284)
Dodano Modifier.toolingGraphicsLayer, który dodaje modyfikator warstwy graficznej, gdy włączona jest inspekcja. (I315df)
Funkcja FocusRequester.createRefs jest teraz oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)
Zmiana nazwy SemanticsPropertyReceiver.hidden na invisibleToUser i oznaczenie @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. Nazwa stateDescriptionRange została zmieniona na progressBarRangeInfo. AccessibilityScrollState zostało zmienione na ScrollAxisRange. horizontalAccessibilityScrollState zostało zmienione na horizontalScrollAxisRange. verticalAccessibilityScrollState zostało zmienione na verticalScrollAxisRange. (Id3148)
Korzystanie z TestCoroutineDispatcher w testach (I532b6)
Zaktualizowano interfejs API grafiki wektorowej, aby obsługiwał analizowanie zabarwienia zastosowanego do wierzchołka grafiki wektorowej. (Id9d53, b/177210509)
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
androidx.compose.material:material-*:1.0.0-alpha10
został zwolniony. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmodyfikowano funkcję Velocity, aby zawierała elementy składowe i operacje matematyczne. (Ib0447)
- Zmieniono nazwę
@ExperimentalTesting
na@ExperimentalTestApi
, aby zachować spójność z podobnymi adnotacjami interfejsów eksperymentalnych (Ia4502, b/171464963). - Zmieniono nazwę pozycji na DpOffset i usunięto funkcję getDistance() (Ib2dfd).
- Zmieniono nazwę metody Color.useOrElse() na Color.takeOrElse() (Ifdcf5).
- Dodaj opcję przełączania do podstawy Strings.kt (I4a5b7, b/172366489)
- Wycofane zostały kolumny i wiersze przepływu. Zamiast tego użyj układu niestandardowego. (I09027)
- Metody Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj interfejsów Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Przeniesiono nativeClass do modułu ui i uczynił go wewnętrznym. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast tego używać „is MyClass”. (I4f734)
Poprawki błędów
- Dodano obsługę pól tekstowych wyłączonych i tylko do odczytu (I35279, b/171040474, b/166478534)
- Wartość
animate()
została zastąpiona wartościąanimateAsState()
, która zwraca wartośćState<T>
zamiastT
. Dzięki temu można uzyskać lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczywana jest wartość State. (Ib179e) - Dodaj interfejs API roli semantycznej i dodaj parametr Role do klikalnego, możliwego do wybrania i przełączalnego SemanticsModifier. Zmieniono Modifier.progressSemantics, aby można było go używać również w Slider. (I216cd)
Wersja 1.0.0-alpha09
16 grudnia 2020 roku
androidx.compose.material:material-*:1.0.0-alpha09
został zwolniony. Wersja 1.0.0-alpha09 zawiera te commity.
Zmiany w interfejsie API
- dodano interfejs API do ręcznego uruchamiania animacji stabilizowania i przeciągania w przypadku modyfikatora Swipeable (Iaa17a, b/162408885);
- Przemianowane obiekty *Constants, takie jak ButtonConstants, mają teraz nazwy zakończone na Defaults, np. ButtonDefaults. Usunie też zbędne prefiksy
default
z właściwości tych nowych obiektów. (Ibb915, b/159982740) Compose obsługuje metody pobierające właściwości, które mogą wywoływać kompozytowe wywołania. Nie zamierzamy rezygnować z tej funkcji, ale zmienia się składnia deklarowania funkcji pobierającej właściwości jako @Composable.
Składnia, która została wycofana, polegała na dodawaniu adnotacji do usługi:
@Composable val someProperty: Int get() = ...
Prawidłowa składnia to dodanie adnotacji do metody gettera właściwości:
val someProperty: Int @Composable get() = ...
Obie składnie będą działać przez jakiś czas, ale wcześniejsza wycofana składnia w końcu spowoduje błąd kompilacji. (Id9197)
Dodano bibliotekę
androidx.compose.material:material-ripple
z interfejsami API rysunku fal, aby umożliwić tworzenie komponentów interaktywnych bez konieczności korzystania z reszty biblioteki Material. Interfejs rememberRippleIndication został wycofany i zastąpiony interfejsem rememberRipple. (Ibdf11)
Poprawki błędów
- Lambda w modyfikatorach przesunięcia zwraca teraz IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
Funkcja ShaderBrush została przerobiona, aby tworzyć instancję shadera w trybie łagodnym, gdy dostępne są informacje o wymiarach środowiska rysunku. Jest to przydatne do definiowania gradientów, które zajmują pełne granice rysowania kompozytowego w czasie tworzenia kompozycji, bez konieczności implementowania niestandardowych implementacji modyfikatora rysowania.
wycofane interfejsy API konstruktora funkcji gradienta na rzecz metod fabrycznych obiektu Gradient; (I511fc, b/173066799)
Metoda Modifier.focusObserver została wycofana. Zamiast tego użyj metody Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).
Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego użyj LazyColumn i LazyRow (I5b48c)
Przeniesienie Dp.VectorConverter, Position.VectorConverter itp. do animation-core i wycofanie starych VectorConveters (If0c4b).
Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga wyrażenia zgody (I0a1ec)
Dodanie deklaracji destrukturyzacji w celu utworzenia instancji FocusRequester (I35d84, b/174817008)
accessibilityLabel zmieniono na contentDescription. accessibilityValue zmieniono na stateDescription. (I250f2)
Nowa funkcja infiniteRepeatable do tworzenia specyfikacji nieskończonej powtarzalności (I668e5)
Zachowanie pozycjonowania menu rozwijanych zostało nieznacznie zmienione zgodnie ze specyfikacją Material (I34c72, b/168594123).
Dodano obsługę stanu InteractionState dla pól tekstowych. (I61d91)
Dodano funkcję Modifier.clearAndSetSemantics, która służy do wyczyszczania semantyki potomków i ustawiania nowej semantyki. (I277ca)
Przeniesienie ContentDrawScope do modułu ui-graphics, aby był on razem z DrawScope. (Iee043, b/173832789)
Wersja 1.0.0-alpha08
2 grudnia 2020 r.
Funkcje androidx.compose.material:material:1.0.0-alpha08
, androidx.compose.material:material-icons-core:1.0.0-alpha08
i androidx.compose.material:material-icons-extended:1.0.0-alpha08
są dostępne. Wersja 1.0.0-alpha08 zawiera te commity.
Zmiany w interfejsie API
- Motyw MaterialTheme teraz ustawia prawidłowe kolory uchwytów i tła zaznaczenia. Aplikacje niebędące w stylu Material mogą ręcznie używać kolorów AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
- Dodano sprawdzanie lint pod kątem nazw i pozycji parametrów funkcji kompozytowych lambda, aby sprawdzić zgodność z wytycznymi Compose.
Zgodnie z instrukcjami i sprawdzaniem błędów niektóre interfejsy API, które używają nazwy
children
jako nazwy funkcji lambda na końcu, zostały przeniesione docontent
. (Iec48e) - Zmieniono nazwę klasy VectorAsset na ImageVector. Zgodnie z wytycznymi Rady API przeniesiono klasę VectorAsset do klasy wewnętrznej ImageVector i zmieniono jej nazwę na Builder. Dodano alias typu VectorAssetBuilder, aby umożliwić linkowanie do ImageVector.Builder w celu zapewnienia zgodności. (Icfdc8)
- Zmieniono nazwę klasy ImageAsset i powiązanych z nią metod na ImageBitmap. (Ia2d99)
- Przeniesienie właściwości semantycznych z warstwy podstawowej do warstwy interfejsu użytkownika (I6f05c)
- Interfejs
fun RippleIndication()
został wycofany i zastąpiony interfejsemrememberRippleIndication()
, aby zachować spójność z innymi interfejsami API. (Id8e2c) - Dodano parametr singeLine do pól BasicTextField, TextField i OutlinedTextField. Ustaw ten parametr na „PRAWDA”, aby pole tekstowe miało postać pojedynczej linii, którą można przewijać poziomo. (I57004, b/168187755)
Poprawki błędów
- Dodaj działanie semantyczne Odrzuć (I2b706)
- Przeniesienie interfejsów API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, aby uwzględnić aliasy typów i metody pomocnicze, które ułatwiają migrację z przestarzałych interfejsów API do obecnych. (Id6044, b/173834241)
- Zmieniono nazwę Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowano też powiązane klasy do GraphicsLayer zgodnie z opiniami na temat interfejsu API. (I0bd29, b/173834241)
- Element
<T>
został usunięty z deklaracji SubcomposeLayout. Możesz go używać bez określania typu. (Ib60c8) - Dodano interfejsy API Modifier.scale/rotate do ułatwienia korzystania z drawLayer.
- Zmieniono nazwę
Modifier.drawOpacity
naModifier.alpha
- Nazwa
Modifier.drawShadow
została zmieniona naModifier.shadow
(I264ca, b/173208140)
- Zmieniono nazwę
- Zmieniliśmy nazwę parametru alignment w sekcji Box na contentAlignment. (I2c957)
- Modyfikatory offsetPx zostały przemianowane na offset. Teraz zamiast stanu przyjmują one parametry lambda. (Ic3021, b/173594846)
- Wprowadziliśmy interfejsy SweepGradientShader i SweepGradientBrush. (Ia22c1)
- Dodano sprawdzanie lint dla parametrów modyfikatora w funkcjach kompozytowych. Ten test sprawdza, czy nazwa, typ zwracanej wartości, wartość domyślna i kolejność parametrów są zgodne ze wskazówkami dotyczącymi tworzenia aplikacji. (If493b)
- Zaktualizowany interfejs TextFieldValue API
- ustawienie TextFieldValue.composition tylko do odczytu
- usunięto wyjątek wywołany z powodu nieprawidłowego zakresu wyboru (I4a675, b/172239032)
- Dodano nową przeciążoną metodę
Modifier.drawLayer()
. Ta funkcja przyjmuje blok lambda w ramach nowego zakresu GraphicsLayer, w którym definiujesz parametry warstwy w sposób umożliwiający pominięcie ponownego składania i układania podczas zmiany stanu. Modyfikator warstwy rysunku jest teraz wewnętrzny w ramach przygotowań do przeniesienia jego logiki do metodyplaceable.placeWithLayer()
w klasie Modyfikator układu (I15e9f, b/173030831). - wycofane ambienty o nazwach zawierających sufiks
Ambient
i zastąpione nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi ambientów i interfejsu Compose API; (I33440) - Dodano sprawdzanie lint, aby sprawdzić, czy fabryki modyfikatorów używają
androidx.compose.ui.composed {}
wewnętrznie, a nie są oznaczone jako@Composable
. (I3c4bc) - Argument semantyczny mergeAllDescendants został przemianowany na mergeDescendants. (Ib6250)
- Kontrola czasu w testach (TestAnimationClock i jego użycia) jest teraz funkcją eksperymentalną (I6ef86, b/171378521).
- Usuwanie starego modułu testu UI i jego zastępników (I3a7cb)
- Aby zachować spójność z innymi jednostkami, nazwa TextUnit.Inherit została zmieniona na TextUnit.Unspecified. (Ifce19)
- Interfejs wyrównania został zaktualizowany i wprowadzony. (I46a07, b/172311734)
- W przypadku danych rodzica identyfikatora układu parametr id został przemianowany na layoutId. Nazwa Measurable.id została zmieniona na Measurable.layoutId. (Iadbcb, b/172449643)
Wersja 1.0.0-alpha07
11 listopada 2020 roku
Funkcje androidx.compose.material:material:1.0.0-alpha07
, androidx.compose.material:material-icons-core:1.0.0-alpha07
i androidx.compose.material:material-icons-extended:1.0.0-alpha07
są dostępne. Wersja 1.0.0-alpha07 zawiera te commity.
Zmiany w interfejsie API
- Atrybut emphasis został wycofany i zastąpiony atrybutem AmbientContentAlpha. Wartość AmbientContentAlpha to prostsza abstrakcja, która reprezentuje kanał alfa preferowanej treści dla części hierarchii, podobnie jak wartość AmbientContentColor reprezentuje kolor preferowanej treści. Elementy tekstowe i ikony używają teraz domyślnie bieżącej wartości z AmbientContentAlpha. Aby uzyskać ten sam efekt w swoich komponentach, możesz ręcznie wykonać tę czynność:
color.copy(alpha = AmbientContentAlpha.current)
. Zamiast używać funkcji ProvideEmphasis, możesz bezpośrednio podać wartość za pomocą funkcji AmbientContentAlpha i użyć nowych domyślnych poziomów w funkcji ContentAlpha, aby zastąpić stare wartości EmphasisLevels. (Idf03e, b/159017896) - Dodaje androidx.compose.material.AmbientContentColor, aby zastąpić androidx.compose.foundation.AmbientContentColor (I84f7b, b/172067770).
- Dodaje androidx.compose.material.Text, aby zastąpić androidx.compose.foundation.Text jako komponent tekstowy wysokiego poziomu z możliwością zmiany motywu. W przypadku podstawowego komponentu tekstowego, który nie pobiera koloru ani stylu tekstu z motywu, użyj elementu BasicText. (Ie6ae0)
- Dodano atrybut maxLines do pól tekstowych (Ib2a5b).
- Zaktualizuj pola tekstowe, aby akceptowały KeyboardOptions (Ida7f3)
- Powierzchnia używa teraz bezwzględnej (całkowitej) wysokości podczas obliczania nakładek wysokości, więc powierzchnia umieszczona w innej powierzchni będzie używać łącznej wysokości do narysowania nakładki. (I7bd2b, b/171031040)
Poprawki błędów
captureToBitmap
przeniesiono do:captureToImage
. (I86385)- Podstawowe atrybuty AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast tego użyj nowych wersji dostępnych w bibliotece Material. W przypadku aplikacji, które nie są zgodne z Material Design, należy utworzyć własne motywy tematyczne, które można wykorzystać w komponentach. (I74acc, b/172067770)
- Komponent foundation.Text został wycofany i zastąpiony komponentem material.Text. Podstawowy interfejs API tekstu, który nie używa wartości z motywu, znajdziesz w bibliotece androidx.compose.foundation.BasicText. (If64cb)
- Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
- Przeniesienie KeyboardType i ImeAction do KeyboardOptions (I910ce)
- Komponent BaseTextField został wycofany. Zamiast tego użyj pola tekstowego podstawowego. (I896eb)
- Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Można teraz używać elementu SubcomposeLayout bez dodawania @OptIn (I708ad)
- FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
- Zaktualizowano interfejs Icon API, aby przyjmował wartość Color.Unspecified jako możliwy kolor zabarwienia, który będzie rysował podany zasób lub malowanie bez filtra kolorów. Wcześniej próby zignorowania zabarwiania za pomocą metody Color.Unspecified powodowały zabarwienie przezroczystym kolorem, co kończyło się tym, że nic nie było renderowane. (I049e2, b/171624632)
- Nazwa relativePaddingFrom została zmieniona na paddingFrom. Dodano modyfikator paddingFromBaseline, który ułatwia określanie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
- Zadanie uruchamiane zostało przemianowane na efekt uruchamiania w celu zachowania spójności z interfejsami SideEffect i DisposableEffect. Aby zachęcić do stosowania sprawdzonych metod, nie zezwalamy na używanie LaunchedEffect bez parametrów podmiotu. (Ifd3d4)
- MeasureResult został przeniesiony z MeasureScope. (Ibf96d, b/171184002)
- Kilka symboli związanych z rozkładem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
Wersja 1.0.0-alpha06
28 października 2020 r.
Funkcje androidx.compose.material:material:1.0.0-alpha06
, androidx.compose.material:material-icons-core:1.0.0-alpha06
i androidx.compose.material:material-icons-extended:1.0.0-alpha06
są dostępne. Wersja 1.0.0-alpha06 zawiera te commity.
Zmiany w interfejsie API
- Interfejs androidx.compose.foundation.Icon został przeniesiony do androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material, możesz użyć komponentu Image / Modifier.paint() z Painterem. (I9f622)
- Dodaje FloatingActionButtonElevation, aby reprezentować wysokość używaną przez przyciski FAB w różnych stanach. Domyślna implementacja (I2d4f5) znajduje się w metodzie FloatingActionButtonConstants.defaultElevation().
- Dodaje interfejs SwitchColors, aby reprezentować kolory używane przez przełącznik w różnych stanach. Aby dostosować te kolory, zobacz SwitchConstants.defaultColors. (I93805)
- Dodaje interfejsy ButtonElevation i ButtonColors, aby reprezentować wyniesienie i kolory używane przez przyciski w różnych stanach. Aby dostosować te parametry, zapoznaj się z domyślnymi funkcjami w ButtonConstants. (Ic5b7b)
- Dodaje interfejs RadioButtonColors, który reprezentuje kolory używane przez RadioButton w różnych stanach. Aby dostosować kolory używane w różnych stanach, użyj metody RadioButtonConstants.defaultColors(). (I74130)
- Dodaje interfejs CheckboxColors, aby reprezentować kolory używane przez pole wyboru w różnych stanach. Aby dostosować kolory używane w różnych stanach, zobacz funkcję CheckboxConstants.defaultColors(). (I7dbdb)
Poprawki błędów
- Komponenty Material Design nie ustawiają już z-index jako wysokości. Oznacza to, że w ramach tego samego elementu nadrzędnego element podrzędny z większym cieniem nie będzie automatycznie nakładany na element podrzędny z mniejszym cieniem. Jeśli nadal potrzebujesz takiego zachowania, ustaw ręcznie funkcję Modifier.zIndex() w odpowiednich miejscach (I70417, b/170623932).
- Wycofaj VectorPainter na rzecz rememberVectorPainter, aby lepiej wskazać, że interfejs API do komponowania wewnętrznie korzysta z funkcji „remember”, aby przechowywać dane w ramach kompozycji. (Ifda43)
- Włącz przejścia w komponencie ComposeTestRule. Usuń z niego opcję włączania migającego kursora. (If0de3)
- Dodano opcję klawiatury jednowierszowej do CoreTextField (I72e6d).
- Zmieniliśmy nazwę interfejsu API Radius na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w komponowaniu. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie narożników są ograniczane do zera. (I130c7, b/168762961)
- Zmieniono zakresy DrawScope i ContentDrawScope na interfejsy zamiast abstrakcyjnych klas.
- Utworzono implementację CanvasDrawScope w DrawScope
- Przekształcono implementacje DrawScope, aby zamiast nich używać CanvasScope.
- Utworzono DrawContext do owijania zależności dla DrawScope.
- Usunięto wycofane metody w DrawScope (I56f5e)
- Funkcja Box została przekształcona w funkcję wbudowaną. (Ibce0c, b/155056091)
Wersja 1.0.0-alpha05
14 października 2020 r.
Funkcje androidx.compose.material:material:1.0.0-alpha05
, androidx.compose.material:material-icons-core:1.0.0-alpha05
i androidx.compose.material:material-icons-extended:1.0.0-alpha05
są dostępne. Wersja 1.0.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Okna popup i dialogi dziedziczą teraz flagę FLAG_SECURE od okna nadrzędnego. Dodano też opcję konfiguracji tego parametru w sposób jawny (I64966, b/143778148, b/143778149).
- Teraz domyślnie stany modyfikatora Swipeable mają próg 56 dp (Iab825, b/168610267)
- wszystkie stany szablonu oznaczone jako @Stable. drawerGesturesEnabled w ScaffoldState przeniesione do samego szablonu. (I36645, b/168297016)
- Usuwa typ nullable z parametrów lambda Scaffold. Możesz użyć emptyContent(), aby wskazać brak treści dla danego parametru. (I2b318, b/157633857, b/158551084)
Wycofane zostaną interfejsy API contentColor() i currentTextStyle(), a zamiast nich zostaną wprowadzone odpowiednio ambienty AmbientContentColor i AmbientTextStyle. Do bieżącej wartości możesz uzyskać dostęp, używając wartości
.current
w przypadku właściwości ambient, tak jak w przypadku innych wartości ambient. Ta zmiana została wprowadzona w celu zapewnienia spójności i uniknięcia konieczności korzystania z różnych sposobów na osiągnięcie tego samego celu. Dodatkowo zmienia nazwy niektórych właściwości środowiska, aby lepiej opisywać ich przeznaczenie. Nowe nazwy:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Dodaje AmbientElevationOverlay, co umożliwia dostosowanie lub wyłączenie domyślnego nakładania wysokości na powierzchnie w ciemnym motywie. (I5b74d)
Poprawki błędów
- W ramach standaryzacji wartości sygnalizacyjnych klas wbudowanych zmień nazwę Color.Unset na Color.Unspecified, aby zachować spójność z innymi klasami wbudowanymi (I97611, b/169797763).
- Wprowadzono TextOverflow.None. Gdy wartość overflow jest równa None, Text nie będzie już obsługiwać przepełnienia i będzie przekazywać rzeczywisty rozmiar do LayoutNode. (I175c9, b/158830170)
- Zmiana nazwy metody launchInComposition na LaunchedTask, aby była zgodna z wytycznymi dotyczącymi interfejsu API Compose (I99a8e)
- Zmiana nazwy metody OnPositionedModifier na OnGloballyPositionedModifier oraz metody onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
Wersja 1.0.0-alpha04
1 października 2020 roku
Funkcje androidx.compose.material:material:1.0.0-alpha04
, androidx.compose.material:material-icons-core:1.0.0-alpha04
i androidx.compose.material:material-icons-extended:1.0.0-alpha04
są dostępne. Wersja 1.0.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Wyświetla parametry stanu InteractionState w komponentach Material Design, które mają stan, aby umożliwić podnoszenie stanu oraz odczytywanie i sterowanie nim. (Iaca5f, b/168025711, b/167164434)
- Zmienia parametry
*color
w przypadku RadioButton i TriStateCheckbox, aby umożliwić pełne dostosowanie kolorów używanych w każdym stanie, a także zmianę sposobu ich animacji między stanami (jeśli to konieczne). Więcej informacji znajdziesz w funkcjach kolorów animateDefault* w interfejsach CheckboxConstants i RadioButtonConstants. (I1c532) - Zmieniliśmy nazwę metody rememberBackdropState na rememberBackdropScaffoldState i dodaliśmy dodatkowy parametr dla zegara animacji. Zmieniono nazwę parametru backdropScaffoldState w klasie BackdropScaffold na scaffoldState. Nazwa BackdropConstants została zmieniona na BackdropScaffoldConstants. (Ib644d)
- Dodano eksperymentalny komponent BottomSheetScaffold. (Ie02f0, b/148996320)
- Dodano eksperymentalny komponent ModalBottomSheetLayout. (Ic209e, b/148996320)
- Zmień nazwę ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation na defaultElevation i zamiast wartości AnimatedValue zwraca teraz wartość Dp. (I5f3ed)
Poprawki błędów
- Zaktualizowano wiele interfejsów API do obsługi grafiki.
- Zaktualizowane interfejsy API do skalowania i obrotu, aby używały pojedynczego parametru Offset zamiast oddzielnych parametrów typu float dla współrzędnych x/y w DrawScope i DrawTransform
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowano dokumentację Radius, aby zawierała informacje o elipsydalnych obiektach o kształcie eliptycznym.
- Dodano dokumentację, aby wskazać, że publicznego konstruktora klasy Inline Radius nie należy wywoływać bezpośrednio, ale zamiast tego instancje obiektów Radius należy tworzyć za pomocą konstruktorów funkcji.
- Usunięto interfejsy API RoundRect do zapytań topRight, bottomRight, bottomCenter itp.
- Wycofanie funkcji Rect.shift na rzecz funkcji Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect.
- Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium.
- Zmieniono nazwę RoundRect.longestSide na RoundRect.maxDimension.
- Zmieniono nazwę RoundRect.shortestSide na RoundRect.minDimension.
- Zmiana funkcji RoundRect.center na właściwość
- Zaktualizowano konstruktor RoundRect, aby używał właściwości Radius zamiast poszczególnych parametrów wartości promienia x/y.
- Usunięto interfejsy API dotyczące rozmiaru, które zakładały, że jest to prostokąt z początkiem w punkcie 0,0
- Dodano do Radius interfejs API do niszczenia
- Przeniesienie różnych funkcji rozszerzenia RoundRect do właściwości
- (I8f5c7, b/168762961)
- Element foundation.Box został wycofany. Zamiast tego użyj elementu foundation.layout.Box. (Ie5950, b/167680279)
- Grupa została przemianowana na Box. Dotychczasowe pole Box zostanie wycofane na rzecz nowego pola Box w komponencie compose.foundation.layout. Nowa ramka układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Jest to inne zachowanie niż w przypadku poprzedniej ramki, która działała podobnie jak kolumna. (I94893, b/167680279)
- Parametry dekoracji pudełka zostały wycofane. Jeśli chcesz użyć dekoracji lub wypełnienia w pudełku, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Zaktualizowano wiele interfejsów API do obsługi grafiki.
- Zaktualizowano interfejsy API DrawScope o metody przekształceń ograniczonych zakresem, aby wskazać, że przekształcenie jest stosowane tylko w ramach wywołania zwrotnego i usuwane po jego wywołaniu.
- Zaktualizowano dokumentację clipPath, aby odwoływała się do ścieżki zamiast zaokrąglonego prostokąta
- Naprawiono odstępy w dokumentacji parametru clipPath
- Zmieniono nazwę metody DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr size
- Zmieniono nazwy parametrów dx/dy w metodie inset na horizontal i vertical.
- Dodano przeciążenie w przypadku wstawienia, które zapewnia tę samą wartość wstawienia dla wszystkich 4 ograniczeń
- Usunięto dokumentację dotyczącą metody wstawienia, która wskazywała, że wstawienie zostanie zastosowane do wszystkich 4 stron.
- Zaktualizowano dokumentację klasy Rect
- Zaktualizowano komentarze dotyczące parametrów Rect, aby pasowały do kdoc style
- Usunięto Rect.join i Rect.expandToInclude
- Utworzono przeciążenie metody Rect.translate(offset) i wycofano przestarzałą metodę Rect.shift.
- (If086a, b/167737376)
- Zablokowaliśmy importowanie statyczne zawartości zakresów układu (np. alignWithSiblings w RowScope). Zamiast tego należy użyć opcji z wyraźnym zakresem:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Wersja 1.0.0-alpha03
16 września 2020 roku
Funkcje androidx.compose.material:material:1.0.0-alpha03
, androidx.compose.material:material-icons-core:1.0.0-alpha03
i androidx.compose.material:material-icons-extended:1.0.0-alpha03
są dostępne. Wersja 1.0.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Zmiana nazwy parametru
onSelect
w modeluBottomNavigationItem
naonClick
(I91925, b/161809324) - Dodaje parametr InteractionState do komponentów BottomNavigationItem i Tab, co umożliwia podnoszenie tego stanu i dostosowywanie sposobu wyświetlania komponentu w różnych stanach. (Ia3e9e, b/168025711)
- Usuwanie parametrów
disabledBackgroundColor
idisabledContentColor
z przycisków. Zamiast tego użyj nowych domyślnych funkcji kolorów w ButtonConstants. Jeśli kolor treści lub kolor tła jest już ustawiony, użyj zamiast tego domyślnych funkcji i dostosuj niektóre lub wszystkie parametry, aby uniknąć nadpisywania koloru w obu stanach (włączonym i wyłączonym). (If9b52) - Kolor tła pola tekstowego nie stosuje już domyślnie przezroczystości alfa. Zamiast tego dowolny kolor podany w parametrze backgroundColor zostanie zastosowany bezpośrednio. (Iecee9, b/167951441)
- Atrybut InnerPadding został przemianowany na PaddingValues. (I195f1, b/167389171)
- Parametry
resistanceFactorAtMin
iresistanceFactorAtMax
wModifier.swipeable
zostały zastąpione pojedynczym parametrem odporności. WSwipeableConstants
dodano nową metodędefaultResistanceConfig
. (I54238) - Dodano animowaną obsługę stateful elevation dla przycisków Button i FloatingActionButton. Teraz animacja wysokości działa w stanie domyślnym i wciśniętym. Aby dostosować wysokość między stanami, użyj wartości
ButtonConstants.defaultAnimatedElevation()
iFloatingActionButtonConstants.defaultAnimatedElevation()
zamiast ustawiania stałej wartości Dp we wszystkich przypadkach. (I37925) - Etykieta stała się opcjonalnym parametrem w TextField i OutlinedTextField (I267f6, b/162234081).
Poprawki błędów
- Funkcje globalnego testowania, takie jak
onNode
lubwaitForIdle
, są teraz wycofane. Przejdź na ich nowe odpowiedniki zdefiniowane w ComposeTestRule (I7f45a). - Wycofano interfejs DpConstraints i interfejsy API, które go używały. (I90cdb, b/167389835)
- Parametry minWidth i maxWidth z widthIn zostały przemianowane na min i max. Podobnie w przypadku preferredWidthIn, heightIn i preferredHeightIn. (I0e5e1, b/167389544)
- Usuń działania semantyczne przewijania do przodu/do tyłu. Dodano kroki w AccessibilityRangeInfo. (Ia47b0)
- W interfejsach API dotyczących układu nazwy metod związanych z grawitacją zostały zmienione na „wyrównaj” lub „wyrównywanie”. (I2421a, b/164077038)
- Dodano metodę onNode i inne metody globalne w komponencie ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
- Urządzenia
createAndroidComposeRule
iAndroidInputDispatcher
zostały przeniesione zandroidx.ui.test.android
doandroidx.ui.test
(Idef08, b/164060572)
Wersja 1.0.0-alpha02
2 września 2020 r.
Funkcje androidx.compose.material:material:1.0.0-alpha02
, androidx.compose.material:material-icons-core:1.0.0-alpha02
i androidx.compose.material:material-icons-extended:1.0.0-alpha02
są dostępne. Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy eksperymentalny komponent BackdropScaffold. (Iad908)
Poprawki błędów
- Matrix4 został zastąpiony przez Matrix. Wszystkie pozostałe części pakietu vectormath zostały usunięte. (Ibd665, b/160140398)
Wersja 1.0.0-alpha01
26 sierpnia 2020 r.
Funkcje androidx.compose.material:material:1.0.0-alpha01
, androidx.compose.material:material-icons-core:1.0.0-alpha01
i androidx.compose.material:material-icons-extended:1.0.0-alpha01
są dostępne. Wersja 1.0.0-alpha01 zawiera te commity.
Znany problem
= Pierwszy znak w materiale TextField
nie może zostać usunięty za pomocą klawisza backspace (b/165956313)
Wersja 0.1.0-dev
Wersja 0.1.0-dev17
19 sierpnia 2020 r.
Funkcje androidx.compose.material:material:0.1.0-dev17
, androidx.compose.material:material-icons-core:0.1.0-dev17
i androidx.compose.material:material-icons-extended:0.1.0-dev17
są dostępne. Wersja 0.1.0-dev17 zawiera te commity.
Zmiany w interfejsie API
- Elementy RadioGroup i RadioGroupItems, które zostały wycofane, zostały usunięte. Zamiast tego użyj wiersza i przycisku radiowego (I381b7, b/163806637).
- Usunięto z TextField wywołania zwrotne onFocusChanged. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
- Metoda Modifier.drawBorder została wycofana. Zamiast tego użyj Modifier.border. Klasa danych Border została zastąpiona przez BorderStroke (I4257d, b/158160576)
- Zmieniono nazwy niektórych właściwości w SwipeableState: swipeTarget -> targetValue, swipeProgress -> progress, swipeDirection -> direction. Dodano funkcję rememberSwipeableState do tworzenia stanów SwipeableState. (I2fc9c, b/163129614, b/163132293)
- Dodano obsługę paska informacji z odpowiednim pozycjonowaniem i kolejkowaniem. Aby uzyskać do niej dostęp, użyj funkcji zawieszania
SnackbarHostState.showSnackbar
. Dodatkowo:- Dodano komponenty SnackbarHost. Zawiera ona snackbary na podstawie stanu i odpowiada za przejścia między nimi.
- Dodano stan SnackbarHostState, aby umożliwić kontrolowanie snackbarów i ich hostów oraz odłączenie ich od stanu ScaffoldState. Możesz też uzyskać dostęp do tego stanu za pomocą
scaffoldState.snackbarHostState
. - Dodano przeciążenie snackbaru, aby umożliwić wspólny interfejs między snackbarHostState a samymi snackbarami. (I79aaa)
- Dodaje parametr enabled do przycisku IconButton i zmienia kolejność parametrów w przycisku IconToggleButton (I0a941, b/161809385, b/161807956).
- Wersja ListItem z interfejsem API opartym na ciągach znaków została usunięta. Zamiast tego użyj wersji slotu. (Ib8f57, b/161804681)
- Usunięto wycofany komponent FilledTextField. Aby uzyskać implementację wypełnionego pola tekstowego w ramach Material Design, użyj komponentu TextField. (I5e889)
- AlertDialog używa teraz FlowRow do przycisków (I00ec1, b/161809319, b/143682374)
- Dodano parametry w modyfikatorze Swipeable, które umożliwiają zmianę oporu podczas przesuwania poza granice. Usunięto parametry [min/max]Value. (I93d98)
- Do elementu LinearProgressIndicator dodano parametr backgroundColor, a z elementu CircularProgressIndicator usunięto wewnętrzne wypełnienie. Dodano nową stałą ProgressIndicatorConstants.DefaultProgressAnimationSpec, która może służyć jako domyślna specyfikacja animacji podczas animacji postępu między wartościami (If38b5, b/161809914, b/161804677).
- Opcjonalny parametr velocityThreshold został dodany do Modifier.swipeable. (I698ba)
- bottomBarSize, fabSize i inne nie są już dostępne w ScaffoldState. Zamiast tego użyj parametru Modifier.onPosition w komponencie, którego rozmiar chcesz poznać. Do Scaffold dodano parametry contentColor i Modifier (Ic6f7b, b/161811485, b/157174382).
- Zmiana nazwy i kolejności niektórych parametrów w karcie w celu zapewnienia spójności z innymi interfejsami API (Ia2d12, b/161807532)
- Dzieli TabRow na TabRow i ScrollableTabRow, usuwając z TabRow właściwość isScrollable. Wyświetla też margines w ScrollableTabRow, co pozwala kontrolować wolną przestrzeń przed i po tabach. (I583e8, b/161809544)
- Obiekt
TabRow
został usunięty i zastąpiony obiektem TabConstants. TabRow.TabPosition został przeniesiony na najwyższy poziom (TabPosition), a element indicatorContainer został przemianowany naindicator
. Szczegółowe informacje o używaniu zaktualizowanego interfejsu API oraz domyślnych wartościach znajdziesz w przykładach i dokumentacji. (I54d45, b/161809544) - Parametr thresholds w funkcji Modifier.swipeable został zmieniony. Teraz przyjmuje parę stanów (typu T) i zwraca wartość progową między nimi w postaci obiektu ThresholdConfig. Do metody SwipeToDismiss, która jest funkcją lambda (DismissDirection) -> ThresholdConfig, dodano parametr dismissThresholds. (Ie1080)
- Suwak ma więcej kolorów, co umożliwia dokładniejsze dostosowanie (I73e64, b/161810475)
- Parametr koloru karty został przemianowany na backgroundColor (I01fc1, b/161809546).
- Bar z przekąskami ma teraz możliwość dostosowania kolorów tła i treści (I238f2, b/161804381)
- Do szuflad dodano parametry dostosowywania modifier, backgroundColor, contentColor i scrimColor (I23655, b/161804378).
- Właściwość
state { ... }
została wycofana na rzecz wywołań funkcjiremember { mutableStateOf(...) }
, aby zwiększyć przejrzystość. Dzięki temu zmniejsza się ogólna powierzchnia interfejsu API i liczba pojęć związanych z zarządzaniem stanem oraz dopasowuje się do wzoruby mutableStateOf()
dotyczącego delegowania właściwości klasy. (Ia5727) - Parametr padding przycisku został przemianowany na contentPadding (Id252e, b/161809394)
- Dodaj eksperymentalny komponent Material SwipeToDismiss. (I129e5)
Poprawki błędów
- Usunięto
onChildPositioned
iOnChildPositionedModifier
. Deweloperzy powinni zamiast tego używać w układzie podrzędnym wartościonPositioned
iOnPositionedModifier
. (I4522e, b/162109766) - Dodano funkcję lambda mergePolicy do klucza SemanticsPropertyKey. Można go użyć do zdefiniowania niestandardowej zasady złączania z użyciem semantycznej metody mergeAllDescendants. Domyślnie używana jest wartość nadrzędna, jeśli jest już dostępna, a w przeciwnym razie wartość podrzędna. (Iaf6c4, b/161979921)
- IntSize jest teraz klasą wbudowaną (I2bf42).
- Nazwa
PlacementScope.placeAbsolute()
została zmieniona naPlacementScope.place()
, a poprzednia nazwaPlacementScope.place()
została zmieniona naPlacementScope.placeRelative()
. W rezultacie metodaPlacementScope.place()
nie będzie już automatycznie odzwierciedlać pozycji w kontekście od prawej do lewej. W takim przypadku użyj zamiast tego polaPlacementScope.placeRelative()
. (I873ac, b/162916675) - PxBounds jest nieużywany na rzecz Rect. Zaktualizowano wszystkie przypadki użycia PxBounds na rect i dodano odpowiednie adnotacje wycofywania/zastępowania, aby ułatwić migrację. (I37038, b/162627058)
- Zmieniono nazwę RRect na RoundRect, aby lepiej pasowała do wzorca nazewnictwa funkcji. Utworzono konstruktory funkcji podobnych do RRect i wycofane konstruktory funkcji RRect (I5d325).
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
Funkcje androidx.compose.material:material:0.1.0-dev16
, androidx.compose.material:material-icons-core:0.1.0-dev16
i androidx.compose.material:material-icons-extended:0.1.0-dev16
są dostępne. Wersja 0.1.0-dev16 zawiera te commity.
Zmiany w interfejsie API
- Klasa Colors jest teraz klasą końcową, a nie interfejsem. Zamiast rozszerzać i zapewniać niestandardową implementację, utwórz nowe środowisko dla niestandardowego obiektu motywu i uzyskaj dostęp do obiektu motywu za pomocą nowego środowiska w komponentach, podobnie jak działa wewnętrznie MaterialTheme. (Ibae84)
- Zmieniliśmy nazwę ColorPalette na Colors, aby lepiej dopasować ją do systemu kolorów Material i uniknąć nieporozumień związanych z tym, że ColorPalette jest „uniwersalnym” obiektem motywu, a nie konkretną implementacją systemu kolorów Material. Dodatkowo zmienia nazwy lightColorPalette i darkColorPalette odpowiednio na lightColors i darkColors. (I9e976, b/161812111)
- Zmienia nazwę parametru
text
obiektu BottomNavigationItem nalabel
,onSelected
naonSelect
,activeColor
naselectedContentColor
,inactiveColor
naunselectedContentColor
i zmienia kolejność parametrów zgodnie ze wskazówkami. (Icb605, b/161809324) - Element
Modifier.stateDraggable
został całkowicie przerobiony i przemianowany na Modifier.swipeable. Wprowadziliśmy nową klasę SwipeableState, a DrawerState i BottomDrawerState zostały przebudowane, aby mogły z niej dziedziczyć. [Modal/Bottom]DrawerLayout nie przyjmuje już parametru onStateChange. (I72332, b/148023068) - Pakiet foundation.shape.corner został uproszczony do foundation.share (I46491, b/161887429)
- Dodano adnotację ExperimentalMaterialApi. RippleTheme oznaczony jako eksperymentalny (Ic5fa0, b/161784800)
- Nazwa Material FilledTextField została zmieniona na TextField, a podstawowa nazwa TextField została zmieniona na BaseTextField, aby ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676).
Poprawki błędów
- Metoda OnChildPositioned została wycofana. Zamiast tego użyj metody OnPositioned w podrzędnym elemencie. (I87f95, b/162109766)
- Rozwiązanie ogólnych problemów z interfejsem API (I077bc)
- Usuwanie nieużywanego interfejsu OffsetBase
- Dopasuj 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 nativeCanvas z interfejsu Canvas, aby umożliwić użytkownikom tworzenie własnych instancji Canvas
- Utworzono szablon klasy EmptyCanvas, aby zmienić DrawScope na parametr niepusty zamiast inicjalizacji i zapewnić, aby pole nie było puste.
- Zmieniono nazwy typów ClipOp na Pascal Case.
- Zmieniono nazwy filtrów w układ Pascala.
- Zmieniono nazwy enumów StrokeJoin na Pascal Case.
- Zmieniono nazwy typów punktu na Pascal Case
- Zmieniono nazwy typów za pomocą Pascal Case.
- Zmieniono nazwy typów ścieżki w układ Pascala.
- Zmieniono nazwy enumów StrokeCap na Pascal Case.
- Zaktualizowano implementację DrawCache, aby nie używała parametrów lateinit
- Zaktualizowano DrawScope, aby nie używać już nieaktywnych delegacji w przypadku wewnętrznych parametrów fillPaint i strokePaint.
- Zaktualizowano komponent Image, aby uniknąć korzystania z Box, co pozwoliło zmniejszyć obciążenie.
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano węzeł PathNode, aby zawierał adnotacje @Immutable dla każdej instrukcji ścieżki
- Zaktualizowano podkompozycję wektorową, aby usunąć zbędne sprawdzanie warunków równości, ponieważ kompozycja już je obsługuje
- wycofanie metod konstruktora towarzysza Rect na rzecz konstruktorów funkcji;
- Zaktualizowano klasy pędzli i konstruktorów funkcji, aby używały interfejsów API @Immutable i @Stable.
- Zmieniono typ VertexMode na PascalCase
- Zaktualizowano metodę selectPaint klasy DrawScope, aby warunkowo zastępować parametry obrysu w obiekcie paint, jeśli uległy zmianie.
- Zaktualizowano rozmiar, aby dodać interfejs API do destrukturyzacji, zmieniono nazwę na nieokreślony rozmiar i usunięto nieużywane metody.
- Przenoszenie okna do interfejsu (I47fa6)
- Użytkownik
SemanticsNodeInteraction.performPartialGesture
został usunięty. Zamiast tego użyjSemanticsNodeInteraction.performGesture
. (Id9b62) - Nazwa
SemanticsNodeInteraction.getBoundsInRoot()
została zmieniona naSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532) - Zaktualizowano interfejsy API obsługujące tekst od prawej do lewej. Dodano atrybut LayoutDirectionAmbient, który umożliwia odczytywanie i zmienianie kierunku układu. Zmienniki Modifier.rtl i Modifier.ltr zostały usunięte. (I080b3)
- Modifier.deternimateProgress został przemianowany na Modifier.progressSemantics (I9c0b4).
- Aktualizacja biblioteki material-icons-extended o najnowsze ikony dodane do Material.io/icons (I4b1d3)
- Wymagaj jawnego określenia typu T w przypadku transitionDefinition. (I1aded)
- Interfejs Modifier.plus został wycofany. Zamiast niego używaj interfejsu Modifier.then. „Then” ma silniejszy sygnał dotyczący kolejności, ale jednocześnie uniemożliwia wpisanie
Modifier.padding().background() + anotherModifier
, co powoduje przerwanie łańcucha i utrudnia czytanie (Iedd58, b/161529964) - Nazwa reguły AndroidComposeTestRule została zmieniona na createAndroidComposeRule. (I70aaf)
- Dodaj metody SemanticsMatcher.isFocused() i SemanticsMatcher.isNotFocused(). (I0b760)
- Usunięto
BaseGestureScope.globalBounds
, którego nie należy używać w testach. Zamiast tego użyj współrzędnych lokalnych węzła, z którym wchodzisz w interakcje. (Ie9b08) - Poprawiono pozycję wyskakującego okienka na wyciętym ekranie. (Idd7dd)
- Modifier.drawBackground został przemianowany na Modifier.background (I13677)
Wersja 0.1.0-dev15
22 lipca 2020 r.
Funkcje androidx.compose.material:material:0.1.0-dev15
, androidx.compose.material:material-icons-core:0.1.0-dev15
i androidx.compose.material:material-icons-extended:0.1.0-dev15
są dostępne. Wersja 0.1.0-dev15 zawiera te commity.
Aktualizacja zależności
- Aby używać wersji
0.1.0-dev15
biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany w interfejsie API
Adnotacja
@Model
została wycofana. Jako alternatywy użyj funkcji state i mutableStateOf. Ta decyzja o wycofaniu została podjęta po długiej i dogłębnej dyskusji.Uzasadnienie
Uzasadnienie może obejmować m.in.:
- Zmniejszenie obszaru interfejsu API i pojęć, które musimy przekazać
- większe podobieństwo do innych porównywalnych pakietów narzędzi (Swift UI, React, Flutter);
- Odwracalna decyzja. Zawsze możemy przywrócić
@Model
później. - Usuwa przypadki szczególne i trudne do odpowiedzi pytania dotyczące konfigurowania
@Model
, które musimy rozpatrywać @Model
klasy danych, operator równości, kod szyfrowania itp.- How do I have some properties “observed” and others not?
- Jak określić, czy w obserwacji ma być używana równość strukturalna czy referencyjna?
- Zmniejsza „magię” w systemie. Zmniejszenie prawdopodobieństwa, że ktoś uzna, że system jest mądrzejszy niż jest w rzeczywistości (np. że wie, jak porównać dwie listy).
- Ułatwia intuicyjne określenie szczegółowości obserwacji.
- Ulepszenie możliwości refaktoryzacji z użycia zmiennej do właściwości klasy
- Może umożliwić ręczne optymalizowanie stanu
- Lepiej pasuje do reszty ekosystemu i zmniejsza niejednoznaczność w przypadku niezmiennych stanów lub „przyjmowania zmiennych stanów”.
Informacje o migracji
Prawie wszystkie istniejące użycia
@Model
są dość łatwo przekształcane na jeden z 2 sposobów. Przykład poniżej zawiera klasę@Model
z 2 właściwościami tylko na potrzeby przykładu i używaną w komponowalnym.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
Opcja 1. Użyj
State<OriginalClass>
i utwórz kopie.Takie podejście ułatwiają klasy danych w Kotlinie. W zasadzie należy przekształcić wszystkie właściwości
var
w usługival
klasy danych, a potem użyć właściwościstate
zamiastremember
i przypisać wartość stanu do sklonowanych kopii oryginału za pomocą metody ułatwień klasy danychcopy(...)
.Pamiętaj, że to podejście działa tylko wtedy, gdy jedyne mutacje tej klasy zostały wprowadzone w tym samym zakresie, w jakim utworzono instancję
State
. Jeśli klasa wewnętrznie mutuje się poza zakresem użycia i stosujesz obserwację tego procesu, możesz użyć tego podejścia.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
Alternatywa 2. Użyj funkcji mutableStateOf i delegatów właściwości
Takie podejście jest ułatwione dzięki obiektom właściwości w Kotlinie i interfejsowi API
mutableStateOf
, który umożliwia tworzenie instancji MutableState poza kompozycją. Zasadniczo należy zastąpić wszystkie właściwościvar
oryginalnej klasy właściwościamivar
z usługąmutableStateOf
jako ich delegatem. Zaletą tego jest to, że sposób korzystania z klasy się nie zmieni, zmieni się tylko jej implementacja wewnętrzna. Zachowanie nie jest jednak całkowicie identyczne z pierwotnym przykładem, ponieważ każda usługa jest teraz obserwowana lub subskrybowana osobno, więc rekompozycje, które zobaczysz po tej zmianie, mogą być węższe (co jest dobrą rzeczą).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)
Wywołanie zwrotne onFocusChange w polach tekstowych zostało zmienione na onFocusChanged (Ida4a1).
Dodano parametr progów w stanieDraggable, aby określać progi między punktami zaczepienia. Ta wartość została użyta do ustawienia progu 56 dp w dolnej szufladzie. Ponadto BottomDrawerLayout używa teraz osobnego enumeracji BottomDrawerState. (I533fa)
Usuwa wcześniej wycofany modyfikator.ripple. Teraz w przypadku elementów klikalnych domyślnym efektem jest efekt falowania (jeśli w aplikacji masz ustawione {} w ramach motywu Material). W większości przypadków możesz więc po prostu użyć elementu klikalnego i bezpłatnie uzyskać efekt falowania. Jeśli chcesz dostosować kolor, rozmiar lub parametr ograniczający falę, możesz ręcznie utworzyć obiekt RippleIndication i przekazać go do clickable jako parametr indication. (I663b2, b/155375067)
Usunięto wycofane zastąpienie komponentu FilledTextField (I7f8f8).
Zmień nazwę obiektu Button (zawierającego domyślne wartości używane przez funkcję Button) na ButtonConstants (I7c5f7, b/159687878).
Slot treści przycisku działa teraz jak wiersz (przydatne, gdy chcesz mieć ikonę z tekstem. Zobacz przykłady, jak to zrobić (I0ff10, b/158677863)
Elementy RadioGroup i RadioGroupItem zostały wycofane. Użyj pola z modyfikatorem.selectable, wiersza i kolumny, aby utworzyć odpowiedni zestaw opcji przycisku radiowo-wyboru w ramach projektu (I7f5cf, b/149528535).
Dodano pole tekstowe z obrysem (I1a518)
Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Wycofane zostały też komponenty TextField, FilledTextField i CoreTextField, które używają tego typu. Zamiast tego użyj interfejsu androidx.ui.input.TextFieldValue (I4066d, b/155211005).
TabRow.TabPosition nie zawiera pozycji w Dp, nie w IntPx (I34a07, b/158577776)
Zastąpiono użycie funkcji IntPx za pomocą funkcji Int. Zastąpiono funkcję IntPxPosition za pomocą funkcji IntOffset. Zmienna IntPxSize została zastąpiona zmienną IntSize. (Ib7b44)
Aby skonsolidować liczbę klas używanych do reprezentowania informacji o rozmiarze, zamiast klasy PxSize użyj klasy Size. Daje to korzyści płynące z klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących szerokość i wysokość jako zmiennoprzecinkowe. (Ic0191)
wycofuje funkcję Modifier.ripple. W przypadku klikalnych elementów domyślnym efektem jest teraz efekt falowania (jeśli w aplikacji masz ustawione {} w ramach motywu Material). W większości przypadków możesz więc po prostu użyć klikalnego elementu i bezpłatnie uzyskać efekt falowania. Jeśli chcesz dostosować kolor, rozmiar lub parametr ograniczający falowania, możesz ręcznie utworzyć obiekt RippleIndication i przekazać go do clickable jako parametr indication. (I101cd, b/155375067)
Interfejs API Scaffold został przerobiony: zmieniono nazwy kilku parametrów i dodano nowe parametry, aby umożliwić większą personalizację. Dodano metodę dostępu do rozmiarów fab, paska górnego i dolnego (I0e7ce).
Dodano komponent DropdownMenu w pakiecie ui-material, który jest implementacją menu w stylu Material Design. (I9bb3d)
Zezwalanie na ręczne wyświetlanie/ukrywanie klawiatury za pomocą interfejsu SoftwareKeyboardController (Ifb9d6, b/155427736)
Do pakietu foundation dodano modyfikator.indication. Użyj go, aby wyświetlić wskazanie naciśnięcia/przeciągnięcia lub inne na niestandardowych elementach interaktywnych (I8425f, b/155287131).
Zbiorcze CanvasScope zostały scalone, więc teraz są tylko DrawScope i ContentDrawScope. Zmieniliśmy nazwę CanvasScope na DrawScope. Zaktualizowano DrawScope w celu implementacji interfejsu Density i zapewnienia kierunku układu. Usunięto podklasę DrawScope w ContentDrawScope. Painter i PainterModifier zostały zaktualizowane tak, aby nie utrzymywać własności RTL, ponieważ DrawScope zapewnia ją już bez ręcznego podawania (I1798e).
Zmiana nazwy metody Emphasis.emphasize() na Emphasis.applyEmphasis() (Iceebe)
Wyłączone przyciski są teraz wizualnie zgodne ze specyfikacją Material Design (I47dcb, b/155076924)
Dodawanie obsługi akcji IME, przekształcania wizualnego i typu klawiatury do FilledTextField (I1f9cf, b/155075201)
Dodaje parametr strokeWidth do elementu CircularProgressIndicator, aby dostosować rozmiar obrysowania. Aby zmienić rozmiar obrysu (wysokość) LinearProgressIndicator, możesz użyć Modifier.preferredHeight() lub innego modyfikatora rozmiaru. (Icea16, b/154919081)
Dodaje parametr strokeWidth do elementu CircularProgressIndicator, aby dostosować rozmiar obrysowania. Aby zmienić rozmiar obrysu (wysokość) LinearProgressIndicator, możesz użyć Modifier.preferredHeight() lub innego modyfikatora rozmiaru. (Icea16, b/154919081)
Dodano interfejs API slotu dla ikon końcowych i wstępnych w elementach FilledTextField oraz obsługę stanu błędu (Ic12e0).
Domyślny kolor przycisku FAB i rozszerzonego przycisku FAB został zmieniony na MaterialTheme.colors.secondary. (I3b9b9, b/154118816)
Zastąpiono wszystkie przypadki użycia typu Color w interfejsie API, w których może wystąpić wartość null, typem niepustym i użyto typu Color.Unset zamiast null (Iabaa7).
Zmieniono nazwę EdgeInsets na InnerPadding. Zmieniliśmy nazwę parametru innerPadding w przyciskach Material Buttons na padding. (I66165)
Suwak jest teraz stanem bezstanowym. Użytkownicy będą musieli sami przekazywać i aktualizować stan, tak jak w przypadku innych elementów sterujących. (Ia00aa)
Element StaticDrawer został usunięty. Jeśli potrzebujesz, użyj zamiast tego pola z wymarzoną szerokością (I244a7).
Dodano implementację pola tekstowego wypełnionego według Material Design (Ic75cd).
Dodano parametr modyfikatora do elementu listy i zmieniono kolejność parametrów, aby promować końcową część wyrażenia lambda (I66e21)
Dodaje parametr konstruktora domyślnej rodziny czcionek do obiektu Typography, co umożliwia określenie domyślnej rodziny czcionek, która będzie używana w przypadku wszystkich podanych stylów tekstu, które nie mają określonej rodziny. (I89d07)
Tymczasowo usunięto tabele danych o materiałach z interfejsu API. (Iaea61)
Zmieniono nazwy parametrów w komponentach Divider (Ic4373).
dzieci (Ia6d19)
Usunięcie MaterialTheme.emphasisLevels. Zamiast tego użyj EmphasisAmbient.current, aby pobrać poziomy natężenia (Ib5e40).
System stylizacji kształtów został zaktualizowany zgodnie ze specyfikacją Material Design. Teraz możesz udostępniać małe, średnie i duże kształty, które będą używane przez większość komponentów (Ifb4d1)
Zmiana interfejsów API MaterialTheme, takich jak MaterialTheme.colors() czy MaterialTheme.typography(), na właściwości zamiast funkcji. Usuń nawiasy z dotychczasowych wywołań. Nie należy spodziewać się żadnych zmian w zachowaniu. (I3565a)
Przerobione interfejsy API FloatingActionButton, które zamiast prymitywów obsługują składane funkcje lambda. Informacje o użyciu znajdziesz w zaktualizowanych przykładach. (I00622)
dodaj parametr
enabled
do pola wyboru, przełącznika i opcji przełączalnej (I41c16)Efekt rozchodzenia się fal jest teraz modyfikatorem. Chociaż opcja Clickable nie została jeszcze przekonwertowana, zalecane użycie to
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)Interfejsy Surface i Card zostały przeniesione z androidx.ui.material.surface do androidx.ui.material (I88a6d, b/150863888).
Przyciski Button, FloatingActionButton i Clickable mają teraz oddzielny parametr
enabled
. Niektóre parametry przycisku zostały przemianowane lub zmieniono ich kolejność. (I54b5a)Zmieniliśmy nazwę Image na ImageAsset, aby lepiej odróżnić dane Image od nadchodzącego komponentu Image, który służy do tworzenia układu i rysowania zawartości. _Body:Utworzono metodę rozszerzenia w android.graphics.Bitmap, Bitmap.asImageAsset(), aby utworzyć instancję ImageAsset przydatną do łączenia tradycyjnego Androida rozwijanie aplikacji z ramami kompozytowymi (Id5bbd)
Usunięto interfejs API Snackbar z parametrami typu String na rzecz przeciążenia, które akceptuje składane funkcje lambda. Zobacz zaktualizowane przykłady informacji o użytkowaniu (I55f80)
Przerobione interfejsy Tab API, aby przyjmowały wyrażenia lambda
text
iicon
(Ia057e)Dodano komponent BottomNavigation. Więcej informacji o jego użyciu znajdziesz w dokumentacji i w próbkach kodu (I731a0).
Dodano Icon, IconButton i IconToggleButton, usuwając AppBarIcon. Możesz bezpośrednio zastąpić istniejące użycia ikony paska aplikacji przyciskiem ikony. Teraz będą one miały prawidłowy docel dotykowy. Informacje o użyciu znajdziesz w przykladach, a ikony, których możesz używać bezpośrednio z tymi komponentami, znajdziesz w sekcji Ikony. (I96849)
Zastąpiono ButtonStyle oddzielnymi funkcjami i usunięto przeciążenie tekstu (string). Informacje o użyciu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)
zmień modyfikator
Border
naDrawBorder
(I8ffcc);Właściwość position nie jest już dostępna w przypadku atrybutu LayoutCoordinates. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obracania ani skalowania. Zamiast tego programiści powinni używać funkcji parentCoordinates i childToLocal() do obliczania transformacji z jednego układu współrzędnych na inny.
Właściwość size w metodzie LayoutCoordinates używa wartości IntPxSize zamiast PxSize. Układy używają rozmiarów w pikselach w postaci liczb całkowitych, dlatego wszystkie rozmiary układów powinny być podawane jako liczby całkowite, a nie wartości zmiennoprzecinkowe. (I9367b)
Zmiany w interfejsie API ambients. Szczegółowe informacje znajdziesz w logach i dokumentacji
Ambient<T>
(I4c7ee, b/143769776).Dodano komponent materiału do tworzenia szkieletu. Implementacje rusztowania (I7731b)
Zastąpiono metodę DrawBorder metodą Border Modifier (Id335a).
Poprawki błędów
- Interfejs FocusModifier został wycofany i zastąpiony interfejsami Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. FocusState i FocusDetailedState są wycofywane na rzecz FocusState2 (I46919, b/160822875, b/160922136).
- Komponenty VerticalScroller i HorizontalScroller zostały wycofane. Użyj ScrollableColumn i ScrollableRow, aby uzyskać wbudowane funkcje z zachowaniem i parametrami kolumny/wiersza, lub użyj Modifier.verticalScroll i Modifier.horizontalScroll w swoim własnym elemencie. Podobnie w przypadku ScrollerPosition zastosowano wycofanie w wersji na rzecz ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
- Zmodyfikowano interfejsy API Modifier.draggable i Modifier.scrollable. Atrybut DragDirection został usunięty na rzecz atrybutu Orientation. Stan wymagany dla przewijanych elementów został uproszczony. Zmiana nazwy klasy ScrollableState na ScrollableController (Iab63c, b/149460415)
- Nazwa
runOnIdleCompose
została zmieniona narunOnIdle
(I83607) - Właściwości semantyczne o pojedynczej wartości używają teraz stylu wywoływania. Na przykład „semantics { hidden = true }” jest teraz zapisywane jako „semantics { hidden() }”. (Ic1afd, b/145951226, b/145955412)
- Zmieniliśmy nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie interfejsy findXYZ zostały przemianowane na onNodeXYZ. Wszystkie interfejsy doXYZ zostały przemianowane na performXYZ. (I7f164)
- Interfejs Transition API został zmieniony tak, aby zwracał stan przejścia (TransitionState) zamiast przekazywać go do elementów podrzędnych. Dzięki temu interfejs API jest bardziej spójny z interfejsami animate(). (I24e38)
- Dodano klasę jednostki IntBounds, która reprezentuje całkowite granice pikseli z układu. Interfejs API klasy PopupPositionProvider został zaktualizowany, aby można było go używać. (I0d8d0, b/159596546)
- Do testowania wyszukiwarek dodano nowy opcjonalny parametr useUnmergedTree. (I2ce48)
- Usunięto przestarzałe interfejsy API do testowania rozmiarów. (Iba0a0)
- Usunięto wbudowaną klasę Shader, która owijała klasę NativeShader. Nazwa klasy NativeShader została zmieniona na Shader. Zawinięta klasa inline Shader nie wnosiła nic wartościowego do interfejsu API i była klasą inline, dlatego używaj bezpośrednio klasy NativeShader. (I25e4d)
- Okienka, dialogi i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
- Menu rozwijane Material jest teraz przewijalne. (Ide699)
- Usunięto parametr kierunku układu z bloku pomiaru funkcji Layout(). Kierunek układu jest jednak dostępny w obiekcie zakresu pomiaru w wywołaniu zwrotnym (Ic7d9d).
- Używaj interfejsu AnimationSpec zamiast AnimationBuilder w interfejsach API najwyższego poziomu, aby uściśliwić koncepcję specyfikacji animacji statycznej. Ulepsza to język opisu przejścia, ponieważ usuwa wymóg użycia lambda do tworzenia specyfikacji animacji, takich jak tween czy spring. Zamiast tego używają parametrów konstruktora. – Zwiększenie ogólnej łatwości obsługi AnimationSpec poprzez udostępnienie konstruktorów zamiast polegania na obiektach budujących. – Zmiana czasu trwania i opóźnienia w przypadku KeyFrames i Tween na Int. Pozwala to wyeliminować niepotrzebne przekształcanie typów i przeciążanie metod (w przypadku obsługi zarówno Long, jak i Int). (Ica0b4)
- Przełącznik „Zacznij korzystać” jest wyłączony, gdy wartość parametru
enabled
to „fałsz” (If4624, b/155941869, b/159331694) - Nazwa Modifier.tag została zmieniona na Modifier.layoutId, aby uniknąć pomyłek z tagiem Modifier.testTag. (I995f0)
- Wartości pozycji linii wyrównania zwracane przez Placeable#get(AlignmentLine) są teraz niezerowe. Jeśli nie ma linii wyrównania, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)
Zmieniono klasę Radius na klasę wbudowaną. Usunięto metody tworzenia towarzysza na rzecz konstruktora funkcji z parametrem domyślnym, aby promień na osi y był zgodny z obowiązkowym parametrem promienia na osi x.
Zaktualizowano DrawScope.drawRoundRect, aby używać pojedynczego parametru Radius zamiast 2 oddzielnych wartości typu float dla promienia wzdłuż osi X i Y (I46d1b).
Aby skonsolidować liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, zamiast klasy PxPosition użyj klasy Offset. Dzięki temu można korzystać z klasy wbudowanej, aby za pomocą typu long pakować 2 wartości zmiennoprzecinkową, które reprezentują przesunięcia x i y zapisane jako zmiennoprzecinkowe. (I3ad98)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby w przypadku parametrów pikseli używać tylko typu dp i typów prymitywnych. Usunięto całą klasę Px (I3ff33)
Komponent przełączalny został wycofany. Zamiast tego użyj Modifier.toggleable (I35220, b/157642842).
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i pierwotnych w przypadku parametrów pikseli (I086f4)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (Id3434).
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I97a5a).
Naprawiono błąd, który powodował, że nie był wywoływany element OnClick w przypadku obiektów DropdonMenuItem. (I3998b, b/157673259)
Element MutuallyExclusiveSetItem został wycofany. Zamiast tego użyj interfejsu Modifier.selectable. (I02b47, b/157642842)
Tag testowy został wycofany. Zamiast tego użyj funkcji Modifier.testTag. (If5110, b/157173105)
Kursor pola tekstowego ma migającą animację (Id10a7)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i prymitywnych w przypadku parametrów pikseli (I19d02)
Komponent VerticalScroller obsługuje teraz kolumny bez żadnych dodatkowych ustawień. Widget HorizontalScroller obsługuje teraz automatycznie wiersze. (Ieca5d, b/157020670)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (Iede0b).
Element Modifier.semantics został wycofany, aby umożliwić jego użycie w przypadku komponentów wysokiego poziomu. (I4cfdc)
Zmieniono interfejs API modyfikatorów DrawLayer: outlineShape został przemianowany na shape i ma domyślną wartość RectangleShape, która nie może być pusta; clipToBounds został usunięty, ponieważ jest to to samo co clip == true z RectangleShape (I7ef11, b/155075735).
Zaktualizowano interfejsy API wyższego poziomu, które udostępniają interfejs Canvas, tak aby zamiast niego udostępniały interfejs CanvasScope. Dzięki temu użytkownicy nie muszą już samodzielnie zarządzać obiektami w Paint. Użytkownicy, którzy nadal potrzebują dostępu do Canvas, mogą użyć metody rozszerzenia drawCanvas, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania do Canvas. (I80afd)
Interfejs kompozytowy AlignmentLineOffset został wycofany. Zamiast niego używaj modyfikatora relativePaddingFrom(). Usunięto kompozyt CenterAlignmentLine. (I60107)
Zmiana interfejsu lambda z dodatkiem Constraints. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń i kierunku układu zawiera właściwości minWidth, maxWidth, minHeight i maxHeight w pikselach (I91b9a, b/149979702)
Dodano modyfikator układu defaultMinSizeConstraints, który ustawia ograniczenia rozmiaru dla zawiniętego układu tylko wtedy, gdy przychodzące odpowiednie ograniczenia są nieokreślone (0 dla minimalnych ograniczeń i nieskończoność dla maksymalnych ograniczeń). (I311ea, b/150460257)
FocusManagerAmbient został usunięty. Użyj FocusModifier.requestFocus, aby uzyskać fokus. (Ic4826)
Utworzono interfejs CanvasScope API, który otacza obiekt Canvas, aby udostępnić bezstanową, deklaratywną powierzchnię rysowania. Transformacje są zawarte w ramach własnego zakresu odbiornika, a informacje o rozmiarach są również ograniczone do odpowiednich granic wstawki. Nie wymaga od użytkownika utrzymywania własnego obiektu stanu aplikacji Paint do konfigurowania operacji rysowania.
Dodano CanvasScopeSample oraz zaktualizowano aplikację demonstracyjną, aby zawierała demonstrację deklaratywnej grafiki (Ifd86d).
Dodaj możliwość dostosowania koloru kursora do pola tekstowego (I6e33f)
Wartość TextFieldValue używana z TextField może teraz przetrwać odtworzenie aktywności, gdy jest używana w ten sposób:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Zmieniono nazwę LayoutModifier2 na LayoutModifier. (Id29f3)
Usunięto wycofany interfejs LayoutModifier. (I2a9d6)
Parametr focusIdentifier w elementach CoreTextField i TextField został zastąpiony przez FocusNode, aby umożliwić integrację z podsystemem fokusa. (I7ea48)
Funkcje pomiarów wewnętrznych w Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia interfejs API zapytań wewnętrznych z domyślnie propagowanym kierunkiem układu. (Id9945)
Dodano nową metodę Modifier.zIndex(), która służy do kontrolowania kolejności rysowania elementów podrzędnych w ramach tego samego układu nadrzędnego. Właściwość elevation w modyfikatorze DrawLayerModifier została przemianowana na shadowElevation i nie kontroluje już kolejności rysowania. Zmieniono kolejność parametrów metody DrawShadow: teraz pierwszą jest wysokość, a drugą – kształt (z domyślnym kształtem prostokątnym). (I20150, b/152417501)
RectangleShape został przeniesiony z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Aktualizacja interfejsu TextField API – połączono funkcje zwrotne onFocus i onBlur w jedną funkcję zwrotną onFocusChange(Boolean) z parametrem (I66cd3).
Dodano parametry verticalGravity i horizontalGravity odpowiednio do wiersza i kolumny. (I7dc5a)
Zaktualizowano wrapContentWidth i wrapContentHeight, aby oczekiwały wyrównania pionowego lub poziomego zamiast dowolnego wyrównania. Modyfikator grawitacji został zaktualizowany, aby umożliwiać wyrównanie w pionie lub poziomie. Wiersz, kolumna i stos zostały zaktualizowane, aby obsługiwać niestandardowe ciągłe wyrównania. (Ib0728)
Utworzono interfejs PixelMap API, aby umożliwić wysyłanie zapytań o informacje o pikselach z obiektu ImageAsset. (I69ad6)
Usunięcie ProvideContentColor, zamiast tego używaj bezpośrednio ContentColorAmbient z
Providers
(Iee942)Moduł ui-text-compose został przemianowany na ui-text. Moduł ui-text zawiera teraz komponenty CoreText i CoreTextField (Ib7d47).
Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec).
Przeniesienie komponentów ui-framework/CoreText i CoreTextField do komponentów ui-text-compose. W projekcie warto uwzględnić komponent ui-text-compose. (I32042)
Ulepszenie interfejsu DrawModifier API:
- Zmiana zakresu odbiornika dla metody draw() ContentDrawScope
- Usunięto wszystkie parametry w metodzie draw().
- DrawScope ma ten sam interfejs co poprzedni CanvasScope
- ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067).
Funkcje
runOnIdleCompose
irunOnUiThread
są teraz funkcjami globalnymi zamiast metodami w komponencie ComposeTestRule. (Icbe8f)[Zmienne]Operatory delegujące właściwości stanu zostały przeniesione do rozszerzeń, aby umożliwić optymalizacje delegowania właściwości w wersji Kotlin 1.4. Aby nadal korzystać z
by state { ... }
lubby mutableStateOf(...)
, dzwoniący muszą dodać importy. (I5312c)Dodano pozycję w rodzicu i zakres w rodzicu dla współrzędnych układu. (Icacdd, b/152735784)
Obiekt ColoredRect został wycofany. Zamiast tego użyj elementu Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)
Dodano interfejs LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofanie interfejsu LayoutModifier (If32ac).
Zastąpienie operatora Modifier plus funkcjami rozszerzenia fabrycznego (I225e4)
Atrybuty draggable zostały przeniesione do modyfikatorów (Id9b16, b/151959544).
Składanka ParentData została wycofana. Musisz utworzyć modyfikator, który implementuje interfejs ParentDataModifier, lub użyć modyfikatora LayoutTag, jeśli chcesz po prostu oznaczać elementy potomne układu, aby rozpoznawać je w bloku pomiaru. (I51368, b/150953183)
Wycofany komponent Center. Należy go zastąpić modyfikatorem LayoutSize.Fill + LayoutAlign.Center lub jednym z komponowanych elementów Box lub Stack z odpowiednimi modyfikatorami (Idf5e0).
Dodano interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API do obsługi grafik wektorowych. Wynik podkompozycji to obiekt VectorPainter, a nie DrawModifier. Wycofano poprzednie komponenty DrawVector na rzecz komponentu VectorPainter.
Zmieniliśmy nazwę interfejsu API Image(Painter) na PaintBox(Painter). Utworzyliśmy kompozytywny obiekt wektorowy, który zachowuje się jak kompozytywny obiekt obrazu, ale zamiast ImageAsset używa VectorAsset (I9af9a, b/149030271).
Zmieniono nazwę LayoutFlexible na LayoutWeight. Parametr tight został przemianowany na fill. (If4738)
Usunięto RepaintBoundary na rzecz DrawLayerModifier (I00aa4)
Funkcja drawVector została zmieniona z zwykłej funkcji kompozytowej na funkcję zwracającą modyfikator drawVector(), która będzie rysować wektor jako tło układu. (I7b8e0)
Funkcja kompozytowa Opacity została zastąpiona modyfikatorem drawOpacity. (I5fb62)
Zastąp funkcję kompozytową Clip za pomocą modyfikatora drawClip(). Funkcja drawClipToBounds jest wygodnym modyfikatorem do stosowania, gdy chcesz przyciąć tylko do krawędzi warstwy o kształcie prostokąta. (If28eb)
Funkcja kompozytowa DrawShadow została zastąpiona modyfikatorem drawShadow(). Cienie są teraz rysowane jako część LayerModifier. (I0317a)
Dodano modyfikator LayerModifier, który umożliwia dodanie RenderNode do układu. Umożliwia ustawienie przycinania, krycia, obrotu, skalowania i cieni. Zastąpi ona opcję RepaintBoundary. (I7100d, b/150774014)
Interfejs androidx.compose.ViewComposer został przeniesiony do androidx.ui.node.UiComposer. Interfejs androidx.compose.Emittable został usunięty. Był on zbędny w porównaniu z ComponentNode. androidx.compose.ViewAdapters został usunięty. Nie są one już obsługiwane. Metoda Compose.composeInto została wycofana. Użyj w zamian pola
setContent
lubsetViewContent
. Metoda Compose.disposeComposition została wycofana. Zamiast tego użyj metodydispose
w obiekcieComposition
zwracanym przez funkcjęsetContent
. Funkcja androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto. Metoda ComponentNode#emitInsertAt została przemianowana na ComponentNode#insertAt. Metoda ComponentNode#emitRemoveAt została przemianowana na ComponentNode#removeAt. Metoda ComponentNode#emitMode została przemianowana na ComponentNode#move (Idef00)Stworzony komponent Image do obsługi skalowania/układu, a także do rysowania danego ImageAsset na ekranie. Ta kompozycja obsługuje też rysowanie dowolnego wystąpienia Paintera z zachowaniem jego rozmiaru wewnętrznego oraz obsługuje określony rozmiar stały lub minimalny rozmiar (Ibcc8f)
Wycofana funkcja kompozycyjna owinięcia. Można go zastąpić modyfikatorem LayoutAlign lub kompozycją Stack (Ib237f).
WithConstraints ma parametr LayoutDirection (I6d6f7).
Zmieniliśmy kierunek propagacji układu z węzła nadrzędnego do podrzędnych. Dodano modyfikator kierunku układu. (I3d955)
Komponent grupy obsługuje kierunek od prawej do lewej (Ic9e00)
Usunięto kompozyt DrawShape. Zamiast tego użyj modyfikatora DrawBackground. (I7ceb2)
Obsługa kierunku od prawej do lewej w modyfikatorze LayoutPadding (I9e8da)
Dodano AdapterList, komponent listy przewijanej, który tylko składa i umieszcza widoczne elementy. Obecne znane problemy obejmują to, że jest to rozwiązanie tylko w orientacji pionowej i nie obsługuje w pełni wszystkich przypadków zmian w podrzędnych. (Ib351b)
Zaktualizowaliśmy flagę
ComposeFlags.COMPOSER_PARAM
natrue
, co zmieni strategię generowania kodu dla wtyczki do tworzenia wiadomości. Ogólnie rzecz biorąc, powoduje to, że funkcje @Composable są generowane z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań @Composable, aby środowisko uruchomieniowe mogło prawidłowo zarządzać wykonywaniem. Jest to istotna zmiana, która powoduje przerwanie binarne, ale powinna zachować zgodność na poziomie źródłowym we wszystkich zatwierdzonych zastosowaniach compose. (I7971c)Dodano komponent Canvas. Ta kompozycja zajmuje pewien rozmiar (podany przez użytkownika) i pozwala na rysowanie za pomocą CanvasScope (I0d622)
Density i DensityScope zostały połączone w jeden interfejs. Zamiast ambientDensity() możesz teraz używać DensityAmbient.current. Zamiast withDensity(gęstość) wpisz tylko with(gęstość) (I11cb1)
Zmiana metody LayoutCoordinates, aby ustawić parametry alignmentLines jako zbiór zamiast mapy i zamiast tego, aby zwracać wartość, użyj operatora get(). Dzięki temu modyfikatory mogą łatwiej modyfikować co najmniej 1 wartość zbioru bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
Scrollery działają teraz zgodnie z natywnym zachowaniem Androida. (I922af, b/147493715)
Ulepszenia interfejsu API ograniczeń (I0fd15)