Tworzenie materiału
androidx.compose.material
androidx.compose.material.icons
(Zobacz dokumentację interfejsu API wszystkich pakietów Compose)
Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
2 lipca 2025 r. | 1.8.3 | - | 1.9.0-beta02 | - |
Struktura
Compose to połączenie 7 identyfikatorów grupy Maven w androidx
. Każda grupa zawiera ukierunkowany podzbiór funkcji, a każda z nich ma własny zestaw informacji o wersji.
W tej tabeli znajdziesz wyjaśnienie grup i linki do poszczególnych zestawów informacji o wersji.
Grupa | Opis |
---|---|
compose.animation | tworzyć animacje w aplikacjach Jetpack Compose, aby zwiększać komfort użytkowników; |
compose.compiler | Przekształcanie funkcji z adnotacją @Composable i włączanie optymalizacji za pomocą wtyczki kompilatora Kotlin. |
compose.foundation | Twórz aplikacje w Jetpack Compose za pomocą gotowych elementów składowych i rozszerzaj 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 wyższego poziomu w Compose, który ma udostępniać komponenty zgodne z tymi opisanymi na stronie www.material.io. |
compose.material3 | Twórz interfejsy Jetpack Compose za pomocą komponentów Material Design 3, czyli kolejnej ewolucji Material Design. Material 3 zawiera zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczny kolor. Jest on spójny z nowym stylem wizualnym Androida 12 i interfejsem systemu. |
compose.runtime | Podstawowe elementy modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, do którego kierowany jest wtyczka kompilatora Compose. |
compose.ui | Podstawowe komponenty interfejsu Compose potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i dane wejściowe. |
Deklarowanie zależności
Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle
aplikacji lub modułu:
Groovy
dependencies { implementation "androidx.compose.material:material:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.material:material:1.8.3") } 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 odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.9
Wersja 1.9.0-beta02
2 lipca 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.9.0-beta02
Wersja 1.9.0-beta02 zawiera te zmiany.
Wersja 1.9.0-beta01
18 czerwca 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.9.0-beta01
Wersja 1.9.0-beta01 zawiera te zmiany.
Poprawki błędów
- Hiperlinki w
Text(AnnotatedString)
mają teraz domyślnie styl Material. (I0e8ed, b/339843816)
Wersja 1.9.0-alpha04
4 czerwca 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.9.0-alpha04
Wersja 1.9.0-alpha04 zawiera te zmiany.
Wersja 1.9.0-alpha03
20 maja 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.9.0-alpha03
Wersja 1.9.0-alpha03 zawiera te zmiany.
Wersja 1.9.0-alpha02
7 maja 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.9.0-alpha02
Wersja 1.9.0-alpha02 zawiera te zmiany.
Wersja 1.9.0-alpha01
23 kwietnia 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.9.0-alpha01
Wersja 1.9.0-alpha01 zawiera te zmiany.
Zmiany w zachowaniu
- Sprawdzanie Lint dostarczane z Compose wymaga teraz minimalnej wersji AGP 8.8.2. Jeśli nie możesz uaktualnić AGP, możesz zamiast tego uaktualnić Lint, używając w pliku
gradle.properties
wersjiandroid.experimental.lint.version=8.8.2
(lub nowszej). Aby uruchamiać sprawdzanie kodu za pomocą narzędzia Lint w IDE, musisz mieć Androida Studio Ladybug lub nowszego.
Zmiany w interfejsie API
- Projekty wydane w Kotlinie 2.0 wymagają użycia KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
- Interfejsy API pola tekstowego nie są już eksperymentalne (I7480f, b/269651160)
- Zastąpienie wartości
runWithTimingDisabled
wartościąrunWithMeasurementDisabled
, która lepiej opisuje zachowanie – wszystkie dane są wstrzymane. Dodatkowo udostępnij superklasęMicrobenchmarkScope
, ponieważ ponowne zadeklarowanie funkcjirunWithMeasurementDisabled
w celu otwarcia dostępu nie jest możliwe, ponieważ jest ona wstawiana w kodzie. (I9e23b, b/389149423, b/149979716)
Poprawki błędów
ExposedDropdownMenu
jest binarnie zgodna ze starszymi wersjami. (I133f7)- Naprawiono błąd powodujący awarię wskaźników postępu i wczytywania w przypadku przekazania wartości
Float.NaN
jako postępu. (I4fa96, b/352364576)
Wersja 1.8
Wersja 1.8.3
18 czerwca 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.3
Wersja 1.8.3 zawiera te zmiany.
Wersja 1.8.2
20 maja 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.2
Wersja 1.8.2 zawiera te zmiany.
Wersja 1.8.1
7 maja 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.1
Wersja 1.8.1 zawiera te zmiany.
Wersja 1.8.0
23 kwietnia 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0
Wersja 1.8.0 zawiera te zmiany.
Wersja 1.8.0-rc03
9 kwietnia 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-rc03
Wersja 1.8.0-rc03 zawiera te zmiany.
Wersja 1.8.0-rc02
26 marca 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-rc02
Wersja 1.8.0-rc02 zawiera te zmiany.
Wersja 1.8.0-rc01
12 marca 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-rc01
Wersja 1.8.0-rc01 zawiera te zmiany.
Wersja 1.8.0-beta03
26 lutego 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-beta03
Wersja 1.8.0-beta03 zawiera te zmiany.
Wersja 1.8.0-beta02
12 lutego 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-beta02
Wersja 1.8.0-beta02 zawiera te zmiany.
Wersja 1.8.0-beta01
29 stycznia 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-beta01
Wersja 1.8.0-beta01 zawiera te zmiany.
Wersja 1.8.0-alpha08
15 stycznia 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-alpha08
Wersja 1.8.0-alpha08 zawiera te commity.
Poprawki błędów
- Dodaje
displayCutout
do grupy wcięć, które komponenty Material domyślnie uwzględniają, aby uniknąć nakładania się treści z wycięciem na wyświetlaczu.- Jest to zmiana w działaniu, która wpłynie na sposób, w jaki komponenty uwzględniające wcięcia będą zachowywać się w pobliżu wycięcia na wyświetlaczu. Obejmuje to domyślną wartość parametru
WindowInsets
w przypadku komponentów Material 3 uwzględniających wcięcia oraz wartościWindowInsets
podane w komponencie. - Domyślne obiekty dla Material 2 i Material 3. Jeśli ta zmiana spowoduje niepożądane działanie, ręcznie określ parametr
WindowInsets
dla każdego komponentu. (I43ee9, b/362508045)
- Jest to zmiana w działaniu, która wpłynie na sposób, w jaki komponenty uwzględniające wcięcia będą zachowywać się w pobliżu wycięcia na wyświetlaczu. Obejmuje to domyślną wartość parametru
- Aktywność używana jako host dla testowanego komponentu kompozycyjnego podczas korzystania z
ComposeContentTestRule.setContent
używa teraz motywuTheme.Material.Light.NoActionBar
, aby uniknąć nakładania sięActionBar
na treści testowe w przypadku pakietu SDK 35. Aby zrezygnować z tego działania, możesz usunąć zależność odui-test-manifest
i dodać wpis aktywności wAndroidManifest.xml
aplikacji testowej dlaComponentActivity
z wybranym motywem. (I7ae1b, b/383368165)
Wkład zewnętrzny
- Udostępnij
sheetGesturesEnabled
wModalBottomSheetLayout
. (I3f032, b/329543529)
Wersja 1.8.0-alpha07
11 grudnia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-alpha07
Wersja 1.8.0-alpha07 zawiera te zmiany.
Poprawki błędów
- Naprawiono problem z nieprawidłowym działaniem modyfikatorów rozmiaru pola tekstowego. (I90d4c, b/356905963)
Wersja 1.8.0-alpha06
13 listopada 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-alpha06
Wersja 1.8.0-alpha06 zawiera te zmiany.
Wersja 1.8.0-alpha05
30 października 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-alpha05
Wersja 1.8.0-alpha05 zawiera te zmiany.
Poprawki błędów
- Zoptymalizuj działanie komponentu Scaffold
contentPadding
, aby uniknąć ciągłego ponownego komponowania treści głównej, gdy zmienia się komponentcontentPadding
. (I8c8e2, b/373904168) - Spraw, aby suwak materiału zmieniał wartość po naciśnięciu klawiszy sterujących. (I1c442)
Wersja 1.8.0-alpha04
16 października 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-alpha04
Wersja 1.8.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Usuń
readOnly
zTextFields
', aby przypiąć do stabilnej wersji podstawowej. (I3aaba)
Poprawki błędów
- Dodaje obsługę efektu falowania w rozwijanych komponentach na Androidzie S+, np. w karcie, która rozwija się po kliknięciu. Wcześniej efekt 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.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-alpha02
Wersja 1.8.0-alpha02 zawiera te zmiany.
Wersja 1.8.0-alpha01
4 września 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.8.0-alpha01
Wersja 1.8.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy nowy konstruktor
NavGraphBuilder.bottomSheet
, który umożliwia tworzenie arkusza dolnego z argumentami bezpiecznymi ((I28589, I777db, b/351858980)). - Dodano nowe przeciążenia funkcji
TextField
iOutlinedTextField
, które przyjmują argumentTextFieldState
(I3b74c).
Wersja 1.7
Wersja 1.7.8
12 lutego 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.8
Wersja 1.7.8 zawiera te zmiany.
Wersja 1.7.7
29 stycznia 2025 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.7
Brak zmian w porównaniu z wersją 1.7.6.
Wersja 1.7.6
11 grudnia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.6
Wersja 1.7.6 zawiera te zmiany.
Wersja 1.7.5
30 października 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.5
Wersja 1.7.5 zawiera te zmiany.
Wersja 1.7.4
16 października 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.4
Wersja 1.7.4 zawiera te zmiany.
Wersja 1.7.2
18 września 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.2
Wersja 1.7.2 zawiera te zmiany.
Wersja 1.7.1
10 września 2024 r.
- Brak zmian w artefaktach Androida. Usunięto
-desktop
artefaktów, a dodano-jvmStubs
i-linuxx64Stubs
artefakty. Żaden z tych celów nie jest przeznaczony do użytku. Są to symbole zastępcze, które mają pomóc w pracach nad Jetbrains Compose.
Wersja 1.7.0
4 września 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0
Wersja 1.7.0 zawiera te zmiany.
Ważne zmiany od wersji 1.6.0
- Komponenty Material zostały przeniesione, aby korzystać z nowych interfejsów API efektu falowania, i nie wysyłają już zapytań do
RippleTheme
. - Komponenty Material, które wcześniej akceptowały wartość
MutableInteractionSource
i miały domyślną wartośćremember { MutableInteractionSource() }
, akceptują teraz wartośćMutableInteractionSource
z możliwością przypisania wartości null i mają domyślną wartość null. Jeśli nie używasz funkcji hoistingu i nie korzystasz z elementuMutableInteractionSource
, przekaż wartość null. Dzięki temu niektóre komponenty mogą tworzyć instancję tylko wtedy, gdy jest to potrzebne, co zwiększa wydajność. Zalecamy też wprowadzenie podobnych zmian we własnych komponentach. BottomDrawer
,ModalBottomSheet
,BackdropScaffold
i standardowy arkusz u dołu zostały przeniesione do stabilnego interfejsu API.
Wersja 1.7.0-rc01
21 sierpnia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-rc01
Wersja 1.7.0-rc01 zawiera te zmiany.
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-beta07
Wersja 1.7.0-beta07 zawiera te zmiany.
Wersja 1.7.0-beta06
24 lipca 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-beta06
Wersja 1.7.0-beta06 zawiera te zmiany.
Wersja 1.7.0-beta05
10 lipca 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-beta05
Wersja 1.7.0-beta05 zawiera te zmiany.
Wersja 1.7.0-beta04
26 czerwca 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-beta04
Wersja 1.7.0-beta04 zawiera te zmiany.
Wersja 1.7.0-beta03
12 czerwca 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-beta03
Wersja 1.7.0-beta03 zawiera te zmiany.
Wersja 1.7.0-beta02
29 maja 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-beta02
Wersja 1.7.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Aktualizacja interfejsu API do stylizowania linków: przeniesiono
TextLinkStyles
doTextStyle
i usuniętoTextDefaults
z materiału (I5477b)
Wersja 1.7.0-beta01
14 maja 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-beta01
Wersja 1.7.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Zaktualizowano interfejs API do pobierania linków w tekście z motywem Material. W szczególności usunęliśmy metody z
TextDefaults
do tworzenia tematycznychLinkAnnotations
i parsowania kodu HTML z tematycznymi linkami. Zamiast tego dodaliśmy do funkcji kompozycyjnej Text parametrTextLinkStyles
, który umożliwia stylowanie linków. (I31b93)
Wersja 1.7.0-alpha08
1 maja 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-alpha08
Wersja 1.7.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Naprawiono problem z niezastosowaniem
backgroundColor
doTextFieldDecorationBox
iOutlinedTextFieldDecorationBox
. Pola dekoracyjne akceptują teraz parametrshape
. (I371c2, b/307694651) - Pole
RippleConfiguration#isEnabled
zostało usunięte, a poleLocalRippleConfiguration
może teraz przyjmować wartość null. Aby wyłączyć efekt fali, zamiast podawaćRippleConfiguration
zisEnabled = false
, podajnull
doLocalRippleConfiguration
. (I22725) - Oprócz normalnego stylu, stylu po najechaniu kursorem i stylu po zaznaczeniu linki tekstowe mają też opcję stylu po kliknięciu.
TextDefaults
metody mają argumentpressedStyle
, który to potwierdza. (Ic473f, b/139312671)
Poprawki błędów
OutlinedTextField
górny odstęp od etykiety uwzględnia teraz rozmiar czcionki systemowej. (Idc781)
Wersja 1.7.0-alpha07
17 kwietnia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-alpha07
Wersja 1.7.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Linki tekstowe mają teraz opcję stylu stanu naciśnięcia oprócz stylów normalnego, najechanej i skupionej. (I5f864, b/139312671)
- Dodano obiekt
TextDefaults
, który zawiera metody tworzenia obiektuLinkAnnotation
i parsowania ciągu znaków z tagami HTML, które stosują atrybutMaterialTheme
do linków. (I98532, b/139312671)
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-alpha06
Wersja 1.7.0-alpha06 zawiera te zmiany.
Ogłoszenie
androidx.compose.material
nie wymaga już używania tej samej wersji każdego artefaktu w tej grupie Maven. Użytkownicy mogą łączyć ze sobą różne wersje podstawowych bibliotek Compose (Ie5fba).
Zmiany w interfejsie API
- Przeniesiono więcej wartości domyślnych
ModalDrawer
iBottomDrawer
do obiektuDrawerDefaults
. (Ib5b2e)
Wersja 1.7.0-alpha05
20 marca 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-alpha05
Wersja 1.7.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Oznaczenie
ScaffoldSubcomposeInMeasureFix
zostało usunięte. (I67363)
Wersja 1.7.0-alpha04
6 marca 2024 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-alpha04
Wersja 1.7.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Dodano nowy artefakt
androidx.compose.material:material-navigation
, który umożliwia używanie arkuszy u dołu ekranu jako miejsc docelowych podczas korzystania z Navigation Compose. Zastępuje ona bibliotekę Accompanist Navigation Material. (d65d57, b/180247978)
Wersja 1.7.0-alpha03
21 lutego 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-alpha03
Wersja 1.7.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
BottomDrawer
został przeniesiony z wersji eksperymentalnej do stabilnej.BottomDrawerState
udostępnia teraz postęp jako funkcję, co umożliwia sprawdzanie postępu między określonymi celami.BottomDrawerState
umożliwia teraz dostosowywanie specyfikacji animacji, aconfirmStateChange
nie jest już końcową funkcją lambda. (I9c029, b/261423850)BackdropScaffold
został przeniesiony z wersji eksperymentalnej do stabilnej. Specyfikacja animacji jest teraz zgodna z wytycznymi i ma formattween
. ParametrsnackbarHost
funkcjiBackdropScaffold
nie jest już ostatnim parametrem, aby uniknąć pomyłek z funkcjami LAMBDA na końcu.BackdropScaffoldState
udostępnia interfejsprogress(from, to)
API do sprawdzania postępu między punktami. (I73f48, b/261423218)- Standardowe arkusze dolne zostały przeniesione z wersji eksperymentalnej do stabilnej. Przestarzałe 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. Przestarzałe konstruktory zostały usunięte. Specyfikacja animacji jest teraz zgodna z wytycznymi i ma format
tween
. (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
BottomSheetScaffold
, aby zwiększyć wydajność. Rozwiązaliśmy problem, który powodował awarięBottomSheetScaffold
w określonych scenariuszach w połączeniu zLookaheadScope
. (I2f90c) - Usunięto podkompozycję w
ModalBottomSheetLayout
, co poprawiło wydajność. (I7a025)
Wersja 1.7.0-alpha02
7 lutego 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-alpha02
Wersja 1.7.0-alpha02 zawiera te zmiany.
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.7.0-alpha01
Wersja 1.7.0-alpha01 zawiera te zmiany.
Zmiany w zachowaniu
- Komponenty Material zostały przeniesione, aby korzystać z nowych interfejsów API efektu falowania, i nie wysyłają już zapytań do
RippleTheme
.
Zmiany w interfejsie API
rememberRipple
iRippleTheme
zostały wycofane z material-ripple, a do bibliotek material i innych systemów projektowania dodano nowe interfejsy API ripple iRippleConfiguration
.Komponenty Material, które wcześniej akceptowały wartość
MutableInteractionSource
i domyślnie zapamiętywały wartość{ MutableInteractionSource() }
, teraz akceptują wartośćMutableInteractionSource
z możliwością przypisania wartości null i domyślnie przyjmują wartość null. Jeśli nie używasz funkcji hoistingu i nie korzystasz z elementuMutableInteractionSource
, przekaż wartość null. Dzięki temu niektóre komponenty mogą tworzyć instancję tylko wtedy, gdy jest to potrzebne, co zwiększa wydajność. Zalecamy też wprowadzenie podobnych zmian we własnych komponentach.
Wersja 1.6
Wersja 1.6.8
12 czerwca 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.8
Wersja 1.6.8 zawiera te zmiany.
Wersja 1.6.7
1 maja 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.7
Wersja 1.6.7 zawiera te zmiany.
Wersja 1.6.6
17 kwietnia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.6
Brak zmian od ostatniej wersji.
Wersja 1.6.5
3 kwietnia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.5
Wersja 1.6.5 zawiera te zmiany.
Wersja 1.6.4
20 marca 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.4
Wersja 1.6.4 zawiera te zmiany.
Wersja 1.6.3
6 marca 2024 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.6.3
Wersja 1.6.3 zawiera te zmiany.
Poprawki błędów
- Napraw regresję w
ExposedDropdownMenu
, aby można było ponownie zaznaczyć ten element. (c0e0ed, b/323694447)
Wersja 1.6.2
21 lutego 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.2
Wersja 1.6.2 zawiera te zmiany.
Wersja 1.6.1
7 lutego 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.1
Wersja 1.6.1 zawiera te zmiany.
Wersja 1.6.0
24 stycznia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0
Wersja 1.6.0 zawiera te zmiany.
Wersja 1.6.0-rc01
10 stycznia 2024 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-rc01
Wersja 1.6.0-rc01 zawiera te zmiany.
Wersja 1.6.0-beta03
13 grudnia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-beta03
Wersja 1.6.0-beta03 zawiera te zmiany.
Wersja 1.6.0-beta02
29 listopada 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-beta02
Wersja 1.6.0-beta02 zawiera te zmiany.
Wersja 1.6.0-beta01
15 listopada 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-beta01
Wersja 1.6.0-beta01 zawiera te zmiany.
Wersja 1.6.0-alpha08
18 października 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-alpha08
Wersja 1.6.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Wycofaj funkcję
materialIcon
na rzecz jej przeciążenia, które przyjmuje parametrautoMirror
. (Ia338d)
Poprawki błędów - Automatyczne zwiększanie wysokości elementu nawigacyjnego w przypadku dużej ilości treści. (0c4ecc, b/272336962)
Wersja 1.6.0-alpha07
4 października 2023 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-alpha07
Wersja 1.6.0-alpha07 zawiera te zmiany.
- Aktualizacje zależności
Wersja 1.6.0-alpha06
20 września 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-alpha06
Wersja 1.6.0-alpha06 zawiera te zmiany.
Zmiana powodująca niezgodność w zachowaniu
- Usunięto funkcje związane z szufladą z
BottomSheetScaffold
. Aby uzyskać poprzednią funkcjonalność, umieśćBottomSheetScaffold
w komponencie Drawer. Przykład znajdziesz w sekcjiBottomSheetScaffoldWithDrawerSample
. (I1dcc8)
Zmiany w interfejsie API
- Wprowadzono tymczasową flagę, która określa, czy komponent Scaffold ma mierzyć elementy podrzędne podczas pomiaru czy podczas umieszczania. Domyślnie będzie to pomiar. Jeśli masz problemy z nowym działaniem, zgłoś je. (If6e3b)
Wersja 1.6.0-alpha05
6 września 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-alpha05
Wersja 1.6.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy obsługę automatycznie odzwierciedlanych ikon podczas renderowania w układach od prawej do lewej. Ikony w modułach material-icons-core i material-icons-extended udostępniają teraz dodatkowe zestawy ikon, które obsługują automatyczne odbijanie lustrzane, jeśli ikona na to pozwala. Nowe zestawy mają prefiks
Icons.AutoMirrored.Filled...
itp. i zawierają ikony, które będą automatycznie odzwierciedlane w układach od prawej do lewej. Listę ikon, które mogą (i powinny) być automatycznie odzwierciedlane, znajdziesz w tym artykule.
Zmiany w interfejsie API
- Dodaliśmy obsługę automatycznie odzwierciedlanych ikon podczas renderowania w układach od prawej do lewej. Ikony w modułach material-icons-core i material-icons-extended udostępniają teraz dodatkowe zestawy ikon, które obsługują automatyczne odbijanie lustrzane, jeśli ikona na to pozwala. Nowe zestawy mają prefiks
Icons.AutoMirrored.Filled...
itp. i zawierają ikony, które będą automatycznie odzwierciedlane w układach od prawej do lewej. Listę ikon, które mogą (i powinny) być automatycznie odzwierciedlane, znajdziesz w tym artykule. Właściwości ikon podane wcześniej są teraz oznaczone jako wycofane. Zawierają też sugestię bloku zastępczego, która ułatwia migrację. Jeśli nie masz specjalnych rozwiązań do obsługi ikon w przypadku języków pisanych od prawej do lewej, zalecamy przejście na nowy zestaw ikon. Na przykładIcons.Filled.ArrowBack
należy przekształcić wIcons.AutoMirrored.Filled.ArrowBack
. (I4b511)
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-alpha04
Wersja 1.6.0-alpha04 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że niektóre komponenty używające symbolu
Subcomposition
(np.BottomSheetScaffold
) w komponencie Scaffold wLookaheadScope
zbyt wcześnie próbowały odczytać swój rozmiar. (If2c5d) - Poprawiliśmy obliczenia
DropdownMenu
woffset
, aby przesunięcia wzdłuż osi X zależały wyłącznie od lokalnego kierunku układu, a przesunięcia wzdłuż osi Y nie były już odwracane, gdy menu znajduje się w pobliżu dolnej krawędzi ekranu. (Iccc74, b/294103942) - Zoptymalizowano wewnętrzną strukturę elementu
BottomSheetScaffold
i rozwiązano potencjalny problem z elementemBottomSheetScaffold
w elemencieLookaheadLayout
. (Ic0afa)
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-alpha03
Wersja 1.6.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Komponenty Material2 mają teraz osobny interfejs API do przekazywania
windowInsets
, aby obsługiwać funkcję od krawędzi do krawędzi na Androidzie. W przeciwieństwie do komponentów material3 komponenty material2 nie obsługują domyślnie wcięć, więc wartość należy przekazywać ręcznie. Zapoznaj się z odpowiednimi przykładami. (I655e8)
Wersja 1.6.0-alpha02
26 lipca 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-alpha02
Wersja 1.6.0-alpha02 zawiera te zmiany.
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 nowego przeciążenia, w którym gęstość jest parametrem. (I1846e) - Dodatkowe adnotacje do określania dozwolonych danych wejściowych w funkcjach kompozycyjnych (I51109)
- Zaktualizowano pliki interfejsu API, aby dodać adnotacje dotyczące wyłączenia zgodności (I8e87a, b/287516207).
- Dodano nowe wyrównanie do początku dla
FabPosition
(Ib7aea, b/170592777) TextFieldColorsWithIcons
w Material Designu 2 został wycofany na rzeczTextFieldColors
. ZastępującleadingIconColor
lubtrailingIconColor
, zastąp też przeciążenie za pomocąinteractionSource
. (Id57ed, b/199377790)
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.6.0-alpha01
Wersja 1.6.0-alpha01 zawiera te zmiany.
Zmiany w zachowaniu
- W typografii Material 2 znak
includeFontPadding
jest teraz domyślnie zastępowany znakiemfalse
. Domyślny styl wysokości wiersza został też zmieniony naTrim.None
iAlignment.Center
, a doTextStyle
wTypography
dodano wyraźnelineHeight
(w sp). Jeśli chcesz dostosować te wartości, zapoznaj się z dokumentacją interfejsu API. Szczegółowe wyjaśnienie tych zmian znajdziesz w tym poście na blogu. (Icabc3, I3f801, I04c03)
Zmiany w interfejsie API
- Interfejsy API
Swipeable
Material zostały wycofane. Skorzystaj z interfejsów APIAnchoredDraggable
Foundation, które są zoptymalizowane pod kątem prostych i złożonych przypadków użycia. (I732e0)
Poprawki błędów
BottomSheetState
,ModalBottomSheetState
iBottomDrawerState
udostępniają teraz właściwość postępu, która wskazuje postęp między bieżącym (ustalonym) punktem zakotwiczenia a najbliższym punktem zakotwiczenia 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.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.4
Wersja 1.5.4 zawiera te zmiany.
Wersja 1.5.3
4 października 2023 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.5.3
Ta wersja nie zawiera żadnych zmian
Wersja 1.5.2
27 września 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.2
Wersja 1.5.2 zawiera te zmiany.
Wersja 1.5.1
6 września 2023 r.
androidx.compose.material:material-*:1.5.1
zostaje opublikowany bez zmian. Wersja 1.5.1 zawiera te zmiany.
Wersja 1.5.0
9 sierpnia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.0
Wersja 1.5.0 zawiera te zmiany.
Ważne zmiany od wersji 1.4.0
Zmiany w interfejsie API
- Wprowadzono zmiany w interfejsach Swipeable1 API w
BottomSheetScaffold
. ParametrconfirmStateChange
użytkownikaBottomSheetState
został zmieniony naconfirmValueChange
.progress
jest teraz udostępniana jako wartość zmiennoprzecinkowa.animateTo
isnapTo
są wewnętrzne. Zamiast niej używaj kolumnexpand()
icollapse()
. Usunięto elementydirection
ioverflow
.offset
zostało zastąpione przezrequireOffset()
. I323b4 - Oznacz funkcję
snapTo
w komponencie Drawer jako nieeksperymentalny interfejs API. (Ib9c18, b/261425368) - Dodaliśmy parametr koloru ścieżki dla kołowych wskaźników postępu oraz parametr zakończenia linii dla kołowych i liniowych wskaźników postępu. (Ie668c, b/216325962, b/222964817)
- Zmieniliśmy nazwę
confirmStateChange
w przypadkuModalBottomSheetState
,ModalBottomSheetState.Saver
irememberModalBottomSheetState
naconfirmValueChange
. (Ib48d1) - Dodaj
Modifier.minimumInteractiveComponentSize
. Można go użyć do zarezerwowania co najmniej 48 dp, aby odróżnić interakcje dotykowe, jeśli element jest mniejszy. (I33f58, b/258495559) - Wprowadzono zmiany w interfejsach API do przesuwania w
ModalBottomSheetLayout
. Funkcja animateTo wModalBottomSheetState
nie przyjmuje już parametruanimationSpec
, a udostępniany offset może mieć teraz wartość null. Użyj aplikacjirequireOffset
, aby wymagać przesunięcia. (Ia2e79) - Dodawanie adnotacji
@JvmDefaultWithCompatibility
(I8f206) - Zmiany w interfejsach API z możliwością przesuwania w
ModalDrawer. DrawerState
wanimateTo
zostały zastąpione metodami otwierania i zamykania, a przesunięcie jest teraz dopuszczalne. Użyj aplikacjirequireOffset
, aby wymagać przesunięcia. (I3de9e) - Zaktualizowano panele i arkusze, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
- Dodano parametr
minLines
do komponentów tekstowych material i material3,TextField
iOutlinedTextField
, który umożliwia ustawienie minimalnej wysokości komponentu w wierszach (I4af1d).
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że
pullRefresh
nie wykorzystywał prędkości, co powodowało wyświetlanie przewijania poza zakres. Zmieniono też sygnaturę interfejsu API funkcjionRelease
wModifier.pullRefresh
, aby zwracała wartość zmiennoprzecinkową dla zużytej prędkości (I7db65, b/266874741). BottomSheetState
,ModalBottomSheetState
iBottomDrawerState
udostępniają teraz właściwość postępu, która wskazuje postęp między bieżącym (ustalonym) punktem zakotwiczenia a najbliższym punktem zakotwiczenia w kierunku przesunięcia. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)- Naprawiliśmy
AlertDialog
działanie odrzucania, aby pojawiało się pod działaniem potwierdzania, gdy działania były ułożone jeden nad drugim, aby zmieścić się w oknie dialogowym. Ta poprawka dostosowuje implementację do specyfikacji Material Design. (I029de, b/235454277) - Gdy wartość parametru
gesturesEnabled
to 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 w przypadku slotów podano puste treści. (Ib24a5, b/235588730) - Poprawki
PullRefreshIndicator
przechwytywania kliknięć i zdarzeń wskaźnika. (2494256, b/271777421) - Rozwiązaliśmy problem, który w rzadkich przypadkach powodował awarię
ModalBottomSheetLayout
podczas 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.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.0-rc01
Wersja 1.5.0-rc01 zawiera te zmiany.
Wersja 1.5.0-beta03
28 czerwca 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.0-beta03
Wersja 1.5.0-beta03 zawiera te zmiany.
Poprawki błędów
BottomSheetState
,ModalBottomSheetState
iBottomDrawerState
udostępniają teraz właściwość postępu, która wskazuje postęp między bieżącym (ustalonym) punktem zakotwiczenia a najbliższym punktem zakotwiczenia w kierunku przesunięcia. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)
Wersja 1.5.0-beta02
7 czerwca 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.0-beta02
Wersja 1.5.0-beta02 zawiera te zmiany.
Wersja 1.5.0-beta01
24 maja 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.0-beta01
Wersja 1.5.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Przesunięcia
DrawerState
iBottomDrawerState
nie mogą już mieć wartości null. Zamiast tego zwracają wartośćFloat.NaN
, aby wskazać brak przesunięcia. (Ie9855) - Dodaliśmy opcję przekazywania wartości
ScrollState
podczas tworzenia elementuDropdownMenu
lubExposedDropdownMenu
, aby kontrolować stan przewijania w pionie 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ę funkcję w przypadku bardziej zaawansowanego arkusza u dołu ekranu (I40af0). - Dodano parametr koloru do
BasicText
, aby umożliwić efektywne animowanie lub ustawianie koloru tekstu. (Iffd88, b/246961787) - Zmiana nazwy usługi Semantics
isContainer
naisTraversalGroup
(I121f6)
Poprawki błędów
- Naprawiliśmy
AlertDialog
działanie odrzucania, aby pojawiało się pod działaniem potwierdzania, gdy działania były ułożone jeden nad drugim, aby zmieścić się w oknie dialogowym. Ta poprawka dostosowuje implementację do specyfikacji Material Design. (I029de, b/235454277)
Wersja 1.5.0-alpha04
10 maja 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.0-alpha04
Wersja 1.5.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Przenosimy zależność od gęstości na poziom komponentu. Dotyczy to tych komponentów:
BottomDrawer
,ModalBottomSheetLayout
,BottomSheetScaffold
,Switch
,ModalDrawer
. Użyj nowego przeciążenia, w którym gęstość jest parametrem. (I8fbd8)
Wersja 1.5.0-alpha03
19 kwietnia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.0-alpha03
Wersja 1.5.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Zaktualizuj wewnętrzne elementy
BottomDrawer
, aby korzystać z nowych interfejsów APISwipeableV2
. Z tego powoduBottomDrawerState
będzie teraz zawierać tylko interfejsy API zdefiniowane na poziomie klasy i nie będzie dziedziczyć metod ani właściwości zSwipeableState
. Używamy kompozycji z wewnętrznym numeremSwipeableV2State
. Przesunięcie jest teraz właściwością zmiennoprzecinkową, która może przyjmować wartość null. Bieżąca wartość i wartość docelowa przesunięcia są nadal dostępne za pomocą właściwości currentValue i targetValue. Poprzednie metody poziomu klasy, takie jak otwieranie/rozwijanie/zamykanie i właściwości, takie jakisOpen/isClosed
, są nadal obsługiwane. (Iad40c, b/178529942, b/220676296)
Poprawki błędów
- Zaktualizowano wewnętrzne elementy komponentu Przełącznik. Podczas przeciągania przełącznik będzie teraz wyświetlać podgląd najbliższego stanu (stanu docelowego). (Id90d4)
- Treści animowane w arkuszu (np.
Modifier.animateContentSize
w treści arkusza) wBottomSheetScaffold
zostały zoptymalizowane i działają teraz płynnie. (Ia913c, b/270518202, b/254446195) BottomSheetScaffold
nie będzie już uczestniczyć w zagnieżdżonym przewijaniu, gdy wartośćgesturesEnabled
będzie ustawiona nafalse
. (I634f3, b/215403277)
Wersja 1.5.0-alpha02
5 kwietnia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.0-alpha02
Wersja 1.5.0-alpha02 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd, który powodował awarię
BottomSheetScaffold
, gdy w przypadku slotów podano puste treści. (Ib24a5, b/235588730) - Naprawia problem z
PullRefreshIndicator
przechwytującym kliknięcia i zdarzenia wskaźnika (2494256, b/271777421)
Wersja 1.5.0-alpha01
22 marca 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.5.0-alpha01
Wersja 1.5.0-alpha01 zawiera te zmiany.
Poprawki błędów
- Dodaj przykład przepływu grupy elementów. Zaktualizuj poziomy odstęp między elementami podrzędnymi w przykładzie grupy pojedynczych elementów, aby był zgodny ze specyfikacją. (I3b155)
- Rozwiązaliśmy problem, który w rzadkich przypadkach powodował awarię
ModalBottomSheetLayout
podczas 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 ze zmianą numeru wersji).
Wersja 1.4.2
19 kwietnia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.4.2
Wersja 1.4.2 zawiera te zmiany.
Wersja 1.4.1
5 kwietnia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.4.1
Wersja 1.4.1 zawiera te zmiany.
Wersja 1.4.0
22 marca 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.4.0
Wersja 1.4.0 zawiera te zmiany.
Ważne zmiany od wersji 1.3.0
Zmiany w interfejsie API
- Dodaj
Modifier.minimumInteractiveComponentSize
. Można go użyć do zarezerwowania co najmniej 48 dp, aby odróżnić interakcje dotykowe, jeśli element jest mniejszy. (I33f58, b/258495559) - Wprowadzono zmiany w interfejsach API do przesuwania w
ModalDrawer
.DrawerState
animateTo
zostało zastąpione metodami open i close, a offset jest teraz dopuszczalny. Użyj aplikacjirequireOffset
, aby wymagać przesunięcia. (I3de9e) - Dodano parametr
minLines
do komponentów tekstowych material i material3,TextField
iOutlinedTextField
, który umożliwia ustawienie minimalnej wysokości komponentu w wierszach (I4af1d). - Dodano parametr
minLines
do parametrówBasicText
iBasicTextField
. Umożliwia ustawienie minimalnej wysokości tych komponentów w liczbie wierszy (I24294, b/122476634).
Wersja 1.4.0-rc01
8 marca 2023 r.
androidx.compose.material:material-*:1.4.0-rc01
zostaje opublikowany bez zmian. Wersja 1.4.0-rc01 zawiera te zmiany.
Wersja 1.4.0-beta02
22 lutego 2023 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.4.0-beta02
Wersja 1.4.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadzono zmiany w interfejsach API do przesuwania w
BottomSheetScaffold
. ParametrconfirmStateChange
użytkownikaBottomSheetState
został zmieniony naconfirmValueChange
.progress
jest teraz udostępniana jako wartość zmiennoprzecinkowa.animateTo
isnapTo
są wewnętrzne. Zamiast niej używaj kolumnexpand()
icollapse()
. Usunięto elementydirection
ioverflow
.offset
zostało zastąpione przezrequireOffset()
. (I323b4)
Poprawki błędów
- Usunięto role semantyczne z obszarów klikalnych i wybieralnych, a komponenty, które ich używały, zaktualizowano tak, aby ustawiały role za pomocą modyfikatora semantics (Ibb4ba).
- Drobna aktualizacja rozszerzonych ikon Material Design, która wprowadza zmiany w ikonach wypełnionych
desktop_mac
,directions
ikitchen
. (I65f5e)
Wersja 1.4.0-beta01
8 lutego 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.4.0-beta01
Wersja 1.4.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Rozwiązaliśmy problem, który powodował, że
pullRefresh
nie wykorzystywał prędkości, co powodowało wyświetlanie przewijania poza zakres. Zmieniono też sygnaturę interfejsu API funkcjionRelease
wModifier.pullRefresh
, aby zwracała wartość zmiennoprzecinkową dla zużytej prędkości (I7db65, b/266874741). - Przywróć getter właściwości
LocalMinimuTouchTargetEnforcement
i oznacz go jako wycofany, a następnie przekieruj doLocalMinimumInteractiveComponentEnforcement
. (I60dd5)
Wersja 1.4.0-alpha05
25 stycznia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.4.0-alpha05
Wersja 1.4.0-alpha05 zawiera te zmiany.
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 w pewnych okolicznościach powodował awarię arkusza podczas przechodzenia ze stanu ukrytego do widocznego. (Ia9265, b/265444789)
Wersja 1.4.0-alpha04
11 stycznia 2023 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.4.0-alpha04
Wersja 1.4.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano właściwość semantyczną
IsContainer
w przestrzeniach. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie znaczenia semantycznego elementów, takich jak powierzchnie. (I63379) - Oznacz funkcję
snapTo
w komponencie Drawer jako nieeksperymentalny interfejs API. (Ib9c18, b/261425368) - Dodaliśmy parametr koloru ścieżki dla kołowych wskaźników postępu oraz parametr zakończenia linii dla kołowych i liniowych wskaźników postępu. (Ie668c, b/216325962, b/222964817)
- Zmieniliśmy nazwę
confirmStateChange
w przypadkuModalBottomSheetState
,ModalBottomSheetState.Saver
irememberModalBottomSheetState
naconfirmValueChange
. (Ib48d1) - Większa możliwość zwracania wartości null przez wycofane i ukryte funkcje (Ibf7b0)
- Dodaj
Modifier.minimumInteractiveComponentSize
. Można go użyć do zarezerwowania co najmniej 48 dp, aby odróżnić interakcje dotykowe, jeśli element jest mniejszy. (I33f58, b/258495559) - Wprowadzono zmiany w interfejsach API do przesuwania w
ModalBottomSheetLayout
. FunkcjaanimateTo
wModalBottomSheetState
nie przyjmuje już parametruanimationSpec
, a wartośćoffset
jest teraz dopuszczalna. UżyjrequireOffset
, aby wymagaćoffset
. (Ia2e79)
Poprawki błędów
- Arkusz
ModalBottomSheetLayout
ma teraz maksymalną szerokość 640 dp. (I71a4f, b/234927577) - Rozwiązaliśmy problem polegający na tym, że
rememberPullRefreshState
nie aktualizował z czasem wartościrefreshThreshold
irefreshingOffset
. (Ifed10, b/263159832) - Postęp wskaźników postępu jest teraz prawidłowo ograniczony do oczekiwanego zakresu. (I8a7eb, b/262262727)
- Gdy
ModalBottomSheetState
nie otrzyma jeszcze żadnych kotwic, zaktualizujecurrentValue
bez animacji, gdy zamiast wyjątku zostaną wywołanesnapTo
lubanimateTo
. (I2c91b) - Poprawiono stan włączenia w implementacji Material 2
FilterChip
. (Id326a, b/261329817) - Usunęliśmy błąd, który powodował awarię
ModalBottomSheetLayout
, jeśli podczas obracania z orientacji pionowej na poziomą był onHalfExpanded
. Sprawdź, czy przekazujesz prawidłowyinitialValue
, np. sprawdzając konfigurację. (Ie8df7, b/182882364) - Rozwiązaliśmy problem, który powodował awarię
ModalBottomSheetLayout
, jeśli arkusz był pusty.ModalBottomSheetLayout
zezwala teraz na puste treści arkusza. Jeśli arkusz jest pusty, będzie miał tylko stan Ukryty. (Ic2288, b/200980998, b/216693030)
Znany problem
- Podczas aktualizacji z wersji
androidx.compose.foundation:1.4.0-alpha03
doandroidx.compose.foundation:1.4.0-alpha04
może wystąpić błądjava.lang.NoSuchFieldError
. Tutaj problem został zgłoszony po raz pierwszy. Poprawka została przesłana i będzie dostępna w kolejnej aktualizacji Compose. Aby rozwiązać ten problem, zaktualizuj bibliotekiandroidx.compose.material
iandroidx.compose.material3
do najnowszej wersji(1.1.0-alpha04) lub przywróćandroidx.compose.foundation
do wersji 1.4.0-alpha03.
Wersja 1.4.0-alpha03
7 grudnia 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.4.0-alpha03
Wersja 1.4.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodawanie adnotacji
@JvmDefaultWithCompatibility
(I8f206) - Wprowadzono zmiany w interfejsach API
Swipeable
w przeglądarceModalDrawer
.animateTo
użytkownikaDrawerState
została zastąpiona metodamiopen
iclose
, a przesunięcie może teraz przyjmować wartość null. Użyj aplikacjirequireOffset
, aby wymagać przesunięcia. (I3de9e) - Dodaliśmy interfejs Modifier API do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych. (I2ba9d, b/203141462)
- Używany w
Clickable
do prawidłowego opóźniania interakcji z naciśnięciem, gdy gesty mogą stać się zdarzeniami przewijania. - Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów falowania przez element
Clickables
, gdy jest używany w elemencieScrollable ViewGroup
. - Zaktualizowano panele i arkusze, 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ł, że funkcja
PullRefreshIndicator
mogła się zawieszać po wywołaniu funkcjionRefresh
, jeśli stan odświeżania nie został zmieniony na „true”. (Ie2416, b/248274004)
Aktualizacje zależności
- Biblioteki Compose UI i Compose Material zależą teraz od biblioteki Lifecycle w wersji 2.5.1. (I05ab0, b/258038814)
Wersja 1.4.0-alpha02
9 listopada 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.4.0-alpha02
Wersja 1.4.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Atrybuty
awaitFirstDown
iwaitForUpOrCancellation
akceptują terazPointerEventPass
, co zapewnia większą elastyczność. (I7579a, b/212091796) - Dodano parametr
minLines
do komponentów tekstowych material i material3,TextField
iOutlinedTextField
, który umożliwia ustawienie minimalnej wysokości komponentu w wierszach (I4af1d). - Dodano parametr
minLines
do parametrówBasicTex
iBasicTextField
. Umożliwia ustawienie minimalnej wysokości tych komponentów w liczbie wierszy (I24294, b/122476634).
Wersja 1.4.0-alpha01
24 października 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.4.0-alpha01
Wersja 1.4.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy nową metodę
awaitEachGesture()
dla detektorów gestów. Działa podobnie doforEachGesture()
, ale pętla gestów działa w całości w ramachAwaitPointerEventScope
, więc zdarzenia nie mogą zostać utracone między iteracjami. - Element
forEachGesture()
został wycofany na rzecz elementuawaitEachGesture()
, ponieważ umożliwiał utratę zdarzeń między gestami. (Iffc3f, b/251260206)
Wersja 1.3
Wersja 1.3.1
9 listopada 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.3.1
Wersja 1.3.1 zawiera te zmiany.
Wersja 1.3.0
24 października 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.3.0
Wersja 1.3.0 zawiera te zmiany.
Ważne zmiany od wersji 1.2.0
Zmiana powodująca niezgodność
- Maksymalna obsługiwana wysokość w oknach i wyskakujących okienkach została zmniejszona do 8 dp.
Zmiany w interfejsie API
- Dodaj komponent Pull-To-Refresh do Compose (I29168).
- Zmiana nazwy parametru z wartości na wartość w suwaku zakresu (I3b79a).
Wersja 1.3.0-rc01
5 października 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.3.0-rc01
Wersja 1.3.0-rc01 zawiera te zmiany.
Wersja 1.3.0-beta03
21 września 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.3.0-beta03
Wersja 1.3.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodawanie komponentu „Przeciągnij, aby odświeżyć” do Compose (I29168)
Wersja 1.3.0-beta02
7 września 2022 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.3.0-beta02
Wersja 1.3.0-beta02 zawiera te zmiany.
Brak zmian od wersji 1.3.0-beta01
Wersja 1.3.0-beta01
24 sierpnia 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.3.0-beta01
Wersja 1.3.0-beta01 zawiera te zmiany.
Zmiana powodująca niezgodność
Maksymalna obsługiwana wysokość w oknach i wyskakujących okienkach została zmniejszona do 8 dp.
Maksymalna obsługiwana wysokość dla okien dialogowych i wyskakujących w Compose została zmniejszona z 30 dp do 8 dp. Ta zmiana dotyczy zarówno niestandardowych okien dialogowych, jak i wyskakujących okien interfejsu. Ta zmiana ma na celu wyeliminowanie błędu ułatwień dostępu w wersjach Androida starszych niż S oraz zapewnienie, że usługi ułatwień dostępu w tych oknach będą mogły wchodzić w interakcje z zawartością w oknie dialogowym lub wyskakującym.
Ta zmiana będzie miała wpływ tylko na użytkowników, którzy tworzą niestandardowe okno lub wyskakujące okienko z ustawionym poziomem wyższym niż 8 dp. Rozważ zmniejszenie wysokości okna dialogowego lub wyskakującego. Jeśli chcesz zrezygnować z tego nowego zachowania, rozważ utworzenie własnego okna lub wyskakującego okienka z ustawionym odpowiednim poziomem. Nie jest to zalecane, ponieważ może negatywnie wpłynąć na ułatwienia dostępu. Deweloper musi zadbać o to, aby dolna część okna lub wyskakującego okienka była interaktywna i czytelna dla usług ułatwień dostępu.
Wersja 1.3.0-alpha03
10 sierpnia 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.3.0-alpha03
Wersja 1.3.0-alpha03 zawiera te zmiany.
Wersja 1.3.0-alpha02
27 lipca 2022 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.3.0-alpha02
Wersja 1.3.0-alpha02 zawiera te zmiany.
Wkład zewnętrzny
- Rozwiązywanie problemu
AnimatedVisibility
zFloatingActionButton
w Scaffold (I3a0ae, b/224005027)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.3.0-alpha01
Wersja 1.3.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Zmiana nazwy parametru z values na value w
RangeSlider
(I3b79a)
Poprawki błędów
- Zaktualizuj próbkę plakietki, aby podać bardziej znaczący opis treści. (I10b9d)
Wersja 1.2
Wersja 1.2.1
10 sierpnia 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.1
Wersja 1.2.1 zawiera te zmiany.
Wersja 1.2.0
27 lipca 2022 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0
Wersja 1.2.0 zawiera te zmiany.
Wersja 1.2.0-rc03
29 czerwca 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-rc03
Wersja 1.2.0-rc03 zawiera te zmiany.
- Brak zmian od wersji 1.2.0-rc02.
Wersja 1.2.0-rc02
22 czerwca 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-rc02
Wersja 1.2.0-rc02 zawiera te zmiany.
Wersja 1.2.0-rc01
15 czerwca 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-rc01
Wersja 1.2.0-rc01 zawiera te zmiany.
Zmiany w interfejsie API
- Interfejsy w bibliotekach Compose są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1).
Poprawki błędów
- Aktualizuje plakietkę z kartą ikony wiodącej, aby przymocować plakietkę do etykiety zamiast do ikony. (I90993)
Wersja 1.2.0-beta03
1 czerwca 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-beta03
Wersja 1.2.0-beta03 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy błąd, który powodował, że element
BottomSheetScaffold
był rysowany nad cieniem górnego paska aplikacji.BottomSheetScaffold
uwzględnia teraz także stan arkusza podczas umieszczania pasków informacyjnych: w stanie zwiniętym paski informacyjne są umieszczane nad arkuszem i przyciskiem FAB, a w stanie rozwiniętym są przytwierdzane do dolnej części arkusza. (Ia80b5, b/187771422)
Wersja 1.2.0-beta02
18 maja 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-beta02
Wersja 1.2.0-beta02 zawiera te zmiany.
Wersja 1.2.0-beta01
11 maja 2022 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-beta01
Wersja 1.2.0-beta01 zawiera te zmiany.
Nowe funkcje
- To pierwsza wersja beta 1.2.
Zmiany w interfejsie API
- Zmieniono nazwę funkcji
TextFieldDefaults.BorderStroke
, która rysuje obrys wOutlinedTextField
, naTextFieldDefaults.BorderBox
. (I5f295)
Wersja 1.2.0-alpha08
20 kwietnia 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-alpha08
Wersja 1.2.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Częściowe wykorzystanie (obniżenie lub pozycja) zostało wycofane w
PointerInputChange
. Aby w pełni wykorzystać zmianę, możesz użyćconsume()
. Możesz użyćisConsumed
, aby sprawdzić, czy ktoś inny wcześniej wykorzystał tę zmianę. PointerInputChange::copy()
zawsze tworzy teraz płytką kopię. Oznacza to, że po wykorzystaniu jednej kopiiPointerInputChange
zostaną wykorzystane kolejne kopie. Jeśli chcesz utworzyć niepowiązany elementPointerInputChange
, użyj konstruktora. (Ie6be4, b/225669674)
Wersja 1.2.0-alpha07
6 kwietnia 2022 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-alpha07
Wersja 1.2.0-alpha07 zawiera te zmiany.
Wersja 1.2.0-alpha06
23 marca 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-alpha06
Wersja 1.2.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Aktualizacje interfejsu API klikalnych kart w celu dostosowania go do zmian w interfejsie Surface API (I56bcb)
- Aktualizacje interfejsu Material 2 Surface API, które dodają dodatkowe przeciążone funkcje dla powierzchni, które można wybrać i przełączać. (Ifcca5)
Wersja 1.2.0-alpha05
9 marca 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-alpha05
Wersja 1.2.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Wartości
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 do androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)- Cofnięto poprzednią zmianę polegającą na korzystaniu wyłącznie z widoku w przypadku
WindowInsetsControllerCompat
. Ponownie wymagane jest okno, które jest niezbędne do zarządzania niektórymi flagami okna. WycofanoViewCompat.getWindowInsetsController
na rzeczWindowCompat.getInsetsController
, aby mieć pewność, że używane jest prawidłowe okno (np. gdy widok znajduje się w oknie dialogowym). (I660ae, b/219572936) - Tekst:
includeFontPadding
jest teraz domyślnie wyłączony. Problemy z obcinaniem wynikające zincludeFontPadding=false
zostały rozwiązane i nie powinno już dochodzić do obcinania w przypadku wysokich skryptów. (I31c84, b/171394808) - Dodano nowy interfejs API
LazyVerticalGrid
do określania rozmiarów osi poprzecznej (I17723).
Wersja 1.2.0-alpha04
23 lutego 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-alpha04
Wersja 1.2.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
Add support for filter chips
(I39a6e, b/192585545)- Dodano
TextFieldDecorationBox
iOutlinedTextFieldDecorationBox
. Używanie ich razem zBasicTextField
pomoże Ci tworzyć niestandardowe pola tekstowe oparte na polach tekstowych Material Design, ale z większą liczbą opcji dostosowywania. - Dodano możliwość dostosowywania dopełnienia poziomego i pionowego w polach tekstowych. (I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617)
Dodano adnotacje
ComposableTarget
,ComposableTargetMarker
iComposableOpenTarget
, które umożliwiają zgłaszanie w czasie kompilacji sytuacji, w których funkcja typu „composable” jest wywoływana w odniesieniu do narzędzia, do którego nie została zaprojektowana.W większości przypadków adnotacje te mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Nie można wywnioskować przypadków, w których tworzony jest i używany niestandardowy aplikator, abstrakcyjne funkcje kompozycyjne (np. metody interfejsu), pola lub zmienne globalne, które są kompozycyjnymi wyrażeniami lambda (zmienne lokalne i parametry są wywnioskowane), lub gdy używana jest funkcja
ComposeNode
lub powiązane funkcje kompozycyjne.W przypadku niestandardowych funkcji stosujących funkcje kompozycyjne, które wywołują
ComposeNode
lubReusableComposeNode
, należy dodać adnotacjęCompoableTarget
do funkcji i wszystkich typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji, która jest oznaczona symbolemComposableTargetMarker
, a następnie użycie tej adnotacji zamiast symboluComposableTarget
. Adnotacja kompozycyjna oznaczona symbolemComposableTargetMarker
jest równoważna adnotacjiComposbleTarget
z pełną i jednoznaczną nazwą klasy atrybutu jako parametrem stosującym. Przykład użycia elementuComposableTargetMarker
znajdziesz w sekcjianroidx.compose.ui.UiComposable
. (I38f11)
Wersja 1.2.0-alpha03
9 lutego 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-alpha03
Wersja 1.2.0-alpha03 zawiera te zmiany.
Poprawki błędów
- Przykładowa dodana grupa elementów (I97080, b/192585545)
Wersja 1.2.0-alpha02
26 stycznia 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-alpha02
Wersja 1.2.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy
NonRestartableComposable
do metod, które są przeciążeniami istniejących metod bez złożonej logiki. Zmniejsza to liczbę sprawdzania przez kompilator zapamiętywania (równości) w przypadku wszystkich parametrów, które powtarzają się w wywoływanej funkcji wewnętrznej. (I90490) - Dodanie obsługi elementu działania (I07100, b/192585545)
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.2.0-alpha01
Wersja 1.2.0-alpha01 zawiera te zmiany.
Aktualizacje zależności
- Teraz zależy od Kotlin
1.6.10
.
Wkład zewnętrzny
ModalBottomSheetState
ma teraz flagęisSkipHalfExpanded
. Można ją ustawić w konstruktorze lub zaktualizować później, ustawiając właściwośćisSkipHalfExpanded
elementuModalBottomSheetState
na wartośćtrue
. Aktualizacja wartościisSkipHalfExpanded
powoduje ponowne skomponowanie arkusza. (I18b86, b/186669820)
Wersja 1.1
Wersja 1.1.1
23 lutego 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.1
Wersja 1.1.1 zawiera te zmiany.
Poprawki błędów
- Rozwiązanie problemu
NullPointerException
na stronieandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Naprawiliśmy awarię spowodowaną zawartością schowka podczas odczytywania danych ze schowka na urządzeniu z Androidem. (I06020, b/197769306)
- Poprawiono układ od prawej do lewej w
LazyVerticalGrid
(aosp/1931080, b/207510535)
Wersja 1.1.0
9 lutego 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0
Wersja 1.1.0 zawiera te zmiany.
Ważne zmiany od wersji 1.0.0
- Stabilna obsługa efektu przewijania w Androidzie 12
- Ulepszenia rozmiaru obszaru dotyku
- Pamiętaj, że w przypadku Compose 1.0 komponenty Material rozszerzą swój obszar układu, aby spełnić wytyczne dotyczące ułatwień dostępu w interfejsie Material w zakresie rozmiaru docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48x48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu biblioteka Compose Material zachowuje się tak samo jak komponenty Material Design, co zapewnia spójność, jeśli używasz widoków i biblioteki Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu za pomocą komponentów Compose Material spełnione zostaną minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
- Stabilna obsługa kolumny nawigacji
- Przenosi kilka wcześniej eksperymentalnych interfejsów API do wersji stabilnej.
- Obsługa nowszych wersji języka Kotlin
Wersja 1.1.0-rc03
26 stycznia 2022 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-rc03
Wersja 1.1.0-rc03 zawiera te zmiany.
Zmiany w działaniu
Pamiętaj, że w przypadku Compose 1.0 komponenty Material rozszerzą swój obszar układu, aby spełnić wymagania dotyczące rozmiaru docelowego elementu dotykowego w wytycznych dotyczących ułatwień dostępu. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48x48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu biblioteka Compose Material zachowuje się tak samo jak komponenty Material Design, co zapewnia spójność, jeśli używasz widoków i biblioteki Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu za pomocą komponentów Compose Material spełnione zostaną minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
Poprawki błędów
- Dodano lepsze informacje do debugowania w inspektorze układu podczas sprawdzania modyfikatorów minimalnego obszaru docelowego dotknięcia. (aosp/1955036)
Wersja 1.1.0-rc01
15 grudnia 2021 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-rc01
Wersja 1.1.0-rc01 zawiera te zmiany.
Poprawki błędów
- Poprawienie promienia zaokrąglenia stosowanego w przypadku
Checkbox
es (I38b03, b/175198975, b/202309440)
Wersja 1.1.0-beta04
1 grudnia 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-beta04
Wersja 1.1.0-beta04 zawiera te zmiany.
Nowe funkcje
- Zaktualizowano, aby była zgodna z Kotlinem
1.6.0
Wersja 1.1.0-beta03
17 listopada 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-beta03
Wersja 1.1.0-beta03 zawiera te commity.
Wersja 1.1.0-beta02
3 listopada 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-beta02
Wersja 1.1.0-beta02 zawiera te zmiany.
Poprawki błędów
- Efekty falowania i inne wskaźniki będą teraz opóźniane tylko wtedy, gdy znajdują się w kontenerze Modifier.scrollable(), a nie zawsze w przypadku zdarzenia naciśnięcia. (Ibefe0, b/203141462)
Wersja 1.1.0-beta01
27 października 2021 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-beta01
Wersja 1.1.0-beta01 zawiera te zmiany.
Nowe funkcje
- Efekty falowania obsługują teraz stany najechania kursorem i aktywacji, więc najechanie kursorem lub aktywowanie komponentu, takiego jak przycisk, spowoduje wyświetlenie prawidłowej nakładki stanu.
Wersja 1.1.0-alpha06
13 października 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-alpha06
Wersja 1.1.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano przeciążenie bez elementów podrzędnych dla układu, co zwiększa wydajność (Ib0d9a).
- Implementacja
ExposedDropdownMenu
na podstawieExposedDropdownMenuBox
z elementamiTextField
iDropdownMenu
wewnątrz (If60b2) - Do usługi
PopupProperties
dodano usługędismissOnOutsideClick
, która zastąpiła wycofaną usługędismissOnClickOutside
. Nowa właściwość otrzymuje pozycję kliknięcia i granice elementu zakotwiczonego, co zapewnia większą kontrolę nad tym, czy należy wywołać funkcję onDismissRequest. Może to być przydatne np. w zapobieganiu zamykaniu kotwicy w wyniku dotknięcia jej.- Do
updateAndroidWindowManagerFlags
dodanoPopupProperties
, co zapewnia niskopoziomową kontrolę 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 powodują powstanie flag WindowManager, np. focusable. Wynikiem działania funkcji lambda będą końcowe flagi, które zostaną przekazane do menedżera okien Androida. Domyślnie funkcja updateAndroidWindowManagerFlags pozostawia flagi obliczone na podstawie parametrów bez zmian. Tego interfejsu API należy używać ostrożnie, tylko w przypadkach, gdy wyskakujące okienko ma bardzo specyficzne wymagania dotyczące działania. (I6e9f9)
- Do
Wersja 1.1.0-alpha05
29 września 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-alpha05
Wersja 1.1.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje minimalny rozmiar docelowego elementu dotykowego w przypadku komponentów Material, które nie mają dostępnego docelowego elementu dotykowego. Dodaje to dodatkowe odstępy wokół komponentów, aby zapewnić im wystarczająco duży docelowy obszar dotykowy. Może to zmienić istniejące interfejsy, które zakładają, że rozmiar tych komponentów jest ich rozmiarem wizualnym i nie uwzględniają rozmiaru docelowego obszaru dotykowego. Możesz użyć eksperymentalnego elementu
LocalMinimumTouchTargetEnforcement
composition local, aby wyłączyć to zachowanie w całej hierarchii, ale jest to tylko tymczasowe rozwiązanie, które ma ułatwić aktualizowanie istniejących interfejsów, aby uwzględniały nowy minimalny rozmiar. (I9b966, b/149691127, b/171509422) - Dodaliśmy eksperymentalny interfejs TextFieldColorsWithIcons, który rozszerza TextFieldColors, aby udostępniać InteractionSource do leadingColor i trailingColor. Umożliwia to modyfikowanie wyglądu elementu TextField w zależności od stanu fokusu. (I66923, b/198402662)
Wersja 1.1.0-alpha04
15 września 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-alpha04
Wersja 1.1.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Wycofano funkcje
performGesture
iGestureScope
, które zostały zastąpione przezperformTouchInput
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 ułatwień dostępu. (I2e14b, b/197751214)
Poprawki błędów
- Zezwalaj na rozszerzanie granic docelowego obszaru kliknięcia poza region przycinania na potrzeby minimalnego docelowego obszaru kliknięcia. (I43e10, b/171509422)
- Zaktualizowano funkcję
Divider
, aby uwzględniała parametrDp.Hairline
określający grubość, co umożliwia rysowanie separatorów o szerokości 1 piksela niezależnie od gęstości wyświetlacza. (I16ffb, b/196840810)
Wersja 1.1.0-alpha03
1 września 2021 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-alpha03
Wersja 1.1.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Zaktualizowano Compose
1.1.0-alpha03
, aby zależał od Kotlin1.5.30
. (I74545)
Zmiany w interfejsie API
- Dodano metodę testową, aby uzyskać przycięte granice. (I6b28e)
- Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (Ie861c)
Wersja 1.1.0-alpha02
18 sierpnia 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-alpha02
Wersja 1.1.0-alpha02 zawiera te zmiany.
Wkład zewnętrzny
- Naprawiliśmy działanie elementu SwipeableState w przypadku, gdy przesunięcie przesunięcia mieści się w granicach błędu zaokrąglenia kotwicy. (I03d39, b/191993377)
Wersja 1.1.0-alpha01
4 sierpnia 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.1.0-alpha01
Wersja 1.1.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Zaktualizowana metoda
DrawScope#drawImage
, która pobiera prostokąty źródłowe i docelowe, aby pobierać opcjonalny parametr FilterQuality. Jest to przydatne w przypadku grafiki pikselowej, która ma być pikselowana po powiększeniu. Zaktualizowano funkcję kompozycyjną BitmapPainter + Image, aby przyjmowała też opcjonalny parametr FilterQuality (Ie4fb0, b/180311607) - Zmiana nazwy BadgeBox na BadgedBox, zmiana parametrów w celu akceptowania komponentu Badge. Dodano komponent Badge, który jest typową treścią plakietki w komponencie BadgedBox. (I639c6)
- Dodano komponent NavigationRail. Informacje o sposobie użycia znajdziesz w dokumentacji i przykładach (I8de77).
Poprawki błędów
- Dodanie przykładu elementu NavigationRail wyrównanego do dołu i wersji demonstracyjnej aplikacji Katalog. (I3cffc)
- Okna dialogowe są teraz dopasowywane do rozmiaru platformy. Aby zastąpić to działanie, ustaw wartość usePlatformDefaultWidth na false. (Iffaed, b/192682388)
- Dodaliśmy do aplikacji katalogu wersję demonstracyjną paska nawigacyjnego. (I04960)
- Dodaliśmy do aplikacji katalogu wersję demonstracyjną plakietki. (If285d)
Wersja 1.0
Wersja 1.0.5
3 listopada 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.5
Wersja 1.0.5 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy awarię śledzenia instancji derivedStateOf. (aosp/1792247)
Wersja 1.0.4
13 października 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.4
Wersja 1.0.4 zawiera te zmiany.
Aktualizacje zależności
- Zaktualizowano, aby zależał od Kotlin
1.5.31
Wersja 1.0.3
29 września 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.3
Wersja 1.0.3 zawiera te zmiany.
Aktualizacje zależności
- Zaktualizowano, aby zależał od Kotlin
1.5.30
Wersja 1.0.2
1 września 2021 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.0.2
Wersja 1.0.2 zawiera te zmiany.
Zaktualizowano, aby obsługiwać wersję 1.0.2
Compose. Compose 1.0.2
jest nadal zgodny z Kotlinem 1.5.21
.
Wersja 1.0.1
4 sierpnia 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.1
Wersja 1.0.1 zawiera te zmiany.
Aktualizacje zależności
- Zaktualizowano, aby zależał od Kotlina w wersji
1.5.21
.
Wersja 1.0.0
28 lipca 2021 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0
Wersja 1.0.0 zawiera te zmiany.
Główne funkcje wersji 1.0.0
To pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu o wersji Compose.
Znane problemy
Jeśli używasz Androida Studio Bumblebee Canary 4 lub AGP
7.1.0-alpha04
/7.1.0-alpha05
, może wystąpić ten błąd:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Aby to naprawić, tymczasowo zwiększ wartość minSdkVersion do 24 lub więcej w pliku
build.gradle
. Ten problem zostanie rozwiązany w kolejnej wersji Androida Studio Bumblebee i AGP7.1
. (b/194289155)
Wersja 1.0.0-rc02
14 lipca 2021 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-rc02
Wersja 1.0.0-rc02 zawiera te zmiany.
Poprawki błędów
- Okna dialogowe są teraz dopasowywane do rozmiaru platformy. Aby zastąpić to działanie, ustaw wartość
usePlatformDefaultWidth
na false. (Iffaed, b/192682388)
Wersja 1.0.0-rc01
1 lipca 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-rc01
Wersja 1.0.0-rc01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano komponent
BadgeBox
. Informacje o używaniu znajdziesz w dokumentacji i przykładach (I5e284). - Nazwa elementu
useDefaultMaxWidth
wPopupProperties
została zmieniona nausePlatformDefaultWidth
. (I05710) - Okna dialogowe mogą teraz korzystać z całej szerokości ekranu. (I83929, b/190810877)
- Dodano eksperymentalną implementację suwaka zakresu (I2f4b3)
Poprawki błędów
- Aby zachować zgodność ze specyfikacjami Material Design, w przypadku komponentu OutlinedTextField z nieprawidłowymi danymi wejściowymi przestaliśmy używać koloru błędu dla etykiety, gdy jest ona używana jako obiekt zastępczy. Druga sytuacja ma miejsce, gdy w polu tekstowym nie ma tekstu wejściowego i nie jest ono zaznaczone. Wraz z tą zmianą zmieniło się też znaczenie parametru
error:Boolean
w funkcjiTextFieldColors.labelColor()
: będzie ona teraz zwracać wartośćfalse
nawet wtedy, gdy dane wejściowe są nieprawidłowe, jeśli etykieta jest używana jako symbol zastępczy. (I45f78)
Wersja 1.0.0-beta09
16 czerwca 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-beta09
Wersja 1.0.0-beta09 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano parametr Shape do komponentu OutlinedTextField, aby można było dostosować kształt obramowania (I8f39e, b/181322957).
- TextOverflow jest zmieniany na klasę wbudowaną. (I433af)
Poprawki błędów
- Scrim w komponencie 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 kompozycji (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
Czym są reguły profilu?
Reguły profilu dla biblioteki są określone w pliku tekstowym
baseline-prof.txt
znajdującym się w katalogusrc/main
lub w odpowiednim katalogu. Plik zawiera regułę w każdym wierszu. Reguła jest w tym przypadku wzorcem dopasowywanym do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART czytelnego dla człowieka, który jest używany podczas korzystania zadb shell profman --dump-classes-and-methods ...
. Reguły te przyjmują jedną z 2 form, aby kierować reklamy na metody lub klasy.Reguła metody będzie mieć ten wzorzec:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Reguła klasy będzie miała następujący wzorzec:
<CLASS_DESCRIPTOR>
W tym przypadku
<FLAGS>
to co najmniej jeden z tych znaków:H
,S
iP
. Wskazuje on, czy ta metoda powinna być oznaczona jako „Hot”, „Startup” lub „Post Startup”.<CLASS_DESCRIPTOR>
to deskryptor klasy, do której należy kierowana metoda. Na przykład klasaandroidx.compose.runtime.SlotTable
będzie miała deskryptorLandroidx/compose/runtime/SlotTable;
.Symbol
<METHOD_SIGNATURE>
to sygnatura metody, która zawiera jej nazwę, typy parametrów i typy zwracanych wartości. Na przykład metodafun isPlaced(): Boolean
wLayoutNode
ma sygnaturęisPlaced()Z
.Wzorce mogą zawierać symbole wieloznaczne (
**
,*
i?
), dzięki czemu jedna reguła może obejmować wiele metod lub klas.
Do czego służą reguły?
Metoda oznaczona flagą
H
jest metodą „gorącą” i powinna być skompilowana z wyprzedzeniem.Metoda z flagą
S
wskazuje, że jest to metoda wywoływana podczas uruchamiania i powinna być skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretacji metody podczas uruchamiania.Metoda oznaczona flagą
P
jest wywoływana po uruchomieniu.Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona w stercie, aby uniknąć kosztów ładowania klasy.
Jak to działa?
- Biblioteki mogą definiować te reguły, które będą pakowane w artefakty AAR. Gdy zostanie utworzony plik APK zawierający te artefakty, reguły zostaną scalone, a scalonych reguł użyje się do utworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla pliku APK. ART może następnie wykorzystać ten profil podczas instalowania pliku APK na urządzeniach, aby skompilować z wyprzedzeniem określony podzbiór aplikacji i zwiększyć jej wydajność, zwłaszcza podczas pierwszego uruchomienia. Nie będzie to miało wpływu na aplikacje, które można debugować.
Wersja 1.0.0-beta08
2 czerwca 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-beta08
Wersja 1.0.0-beta08 zawiera te zmiany.
Nowe funkcje
Zmiana w interfejsie API, która może wpłynąć na działanie
- ZMIANA ZACHOWANIA: komponent Card teraz konsumuje kliknięcia, co sprawia, że kliknięcia dodane za pomocą
Card(Modifier.clickable)
nie mają żadnego efektu. Użyj nowego eksperymentalnego przeciążenia komponentu Card, które akceptuje onClick. (Ia8744, b/183775620)- Dodano nowe przeciążenie karty, które obsługuje kliknięcia oraz inne funkcje klikania: wskazanie, źródło interakcji, włączanie i wyłączanie. Nie można było użyć zwykłej karty, której nie można kliknąć, z
Modifier.clickable
, ponieważ w takich przypadkach karta nie przycinałaby efektu fali.
- Dodano nowe przeciążenie karty, które obsługuje kliknięcia oraz inne funkcje klikania: wskazanie, źródło interakcji, włączanie i wyłączanie. Nie można było użyć zwykłej karty, której nie można kliknąć, z
- ZMIANA ZACHOWANIA: komponent Surface teraz wykorzystuje kliknięcia, co sprawia, że kliknięcia dodane za pomocą
Surface(Modifier.clickable)
nie mają żadnego efektu. Używaj nowej eksperymentalnej wersji komponentu Surface, która akceptuje onClick. (I73e6c, b/183775620)- Dodano nowe przeciążenie Surface, które obsługuje kliknięcia oraz inne funkcje klikalne: wskazanie, źródło interakcji, włączone/wyłączone. Nie można było użyć zwykłej, nieklikanej powierzchni z
Modifier.clickable
, ponieważ w takich przypadkach nie będzie ona przycinać efektu fali.
- Dodano nowe przeciążenie Surface, które obsługuje kliknięcia oraz inne funkcje klikalne: wskazanie, źródło interakcji, włączone/wyłączone. Nie można było użyć zwykłej, nieklikanej powierzchni z
Zmiany w interfejsie API
FabPosition
został przekonwertowany na klasę wbudowaną z wyliczenia, aby umożliwić potencjalne rozszerzenie w przyszłości (I030fb).- Zmieniliśmy sposób używania wyliczeń na klasy wbudowane, aby uniknąć problemów z wyczerpującymi instrukcjami „when” po dodaniu nowych wartości wyliczenia. (I2b5eb)
- Dodaje limit czasu kliknięcia do elementów klikalnych i przełączalnych, aby zapobiec wyświetlaniu efektu fali podczas przewijania lub przeciągania (Ia2704, b/168524931).
- Właściwości semantyczne ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je scalić w takiej postaci, w jakiej są, zamiast je łączyć. Udostępniliśmy też lepsze interfejsy API do testowania, które pozwalają korzystać z tych zmian (Ica6bf, b/184825850).
- Środowisko wykonawcze
Modifier.focusModifier()
zostało wycofane i zastąpione środowiskiemModifier.focusTarget()
(I6c860). - Zastąpiono wyliczenie
FocusState
interfejsemFocusState
(Iccc1a, b/187055290). - Usunięto
LocalRippleNativeRendering
, ponieważ implementacja efektu fali opartego na widoku jest stabilna (I7fab3, b/188569367)
Poprawki błędów
Modifier.onGloballyPositioned()
została zmieniona tak, 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 teraz na to, jakie współrzędne będą raportowane. (Ieb67d, b/177926591)- Dodaliśmy plik README do istniejącego katalogu Compose Material. (If9191)
Wersja 1.0.0-beta07
18 maja 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-beta07
Wersja 1.0.0-beta07 zawiera te zmiany.
Zmiany w interfejsie API
- Nie musisz już używać metod rozszerzających do obsługi tras w Navigation Compose. (I22beb, b/172823546)
Wersja 1.0.0-beta06
5 maja 2021 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-beta06
Wersja 1.0.0-beta06 zawiera te zmiany.
Zmiany w interfejsie API
- Ripple zostało przeniesione do wewnętrznego korzystania z
RippleDrawable
na urządzeniach z Androidem. Oznacza to, że animacje rozchodzenia się fali będą wykonywane w wątku renderowania, a więc będą płynne nawet wtedy, gdy wątek interfejsu będzie obciążony, np. podczas przechodzenia między ekranami. Nie zmienia to interfejsu API efektu fali, ale w wyniku tej zmiany mogą wystąpić zmiany w jego działaniu. Aby ułatwić migrację, dodanoLocalRippleNativeRendering
. Podaj wartośćfalse
w tym elemencie CompositionLocal, aby wrócić do poprzedniej implementacji efektu falowania w elemencie CompositionLocalProvider. Ten interfejs API jest tymczasowy i zostanie w przyszłości usunięty, więc jeśli napotkasz problemy, które spowodują, że będziesz musiał go użyć, 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łowe dane wejściowe (I12997, b/180584804, b/182142737).
Poprawki błędów
- Zaktualizowano implementację wstawek katalogu Compose Material z: https://github.com/google/accompanist/pull/365. (I25dc3)
- Elementy podrzędne Row i Column z atrybutem weight(fill = false) nie powodują już wypełniania przez element nadrzędny całej dostępnej przestrzeni osi głównej. (Ied94d, b/186012444, b/184355105)
Wersja 1.0.0-beta05
21 kwietnia 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-beta05
Wersja 1.0.0-beta05 zawiera te zmiany.
Poprawki błędów
- Dodaliśmy do istniejącego katalogu Compose Material obrazy kafelków komponentów, selektor motywów i bardziej szczegółowe adresy URL menu. (I9b58e)
Wersja 1.0.0-beta04
7 kwietnia 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-beta04
Wersja 1.0.0-beta04 zawiera te zmiany.
Zmiany w interfejsie API
- ZMIANA API:
DrawerState
stan nie rozszerza już eksperymentalnego stanu SwipeableState.- ZMIANA INTERFEJSU API:
BottomDrawerState
został oznaczony jako eksperymentalny, aby pasował do komponentu BottomDrawer, który jest już eksperymentalny (I81114, b/181656094).
- ZMIANA INTERFEJSU API:
- Zmień nazwy
hideSoftwareKeyboard
ishowSoftwareKeyboard
nahide()
ishow()
odpowiednio.SoftwareKeyboardController
- Udostępnia pełny interfejs CompositionLocal dla LocalSoftwareKeyboardController, co umożliwia jego ustawienie (szczególnie przydatne w testach) (I579a6).
- Dodano interfejs API ułatwień dostępu LiveRegion. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadomią użytkownika o jego zmianach (Idcf6f, b/172590946).
Poprawki błędów
- Dodano implementację katalogu Compose Material do istniejącego modułu. Obecnie brakuje: obrazów kafelków komponentów, selektora motywów (zostanie dodany w ramach kolejnych zmian). (Ie7a94)
Wersja 1.0.0-beta03
24 marca 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-beta03
Wersja 1.0.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Środowisko wykonawcze
DefaultMonotonicFrameClock
zostało wycofane. Wywołanie funkcjiwithFrameNanos
lubRecomposer.runRecomposeAndApplyChanges
bez argumentuMonotonicFrameClock
spowoduje teraz zgłoszenie błęduIllegalStateException
. (I4eb0d) - Dodaliśmy nowy interfejs API
LeadingIconTab
, który umożliwia wyświetlanie ikony i tekstu w karcie. (I23267)
Wkład zewnętrzny
- [by Jossi Wolf]
BottomDrawer
otacza teraz zawartość slota szuflady.BottomDrawer
nie zgłasza błęduIllegalStateException
, gdy element nadrzędny ma nieskończoną wysokość. Jeśli dolny panel jest mniejszy niż 50% panelu nadrzędnego, otworzy się w stanie rozwiniętym. Dokumenty dotycząceBottomDrawerState
iModalBottomSheetLayoutState
zostały zaktualizowane.BottomDrawerState#isOpen
zwraca teraz wartość „prawda”, jeśli jest w stanie otwartym lub rozwiniętym. (I87241)
Wersja 1.0.0-beta02
10 marca 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-beta02
Wersja 1.0.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano nowy interfejs API
LocalSoftwareKeyboardController
composition localSoftwareKeyboardController
, który zastępuje poprzedni interfejsSoftwareKeyboardController
w polu TextField. (I5951e, b/168778053)
Poprawki błędów
- Wymuszanie ograniczeń dotyczących publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
- Zmieniono domyślne wyrównanie w poziomie w przypadku komponentów TopAppBar i BottomAppBar na Start, co jest zgodne z komponentem Row (Ib2dc7).
- Dodano nowy moduł i interfejs zastępczy dla katalogu Compose Material, który jest obecnie zagnieżdżony w istniejących wersjach demonstracyjnych testów integracyjnych. (Idfcb3)
androidx.compose.ui:ui
nie zależy już od AppCompat ani Fragment. Jeśli w aplikacji używasz elementu ComposeView oraz komponentów Fragment lub AppCompat, upewnij się, że korzystasz z wersji AppCompat 1.3 lub nowszej albo Fragment 1.3 lub nowszej. Te wersje są potrzebne do prawidłowego ustawienia właścicieli cyklu życia i zapisanego stanu wymaganych w przypadku elementu ComposeView. (I1d6fa, b/161814404)
Wersja 1.0.0-beta01
24 lutego 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-beta01
Wersja 1.0.0-beta01 zawiera te zmiany.
To pierwsza wersja Compose 1.0.0 w wersji beta.
Zmiany w interfejsie API
- Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmieniono nazwy modyfikatorów Modifier.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwy modyfikatorów Modifier.preferredWidth/preferredHeight/preferredSize na width/height/size. (I5b414)
- imageResource i vectorResource są teraz funkcjami rozszerzającymi odpowiednio klasy ImageBitmap i ImageVector. Funkcje load{Image,Vector,Font}Resource zostały usunięte. (I89130)
- Modyfikatory rozmiaru do wartości wewnętrznych nie są już eksperymentalne. (I15744)
- Usunięto asercje dp (I798d2)
- Usunięto wywołanie zwrotne SoftwareKeyboardController ze wszystkich pól tekstowych. Wkrótce zostanie ono zastąpione nowym interfejsem API. (Iae869, b/168778053)
- Funkcje lambda działań Switch, Checkbox i RadioButton mogą teraz przyjmować wartość null. Przykłady pól wyboru w wierszu z możliwością kliknięcia zostały zaktualizowane, aby korzystać z tej funkcji. (If601b, b/171819073)
InteractionState
zostało zastąpione przez[Mutable]InteractionSource
- Interfejsy odpowiadają za emitowanie i zbieranie zdarzeń interakcji.
- Zamiast przekazywać wartość
interactionState = remember { InteractionState() }
do komponentów takich jakButton
iModifier.clickable()
, użyj wartościinteractionSource = remember { MutableInteractionSource() }
. - Zamiast:
Interaction.Pressed in interactionState
używaj funkcji rozszerzających w klasie InteractionSource, np. InteractionSource.collectIsPressedAsState(). - W przypadku złożonych przypadków użycia możesz użyć InteractionSource.interactions, aby obserwować strumień interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Dodanie interfejsu AccessibilityManager i LocalAccessibilityManager do CompositionLocals (I53520)
- Usunięto wycofane metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent używaj funkcji (I580ed, b/169874631, b/175142755)
- Suwak obsługuje teraz stan włączony/wyłączony (I6d56b, b/179793072)
- Utworzono nową klasę TextInputSession dla sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, takich jak CoreTextField. (I8817f, b/177662148)
- Usunięto AnimationEndReason.Interrupted. Jeśli animacja zostanie przerwana, zostanie zgłoszony wyjątek CancellationException. (I2cbbc, b/179695417)
- Usunięto
@ExperimentalRippleApi
i zmienionoRippleAlpha
na klasę z właściwościami zamiast interfejsu. (I6df7c) - Dodano interfejs TextFieldColors, który reprezentuje różne kolory używane w elementach TextField i OutlinedTextField w różnych stanach. W przypadku domyślnej implementacji zobacz TextFieldDefaults.textFieldColors i TextFieldDefaults.outlinedTextFieldColors.
- Zmiana nazwy parametru isErrorValue w komponentach TextField i OutlinedTextField 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).
Dodanie funkcji LazyListState.animateScrollToItem
Ta metoda umożliwia płynne przewijanie do określonego elementu na liście. (I4bfd7)
ScrollableState.smoothScrollBy()
zmieniono nazwę naanimateScrollBy()
LazyListState.snapToItemIndex()
zmieniono nazwę nascrollToItem()
ScrollState.smoothScrollTo()
zmieniono nazwę naanimateScrollTo()
(I35ded)Wszystkie funkcje kompozycyjne oznaczone symbolem
@ReadOnlyComposable
są teraz weryfikowane w czasie kompilacji, aby mieć pewność, że wywołują tylko inne funkcje kompozycyjne oznaczone symbolem@ReadOnlyComposables
(I58961).Interfejs TargetAnimation API został usunięty. (If47d1, b/177457083)
Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana przez liczby całkowite (I81298).
Pakiety metod smoothScrollBy i scrollBy zmieniono na
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)Klasa FlingConfig została zmieniona na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych zanikań. (I02b86, b/175294473)
Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmieniono nazwy modyfikatorów Modifier.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwy modyfikatorów Modifier.preferredWidth/preferredHeight/preferredSize na width/height/size. (I5b414)
defaultMinSizeConstraints zmieniono na defaultMinSize. (I4eaae)
Orientacja została przeniesiona do pakietu podstawowego. VelocityTracker został przeniesiony z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)
Funkcje drawerState.open() i drawerState.close() są teraz funkcjami zawieszającymi. Aby wywołać te funkcje, użyj funkcji rememberCoroutineScope() w zakresie kompozycji (I16f60, b/175294473).
Element Providers został zmieniony na CompositionLocalProvider
- Konstruktor Composition nie akceptuje już parametru key i został wycofany.
- currentCompositeKeyHash został przekształcony w właściwość najwyższego poziomu typu „composable”, a nie w funkcję najwyższego poziomu typu „composable”.
- Klasy CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- Typ ComposableLambda został zmieniony z klasy konkretnej na interfejs i nie ma już parametrów typu.
- ComposableLambdaN stał się interfejsem zamiast konkretnej klasy i nie ma już parametrów typu.
- Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
- metoda scalania SnapshotMutationPolicy nie jest już eksperymentalna;
- Usunęliśmy funkcję
@TestOnly
clearRoots najwyższego poziomu. Nie jest już potrzebny. - Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
- Funkcja Composer.collectKeySourceInformation została usunięta. Nie jest już potrzebny.
- Usunęliśmy metody isJoinedKey, joinedKeyLeft i joinedKeyRight. 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 języku Kotlin spowoduje to przerwanie zgodności binarnej, ale nie zgodności kodu źródłowego, więc nie powinno stanowić problemu dla większości użytkowników.
- (I99b7d, b/177245490)
Zmodyfikowano element Modifier.scrollable. Zamiast klasy ScrollableController używa teraz interfejsu Scrollable (I4f5a5, b/174485541, b/175294473).
Modifier.draggable akceptuje teraz DraggableState zamiast zwykłej lambdy. Stan możesz utworzyć za pomocą
rememberDraggableState { delta -> }
, aby uzyskać takie samo działanie jak wcześniej (Ica70f, b/175294473).Funkcje ZoomableController.smoothScaleBy i ZoomableController.stopAnimation są teraz funkcjami zawieszania. (I7f970, b/177457083)
Usunięto niektóre wcześniej wycofane interfejsy API (Ice5da, b/178633932).
Wprowadziliśmy te zmiany w interfejsie Material API:
- Dodano parametr contentPadding do komponentów TopAppBar i BottomAppBar, aby umożliwić dostosowywanie domyślnego dopełnienia.
- Zmieniono kolejność parametrów w komponencie BackdropScaffold, aby była zgodna z wytycznymi interfejsu API, zgodnie z którymi parametry wymagane powinny występować przed parametrami opcjonalnymi.
- Parametr
icon
w elemencie BottomNavigationItem został przeniesiony i jest teraz po parametrachselected
ionClick
. - Zmieniono nazwę parametru
alwaysShowLabels
w elemencie BottomNavigationItem naalwaysShowLabel
. - W kilku komponentach zmieniliśmy nazwy parametrów
bodyContent
nacontent
. - Zmieniono kolejność parametrów w zdarzeniu
ButtonDefaults.buttonColors()
. Pamiętaj, że typ parametrów nie uległ zmianie, więc nie spowoduje to błędu w kodzie. Upewnij się, że używasz nazwanych parametrów lub ręcznie zaktualizuj kolejność, w przeciwnym razie kod nie będzie działać tak jak wcześniej. - Dodano parametr
secondaryVariant
dodarkColors()
. Ten kolor jest zwykle taki sam jaksecondary
w ciemnym motywie, ale dodajemy go, aby zapewnić spójność i umożliwić 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ę
onValueChangeEnd
wSlider
naonValueChangeFinished
i ustawiono możliwość przyjmowania wartości null. - Zmieniono nazwę parametru
text
wSnackbar
nacontent
, aby zachować spójność. - Dodano parametr
contentPadding
doDropdownMenuItem
, aby umożliwić dostosowywanie domyślnego dopełnienia, i sprawiono, żecontent
jest rozszerzeniemRowScope
. - Zmieniono nazwę
ModalDrawerLayout
naModalDrawer
. - Zmieniono nazwę
BottomDrawerLayout
naBottomDrawer
. - (I1cc66)
Komponent BasicTextField akceptuje teraz obiekt Brush zamiast Color, co zapewnia większe możliwości dostosowywania (I83a36).
imageResource i vectorResource są teraz funkcjami rozszerzającymi odpowiednio klasy 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(). Funkcja IndicationInstance powinna odpowiadać tylko za rysowanie efektów wizualnych, a nie za uruchamianie animacji ani zapisywanie stanu w odpowiedzi na zmiany InteractionState. Animacje i zapisy stanu powinny następować w ciągu
rememberUpdatedIndication()
. Parametrindication
w plikuModifier.indication
został też zmieniony na wymagany. (Ic1764, b/152525426)
Poprawki błędów
- Dodano nowy lokalny interfejs API LocalSoftwareKeyboardController, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I658b6, b/168778053)
Wersja 1.0.0-alpha12
10 lutego 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-alpha12
Wersja 1.0.0-alpha12 zawiera te zmiany.
Zmiany w interfejsie API
- Funkcja Modifier.pointerInput wymaga teraz kluczy pamięci, aby wskazywać, kiedy korutyna wykrywania danych wejściowych wskaźnika powinna zostać ponownie uruchomiona w przypadku nowych zależności. (I849cd)
- Elementy BottomDrawerLayout i ListItem zostały oznaczone jako @ExperimentalMaterialApi (Id766e)
- Dodano PaddingValues.Absolute, którego można używać w interfejsach API akceptujących PaddingValues. (Ia5f30)
- onImeActionPerformed jest wycofana. Zamiast niej używaj KeyboardActions (If0bbd, b/179071523)
- Aby lepiej dopasować konwencje nazewnictwa do ImageBitmap i ImageVector, zmieniliśmy nazwę ImagePainter na BitmapPainter, aby była podobna do VectorPainter. (Iba381, b/174565889)
- Funkcje Animatable.snapTo i Animatable.stop są teraz funkcjami zawieszania (If4288).
- Funkcja ComponentActivity.setContent została przeniesiona do androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
- Metody destrukcji i copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
- Ustawienie funkcji halfExpand() i expand() w ModalBottomSheetState jako wewnętrznych (Ic914e)
- Zmieniono funkcję Indication#createInstance, aby była funkcją @Composable, a zmieniono LocalIndication, aby zawierała Indication, a nie () -> Indication. (I5eeea, b/157150564)
- Przeniesiono AlertDialog i DropdownMenu, aby na razie były dostępne tylko na Androidzie. Dodano parametr PopupProperties do komponentu DropdownMenu, aby umożliwić dalszą konfigurację bazowego komponentu Popup. (I9c443)
- Funkcja loadFontResource została wycofana. Zamiast nich używaj fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj painterResource. (I6b809)
- Usunięto parametry
toggle
itoggleModifier
z komponentu DropdownMenu oraz zmieniono nazwy parametrówdropdownModifier
,dropdownOffset
idropdownContent
na odpowiedniomodifier
,offset
icontent
. Komponent DropdownMenu działa teraz tak samo jakPopup
, gdzie do określania pozycji menu używany jest układ nadrzędny. W większości przypadków możesz przenieść elementtoggle
, aby był elementem podrzędnym elementuDropdownMenu
, i umieścić oba elementy w elemencieBox
. Więcej informacji o korzystaniu z tego interfejsu API znajdziesz w zaktualizowanym przykładzie w dokumentacji. (I884fb) - Nazwa funkcji toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)
- Zmieniliśmy nazwę IntBounds na IntRect i ulepszyliśmy interfejs API. (I1f6ff)
- Dodano działania semantyczne rozwijania i zwijania. Dodano funkcje expand i halfExpand w ModalBottomSheetState (Ib5064)
- Modyfikator Modifier.dragGestureFilter został wycofany. Zamiast niej używaj zasady
Modifier.pointerInput { detectDragGestures (...)}
. Możesz też użyć modyfikatora Modifier.draggable do przeciągania w jednej osi (I0ba93, b/175294473). - Zmieniliśmy nazwę Ambients, aby pasowała do zmiany nazwy Ambient -> CompositionLocal. Komponenty Ambients miały wcześniej nazwy AmbientFoo, a teraz komponenty CompositionLocals mają nazwy LocalFoo. (I2d55d)
- Zaznaczenie zostało przeniesione do warstwy podstawowej. (I7892b)
- Podobnie jak wcześniej usunęliśmy funkcję
state { 0 }
i teraz promujemy używanie funkcjiremember { mutableStateOf(0) }
, usuniemy funkcjęsavedInstanceState { 0 }
. Zamiast tego użyjrememberSaveable { mutableStateOf(0) }
. Będzie on automatycznie zapisywać i przywracać stan, jeśli typ użyty w MutableState można zapisać w obiekcie Bundle. Jeśli wcześniej przekazywano niestandardowy obiekt zapisujący, teraz trzeba użyć nowego przeciążenia funkcji rememberSaveable, które ma parametrstateSaver
. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczać nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05)
Adnotacja @ComposableContract została wycofana na rzecz 3 bardziej szczegółowych adnotacji.
@ComposableContract(restartable = false)
zmieniło się w@NonRestartableComposable
@ComposableContract(readonly = true)
zmieniło się w@ReadOnlyComposable
@ComposableContract(preventCapture = true)
zmieniło się w@DisallowComposableCalls
@ComposableContract(tracked = true)
został(a) usunięty(a).- (I60a9d)
Narzędzia
emptyContent()
i(@Composable () -> Unit).orEmpty()
zostały wycofane, ponieważ nie mają już pozytywnego wpływu na skuteczność ani wartość (I0484d).Funkcja rememberSavedInstanceState() została zmieniona na rememberSaveable() i przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)
Funkcje Saver, listSaver(), mapSaver() i autoSaver zostały przeniesione z pakietu androidx.compose.runtime.savedinstancestate do pakietu androidx.compose.runtime.saveable (I77fe6).
Parametry w klasach RounderCornerShape, CutCornerShape i CornerBasedShape zostały zmienione z left/right na start/end, aby obsługiwać automatyczne odbijanie kształtu w kierunku od prawej do lewej. Kształty AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone w przypadkach, gdy automatyczne dublowanie nie jest pożądane. (I61040, b/152756983)
Zmieniliśmy parametry
text
iicon
komponentu Tab oraz parametrlabel
komponentu BottomNavigationItem, aby dopuszczały wartość null. Dzięki temu lepiej odzwierciedlają zachowanie komponentu, gdy te parametry są lub nie są podane, ponieważ wpływa to na rozmiar i układ komponentu. Jeśli obecnie przekazujesz wartośćemptyContent()
, aby oznaczyć brak tekstu, ikony lub etykiety, użyj zamiast tego wartościnull
. (I57ed4)Zmiana nazwy parametru koloru contentColorFor na backgroundColor (I5bb67)
Wycofano TabDefaults i zastąpiono go TabRowDefaults. (I0f189)
Wprowadzono interfejs ColorMatrix API, który służy do modyfikowania wartości RGB treści źródłowych. Przebudowano interfejs ColorFilter API, aby był interfejsem i pasował do implementacji interfejsu PathEffect. (Ica1e8)
Właściwość AnimatedValue/Float została wycofana. Zamiast tego użyj Animatable. (I71345, b/177457083)
Dodano interfejs API SemanticsProperties.PaneTitle. (I20d5a)
Dodaliśmy włączone parametry do elementów Tab i BottomNavigationItem, aby uniemożliwić ich klikanie. Zmieniono BottomNavigationItem na RowScope.BottomNavigationItem, aby lepiej wyrazić wymagania dotyczące układu w interfejsie API. (Id683d)
Funkcje tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj funkcji Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)
Dodaj parametr layoutDirection do metody createOutline klasy 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 now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. Ponowne komponowanie i tyknięcia animacji oparte na withFrameNanos są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (I38e11)
Poprawki błędów
- Ikona będzie teraz skalowana w górę, aby dopasować się do swojego rozmiaru, z uwzględnieniem zastosowanych do niej modyfikatorów rozmiaru. Na przykład
Icon(.., modifier = Modifier.size(50.dp)
będzie teraz rysowany w przestrzeni 50 x 50 dp. (Ib2ba9, b/178796190)
Wersja 1.0.0-alpha11
28 stycznia 2021 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-alpha11
Wersja 1.0.0-alpha11 zawiera te zmiany.
Zmiany w interfejsie API
- Promuje niektóre interfejsy API Material, aby nie były już
@Experimental
(I5d20e) - Do komponentów Obraz i Ikona dodaliśmy parametr opis treści. Służy do przekazywania opisu usługom ułatwień dostępu (I2ac4c).
- Zmienia interfejsy parametrów stanowych Material na funkcje @Composable, które zwracają
State<T>
. DodajeAnimatable.asState()
, aby ułatwić przekształcenie obiektu Animatable w stan. Zmienia też animateElevation, aby było rozszerzeniem zawieszającym w Animatable. (If613c) - Snackbar, SnackbarHost, SnackbarHostState nie są już
@ExperimentalMaterialAPI
(Id1fb5) - Zmienia typografię, kształty i pozycję karty, aby nie były już klasami danych. Dodaje funkcję kopiowania typografii i kształtów, aby zastąpić wygenerowane elementy. (I40037)
- Usunięto niektóre wycofane wcześniej interfejsy API Material (Ifaa25)
Poprawki błędów
- Funkcje onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect API (If760e).
- Wycofano przejście oparte na TransitionDefinition (I0ac57)
- Stan początkowy w funkcji updateTransition jest teraz obsługiwany (Ifd51d).
- Funkcja WithConstraints została przekształcona w BoxWithConstraints i przeniesiona do pakietu foundation.layout. (I9420b, b/173387208)
Wycofanie funkcji scrollBy, która nie wstrzymuje działania, i usunięcie funkcji scrollTo, która nie wstrzymuje działania
Zalecamy teraz używanie funkcji zawieszania do kontrolowania przewijania i oczekiwania na jego zakończenie. W ramach tej zmiany wycofujemy lub usuwamy wersje tych funkcji, które nie powodują zawieszenia. (Ie9ced)
Wycofanie funkcji smoothScrollBy, która nie jest funkcją zawieszającą Zalecamy teraz używanie funkcji zawieszających do sterowania przewijaniem i oczekiwania na zakończenie przewijania. W ramach tej zmiany wycofujemy wersje tych funkcji, które nie są zawieszane. (I12880)
Wprowadzono
ComposeContentTestRule
, która rozszerzaComposeTestRule
i definiujesetContent
, która została usunięta zComposeTestRule
. Dodano metodę fabrycznącreateEmptyComposeRule()
, która zwraca obiektComposeTestRule
i nie uruchamia aktywności. Użyj tej opcji, gdy chcesz uruchomić aktywność podczas testu, np.za pomocąActivityScenario.launch
(I9d782, b/174472899).Efekt falowania używany w komponentach Button i FloatingActionButton nie może być już dostosowywany przez podanie nowego wskaźnika za pomocą AmbientIndication – nigdy nie miało to być sposobem na dostosowywanie tych komponentów, a teraz są one zgodne z innymi komponentami Material. Aby dostosować efekty falowania w aplikacji, zapoznaj się z informacjami o motywie RippleTheme. (I546c5)
Funkcja animateAsState została zmieniona na animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)
Komponent BasicTextField otrzymał nowy parametr o nazwie
decorationBox
. Umożliwia dodawanie do pola tekstowego elementów dekoracyjnych, takich jak ikony, symbole zastępcze czy etykiety, oraz zwiększanie obszaru docelowego kliknięcia. (I16996)Poprawka błędu, który uniemożliwiał ustawienie szerokości pola tekstowego materiału na mniej niż 280 pikseli dp (I78373).
Usunięto parametr canDrag z funkcji Modifier.draggable (Ic4bec, b/175294473)
Usuń displaySize, ponieważ należy go unikać. Zwykle lepiej jest używać rozmiaru onRoot() lub co najmniej rozmiaru okna. (I62db4)
Komponent Surface może teraz mieć wiele elementów podrzędnych układu. (I66a92, b/144488459)
Funkcje invalidate i compositionReference() zostały wycofane na rzecz funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)
Zmiana PopupPositionProvider na używanie współrzędnych względnych okna, a nie współrzędnych globalnych. Zmienia nazwę parentGlobalBounds na anchorBounds, a windowGlobalBounds na
windowSize: IntSize
(I2994a).Wartości Duration i Uptime zostaną zastąpione wartościami Long milliseconds, a ten krok usuwa zależność danych wejściowych wskaźnika od tych klas. (Ia33b2, b/175142755, b/177420019)
Usunięto funkcję AnimatedFloat.fling, która akceptuje FlingConfig. Zamiast niej użyj metody suspend Animatable.animateDecay. (I4659b, b/177457083)
elementy klikalne, przełączane i możliwe do zaznaczenia można teraz tworzyć poza kompozycją (I0a130, b/172938345, b/175294473);
Zmieniono funkcję wygładzania na interfejs funkcyjny (Ib14e5).
Komponenty ScrollableColumn i ScrollableRow zostały wycofane. Używanie komponentu ScrollableColumn jest mniej wydajne niż LazyColumn w przypadku dużych treści przewijanych, ponieważ w przypadku LazyColumn możemy tylko tworzyć, mierzyć i rysować widoczne elementy. Aby zapobiec nieefektywnemu korzystaniu z tej funkcji, zdecydowaliśmy się wycofać ScrollableColumn i ScrollableRow oraz promować zamiast nich LazyColumn i LazyRow. Użytkownicy mogą nadal decydować, że nie potrzebują leniwego zachowania, i używać modyfikatorów bezpośrednio, np. Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).
Nowa metoda fabryczna
items(count: Int)
dla zakresu LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
iitemsIndexed(items: List)
są teraz funkcjami rozszerzającymi, więc musisz je importować ręcznie, gdy są używane. Nowe przeciążenia rozszerzeń dla tablic:items(items: Array)
iitemsIndexed(Array)
(I803fc, b/175562574)Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374)
Wycofaliśmy metody globalnych współrzędnych i wprowadziliśmy nowe metody współrzędnych oparte na oknach. (Iee284)
Dodano Modifier.toolingGraphicsLayer, który dodaje modyfikator warstwy graficznej, gdy włączone jest sprawdzanie. (I315df)
Funkcja FocusRequester.createRefs została oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)
Właściwość SemanticsPropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Zmieniliśmy nazwę AccessibilityRangeInfo na ProgressBarRangeInfo. Zmieniliśmy nazwę stateDescriptionRange na progressBarRangeInfo. Zmieniliśmy nazwę AccessibilityScrollState na ScrollAxisRange. Zmieniliśmy nazwę horizontalAccessibilityScrollState na horizontalScrollAxisRange. Zmieniliśmy nazwę verticalAccessibilityScrollState na verticalScrollAxisRange. (Id3148)
Używanie TestCoroutineDispatcher w testach (I532b6)
Zaktualizowano interfejs API grafiki wektorowej, aby obsługiwał analizowanie odcieni zastosowanych do głównego elementu grafiki wektorowej. (Id9d53, b/177210509)
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-alpha10
Wersja 1.0.0-alpha10 zawiera te zmiany.
Zmiany w interfejsie API
- Zmodyfikowano Velocity, aby zawierał części składowe i operacje matematyczne. (Ib0447)
- Zmieniono nazwę
@ExperimentalTesting
na@ExperimentalTestApi
, aby była zgodna z podobnymi adnotacjami interfejsu API w wersji eksperymentalnej (Ia4502, b/171464963). - Zmiana nazwy pozycji na DpOffset i usunięcie funkcji getDistance() (Ib2dfd)
- Zmiana nazwy funkcji Color.useOrElse() na Color.takeOrElse() (Ifdcf5)
- Dodaj przełącznik do pliku foundation Strings.kt (I4a5b7, b/172366489)
- Komponenty FlowRow i FlowColumn zostały wycofane. Zamiast niego użyj układu niestandardowego. (I09027)
- Funkcje Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj funkcji Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Przeniesiono klasę nativeClass do modułu ui i ustawiono ją jako wewnętrzną. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast niego używać „is MyClass”. (I4f734)
Poprawki błędów
- Dodano obsługę wyłączonych i tylko do odczytu pól tekstowych (I35279, b/171040474, b/166478534)
animate()
zastępuje terazanimateAsState()
, która zwracaState<T>
zamiastT
. Zapewnia to lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczytywana jest wartość State. (Ib179e)- Dodaj interfejs API roli Semantics i dodaj rolę jako parametr do klikalnego, wybieralnego i przełączalnego elementu SemanticsModifier. Zmiana parametru Modifier.progressSemantics, aby można było go używać także w przypadku suwaka. (I216cd)
Wersja 1.0.0-alpha09
16 grudnia 2020 roku
Zostanie wycofaneandroidx.compose.material:material-*:1.0.0-alpha09
Wersja 1.0.0-alpha09 zawiera te zmiany.
Zmiany w interfejsie API
- dodano interfejs API do ręcznego wywoływania animacji rozliczenia i przeciągania w funkcji Modifier.swipeable (Iaa17a, b/162408885);
- Zmieniono nazwy obiektów *Constants, np. ButtonConstants, tak aby kończyły się słowem Defaults, np. ButtonDefaults. Usuwa też niepotrzebne prefiksy
default
z właściwości w tych nowych obiektach. (Ibb915, b/159982740) Compose obsługuje funkcje pobierające właściwości, które mogą wywoływać funkcje kompozycyjne. Obsługa tej funkcji nie zostanie wycofana, ale zmieni się składnia deklarowania funkcji pobierającej właściwość jako @Composable.
Obecnie przestarzała składnia polegała na dodaniu adnotacji do samej właściwości:
@Composable val someProperty: Int get() = ...
Prawidłowa składnia w tym przypadku to dodanie adnotacji do funkcji pobierającej właściwość:
val someProperty: Int @Composable get() = ...
Obie składnie będą działać przez pewien czas, ale starsza składnia zostanie ostatecznie uznana za błąd kompilacji. (Id9197)
Dodano bibliotekę
androidx.compose.material:material-ripple
zawierającą interfejsy API efektu falowania, które umożliwiają tworzenie interaktywnych komponentów bez konieczności korzystania z pozostałej części biblioteki Material. Funkcja rememberRippleIndication została wycofana i zastąpiona funkcją rememberRipple. (Ibdf11)
Poprawki błędów
- Funkcje lambda w modyfikatorach przesunięcia zwracają teraz IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
Zrefaktoryzowano klasę ShaderBrush, aby leniwie tworzyć instancję shadera, gdy dostępne są informacje o rozmiarze środowiska rysowania. Przydaje się to do definiowania gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania elementu kompozycyjnego, bez konieczności implementowania niestandardowych implementacji DrawModifier.
Wycofano interfejsy API konstruktora funkcji gradientu na rzecz metod fabrykujących w obiekcie Gradient. (I511fc, b/173066799)
Pole Modifier.focusObserver zostało wycofane. Zamiast tego użyj Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego używaj komponentów LazyColumn i LazyRow (I5b48c).
Przeniesiono Dp.VectorConverter, Position.VectorConverter itp. do pakietu animation-core i wycofano stare konwertery wektorów (If0c4b).
Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga zgody użytkownika (I0a1ec).
Dodawanie deklaracji destrukcyjnych do tworzenia instancji FocusRequester (I35d84, b/174817008)
accessibilityLabel zmieniono na contentDescription. accessibilityValue zmieniono na stateDescription. (I250f2)
Nowa funkcja infiniteRepeatable do tworzenia elementu InfiniteRepeatableSpec (I668e5)
Zmieniliśmy nieznacznie pozycjonowanie menu DropdownMenu zgodnie ze specyfikacją Material. (I34c72, b/168594123)
Dodano obsługę stanu interakcji w przypadku pól tekstowych. (I61d91)
Dodano Modifier.clearAndSetSemantics, aby wyczyścić semantykę elementów podrzędnych i ustawić nową. (I277ca)
Przeniesiono klasę ContentDrawScope do modułu ui-graphics, aby była razem z klasą DrawScope. (Iee043, b/173832789)
Wersja 1.0.0-alpha08
2 grudnia 2020 r.
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ą zwalniane. Wersja 1.0.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Motyw MaterialTheme ustawia teraz prawidłowe kolory uchwytów zaznaczenia i tła zaznaczenia. Aplikacje inne niż Material mogą ręcznie używać AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
- Dodano sprawdzanie składni nazw i pozycji parametrów funkcji lambda, aby zapewnić zgodność ze wskazówkami dotyczącymi Compose.
Zgodnie z kontrolą składni i wskazówkami zmieniliśmy też nazwy niektórych interfejsów API, które używały
children
jako nazwy funkcji lambda na końcu, nacontent
. (Iec48e) - Zmiana nazwy VectorAsset na ImageVector. Przeniesienie i zmiana nazwy VectorAsset na Builder, aby była klasą wewnętrzną ImageVector zgodnie z wytycznymi rady API. Dodano alias typu VectorAssetBuilder, aby zapewnić zgodność z ImageVector.Builder. (Icfdc8)
- Zmieniliśmy nazwy ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
- Przeniesiono właściwości semantyczne podstaw do interfejsu (I6f05c)
- Interfejs
fun RippleIndication()
został wycofany i zastąpiony interfejsemrememberRippleIndication()
, aby zachować spójność z innymi interfejsami API. (Id8e2c) - Dodano parametr singeLine do komponentów BasicTextField, TextField i OutlinedTextField. Ustaw ten parametr na „true”, aby pole tekstowe było pojedynczą linią z możliwością przewijania w poziomie. (I57004, b/168187755)
Poprawki błędów
- Dodaj działanie semantyczne Odrzuć (I2b706)
- Przeniesiono interfejsy API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, który zawiera aliasy typów i metody pomocnicze ułatwiające migrację z przestarzałych interfejsów API na obecne. (Id6044, b/173834241)
- Zmiana nazwy Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowano też powiązane klasy do GraphicsLayer zgodnie z opiniami o interfejsie API. (I0bd29, b/173834241)
- Element
<T>
został usunięty z deklaracji SubcomposeLayout. Możesz teraz używać tego atrybutu bez określania typu. (Ib60c8) - Dodano interfejsy API Modifier.scale/rotate jako ułatwienia dla drawLayer.
- Zmieniono nazwę
Modifier.drawOpacity
naModifier.alpha
- Nazwa
Modifier.drawShadow
została zmieniona naModifier.shadow
(I264ca, b/173208140)
- Zmieniono nazwę
- Parametr wyrównania komponentu Box został zmieniony na contentAlignment. (I2c957)
- Modyfikatory offsetPx zostały zmienione na offset. Przyjmują teraz parametry lambda zamiast stanu. (Ic3021, b/173594846)
- Wprowadzono interfejsy SweepGradientShader i SweepGradientBrush API. (Ia22c1)
- Dodaliśmy sprawdzanie parametrów modyfikatora w funkcjach kompozycyjnych. Ta kontrola lint sprawdza nazewnictwo, typ zwracany, wartość domyślną i kolejność parametru pod kątem zgodności z wytycznymi Compose. (If493b)
- Zaktualizowany interfejs TextFieldValue API
- pole TextFieldValue.composition zostało ustawione jako tylko do odczytu.
- usunięto wyjątek zgłaszany w przypadku nieprawidłowego zakresu wyboru (I4a675, b/172239032);
- Dodano nowe przeciążenie
Modifier.drawLayer()
. Przyjmuje blok lambda w nowym zakresie GraphicsLayerScope, w którym definiujesz parametry warstwy w sposób umożliwiający pominięcie ponownego komponowania i ponownego układu w przypadku zmiany stanu. DrawLayerModifier jest teraz wewnętrzny w ramach przygotowań do przeniesienia jego logiki do metodyplaceable.placeWithLayer()
LayoutModifier (I15e9f, b/173030831). - Wycofaliśmy właściwości Ambients, których nazwy miały sufiks
Ambient
, i zastąpiliśmy je nowymi właściwościami z prefiksem Ambient, zgodnie z innymi właściwościami Ambients i wytycznymi interfejsu Compose API. (I33440) - Dodano sprawdzanie kodu, aby upewnić się, że fabryki modyfikatorów używają wewnętrznie interfejsu
androidx.compose.ui.composed {}
zamiast być oznaczane jako@Composable
. (I3c4bc) - Argument semantyki mergeAllDescendants został zmieniony na mergeDescendants. (Ib6250)
- Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest obecnie eksperymentalna (I6ef86, b/171378521).
- Usuwanie starego modułu ui-test i jego stubów (I3a7cb)
- W celu zachowania spójności z innymi jednostkami nazwa TextUnit.Inherit została zmieniona na TextUnit.Unspecified. (Ifce19)
- Interfejs wyrównania został zaktualizowany i jest już funkcjonalny. (I46a07, b/172311734)
- W przypadku LayoutIdParentData zmieniliśmy nazwę parametru id na layoutId. Zmieniliśmy nazwę Measurable.id na Measurable.layoutId. (Iadbcb, b/172449643)
Wersja 1.0.0-alpha07
11 listopada 2020 roku
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ą zwalniane. Wersja 1.0.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Wyróżnienie zostało wycofane i zastąpione przez AmbientContentAlpha. AmbientContentAlpha to prostsza abstrakcja, która reprezentuje preferowaną wartość alfa treści otoczenia dla części hierarchii, podobnie jak AmbientContentColor reprezentuje preferowany kolor treści otoczenia. Tekst i ikona domyślnie korzystają teraz z bieżącej wartości AmbientContentAlpha. Możesz też ręcznie wykonać działanie
color.copy(alpha = AmbientContentAlpha.current)
, aby uzyskać ten sam efekt w swoich komponentach. Zamiast używać funkcji ProvideEmphasis, możesz bezpośrednio podać wartość za pomocą AmbientContentAlpha i użyć nowych poziomów domyślnych w ContentAlpha, aby zastąpić stare poziomy EmphasisLevels. (Idf03e, b/159017896) - Dodaje androidx.compose.material.AmbientContentColor, aby zastąpić androidx.compose.foundation.AmbientContentColor (I84f7b, b/172067770).
- Dodaje komponent androidx.compose.material.Text, który zastępuje komponent androidx.compose.foundation.Text jako komponent tekstowy wysokiego poziomu z możliwością stosowania motywów. W przypadku podstawowego komponentu tekstowego, który nie korzysta z koloru ani stylu tekstu z motywu, użyj BasicText. (Ie6ae0)
- Dodano maxLines do pól tekstowych (Ib2a5b)
- Aktualizacja pól tekstowych, aby akceptowały KeyboardOptions (Ida7f3)
- Surface używa teraz bezwzględnej (całkowitej) wysokości podczas obliczania nakładek wysokościowych, więc Surface zagnieżdżony w innym Surface będzie używać połączonej wysokości do rysowania nakładki. (I7bd2b, b/171031040)
Poprawki błędów
captureToBitmap
przeniesiono do:captureToImage
. (I86385)- Funkcje AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast tego używaj nowych wersji dostępnych w bibliotece Material. W przypadku aplikacji innych niż Material należy utworzyć własny system projektowania z motywami, które można wykorzystać we własnych komponentach. (I74acc, b/172067770)
- foundation.Text został wycofany i zastąpiony przez material.Text. Podstawowy interfejs API tekstu, który nie korzysta z wartości z motywu, znajdziesz w artykule androidx.compose.foundation.BasicText. (If64cb)
- Zmiana nazwy KeyboardOptions na ImeOptions (I82f36)
- Przeniesienie KeyboardType i ImeAction do KeyboardOptions (I910ce)
- Komponent BaseTextField został wycofany. Zamiast tego użyj BasicTextField. (I896eb)
- Usunięto adnotację ExperimentalSubcomposeLayoutApi. Funkcja SubcomposeLayout może być teraz używana bez dodawania adnotacji @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 odcienia, który będzie rysować podany zasób lub malarza bez filtra ColorFilter. Wcześniejsze próby zignorowania odcienia za pomocą Color.Unspecified powodowały odcień w przezroczystym kolorze, co w efekcie nie powodowało renderowania. (I049e2, b/171624632)
- Zmieniliśmy nazwę parametru relativePaddingFrom 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)
- Aby zachować spójność z interfejsami SideEffect i DisposableEffect API, nazwa LaunchedTask została zmieniona na LaunchedEffect. Aby zachęcać do stosowania sprawdzonych metod, nie zezwalamy na używanie funkcji LaunchedEffect bez parametrów subject. (Ifd3d4)
- Element MeasureResult został przeniesiony poza element MeasureScope. (Ibf96d, b/171184002)
- Kilka symboli związanych z układem zostało przeniesionych z pakietu androidx.compose.ui do pakietu androidx.compose.layout.ui. (I0fa98, b/170475424)
Wersja 1.0.0-alpha06
28 października 2020 r.
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ą zwalniane. Wersja 1.0.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- androidx.compose.foundation.Icon został przeniesiony do androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material, możesz też użyć komponentu Image lub funkcji Modifier.paint() z obiektem Painter. (I9f622)
- Dodaje FloatingActionButtonElevation, aby reprezentować poziom uniesienia używany przez przyciski FAB w różnych stanach. Domyślną implementację znajdziesz w sekcji FloatingActionButtonConstants.defaultElevation() (I2d4f5).
- Dodaje interfejs SwitchColors, który reprezentuje kolory używane przez przełącznik w różnych stanach. Aby dostosować te kolory, zapoznaj się z właściwością SwitchConstants.defaultColors. (I93805)
- Dodaje interfejsy ButtonElevation i ButtonColors, które reprezentują wysokość i kolory używane przez przyciski w różnych stanach. Aby dostosować te parametry, zapoznaj się z funkcjami domyślnymi w ButtonConstants. (Ic5b7b)
- Dodaje interfejs RadioButtonColors, który reprezentuje kolory używane przez element RadioButton w różnych stanach. Aby dostosować kolory używane w różnych stanach, użyj RadioButtonConstants.defaultColors(). (I74130)
- Dodaje interfejs CheckboxColors, który reprezentuje kolory używane przez pole wyboru w różnych stanach. Aby dostosować kolory używane w różnych stanach, użyj metody CheckboxConstants.defaultColors(). (I7dbdb)
Poprawki błędów
- Komponenty Material nie ustawiają już wysokości jako zIndex. Oznacza to, że w ramach tego samego elementu nadrzędnego element podrzędny z większym rozmiarem cienia nie będzie automatycznie rysowany na wierzchu elementu podrzędnego z mniejszym rozmiarem cienia. Jeśli nadal potrzebujesz takiego zachowania, ustaw ręcznie Modifier.zIndex() w odpowiednich miejscach (I70417, b/170623932).
- Wycofanie funkcji VectorPainter na rzecz funkcji rememberVectorPainter, aby lepiej wskazywać, że interfejs API funkcji kompozycyjnych wewnętrznie wykorzystuje funkcję „remember” do utrwalania danych w różnych kompozycjach. (Ifda43)
- Włącz przejścia w ComposeTestRule; usuń opcję włączania migającego kursora z ComposeTestRule. (If0de3)
- Dodano opcję klawiatury z jednym wierszem w komponencie CoreTextField (I72e6d)
- Zmiana nazwy interfejsu API Radius na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w Compose. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie zaokrąglenia są przycinane do zera. (I130c7, b/168762961)
- Zmiana typu DrawScope i ContentDrawScope z klas abstrakcyjnych na interfejsy.
- Utworzono implementację CanvasDrawScope interfejsu DrawScope
- Zmiana implementacji interfejsu DrawScope na CanvasScope
- Utworzono DrawContext do opakowywania 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.
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ą zwalniane. Wersja 1.0.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Wyskakujące okienka i okna dialogowe dziedziczą teraz FLAG_SECURE z okna nadrzędnego. Dodaliśmy też opcję wyraźnej konfiguracji (I64966, b/143778148, b/143778149).
- Modyfikator swipeable ma teraz domyślnie progi 56 dp dla stanów (Iab825, b/168610267).
- wszystkie stany komponentu Scaffold oznaczone jako @Stable; właściwość drawerGesturesEnabled w komponencie ScaffoldState przeniesiona do komponentu Scaffold; (I36645, b/168297016)
- Usuwa typ dopuszczający wartość null z parametrów lambda elementu Scaffold. Aby wskazać brak treści dla danego parametru, możesz użyć funkcji emptyContent(). (I2b318, b/157633857, b/158551084)
Wycofuje interfejsy contentColor() i currentTextStyle() i zastępuje je odpowiednio AmbientContentColor i AmbientTextStyle. Aktualną wartość możesz uzyskać, używając
.current
w przypadku właściwości otoczenia, tak jak w przypadku każdego innego otoczenia. Ta zmiana została wprowadzona w celu zapewnienia spójności i uniknięcia sytuacji, w której to samo zadanie można wykonać na kilka sposobów. Dodatkowo zmieniliśmy nazwy niektórych właściwości otoczenia, aby lepiej opisywały ich przeznaczenie:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Dodaje AmbientElevationOverlay, co umożliwia dostosowywanie lub wyłączanie domyślnej nakładki podniesienia stosowanej do elementów Surface w ciemnym motywie. (I5b74d)
Poprawki błędów
- W ramach standaryzacji wartości wartowniczych w przypadku 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ść parametru overflow to None, komponent Text nie będzie już obsługiwać przepełnienia i będzie zgłaszać do komponentu LayoutNode swój rzeczywisty rozmiar. (I175c9, b/158830170)
- Zmiana nazwy launchInComposition na LaunchedTask, aby była zgodna z wytycznymi dotyczącymi interfejsu API Compose (I99a8e)
- Interfejs OnPositionedModifier został zmieniony na OnGloballyPositionedModifier, a funkcja onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
Wersja 1.0.0-alpha04
1 października 2020 roku
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ą zwalniane. Wersja 1.0.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Udostępnia parametry InteractionState w komponentach Material z zachowywaniem stanu, aby umożliwić przenoszenie stanu oraz odczytywanie i kontrolowanie stanu. (Iaca5f, b/168025711, b/167164434)
- Zmienia parametry
*color
elementów RadioButton i TriStateCheckbox, aby umożliwić pełne dostosowanie kolorów używanych w każdym stanie, a także zmianę sposobu animacji kolorów między stanami. Więcej informacji znajdziesz w nowych funkcjach kolorów animateDefault* w plikach CheckboxConstants i RadioButtonConstants. (I1c532) - Zmieniono nazwę funkcji rememberBackdropState na rememberBackdropScaffoldState i dodano dodatkowy parametr zegara animacji. Zmieniono nazwę parametru backdropScaffoldState w komponencie BackdropScaffold na scaffoldState. Zmiana nazwy BackdropConstants na BackdropScaffoldConstants. (Ib644d)
- Dodano eksperymentalny komponent BottomSheetScaffold. (Ie02f0, b/148996320)
- Dodano eksperymentalny komponent ModalBottomSheetLayout. (Ic209e, b/148996320)
- Zmienia nazwę ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation na defaultElevation i zwraca teraz wartość Dp zamiast AnimatedValue. (I5f3ed)
Poprawki błędów
- Zaktualizowano wiele interfejsów API grafiki
- Zaktualizowano interfejsy API przekształceń skali i rotacji, aby używały jednego parametru Offset do reprezentowania współrzędnych punktu obrotu zamiast oddzielnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform.
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowano dokumentację dotyczącą promienia, aby uwzględnić kształt owalny oprócz eliptycznego.
- Dodano dokumentację, aby wskazać, że publiczny konstruktor wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale obiekty Radius powinny być tworzone za pomocą konstruktorów funkcji.
- Usunięto interfejsy API RoundRect do wysyłania zapytań o wartości topRight, bottomRight, bottomCenter itp.
- Wycofanie Rect.shift na rzecz Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmiana nazwy RoundRect.outerRect na Rect.boundingRect
- Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
- Zmiana nazwy RoundRect.longestSide na RoundRect.maxDimension
- Zmiana nazwy RoundRect.shortestSide na RoundRect.minDimension
- Zmiana RoundRect.center na właściwość zamiast funkcji
- Zaktualizowano konstruktor RoundRect, aby korzystał z właściwości Radius zamiast z poszczególnych parametrów wartości promienia x/y.
- Usunięto interfejsy API rozmiaru, które zakładały, że jest to prostokąt o początku w punkcie 0,0
- Dodano do Radius interfejs API niszczenia
- Przeniesiono różne funkcje rozszerzenia RoundRect, aby były właściwościami.
- (I8f5c7, b/168762961)
- Komponent foundation.Box został wycofany. Zamiast tego użyj foundation.layout.Box. (Ie5950, b/167680279)
- Grupa została zmieniona na Box. Dotychczasowy komponent Box zostanie wycofany na rzecz nowego komponentu Box w pakiecie compose.foundation.layout. Nowy komponent Box układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Różni się to od poprzedniego komponentu Box, który działał podobnie do komponentu Column. (I94893, b/167680279)
- Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać dekoracje lub dopełnienie do elementu Box, użyj zamiast tego modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
- Zaktualizowano wiele interfejsów API grafiki
- Zaktualizowano interfejsy DrawScope API o metody przekształcania w określonym zakresie, aby wskazać, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po jego wywołaniu.
- Zaktualizowano dokumentację clipPath, aby odwoływała się do ścieżki zamiast do zaokrąglonego prostokąta
- Poprawiono odstępy w dokumentacji parametru right w elemencie clipPath
- Zmieniono nazwę DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr rozmiaru
- Zmieniono nazwy parametrów dx/dy w metodzie inset na horizontal i vertical
- Dodano przeciążenie wstawki, które zapewnia tę samą wartość wstawki dla wszystkich 4 obszarów.
- Usunięto dokumentację dotyczącą metody wstawiania, która wskazywała, że wstawianie będzie stosowane do wszystkich 4 stron.
- Zaktualizowana dokumentacja klasy Rect
- Zaktualizowano komentarze do parametrów Rect, aby były zgodne ze stylem kdoc.
- Usunięto Rect.join i Rect.expandToInclude
- Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
- (If086a, b/167737376)
- Zapobiegliśmy statycznemu importowaniu treści z zakresów układu (np. alignWithSiblings w RowScope). Zamiast tego użyj alternatywnego zakresu:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Wersja 1.0.0-alpha03
16 września 2020 roku
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ą zwalniane. Wersja 1.0.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Zmienia nazwę parametru
onSelect
wBottomNavigationItem
naonClick
(I91925, b/161809324) - Dodaje parametr InteractionState do elementów BottomNavigationItem i Tab, co umożliwia przenoszenie tego stanu i dostosowywanie wyglądu komponentu w różnych stanach. (Ia3e9e, b/168025711)
- Usuwa parametry
disabledBackgroundColor
idisabledContentColor
z przycisków. Zamiast tego używaj nowych domyślnych funkcji kolorów w ButtonConstants. Jeśli ustawiasz już jawnie contentColor lub backgroundColor, zamiast tego użyj tych funkcji domyślnych i dostosuj niektóre lub wszystkie parametry, aby uniknąć nadpisywania koloru w przypadku stanów włączonych i wyłączonych. (If9b52) - Kolor tła pola tekstowego nie stosuje już domyślnie przezroczystości alfa. Zamiast tego kolor podany w parametrze backgroundColor zostanie zastosowany bezpośrednio. (Iecee9, b/167951441)
- Zmieniliśmy nazwę parametru InnerPadding na PaddingValues. (I195f1, b/167389171)
- Parametry
resistanceFactorAtMin
iresistanceFactorAtMax
wModifier.swipeable
zostały zastąpione pojedynczym parametrem oporu. WSwipeableConstants
dodano nową metodędefaultResistanceConfig
. (I54238) - Dodaje obsługę animowanego stanu podniesienia dla komponentów Button i FloatingActionButton. Wysokość jest teraz animowana między stanem domyślnym a naciśniętym. Aby dostosować wysokość między stanami, użyj wartości
ButtonConstants.defaultAnimatedElevation()
iFloatingActionButtonConstants.defaultAnimatedElevation()
zamiast ustawiać stałą wartość Dp we wszystkich przypadkach. (I37925) - Etykieta stała się opcjonalnym parametrem w polach TextField i OutlinedTextField (I267f6, b/162234081)
Poprawki błędów
- Funkcje testowania globalnego, takie jak
onNode
czywaitForIdle
, są teraz wycofane. Przejdź na ich nowe odpowiedniki zdefiniowane w ComposeTestRule (I7f45a). - Interfejs DpConstraints i interfejsy API, które go używają, zostały wycofane. (I90cdb, b/167389835)
- Parametry minWidth i maxWidth w przypadku widthIn zostały zmienione na min i max. Podobnie w przypadku preferredWidthIn, heightIn i preferredHeightIn. (I0e5e1, b/167389544)
- Usuń działania semantyczne przewijania do przodu i do tyłu. Dodano kroki w AccessibilityRangeInfo. (Ia47b0)
- W interfejsach API układu nazwy związane z grawitacją zostały zmienione na align lub alignment. (I2421a, b/164077038)
- Dodano onNode i inne metody globalne w ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
- Przeniesiono
createAndroidComposeRule
iAndroidInputDispatcher
zandroidx.ui.test.android
doandroidx.ui.test
(Idef08, b/164060572)
Wersja 1.0.0-alpha02
2 września 2020 r.
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ą zwalniane. Wersja 1.0.0-alpha02 zawiera te zmiany.
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.
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ą zwalniane. Wersja 1.0.0-alpha01 zawiera te zmiany.
Znany problem
= Pierwszego znaku w materiale TextField
nie można usunąć za pomocą klawisza Backspace (b/165956313)
Wersja 0.1.0-dev
Wersja 0.1.0-dev17
19 sierpnia 2020 r.
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ą zwalniane. Wersja 0.1.0-dev17 zawiera te zmiany.
Zmiany w interfejsie API
- Wycofane wcześniej komponenty RadioGroup i RadioGroupItems zostały usunięte. Zamiast tego użyj wiersza i przycisku opcji (I381b7, b/163806637)
- Usunięto wywołania zwrotne onFocusChanged z pola tekstowego. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
- Funkcja Modifier.drawBorder została wycofana. Zamiast tego użyj Modifier.border. Klasa danych Border została zastąpiona klasą BorderStroke (I4257d, b/158160576)
- Zmieniliśmy nazwy niektórych właściwości w SwipeableState: swipeTarget –> targetValue, swipeProgress –> progress, swipeDirection –> direction. Dodano funkcję rememberSwipeableState do tworzenia obiektów SwipeableState. (I2fc9c, b/163129614, b/163132293)
- Dodano obsługę paska powiadomień z rozmieszczaniem i prawidłowym kolejkowaniem. Możesz to zrobić za pomocą funkcji
SnackbarHostState.showSnackbar
. Dodatkowo:- Dodano komponenty SnackbarHost. Zawiera on wyskakujące okienka w zależności od stanu i odpowiada za przechodzenie między nimi.
- Dodano SnackbarHostState, aby umożliwić kontrolę nad paskami powiadomień i ich hostami oraz oddzielić je od ScaffoldState. Dostęp do tego stanu możesz uzyskać również za pomocą
scaffoldState.snackbarHostState
. - Dodano przeciążenie paska powiadomień, aby obsługiwać wspólny interfejs między stanem hosta paska powiadomień a samymi paskami powiadomień. (I79aaa)
- Dodaje parametr enabled do IconButton i zmienia kolejność parametrów w IconToggleButton (I0a941, b/161809385, b/161807956)
- Usunęliśmy wersję ListItem z interfejsem API opartym na ciągach znaków. Zamiast tego użyj wersji gniazda. (Ib8f57, b/161804681)
- Usunięto wycofany komponent FilledTextField. Zamiast tego użyj komponentu TextField, aby uzyskać implementację pola tekstowego wypełnionego zgodną z Material Design. (I5e889)
- AlertDialog używa teraz FlowRow w przypadku przycisków (I00ec1, b/161809319, b/143682374)
- Dodano parametry w modyfikatorze swipeable, aby zmieniać siłę oporu podczas przesuwania poza granice. Usunięto parametry [min/max]Value. (I93d98)
- Dodano parametr backgroundColor do LinearProgressIndicator i usunięto wewnętrzny dopełnienie z CircularProgressIndicator. Dodano nową klasę ProgressIndicatorConstants.DefaultProgressAnimationSpec, której można używać jako domyślnej klasy AnimationSpec podczas animowania postępu między wartościami (If38b5, b/161809914, b/161804677).
- Do modyfikatora Modifier.swipeable dodano opcjonalny parametr velocityThreshold. (I698ba)
- bottomBarSize, fabSize i inne nie są już dostępne w ScaffoldState. Zamiast tego użyj Modifier.onPosition w komponencie, którego rozmiar chcesz poznać. Do komponentu Scaffold dodano parametry contentColor i Modifier (Ic6f7b, b/161811485, b/157174382).
- Zmiana nazw i kolejności niektórych parametrów w karcie w celu zachowania spójności z innymi interfejsami API (Ia2d12, b/161807532)
- Dzieli TabRow na TabRow i ScrollableTabRow, usuwając isScrollable z TabRow. Udostępnia też edgePadding w ScrollableTabRow, co pozwala kontrolować wolną przestrzeń przed i za kartami. (I583e8, b/161809544)
- Obiekt
TabRow
został usunięty i zastąpiony przez TabConstants. Element TabRow.TabPosition został przeniesiony na najwyższy poziom (TabPosition), a element indicatorContainer został zmieniony naindicator
. Szczegółowe informacje o korzystaniu z zaktualizowanego interfejsu API i wartościach domyślnych znajdziesz w przykładach i dokumentacji. (I54d45, b/161809544) - Parametr progów w modyfikatorze Modifier.swipeable został zmodyfikowany. Przyjmuje teraz parę stanów (typu T) i zwraca próg między nimi w postaci ThresholdConfig. Do komponentu SwipeToDismiss dodano parametr dismissThresholds, który jest funkcją lambda (DismissDirection) -> ThresholdConfig. (Ie1080)
- Suwak ma więcej kolorów, co umożliwia szczegółowe dostosowywanie (I73e64, b/161810475)
- Parametr koloru karty został zmieniony na backgroundColor (I01fc1, b/161809546)
- Bar z przekąskami ma teraz konfigurowalne kolory tła i treści (I238f2, b/161804381)
- Do komponentów Drawers dodano parametry dostosowywania modyfikatora, backgroundColor, contentColor i scrimColor (I23655, b/161804378).
- Funkcja
state { ... }
została wycofana na rzecz jawnych wywołań funkcjiremember { mutableStateOf(...) }
, aby zwiększyć przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji zarządzania stanem oraz pasuje do wzorcaby mutableStateOf()
delegowania właściwości klasy. (Ia5727) - Parametr dopełnienia przycisku został zmieniony na contentPadding (Id252e, b/161809394)
- Dodaj eksperymentalny komponent materiałowy SwipeToDismiss. (I129e5)
Poprawki błędów
- Usunięto
onChildPositioned
iOnChildPositionedModifier
. Zamiast tego programiści powinni używać w układzie podrzędnym elementówonPositioned
iOnPositionedModifier
. (I4522e, b/162109766) - Dodano funkcję lambda mergePolicy do SemanticsPropertyKey. Można jej użyć do zdefiniowania niestandardowych zasad scalania semantyki mergeAllDescendants. Zasada domyślna polega na używaniu wartości nadrzędnej, jeśli jest już obecna, a w przeciwnym razie wartości podrzędnej. (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 konsekwencji metodaPlacementScope.place()
nie będzie już automatycznie odzwierciedlać pozycji w kontekstach pisanych od prawej do lewej. Jeśli chcesz to zrobić, użyj zasadyPlacementScope.placeRelative()
. (I873ac, b/162916675) - Wycofano PxBounds na rzecz Rect. Zaktualizowano wszystkie użycia PxBounds za pomocą funkcji rect i dodano odpowiednie adnotacje dotyczące wycofania/zastąpienia, aby ułatwić migrację. (I37038, b/162627058)
- Zmiana nazwy RRect na RoundRect, aby lepiej pasowała do wzorców nazewnictwa w Compose. Utworzono podobne konstruktory funkcji do RRect i wycofano konstruktory funkcji RRect (I5d325).
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
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ą zwalniane. Wersja 0.1.0-dev16 zawiera te zmiany.
Zmiany w interfejsie API
- Klasa Colors jest teraz klasą ostateczną, a nie interfejsem. Zamiast rozszerzać i udostępniać 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 odzwierciedlała system kolorów Material i uniknąć nieporozumień związanych z tym, że ColorPalette jest „ogólnym” obiektem motywu, a nie konkretną implementacją systemu kolorów Material. Dodatkowo zmienia nazwy lightColorPalette i darkColorPalette na lightColors i darkColors. (I9e976, b/161812111)
- Zmienia nazwę parametru
text
elementu BottomNavigationItem nalabel
,onSelected
naonSelect
,activeColor
naselectedContentColor
,inactiveColor
naunselectedContentColor
i aktualizuje kolejność parametrów, aby była zgodna z wytycznymi. (Icb605, b/161809324) Modifier.stateDraggable
został całkowicie przekształcony i zmieniono jego nazwę na Modifier.swipeable. Wprowadziliśmy nową klasę SwipeableState, a klasy DrawerState i BottomDrawerState zostały zmodyfikowane tak, aby z niej dziedziczyć. [Modal/Bottom]DrawerLayout nie przyjmuje już parametru onStateChange. (I72332, b/148023068)- Pakiet foundation.shape.corner został spłaszczony do foundation.share (I46491, b/161887429).
- Dodano adnotację ExperimentalMaterialApi. RippleTheme oznaczony jako eksperymentalny (Ic5fa0, b/161784800)
- Komponent Material FilledTextField został zmieniony na TextField, a komponent podstawowy TextField został zmieniony na BaseTextField, aby ułatwić odkrywanie i używanie najprostszego interfejsu API (Ia6242, b/155482676).
Poprawki błędów
- Metoda OnChildPositioned została wycofana. Zamiast tego użyj OnPositioned w przypadku elementu podrzędnego. (I87f95, b/162109766)
- Poprawki w interfejsie API (I077bc)
- Usuwanie nieużywanego interfejsu OffsetBase
- Ujednolicenie klas Offset i IntOffset w celu zapewnienia spójnego interfejsu API
- Zmiana nazwy IntOffset.Origin na IntOffset.Zero w celu zachowania spójności z interfejsem Offset API
- Przeniesiono metodę nativeCanvas z interfejsu Canvas, aby umożliwić konsumentom tworzenie własnych instancji Canvas.
- Utworzono klasę EmptyCanvas, aby refaktoryzować DrawScope i zamiast lateinit używać parametru niepustego, a także zapewnić, że pole nie będzie miało wartości null.
- Zmiana nazw wyliczeń ClipOp na PascalCase
- Zmiana nazwy wyliczeń FilterQuality na Pascal Case
- Zmiana nazw wyliczeń StrokeJoin na Pascal Case
- Zmiana nazwy wyliczeń PointMode na Pascal Case
- Zmiana nazw wyliczeń PaintingStyle na Pascal Case
- Zmiana nazwy wyliczeń PathFillType na Pascal Case
- Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
- Zaktualizowano implementację DrawCache, aby nie używać już parametrów lateinit
- Zaktualizowano DrawScope, aby nie używać już leniwego delegowania w przypadku wewnętrznych parametrów fillPaint i strokePaint
- Zaktualizowano funkcję kompozycyjną Image, aby uniknąć używania Box, co zmniejsza obciążenie.
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano klasę PathNode, aby zawierała adnotacje @Immutable dla każdej instrukcji ścieżki.
- Zaktualizowano podkompozycję wektora, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje.
- Wyłączenie metod konstruktora towarzyszącego Rect na rzecz konstruktorów funkcji
- Zaktualizowano klasy Brush i konstruktory funkcji za pomocą interfejsów API @Immutable i @Stable
- Zaktualizowano wyliczenie VertexMode, aby używać notacji PascalCase
- Zaktualizowano metodę DrawScope selectPaint, aby warunkowo nadpisywać parametry pędzla, jeśli uległy zmianie.
- Aktualizacja klasy Size w celu dodania interfejsu API destructuring, zmiany nazwy UnspecifiedSize na Unspecified i usunięcia nieużywanych metod
- Przeniesienie okna do interfejsu (I47fa6)
- Użytkownik
SemanticsNodeInteraction.performPartialGesture
został usunięty. Zamiast niej używaj właściwościSemanticsNodeInteraction.performGesture
. (Id9b62) - Nazwa
SemanticsNodeInteraction.getBoundsInRoot()
została zmieniona naSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532) - Zaktualizowaliśmy interfejsy API obsługujące pisanie od prawej do lewej. Dodano LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Usunięto Modifier.rtl i Modifier.ltr. (I080b3)
- Nazwa Modifier.deternimateProgress została zmieniona na Modifier.progressSemantics (I9c0b4)
- Aktualizuje pakiet material-icons-extended o najnowsze ikony dodane do Material.io/icons (I4b1d3).
- Wymagaj jawnego określenia typu T w przypadku transitionDefinition. (I1aded)
- Funkcja Modifier.plus została wycofana. Zamiast niej używaj funkcji Modifier.then. Słowo „wtedy” silniej sygnalizuje kolejność, a także uniemożliwia wpisanie znaku
Modifier.padding().background() + anotherModifier
, który przerywa ciąg i utrudnia czytanie (Iedd58, b/161529964). - Zmiana nazwy AndroidComposeTestRule na createAndroidComposeRule. (I70aaf)
- Dodaj SemanticsMatcher isFocused() i isNotFocused(). (I0b760)
- Usunięto
BaseGestureScope.globalBounds
, którego nie należy używać w testach. Zamiast tego używaj współrzędnych lokalnych węzła, z którym wchodzisz w interakcję. (Ie9b08) - Ustalona pozycja wyskakującego okienka na ekranach z wycięciem. (Idd7dd)
- Funkcja Modifier.drawBackground została zmieniona na Modifier.background (I13677)
Wersja 0.1.0-dev15
22 lipca 2020 r.
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ą zwalniane. Wersja 0.1.0-dev15 zawiera te zmiany.
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. Użyj state i mutableStateOf jako alternatyw. Decyzja o wycofaniu została podjęta po dokładnym rozważeniu wszystkich argumentów.Uzasadnienie
Uzasadnienie może obejmować m.in.:
- Zmniejsza obszar interfejsu API i liczbę koncepcji, których musimy nauczyć
- Jest bardziej zbliżony do innych porównywalnych zestawów narzędzi (Swift UI, React, Flutter).
- Decyzja odwracalna. Zawsze możemy później przywrócić
@Model
. - Usuwa rzadkie przypadki użycia i trudne pytania dotyczące konfigurowania usługi
@Model
jako elementów, którymi musimy się zająć. @Model
klasy danych, equals, hashcode itp.- Jak sprawić, aby niektóre właściwości były „obserwowane”, a inne nie?
- Jak określić, czy w obserwacji ma być używane porównanie strukturalne czy referencyjne?
- Zmniejsza „magię” w systemie. Zmniejszyłoby to prawdopodobieństwo, że ktoś uzna system za bardziej inteligentny, niż jest w rzeczywistości (np. że wie, jak porównać listy).
- Ułatwia intuicyjne określanie szczegółowości obserwacji.
- Ulepsza możliwość refaktoryzacji ze zmiennej -> właściwości w klasie
- Może otworzyć możliwości ręcznego dostosowywania ustawień do poszczególnych stanów.
- Jest bardziej zgodny z pozostałą częścią ekosystemu i zmniejsza niejednoznaczność w odniesieniu do niezmiennych lub „przyjmujących zmienny stan”
Notatki dotyczące migracji
Prawie wszystkie dotychczasowe zastosowania symbolu
@Model
można w prosty sposób przekształcić na jeden z 2 sposobów. W przykładzie poniżej znajduje się klasa@Model
z 2 właściwościami (tylko na potrzeby przykładu) używana w funkcji kompozycyjnej.@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 } ) }
Alternatywa 1. Użyj polecenia
State<OriginalClass>
i utwórz kopie.To podejście jest łatwiejsze dzięki klasom danych w języku Kotlin. Wszystkie dotychczasowe właściwości
var
przekształć we właściwościval
klasy danych, a potem używajstate
zamiastremember
i przypisuj wartość stanu do sklonowanych kopii oryginału za pomocą metody wygodycopy(...)
klasy danych.Pamiętaj, że to podejście działa tylko wtedy, gdy jedyne zmiany w tej klasie zostały wprowadzone w tym samym zakresie, w którym utworzono instancję
State
. Jeśli klasa zmienia się wewnętrznie poza zakresem użycia i polegasz na obserwacji tej zmiany, użyj następnego 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 mutableStateOf i delegatów właściwości
Ułatwiają to delegaty właściwości Kotlin i interfejs
mutableStateOf
API, który umożliwia tworzenie instancji MutableState poza kompozycją. Zastąp wszystkie właściwościvar
oryginalnej klasy właściwościamivar
, których delegatem właściwości jestmutableStateOf
. Dzięki temu sposób użycia klasy nie zmieni się w żaden sposób, a jedynie jej wewnętrzna implementacja. Zachowanie nie jest jednak całkowicie identyczne z oryginalnym przykładem, ponieważ każda właściwość jest teraz obserwowana lub subskrybowana indywidualnie, więc ponowne kompozycje, które zobaczysz po refaktoryzacji, mogą być węższe (co jest korzystne).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 stateDraggable, aby określić progi między punktami zakotwiczenia. Użyto go do ustawienia progu 56 dp w dolnym panelu. Klasa BottomDrawerLayout korzysta teraz z osobnego wyliczenia BottomDrawerState. (I533fa)
Usuwa wcześniej wycofany modyfikator Modifier.ripple. Funkcja Clickable używa teraz efektu fali jako domyślnego wskaźnika (jeśli w aplikacji masz ustawiony element MaterialTheme{}), więc w większości przypadków możesz po prostu użyć funkcji Clickable i bezpłatnie uzyskać efekt fali. Jeśli chcesz dostosować kolor, rozmiar lub parametr ograniczony efektu fali, możesz ręcznie utworzyć RippleIndication i przekazać go do funkcji clickable jako parametr indication. (I663b2, b/155375067)
Usunięto wycofane zastąpienie funkcji FilledTextField (I7f8f8)
Zmiana nazwy obiektu Button (zawierającego wartości domyślne używane przez funkcję Button) na ButtonConstants (I7c5f7, b/159687878)
Miejsce na treść przycisku działa teraz jak wiersz (przydatne, gdy chcesz mieć ikonę z tekstem – przykłady znajdziesz w sekcji dotyczącej przycisku) (I0ff10, b/158677863).
Elementy RadioGroup i RadioGroupItem zostały wycofane. Użyj elementów Box z modyfikatorem Modifier.selectable, Row i Column, aby utworzyć odpowiedni zestaw opcji radioButton zgodnie z projektem (I7f5cf, b/149528535).
Dodano pole tekstowe Material Outlined (I1a518)
Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Komponenty TextField, FilledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Zamiast tego użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
TabRow.TabPosition nie zawiera pozycji w jednostkach dp, tylko w jednostkach IntPx (I34a07, b/158577776)
Zastąpiono użycie IntPx przez Int. Zastąpiono IntPxPosition przez IntOffset. Zastąpiono IntPxSize wartością IntSize. (Ib7b44)
Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o rozmiarach, ujednolić użycie klasy Size zamiast PxSize. Dzięki temu możesz korzystać z zalet klasy wbudowanej, aby używać typu long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących szerokość i wysokość. (Ic0191)
Wycofuje Modifier.ripple. Funkcja Clickable używa teraz efektu fali jako domyślnego wskaźnika (jeśli w aplikacji masz ustawiony element MaterialTheme{}), więc w większości przypadków możesz po prostu użyć funkcji Clickable i bezpłatnie uzyskać efekt fali. Jeśli chcesz dostosować kolor, rozmiar lub parametr ograniczony efektu fali, możesz ręcznie utworzyć RippleIndication i przekazać go do funkcji clickable jako parametr indication. (I101cd, b/155375067)
Przebudowaliśmy interfejs API Scaffold: zmieniliśmy nazwy kilku parametrów i dodaliśmy nowe parametry, aby umożliwić lepsze dostosowywanie. Dodano funkcję pobierania rozmiarów elementów Fab, TopBar i BottomBar (I0e7ce).
Dodano komponent DropdownMenu w ui-material, czyli implementację menu Material Design. (I9bb3d)
Zezwalaj na ręczne pokazywanie i ukrywanie klawiatury ekranowej za pomocą klasy SoftwareKeyboardController (Ifb9d6, b/155427736)
Do pakietu podstawowego dodano Modifier.indication. Używaj go do wyświetlania informacji o naciśnięciu, przeciągnięciu lub innych interakcjach w przypadku niestandardowych elementów interaktywnych (I8425f, b/155287131).
Ujednolicone implementacje CanvasScope, dzięki czemu są teraz tylko DrawScope i ContentDrawScope. Zmieniono nazwę CanvasScope na DrawScope. Zaktualizowano DrawScope, aby zaimplementować interfejs Density i udostępnić LayoutDirection. Usunięto podklasę DrawScope w ContentDrawScope. Zaktualizowano Painter i PainterModifier, aby nie utrzymywały już same właściwości RTL, ponieważ DrawScope już je udostępnia bez ręcznego podawania (I1798e).
Zmiana nazwy funkcji Emphasis.emphasize() na Emphasis.applyEmphasis() (Iceebe)
Wyłączone przyciski są teraz wizualnie zgodne ze specyfikacją Material Design (I47dcb, b/155076924).
Pole tekstowe z wypełnieniem obsługuje działanie IME, transformację wizualną i typ klawiatury (I1f9cf, b/155075201).
Dodaje parametr strokeWidth do CircularProgressIndicator, aby dostosować rozmiar kreski. Aby zmienić rozmiar (wysokość) paska LinearProgressIndicator, możesz użyć Modifier.preferredHeight() lub innego modyfikatora rozmiaru. (Icea16, b/154919081)
Dodaje parametr strokeWidth do CircularProgressIndicator, aby dostosować rozmiar kreski. Aby zmienić rozmiar (wysokość) paska LinearProgressIndicator, możesz użyć Modifier.preferredHeight() lub innego modyfikatora rozmiaru. (Icea16, b/154919081)
Dodano interfejs API slotu dla ikon na początku i na końcu komponentu FilledTextField oraz obsługę stanu błędu (Ic12e0).
Domyślny kolor przycisków FAB i rozszerzonych przycisków FAB został zmieniony na MaterialTheme.colors.secondary. (I3b9b9, b/154118816)
Zastąpiono wszystkie użycia wartości Color, które mogą przyjmować wartość null, w interfejsie API wartościami, które nie mogą przyjmować wartości null, i zamiast wartości null użyto wartości Color.Unset (Iabaa7).
Zmieniono nazwę EdgeInsets na InnerPadding. Zmiana nazwy parametru innerPadding w przypadku przycisków Material na padding. (I66165)
Suwak jest teraz bezstanowy. Użytkownicy będą musieli sami przekazywać i aktualizować stan, tak jak w przypadku innych elementów sterujących. (Ia00aa)
Komponent StaticDrawer został usunięty. Jeśli jest to konieczne, użyj elementu Box z określoną szerokością materiału (I244a7).
Dodano implementację pola tekstowego wypełnionego w Material Design (Ic75cd)
Dodano parametr modyfikatora do elementu ListItem i zmieniono kolejność parametrów, aby promować końcową treść wyrażenia lambda (I66e21)
Dodaje parametr konstruktora defaultFontFamily do klasy Typography, co umożliwia określenie domyślnej rodziny czcionek, która będzie używana w przypadku wszystkich podanych stylów tekstów, które nie mają ustawionej rodziny. (I89d07)
Tymczasowo usunęliśmy tabele danych o materiałach z interfejsu API. (Iaea61)
Zmiana nazw parametrów w kompozycji Divider (Ic4373)
dzieci (Ia6d19),
Usuwa MaterialTheme.emphasisLevels. Zamiast tego użyj EmphasisAmbient.current, aby pobrać poziomy podkreślenia (Ib5e40).
System motywów kształtów jest aktualizowany zgodnie ze specyfikacją Material Design. Teraz możesz podać małe, średnie i duże kształty, które będą używane przez większość komponentów (Ifb4d1).
Zmieniono interfejsy API MaterialTheme, takie jak MaterialTheme.colors() i MaterialTheme.typography(), tak aby były właściwościami, a nie funkcjami. Usuń nawiasy z dotychczasowych wywołań. Nie powinno to spowodować żadnych zmian w działaniu. (I3565a)
Przebudowano interfejsy API FloatingActionButton, aby akceptowały kompozycje lambda zamiast typów prostych. Zobacz zaktualizowane przykłady, aby uzyskać informacje o użytkowaniu. (I00622)
dodanie parametru
enabled
do komponentów Checkbox, Switch i Toggleable (I41c16)Efekt falowania jest teraz modyfikatorem. Dopóki nie zostanie przekonwertowany, zalecane użycie to
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763).Komponenty Surface i Card zostały przeniesione z androidx.ui.material.surface do androidx.ui.material (I88a6d, b/150863888).
Komponenty Button, FloatingActionButton i Clickable mają teraz osobny parametr
enabled
. Niektóre parametry w przypadku komponentu Button zostały zmienione lub zmieniono ich kolejność. (I54b5a)Zmieniliśmy nazwę Image na ImageAsset, aby lepiej odróżnić dane Image od nadchodzącego komponentu Image, który będzie używany do tworzenia układu i rysowania treści. _Body:Utworzono metodę rozszerzenia w klasie android.graphics.Bitmap, Bitmap.asImageAsset(), aby utworzyć instancję klasy ImageAsset przydatną do łączenia tradycyjnego tworzenia aplikacji na Androida z platformą Compose (Id5bbd).
Usunęliśmy interfejs Snackbar API z parametrami String na rzecz przeciążenia, które akceptuje lambdy z możliwością komponowania. Zobacz zaktualizowane przykłady informacji o użyciu (I55f80)
Przebudowano interfejsy API kart, aby akceptowały wyrażenia lambda
text
iicon
(Ia057e).Dodano komponent BottomNavigation. Informacje o sposobie użycia znajdziesz w dokumentacji i przykładach (I731a0).
Dodano komponenty Icon, IconButton i IconToggleButton, a usunięto AppBarIcon. Możesz bezpośrednio zastąpić istniejące użycia AppBarIcon elementem IconButton, a wtedy będą one miały prawidłowy docelowy element dotykowy. Informacje o użyciu znajdziesz w przykładach, a dostępne ikony Material Icons, których możesz używać bezpośrednio w tych komponentach, znajdziesz w sekcji Ikony. (I96849)
Zastąpiono ButtonStyle odrębnymi funkcjami i usunięto przeciążenie tekstu (ciągu znaków). Informacje o użytkowaniu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)
zmiana modyfikatora
Border
naDrawBorder
(I8ffcc)LayoutCoordinates nie ma już właściwości position. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obrotu ani skalowania. Zamiast tego programiści powinni używać funkcji parentCoordinates i childToLocal() do obliczania przekształcenia z jednego obiektu LayoutCoordinate na inny.
LayoutCoordinates używa IntPxSize dla właściwości size zamiast PxSize. Układy korzystają z rozmiarów w pikselach, więc wszystkie rozmiary układów powinny być liczbami całkowitymi, a nie wartościami zmiennoprzecinkowymi. (I9367b)
Zmiany powodujące niezgodność w interfejsie API ambients. Szczegółowe informacje znajdziesz w dzienniku i
Ambient<T>
dokumentacji (I4c7ee, b/143769776).Dodano komponent materiału rusztowania. Rusztowania (I7731b)
Zastąpiono funkcję DrawBorder modyfikatorem obramowania (Id335a).
Poprawki błędów
- FocusModifier został wycofany na rzecz Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. Stany FocusState i FocusDetailedState zostały wycofane na rzecz stanu FocusState2 (I46919, b/160822875, b/160922136).
- Komponenty VerticalScroller i HoriziontalScroller zostały wycofane. Użyj komponentów ScrollableColumn i ScrollableRow, aby wbudować funkcje z zachowaniem i parametrami Column/Row, lub użyj modyfikatorów Modifier.verticalScroll i Modifier.horizontalScroll we własnym elemencie. Podobnie klasa ScrollerPosition została wycofana na rzecz klasy ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
- Interfejsy API Modifier.draggable i Modifier.scrollable zostały zmodyfikowane. Właściwość DragDirection została usunięta na rzecz właściwości Orientation. Wymaganie dotyczące stanu przewijania zostało uproszczone. Klasa ScrollableState została zmieniona na ScrollableController (Iab63c, b/149460415).
- Nazwa została zmieniona na
runOnIdle
(I83607)runOnIdleCompose
- Właściwości semantyczne 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 API findXYZ zostały zmienione na onNodeXYZ. Wszystkie interfejsy API doXYZ zostały zmienione na performXYZ. (I7f164)
- Interfejs Transition API został zmieniony tak, aby zwracał wartość TransitionState zamiast przekazywać ją do elementów podrzędnych. Dzięki temu interfejs API jest bardziej spójny z interfejsami API animate(). (I24e38)
- Dodano klasę jednostki IntBounds, która reprezentuje granice pikseli w układzie. Interfejs API PopupPositionProvider został zaktualizowany, aby go używać. (I0d8d0, b/159596546)
- Do narzędzi do wyszukiwania testów dodaliśmy nowy opcjonalny flag useUnmergedTree. (I2ce48)
- Usunięto nieaktualne interfejsy API do testowania rozmiaru. (Iba0a0)
- Usunięto klasę wbudowaną Shader, która opakowywała klasę oczekiwaną NativeShader. Zmieniono nazwę klasy NativeShader na Shader. Klasa wbudowana Shader nie wnosiła niczego wartościowego do interfejsu API i była klasą wbudowaną, więc używaj bezpośrednio klasy NativeShader. (I25e4d)
- Wyskakujące okienka, okna dialogowe i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
- Menu DropdownMenu w Material Design są teraz przewijane. (Ide699)
- Usunięto parametr kierunku układu z bloku miary funkcji Layout(). Kierunek układu jest jednak dostępny w wywołaniu zwrotnym za pomocą obiektu zakresu pomiaru (Ic7d9d).
- W interfejsach API najwyższego poziomu używaj AnimationSpec zamiast AnimationBuilder, aby wyjaśnić koncepcję statycznej specyfikacji animacji. -Ulepsz DSL przejścia, usuwając wymaganie lambdy do tworzenia specyfikacji animacji, takich jak tween czy spring. Zamiast tego przyjmują one bezpośrednio parametry konstruktora. – Zwiększenie ogólnej łatwości użycia klasy AnimationSpec przez udostępnienie konstruktorów zamiast polegania na builderach. – Zmiana czasu trwania i opóźnienia w przypadku klas KeyFrames i Tween na Int. Eliminuje to niepotrzebne rzutowanie typów i przeciążanie metod (w celu obsługi zarówno typu Long, jak i Int). (Ica0b4)
- Przełącznik jest teraz wyłączony, gdy wartość parametru
enabled
to „false” (If4624, b/155941869, b/159331694) - Zmieniliśmy nazwę Modifier.tag na Modifier.layoutId, aby uniknąć nieporozumień z Modifier.testTag. (I995f0)
- Pozycje liczb całkowitych w liniach wyrównania zwracane przez Placeable#get(AlignmentLine) nie są już wartościami null. Jeśli wyszukiwana linia wyrównania nie istnieje, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)
Przekształcono klasę Radius w klasę wbudowaną. Usunięto metody tworzenia kształtu towarzyszącego na rzecz konstruktora funkcji z parametrem domyślnym, aby promień wzdłuż osi y był zgodny z obowiązkowym parametrem promienia wzdłuż osi x.
Zaktualizowano funkcję DrawScope.drawRoundRect, aby używała jednego parametru Radius zamiast 2 osobnych wartości zmiennoprzecinkowych dla promienia wzdłuż osi X i Y (I46d1b).
Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, ujednolić użycie klasy Offset zamiast klasy PxPosition. Dzięki temu można korzystać z zalet klasy wbudowanej, aby używać typu long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących przesunięcia x i y w postaci liczb zmiennoprzecinkowych. (I3ad98)
W ramach dużych zmian w kodzie zastąpiono użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli korzystać tylko z jednostek Dp i typów prostych. Usunięto w całości klasę Px (I3ff33)
Komponent przełączany został wycofany. Zamiast tego użyj Modifier.toggleable (I35220, b/157642842)
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I086f4).
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (Id3434).
W ramach dużego refaktoryzowania zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I97a5a).
Naprawiono problem z nieuruchamianiem funkcji onClick w przypadku elementów DropdownMenuItems. (I3998b, b/157673259)
Element MutuallyExclusiveSetItem został wycofany. Zamiast tego użyj Modifier.selectable. (I02b47, b/157642842)
TestTag został wycofany. Zamiast tego użyj Modifier.testTag. (If5110, b/157173105)
Kursor w polu TextField ma animację migania (Id10a7)
Zastąpiono użycie klasy Px w różnych klasach Compose w ramach dużego refaktoryzowania, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I19d02).
Komponent VerticalScroller udostępnia teraz kolumnę od razu po wyjęciu z pudełka. Komponent HorizontalScroller udostępnia teraz wiersz od razu po wyjęciu z pudełka. (Ieca5d, b/157020670)
Zastąpiono użycie klasy Px w różnych klasach Compose w ramach dużego refaktoryzacji, aby w przypadku parametrów pikseli używać tylko jednostek dp i typów pierwotnych (Iede0b).
Wycofanie funkcji Modifier.semantics zostało cofnięte, aby umożliwić używanie jej w komponentach wysokiego poziomu. (I4cfdc)
Zmieniliśmy interfejs API modyfikatorów DrawLayer: outlineShape został zmieniony na shape i ma teraz wartość domyślną RectangleShape oraz nie może mieć wartości null; clipToOutline został zmieniony na clip; clipToBounds został usunięty, ponieważ jest taki sam jak clip == true z RectangleShape (I7ef11, b/155075735).
Zaktualizowano interfejsy API Compose wyższego poziomu, które udostępniają Canvas, aby zamiast tego udostępniać CanvasScope. Eliminuje to konieczność utrzymywania przez konsumentów własnych obiektów Paint. Użytkownicy, którzy nadal potrzebują dostępu do elementu Canvas, mogą użyć metody drawCanvas, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania za pomocą bazowego elementu Canvas. (I80afd)
Funkcja kompozycyjna AlignmentLineOffset została wycofana. Zamiast niej używaj modyfikatora relativePaddingFrom(). Usunięto funkcję kompozycyjną CenterAlignmentLine. (I60107)
Zmieniono interfejs API lambda końcowego WithConstraints. Zamiast 2 parametrów ma teraz zakres odbiorcy, który oprócz ograniczeń i kierunku układu udostępnia właściwości minWidth, maxWidth, minHeight i maxHeight w jednostkach dp (I91b9a, b/149979702).
Dodano modyfikator układu defaultMinSizeConstraints, który ustawia ograniczenia rozmiaru na opakowany układ tylko wtedy, gdy przychodzące odpowiednie ograniczenia nie są określone (0 – ograniczenia minimalne, nieskończoność – ograniczenia maksymalne). (I311ea, b/150460257)
Usunięto FocusManagerAmbient. Aby uzyskać fokus, użyj FocusModifier.requestFocus. (Ic4826)
Utworzono interfejs CanvasScope API, który opakowuje obiekt Canvas, aby udostępnić bezstanowy, deklaratywny interfejs API do rysowania. Przekształcenia są zawarte w odpowiednim zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wstawki. Nie wymaga to od użytkownika utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.
Dodaliśmy CanvasScopeSample, a także zaktualizowaliśmy aplikację demonstracyjną, aby zawierała demonstrację grafiki deklaratywnej (Ifd86d).
Dodanie możliwości dostosowania koloru kursora w polu TextField (I6e33f)
Wartość TextFieldValue używana z polem TextField może teraz przetrwać ponowne utworzenie aktywności, jeśli 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)
Zastąpiono parametr focusIdentifier w komponencie CoreTextField/TextField parametrem FocusNode, aby zintegrować go z podsystemem fokusu. (I7ea48)
Funkcje pomiarów wewnętrznych w Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia interfejs API zapytań o wartości wewnętrzne z niejawnym kierunkiem układu. (Id9945)
Dodano nowy modyfikator Modifier.zIndex(), który umożliwia kontrolowanie kolejności rysowania elementów podrzędnych w tym samym układzie nadrzędnym. Właściwość elevation w modyfikatorze DrawLayerModifier została zmieniona na shadowElevation i nie kontroluje już kolejności rysowania. Zmieniono kolejność parametrów funkcji DrawShadow: pierwszy to teraz elevation, a drugi to shape z domyślnym RectangleShape. (I20150, b/152417501)
RectangleShape przeniesiono z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Aktualizacja interfejsu TextField API – scalenie wywołań zwrotnych onFocus i onBlur w jedno wywołanie zwrotne onFocusChange(Boolean) z parametrem (I66cd3)
Dodano parametry verticalGravity i horizontalGravity odpowiednio do wiersza i kolumny. (I7dc5a)
Zaktualizowano funkcje wrapContentWidth i wrapContentHeight, aby oczekiwały wyrównania w pionie lub poziomie, a nie dowolnego wyrównania. Modyfikator grawitacji został zaktualizowany, aby akceptować 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 obsługiwać zapytania o informacje o pikselach z obiektu ImageAsset. (I69ad6)
Usuwa ProvideContentColor, zamiast tego używa bezpośrednio ContentColorAmbient z
Providers
(Iee942)Moduł ui-text-compose został zmieniony na ui-text. Moduł ui-text zawiera teraz komponenty CoreText i CoreTextField (Ib7d47).
Moduł ui-text został zmieniony na ui-text-core (I57dec)
Przeniesiono funkcje kompozycyjne ui-framework/CoreText i CoreTextField do pakietu ui-text-compose. Możesz uwzględnić ui-text-compose w swoim projekcie. (I32042)
Ulepszenie interfejsu DrawModifier API:
- Zmieniono zakres odbiorcy funkcji draw() na ContentDrawScope
- Usunięto wszystkie parametry funkcji draw()
- DrawScope ma taki sam interfejs jak poprzednia wersja CanvasScope.
- ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067)
runOnIdleCompose
irunOnUiThread
są teraz funkcjami globalnymi, a nie metodami w ComposeTestRule. (Icbe8f)[Mutable]State property delegate operators moved to extensions to support Kotlin 1.4 property delegate optimizations. Aby nadal korzystać z funkcji
by state { ... }
lubby mutableStateOf(...)
, wywołujący muszą dodać importy. (I5312c)Dodano positionInParent i boundsInParent dla LayoutCoordinates. (Icacdd, b/152735784)
Komponent ColoredRect został wycofany. Zamiast tego użyj Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)
Dodano LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac).
Zastąpienie operatora „Modyfikator plus” funkcjami rozszerzenia fabrycznego (I225e4)
Przeniesienie elementu z możliwością przeciągania do modyfikatora (Id9b16, b/151959544)
Funkcja kompozycyjna ParentData została wycofana. Możesz utworzyć modyfikator, który implementuje interfejs ParentDataModifier, lub użyć modyfikatora LayoutTag, jeśli chcesz tylko otagować elementy podrzędne układu, aby można było je rozpoznać w bloku pomiaru. (I51368, b/150953183)
Wycofany komponent kompozycyjny Center. Należy go zastąpić modyfikatorem LayoutSize.Fill + LayoutAlign.Center lub jednym z kompozycji Box lub Stack z odpowiednimi modyfikatorami (Idf5e0).
Dodano interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API w przypadku grafiki wektorowej. Wynikiem subkompozycji jest obiekt VectorPainter zamiast DrawModifier. Wycofano poprzednie funkcje kompozycyjne DrawVector na rzecz VectorPainter.
Zmiana nazwy interfejsu Image(Painter) API na PaintBox(Painter). Utworzenie komponentu Vector, który działa jak komponent Image, ale zamiast ImageAsset używa VectorAsset (I9af9a, b/149030271).
Zmieniono nazwę LayoutFlexible na LayoutWeight. Zmieniono nazwę parametru „tight” na „fill”. (If4738)
Usunięto RepaintBoundary na rzecz DrawLayerModifier (I00aa4)
Funkcja DrawVector została zmieniona ze zwykłej funkcji kompozycyjnej na funkcję zwracającą modyfikator drawVector(), który rysuje wektor jako tło układu. (I7b8e0)
Funkcja kompozycyjna Opacity została zastąpiona modyfikatorem drawOpacity. (I5fb62)
Zastąp funkcję kompozycyjną Clip modyfikatorem drawClip(). DrawClipToBounds to wygodny modyfikator, którego możesz użyć, gdy chcesz przyciąć tylko do granic warstwy w kształcie prostokąta. (If28eb)
Zastąpiono funkcję kompozycyjną DrawShadow modyfikatorem drawShadow(). Cienie są teraz rysowane w ramach LayerModifier. (I0317a)
Dodano LayerModifier, modyfikator, który umożliwia dodawanie RenderNode do układu. Umożliwia ustawianie przycinania, krycia, obrotu, skalowania i cieni. Zastąpi on RepaintBoundary. (I7100d, b/150774014)
Klasa androidx.compose.ViewComposer została przeniesiona do androidx.ui.node.UiComposer. Klasa androidx.compose.Emittable została usunięta. Było to zbędne w przypadku ComponentNode. androidx.compose.ViewAdapters zostało usunięte. Nie jest to już obsługiwany przypadek użycia. Metoda Compose.composeInto została wycofana. Zamiast tego użyj zdarzenia
setContent
lubsetViewContent
. Metoda Compose.disposeComposition została wycofana. Zamiast tego użyj metodydispose
na obiekcieComposition
zwróconym przezsetContent
. Funkcja androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto. Funkcja ComponentNode#emitInsertAt została zmieniona na ComponentNode#insertAt. Funkcja ComponentNode#emitRemoveAt została zmieniona na ComponentNode#removeAt. Funkcja ComponentNode#emitMode została zmieniona na ComponentNode#move (Idef00).Utworzono komponent CreatedImage, który obsługuje zmianę rozmiaru i układu, a także rysowanie danego elementu ImageAsset na ekranie. Ten komponent obsługuje też rysowanie dowolnej instancji Painter z uwzględnieniem jej rozmiaru wewnętrznego oraz obsługę danego stałego lub minimalnego rozmiaru (Ibcc8f).
Wycofana funkcja kompozycyjna Wrap. Można go zastąpić modyfikatorem LayoutAlign lub funkcją kompozycyjną Stack (Ib237f).
WithConstraints ma parametr LayoutDirection (I6d6f7)
Umożliwiono propagowanie kierunku układu z węzła układu nadrzędnego do węzłów podrzędnych. Dodano modyfikator kierunku układu. (I3d955)
Komponent Stack obsługuje kierunek od prawej do lewej (Ic9e00)
Funkcja kompozycyjna DrawShape została usunięta. 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 komponuje i układa widoczne elementy. Obecnie znane problemy obejmują to, że jest on tylko pionowy i nie obsługuje w pełni wszystkich przypadków zmian w jego elementach podrzędnych. (Ib351b)
Zaktualizowano flagę
ComposeFlags.COMPOSER_PARAM
natrue
, co zmieni strategię generowania kodu w przypadku wtyczki do pisania. W dużym uproszczeniu powoduje to, że funkcje @Composable są generowane z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań @Composable, aby środowisko wykonawcze mogło prawidłowo zarządzać wykonaniem. Jest to istotna zmiana binarna, która jednak powinna zachować zgodność na poziomie kodu źródłowego we wszystkich dozwolonych przypadkach użycia funkcji Compose. (I7971c)Dodano komponent Canvas. Ten komponent zajmuje określony rozmiar (podany przez użytkownika) i umożliwia rysowanie za pomocą CanvasScope (I0d622).
Połączyliśmy interfejsy Density i DensityScope w jeden. Zamiast ambientDensity() możesz teraz używać DensityAmbient.current. Zamiast withDensity(density) używaj tylko with(density) (I11cb1).
Zmieniono LayoutCoordinates, aby providedAlignmentLines było zbiorem zamiast mapy, a LayoutCoordinates implementowało operatora get() zamiast pobierania wartości. Ułatwia to modyfikatorom modyfikowanie co najmniej jednej wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
Elementy przewijane działają teraz jak w przypadku gestu szybkiego przesunięcia na urządzeniach z Androidem. (I922af, b/147493715)
Ulepszenia interfejsu API ograniczeń (I0fd15)