Interfejs tworzenia
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(zobacz dokumenty na temat interfejsu API dotyczące wszystkich pakietów compose)
Ostatnia aktualizacja | Wersja stabilna | Wersja kandydująca | Wersja Beta | Wersja alfa |
---|---|---|---|---|
11 grudnia 2024 r. | 1.7.6 | - | - | 1.8.0-alpha07 |
Struktura
Składnik to kombinacja 7 identyfikatorów grupy Maven w ramach androidx
. Każda grupa zawiera określony podzbiór funkcji, z którym wiąże się własny zestaw informacji o wydańach.
Ta tabela zawiera informacje o grupach i linki do poszczególnych zestawów informacji o wersji.
Grupa | Opis |
---|---|
compose.animation | tworzyć animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników. |
compose.compiler | Przekształcaj funkcje @Composable i włącz optymalizacje za pomocą wtyczki kompilatora Kotlin. |
compose.foundation | Pisać aplikacje Jetpack Compose za pomocą gotowych elementów składowych i rozwijać podstawy, aby tworzyć własne elementy systemu projektowania. |
compose.material | Twórz interfejsy Jetpack Compose za pomocą gotowych komponentów Material Design. Jest to punkt wejścia na wyższym poziomie w Compose, który ma na celu udostępnianie komponentów odpowiadających komponentom opisanym na stronie www.material.io. |
compose.material3 | Twórz interfejsy Jetpack Compose za pomocą komponentów Material Design 3, czyli kolejnej generacji Material Design. Material 3 obejmuje zaktualizowane motywy i elementy oraz funkcje personalizacji Material You, takie jak dynamiczne kolory. Jest on zgodny z nowym stylem wizualnym Androida 12 i interfejsem systemu. |
compose.runtime | Podstawowe elementy modelu programowania i zarządzania stanem w Compose oraz środowisko uruchomieniowe główne dla wtyczki kompilatora Compose, na które ma być nakierowany. |
compose.ui | Podstawowe elementy interfejsu tworzenia wiadomości, które są potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie danych. |
Deklarowanie zależności
Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy Google.
Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle
aplikacji lub modułu:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.8
Wersja 1.8.0-alpha07
11 grudnia 2024 r.
androidx.compose.ui:ui-*:1.8.0-alpha07
został zwolniony. Wersja 1.8.0-alpha07 zawiera te komity.
Zmiany w interfejsie API
- Ujawniono właściciela z domeny
LayoutNode
w przypadku narzędzi. (I26f7f) - Użyj lokalnie typu Kolor w komponentach
LocalAutofillHighlightColor
. (I0e05b) - Zachowaj przestarzałą metodę
UrlAnnotation
i jej metody jako eksperymentalne. (Ic0021)
Poprawki błędów
- Usunięto błąd powodujący zamykanie
IndexOutOfBoundsException
podczas używaniaLinkAnnotation
w komponencieBasicText
lub tekście (be7605, b/374115892) - Rozwiązaliśmy problem polegający na tym, że wypełnione pola tekstowe o kształcie niestandardowym nie obcinały linii wskaźnika. (I4f87f, b/380704151)
- Rozwiązaliśmy problem z brakiem tła na długich zrzutach ekranu. (I4d57a)
- Biblioteka ta korzysta teraz z adnotacji JSpecify dotyczących nullowania, które są używane w zależności od typu. Deweloperzy Kotlina powinni używać tych argumentów kompilatora, aby wymusić prawidłowe użycie:
-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode
(Idfef8, b/326456246) - Zaktualizuj obsługę Compose w przypadku szerokiej gamy kolorów i kolorów HDR na Androidzie Q+. (Icd8be, b/379135036)
- Czcionki zasobów, które nie wczytują się, będą teraz po cichu przełączać się na domyślną czcionkę, zamiast zgłaszać wyjątek w funkcji. (Ib6a49)
- Rozwiązanie problemu utraty ostrości podczas odłączania i podłączania
AndroidView
. (I53446) - Zaakceptuj
requestFocus()
z działania dotyczącego układu poza granicami. (Ia8461)
Darowizna zewnętrzna
- Dodanie
BringIntoViewResponderModifierNode
do interfejsu, co zapewnia nowy sposób implementacji funkcji „Przyciągnij do widoku” oraz umożliwia implementację na poziomie platformy. (Ia6dd8)
Wersja 1.8.0-alpha06
13 listopada 2024 r.
androidx.compose.ui:ui-*:1.8.0-alpha06
został zwolniony. Wersja 1.8.0-alpha06 zawiera te komisy.
Zmiany w interfejsie API
- Dodaje modyfikator
stylusHoverIcon
. (Iff20a, b/331289114) - Zmiana menedżera autouzupełniania na interfejs. (I84914, b/376080755)
- Dodaje
requestFocus(FocusDirection)
dofocusRequester
iFocusTargetModifierNode
, aby umożliwić skupienie się na określonym kierunku. (I5d9ec, b/245755256) - Parametry
FocusProperties.enter
iFocusProperties.exit
zostały zastąpione parametramionEnter
ionExit
, które używają zakresu odbiornika zamiast parametruFocusDirection
. (I6e667) - Dodanie obsługi autouzupełniania na pasku narzędzi tekstowych. (Ie6a4c)
- Zmiany w interfejsie API (I99c03):
- nazwa parametru zmieniona na „fallback”
- parametr jest teraz
FocusRequester
, a nie lambda - parametr jest teraz niepusty, a wartością domyślną jest wartość domyślna;
Modifier.focusRestorer()
- Usuwanie adnotacji
@Experimental
z interfejsu menedżera autouzupełniania. Ta funkcja jest nadal w wersji roboczej, ale nie chcemy wprowadzać interfejsu API @Expemiental (Id8398). LocalHapticFeedback
udostępnia teraz domyślną implementacjęHapticFeedback
, gdy interfejs Vibrator API wskazuje, że haptyka jest obsługiwana. Do operatoraHapticFeedbackType
dodano użytkownikówConfirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
iVirtualKey
. Komponenty Wear Compose, które można kliknąć dłużej, takie jakButton
,IconButton
,TextButton
iCard
, wykonują teraz haptyczneLONG_PRESS
, gdy zostanie podany moduł obsługi długiego kliknięcia. (I5083d)- Usuwa parametry
OverscrollConfiguration
iLocalOverscrollConfiguration
oraz dodaje parametrrememberPlatformOverscrollFactory
, aby utworzyć instancję parametrów / customize domyślnej implementacji przewijania. Aby wyłączyć przewijanie ponad ekran, zamiast wartościLocalOverscrollConfiguration provides null
użyj wartościLocalOverscrollFactory provides null
. Aby zmienić kolor poświaty lub wypełnienia, zamiastLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
użyjLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - Usunięto eksperymentalny interfejs API
GlobalAssertions
. Jego celem było przeprowadzanie kontroli ułatwień dostępu. W tym celu użyj zamiast tegoenableAccessibilityChecks()
. (I59322)
Wersja 1.8.0-alpha05
30 października 2024 r.
androidx.compose.ui:ui-*:1.8.0-alpha05
został zwolniony. Wersja 1.8.0-alpha05 zawiera te komisy.
Nowe funkcje
W tej wersji autouzupełnianie jest dostępne za pomocą flagi funkcji. Pracujemy nad poprawą wydajności i chcielibyśmy poznać Twoją opinię na temat interfejsów API. Interfejsy API będą ewoluować przed wprowadzeniem stabilnej wersji na podstawie opinii użytkowników.
- Aby włączyć autouzupełnianie, ustaw
ComposeUiFlags.isSemanticAutofillEnabled
na „true” wonCreate
i użyj najnowszego Compose Snapshot. - Ta wersja autouzupełniania obsługuje zapisywanie danych logowania ręcznie, za pomocą funkcji Zaproponuj silne hasło oraz podczas nawigacji. Obsługuje też wypełnianie, gdy pole, w którym można użyć funkcji Autouzupełniania, zostanie zaznaczone lub gdy funkcja Autouzupełniania zostanie uruchomiona za pomocą paska narzędzi tekstowych w komponentach tekstowych. Gdy autouzupełnianie się zakończy, komponent zostanie wyróżniony.
Zmiany w interfejsie API
- Zmień interfejs autouzupełniania, aby odpowiadał strukturze
expect
/actual
. (I22dce) - Wprowadzić
CompositionLocal
, który można wykorzystać do zmiany odcienia podświetlenia pola pomyślnie wypełnionego przez autouzupełnianie. (I32092) - Dodano interfejs API
Modifier.onRectChanged
, który umożliwia subskrybowanie pozycji i rozmiaru oknaLayoutNode
względem okna głównego lub ekranu. Interfejs API rozwiązuje wiele problemów, które rozwiązuje również istniejący modyfikatoronGloballyPositioned
, ale robi to z o wiele mniejszymi narzutami. Interfejs API zawiera też mechanizmy debouncingu i ograniczania szybkości wywołania zwrotnego w zależności od wymagań danego przypadku użycia. (Id28c7, b/372765423, b/372757007, b/372994338) - Rozszerzenie Menedżera autouzupełniania o interfejsy API
commit()
icancel()
, które pomagają użytkownikom zapisywać nowo wprowadzone dane logowania. (I2da00) - Wprowadza nowy interfejs
AutofillManager
, który umożliwia dostosowanie procesu autouzupełniania dla użytkowników, oraz flagęisSemanticAutofillEnabled
, która pozwala włączyć nową wersję autouzupełniania. (I9d484) - Dodano interfejs API
Modifier.onRectChanged
, który umożliwia subskrybowanie pozycji i rozmiaruLayoutNode
względem okna lub ekranu. Interfejs API rozwiązuje wiele problemów, które rozwiązuje również istniejący modyfikatoronGloballyPositioned
, ale robi to z o wiele mniejszymi narzutami. Interfejs API zawiera też mechanizmy debouncingu i ograniczania szybkości wywołania zwrotnego w zależności od wymagań danego przypadku użycia. (I3c8fa) - Dodaj właściwości semantyczne i typy danych, aby rozszerzyć obsługę Autouzupełniania. (I52c7d)
- Wszystkie metody w twórcy
AnnotatedString
nie są już eksperymentalne (Ia89c8, b/261561823)
Poprawki błędów
- Widoki umieszczone w komponencie mogą teraz otrzymywać zdarzenia obrotu, jeśli są aktywne (I4d53a, b/320510084)
- Rozwiązano problem, który powodował, że różne typy zasobów nie aktualizowały się po zmianach konfiguracji (Ia9b99, b/352336694).
- Rozwiązano problem, który uniemożliwiał prawidłowe działanie
TextField
podczas korzystania z klawiatury japońskiej POBox na niektórych starszych urządzeniach Sony. (Ia9b99, b/373743376) - Rozwiązano problem z wyświetlaniem okienek u dołu ekranu zamiast w środku (Ia2ec, b/373093006)
- W interfejsie Targeting API 35 i nowszych nie jest już wymagane, aby w dialogach parametr
decorFitsSystemWindows
miał wartość false. (Ibc94, b/364492593) - Naprawiono błąd powodujący awarię podczas przenoszenia warstw między oknami (np.okno dialogowe i główny element treści) (I675ba, b/330955281).
Wersja 1.8.0-alpha04
16 października 2024 r.
androidx.compose.ui:ui-*:1.8.0-alpha04
został zwolniony. Wersja 1.8.0-alpha04 zawiera te komisy.
Zmiany w interfejsie API
- Dodaje funkcje zwracane
DelegatableNode#onDensityChange
iDelegatableNode#onLayoutDirectionChange
, aby umożliwić aktualizowanie stanu węzła po zmianie tych wartości (I04f3e, b/340662451) - Dodaje
WindowInfo#containerSize
, aby podać rozmiar kontenera treści bieżącego okna. Można je uzyskać za pomocąLocalWindowInfo
. (Idc38c, b/369334429, b/360343819) - Wprowadziliśmy poprawkę dotyczącą zagnieżdżonych elementów przewijanych, które są usuwane z drzewa węzła podczas trwającego przewijania. Teraz te węzły anulują rzut i prawidłowo wyślą zdarzenie
onPostFling
z pozostałością prędkości. Wprowadzamy też flagęNewNestedScrollFlingDispatchingEnabled
, która pozwala kontrolować działanie w przypadku regresji. Flaga zostanie usunięta przed wersją beta. (I05c37, b/371168883) - Wprowadziliśmy
PointerInputModifierNode#touchBoundsExpansion
, który umożliwia powiększenie obszaru dotykowego pojedynczego modyfikatora wejścia wskaźnika. (Iccf02, b/335339283) - Dodaje
WindowInfo#containerSize
, aby podać rozmiar kontenera treści bieżącego okna. Można je uzyskać za pomocąLocalWindowInfo
. (I27767, b/369334429, b/360343819) - Usuń
readOnly
zTextFields
, aby przypiąć stabilną wersję podstawy. (I3aaba) Paragraph
iParagraphIntrinsics
zawierają teraz listę wszystkich adnotacji zastosowanych doAnnotatedString
. Wcześniej zawierały one tylko listęSpanStyles
(I12f80).
Poprawki błędów
- Zmieniono sposób traktowania akapitów w
AnnotatedString
. Wcześniej można było tworzyć tylko nienakładające się akapity. TerazAnnotatedString
umożliwia łączenie ze sobą całkowicie nakładających się akapitów oraz akapitów zagnieżdżonych. W tym drugim przypadku akapit zewnętrzny zostanie podzielony na granicach akapitu wewnętrznego, a styl akapitu wewnętrznego zostanie połączony ze stylem akapitu zewnętrznego (Ic9554) - Naprawić błąd powodujący awarię w funkcji
AnnotatedString
, gdyLinkAnnotation
ma długość zero. (89aac6)
Wersja 1.8.0-alpha03
2 października 2024 r.
androidx.compose.ui:ui-*:1.8.0-alpha03
został zwolniony. Wersja 1.8.0-alpha03 zawiera te komity.
Zmiany w interfejsie API
- Aktualizacja wersji Kotlina do 1.9 (I1a14c)
- Wprowadziliśmy nową rolę semantyki o nazwie karuzela, aby emulować zachowanie listy w pagerach w przypadku usług a11y. (Id354b, b/354109776, b/239672673)
- Zmień nazwę
invisibleToUser()
nahideFromAccessibility
. Jego działanie pozostaje bez zmian. Więcej informacji znajdziesz w dokumentacji. (Ib43a3)
Poprawki błędów
- Aktualizacja dokumentów dla modyfikatora
SensitiveContent
(Ib0442) - Rozwiązanie problemu, który powodował, że niektóre ogólne klipy konturu były ignorowane w połączeniu z cieniowaniem w niektórych wersjach Androida
- Rozwiązanie problemu polegającego na tym, że puste klipy były stosowane, gdy w niektórych wersjach Androida podano ogólne klipy konturowe.
- Naprawiono wyjątek wywoływany, gdy IME jest aktywne w zewnętrznym widoku, a działanie „Dalej” służy do ustawienia fokusa na przycisku
ComposeView
. Działanie funkcjiclearFocus()
jest zgodne z działaniem widoku w wersji interfejsu API <28, w której funkcjaclearFocus()
może spowodować skupienie się na domyślnym widoku. - Rozwiązaliśmy problem polegający na tym, że umieszczanie elementów następowało w odłączonych węzłach w
LazyList
. Rozwiązanie polegało na rozdzieleniu zarządzania podkompozycją na różne przepusty układu. - Rozwiązaliśmy problem polegający na tym, że klawiatura oprogramowania miga, gdy fokus przełącza się z elementu
TextField
na elementEditText
lub dowolny inny edytor oparty na widoku. - Węzły zagnieżchnia skryptu po oderwaniu będą teraz prawidłowo wysyłać zdarzenia
onPostFling
. - Ogólne poprawki wydajności
Wersja 1.8.0-alpha02
18 września 2024 r.
androidx.compose.ui:ui-*:1.8.0-alpha02
został zwolniony. Wersja 1.8.0-alpha02 zawiera te komity.
Zmiany w interfejsie API
- Dostępne są teraz elementy
TextOverflow.StartEllipsis
iTextOverflow.MiddleEllipsis
, które umożliwiają umieszczanie wielokropków na początku lub w środku wiersza pojedynczego wiersza tekstu. (I38913, b/185418980)
Poprawki błędów
- Naprawiono błąd Dalog
dismissOnClickoutside
(39a3d, b/364508685) - Nie przycinaj cieni obrazu (e8e2f, b/363027803)
- Poprawka nieprawidłowego działania podczas przenoszenia fokusa wyszukiwania między oknami Utwórz i Widok (58377, b/350534714)
Darowizna zewnętrzna
- Funkcja
AlignmentLines
Map
obsługuje teraz typyVerticalAlignmentLine
lubHorizontalAlignmentLine
. (I02912) - Nowa wspólna metoda
ByteArray.decodeToImageBitmap(): ImageBitmap
. (I83c21)
Wersja 1.8.0-alpha01
4 września 2024 r.
androidx.compose.ui:ui-*:1.8.0-alpha01
został zwolniony. Wersja 1.8.0-alpha01 zawiera te komity.
Wersja 1.7
Wersja 1.7.6
11 grudnia 2024 r.
androidx.compose.ui:ui-*:1.7.6
został zwolniony. Wersja 1.7.6 zawiera te komity.
Poprawki błędów
- Wcześniej, gdy następowało kluczowe zdarzenie, a system focus miał oczekujące unieważnienia, pojawiał się błąd. Teraz zamiast tego rejestrujemy błąd (I7ea0, b/346370327).
- Usunięto eksperymentalną adnotację z
SemanticsPropertyReceiver.invisibleToUser()
. W wersji 1.8 zostanie on wycofany i zastąpiony przezSemanticsPropertyReceiver.hideFromAccessibility()
. (I448f0, b/376479686) - Rozwiązaliśmy problem, który uniemożliwiał prawidłowe działanie
TextField
podczas korzystania z klawiatury japońskiej POBox na niektórych starszych urządzeniach Sony. (I94e0e, b/373743376) - Rozwiązaliśmy problem z dostępnością, który powodował, że
BasicText
nie ogłaszała inlineContent.TalkBack
(I67bcb, b/376479686)
Wersja 1.7.5
30 października 2024 r.
androidx.compose.ui:ui-*:1.7.5
został zwolniony. Wersja 1.7.5 zawiera te komitowane zmiany.
Poprawki błędów
- Rozwiązaliśmy problemy z nieprawidłowym renderowaniem wysokości i przycinania za pomocą niestandardowych kontur.
- Rozwiązanie problemu z awarią tekstu, który występuje w przypadku znaku o szerokości 0 pikseli
LinkAnnotation
. (Ic1e2e) - Naprawiono komunikat w
Talkback
przycisku, gdy jest on utworzony jako klikalny element tekstowy. (I1f588)
Wersja 1.7.4
16 października 2024 r.
androidx.compose.ui:ui-*:1.7.4
został zwolniony. Wersja 1.7.4 zawiera te komitowane zmiany.
Wersja 1.7.3
2 października 2024 r.
androidx.compose.ui:ui-*:1.7.3
został zwolniony. Wersja 1.7.3 zawiera te komity.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że podanie ogólnego klipu zarysu prowadziło do pustej granicy klipu w niektórych wersjach Androida.
- Naprawiono wyjątek wywoływany, gdy IME jest aktywne w zewnętrznym widoku, a działanie „Dalej” służy do ustawienia fokusa na przycisku
ComposeView
. Działanie funkcjiclearFocus()
jest zgodne z działaniem widoku w wersji interfejsu API <28, w której funkcjaclearFocus()
może spowodować skupienie się na domyślnym widoku. - Rozwiązaliśmy problem, który powodował, że do nieprawidłowej nieważności w przyszłości używano nieprawidłowej wartości
placeOrder
. Dzięki temu rozwiązaliśmy przypadek krawędziowy, w którym pomijano ustawienie w przyszłości.
Wersja 1.7.2
18 września 2024 r.
androidx.compose.ui:ui-*:1.7.2
został zwolniony. Wersja 1.7.2 zawiera te komitowane zmiany.
Poprawki błędów
- Poprawiliśmy wydajność informacji o węzłach ułatwień dostępu i zdarzeń semantycznych, usuwając szczegółowe śledzenie. (I89156, b/362530618)
ComposeView
nie będzie się już zawieszać, gdy zostanie przekazany wyjątkowo duży rozmiar pomiaru (da5db, b/347036173).- Rozwiązaliśmy problem z czytnikami ekranu dotyczący ułatwień dostępu, w którym nie były ogłaszane
LiveRegion
przyciski. (f66fa7, b/348590026)
Wersja 1.7.1
10 września 2024 r.
- Brak zmian w artefaktach na Androida. Usunięto
-desktop
artefakty i dodano-jvmStubs
oraz-linuxx64Stubs
. Żadnego z tych celów nie należy używać. Są to elementy zastępcze, które ułatwiają pracę Jetbrains Compose.
Wersja 1.7.0
4 września 2024 r.
androidx.compose.ui:ui-*:1.7.0
został zwolniony.
Ważne zmiany od wersji 1.6.0
Ważne zmiany w wersji 1.7.0 opisane są w tym poście na blogu.
Wersja 1.7.0-rc01
21 sierpnia 2024 r.
androidx.compose.ui:ui-*:1.7.0-rc01
został zwolniony. Wersja 1.7.0-rc01 zawiera te komity.
Ważne zmiany
- ui:moduł ui wymusza teraz, aby wersja minimalna modułu foundation:foundation wynosiła co najmniej 1.7.0-rc01 lub nowsza. Ta zmiana jest wymuszona, aby rozwiązać problem niezgodności zachowania między interfejsem a fundamentem w odniesieniu do zmian
NestedScrollSource
, które nastąpiły na początku wersji 1.7.0-alpha01.
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
androidx.compose.ui:ui-*:1.7.0-beta07
został zwolniony. Wersja 1.7.0-beta07 zawiera te komity.
Poprawki błędów
- Funkcje
SemanticsNodeInteraction
performTextReplacement
,performTextInput
iperformTextClearance
związane z danymi wejściowymi tekstowymi będą teraz wywoływać błędy asercji, gdy są wywoływane w trybie tylko do odczytuTextFields
. (I4ae8f)
Wersja 1.7.0-beta06
24 lipca 2024 r.
androidx.compose.ui:ui-*:1.7.0-beta06
został zwolniony. Wersja 1.7.0-beta06 zawiera te komity.
Wersja 1.7.0-beta05
10 lipca 2024 r.
androidx.compose.ui:ui-*:1.7.0-beta05
został zwolniony. Wersja 1.7.0-beta05 zawiera te komisy.
Poprawki błędów
- Usunęliśmy błąd, który powodował, że zmiana klawiatury programowej powodowała, że
TextField
nie przyjmowała danych ze nowej klawiatury, dopóki nie straciła i nie odzyskała fokusu. - Rozwiązaliśmy problem, który powodował nieoczekiwane skutki uboczne podczas prób zapisywania zawartości warstwy podczas renderowania treści
SurfaceView
.
Wersja 1.7.0-beta04
26 czerwca 2024 r.
androidx.compose.ui:ui-*:1.7.0-beta04
został zwolniony. Wersja 1.7.0-beta04 zawiera te komity.
Poprawki błędów
- Unikanie awarii podczas pomiaru bardzo długich linii tekstu (np.10 tys. znaków) (8157ab)
- Wyłącz obsługę renderowania oprogramowania w przypadku interfejsu API
GraphicsLayer
. (35ddd8) - Naprawiono błąd powodujący awarię logiki trwałości warstwy. (70b13e)
- Optymalizacja ponownego używania obiektów warstwy została cofnięta, ponieważ powodowała problemy z renderowaniem. (70b13e)
Wersja 1.7.0-beta03
12 czerwca 2024 r.
androidx.compose.ui:ui-*:1.7.0-beta03
został zwolniony. Wersja 1.7.0-beta03 zawiera te zatwierdzenia.
Wersja 1.7.0-beta02
29 maja 2024 r.
androidx.compose.ui:ui-*:1.7.0-beta02
został zwolniony. Wersja 1.7.0-beta02 zawiera te komity.
Zmiany w interfejsie API
- Zmieniono nazwę
SemanticsProperties.Editable
naIsEditable
, aSemanticsPropertyReceiver.editable
na wartośćisEditable
. Właściwość jest teraz typu logicznego i zawsze jest określana przez pola tekstowe. (I8acd8) - Zmień nazwę parametru testu porównawczego ułatwień dostępu. (I3d440)
- Zaktualizowany interfejs API do stylizacji linków:
TextLinkStyles
jest teraz częścią konstruktoraLinkAnnotation
i metodyAnnotatedString.fromHtml
(I90b2b). Usunięto też z materiałówTextDefaults
(I5477b).
Poprawki błędów
- Nazwa
LayoutCoordinates.introducesFrameOfReference
została zmieniona naLayoutCoordinates.introducesMotionFrameOfReference
, aby lepiej odzwierciedlała jej przeznaczenie. Zmieniono nazwę powiązanej funkcji, aby obliczała współrzędne na podstawie tej flagi. (I3a330)
Wersja 1.7.0-beta01
14 maja 2024 r.
androidx.compose.ui:ui-*:1.7.0-beta01
został zwolniony. Wersja 1.7.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmieniono nazwę
performCustomAccessibilityActionLabelled
naperformCustomAccessibilityActionWithLabel
, aperformCustomAccessibilityActionWhere
naperformCustomAccessibilityActionWithLabelMatching
. (I5387f) AnnotatedString.hasEqualsAnnotations
to terazhasEqualAnnotations
(I685c0)- Zaktualizowano interfejs API w celu uzyskiwania linków w stylu Material w tekście. W szczególności usunęliśmy z
TextDefaults
metody tworzenia tematycznychLinkAnnotations
i analizowania kodu HTML za pomocą tematycznych linków. Zamiast tego dodaliśmy klasęTextLinkStyles
, która umożliwia stylizowanie linków jako parametru w komponowalnym elemencie tekstu. (I31b93)
Poprawki błędów
- Rozwiązano problemy z dodatkowymi przypadkami użycia podczas dynamicznego dodawania modyfikatorów wprowadzania danych przez kursor podczas zdarzeń 63e1504
Wersja 1.7.0-alpha08
1 maja 2024 r.
androidx.compose.ui:ui-*:1.7.0-alpha08
został zwolniony. Wersja 1.7.0-alpha08 zawiera te komity.
Zmiany w interfejsie API
- Dodano obsługę zmiennych implementacji kształtów.
Shape#createOutline
jest teraz obserwowany w warstwach graficznych, więc odczytywanie wartości stanu wewnątrz powoduje unieważnienie po zmianie stanu, co pozwala na tworzenie bardziej wydajnych animacji kształtów. (Id1629, b/326070216) - Nazwa
isPositionedByParentWithDirectManipulation
została zmieniona naintroducesFrameOfReference
. Pamiętaj, że teraz ma on odwrotny skutek, co oznacza, że domyślnie większość wartościLayoutCoordinates
wprowadza system odniesienia, a właściwość będzie fałszywa tylko wtedy, gdy zostanie umieszczona w ramach bezpośredniej manipulacji. Aby zapytanie o pozycję zawierało tylko te, które wprowadzają punkt odniesienia, użyjpositionInLocalFrameOfReference(...)
. Możesz teżpositionInLocalLookaheadFrameOfReference
z poziomuLookaheadScope
. (Ifc5f7) LookaheadScope
Interfejsy API są stabilne (I21507)- Zmień wartość parametru action_lambda w przypadku
getScrollViewportLength
zgodnie z opinią Rady interfejsu API. (Ibc74a) - Zaktualizowano interfejsy API
GraphicsLayer
outline, aby używały parametrów typu float zamiast int. Usunięto wartościUnsetOffset/UnsetSize IntSize
sentinel na rzecz już istniejących nieokreślonych stałych w klasach inline Offset i Size opartych na typie float (I2fb03, b/333863462) - Podczas testowania wstrzykiwania danych wejściowych myszy funkcje
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
iMouseInjectionScope.longClick()
obsługują teraz parametrbutton: MouseButton
, co zwiększa ich uniwersalność. Wartością domyślną dla wszystkich metod jestMouseButton.Primary
. (I31a23, b/190493367, b/261439695) - Zmieniono nazwę
onClicked
naonClick
w sekcjiLinkInteractionListener
. (Iaa35c) - Zmień nazwę
TextInclusionStrategy.isInside
naisIncluded
. Ustaw typ zwracany przez funkcjęParagraph/MultiParagraph#getRangeForRect()
jako niepusty. (I51f26)
Poprawki błędów
- Rozwiązanie problemu z robieniem długich zrzutów ekranu w przypadku przewijanych kontenerów z
reverseScrolling=true
. (I7c59c)
Darowizna zewnętrzna
- Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych
LazyLists
(np.LazyColumn
, który renderuje zagnieżdżonyLazyRows
). Ta zmiana powinna zmniejszyć liczbę opuszczonych klatek podczas przewijania tychLazyLists
. Domyślnie implementacja pobiera z wyprzedzeniem 2 pierwsze elementy zagnieżdżone, ale to zachowanie można kontrolować za pomocą nowych interfejsów APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
iLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Wersja 1.7.0-alpha07
17 kwietnia 2024 r.
androidx.compose.ui:ui-*:1.7.0-alpha07
został zwolniony. Wersja 1.7.0-alpha07 zawiera te komity.
Zmiany w interfejsie API
- Środowisko wykonawcze
ClickableText
zostało wycofane. Aby dodać linki do tekstu, utwórzAnnotatedString
zLinkAnnotation
odpowiadającym linkowi i przekaż toAnnotatedString
do komponentu Text. (I34d4b, b/323346994) - Wprowadź
ViewConfiguration.HandwritingGestureLineMargin
do gestów pisma odręcznego. Obsługa gestuJoinOrSplit
w przypadkuBasicTextField
(Ie6e13, b/325660505) - Usługi
FocusProperties.enter
iFocusProperties.exit
nie są już eksperymentalne. UsługiFocusDirection.Enter
iFocusDirection.Exit
nie są już eksperymentalne. FunkcjaFocusRequester.Cancel
nie jest już eksperymentalna (I461a1, b/261564106) - Gdy wysyłasz zapytanie o współrzędne układu, możesz teraz użyć argumentu
excludeDirectManipulationOffset
, aby wykluczyć przesunięcie ustawione przez nadrzędne układy, które umieściły swoje podrzędne za pomocą argumentuPlaceable.PlacementScope.withDirectManipulationPlacement
. Podobnie układ, który często zmienia pozycję swoich elementów, może teraz umieszczać je za pomocąwithDirectManipulationPlacement
(np. przewijania, zaimplementowanego domyślnie). Dzięki temu animacje oparte naapproachLayout
są bardziej intuicyjne, ponieważ można teraz rozróżnić, który przesunięcie ma być animowany, a który ma być stosowany bezpośrednio podczas animowania. (I60ec7) - Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
LazyColumn
będzie teraz prawidłowo wyświetlać przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)- Źródła danych
NestedScroll
Drag and Fling są zastępowane przezUserInput
iSideEffect
, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz koło i klawiaturę myszy (UserInput
). (I40579) ApproachLayoutModifierNode
iModifier.approachLayout
są teraz stabilne, a noweisMeasurementApproachInProgress()
iisPlacementApproachInProgress()
zastępują odpowiednio stareisMeasurementApproachComplete()
iisPlacementApproachComplete()
.- Usunięto przestarzały modyfikator
intermediateLayout
. (I3e91c) - Zmień nazwę
GraphicsLayer#buildLayer
na record, aby odzwierciedlić metody beginRecording i endRecording interfejsów API obsługiwanych przez Displaylist, takich jakRenderNode
i Picture. - Zaktualizowano
rememberGraphicsLayer
, aby wykorzystaćrememberObserver
. (I312c1, b/288494724, b/330758155) - Tag
UrlAnnotation
został wycofany. Zamiast niego używaj taguLinkAnnotation.Url
. Jeśli używasz motywu Material, użyj obiektuTextDefaults
, aby utworzyć adnotację z zastosowanym motywem Material (I8d180, b/323346545) - Linki tekstowe mają teraz opcję stylizacji w przyciśniętym stanie oprócz zwykłej stylizacji, stylizacji po najechaniu kursorem i po zaznaczeniu (I5f864, b/139312671).
- Nazwa
String.parseAsHtml
została zmieniona naAnnotatedString.Companion.fromHtml
. (I43dcd) - Do metody
parseAsHtml
dodano argumenty stylizacji (linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) i obsługę interakcji z linkami. Podczas analizowania ciągu znaków z tagami HTML (<a>
) metoda tworzyLinkAnnotation.Url
dla każdego takiego tagu, a także przekazuje obiekty stylizacji i słuchacza interakcji z linkiem do każdej adnotacji. (I7c977) - Funkcja
LinkAnnotation
przyjmuje teraz argumenty stylizacji oparte na stanie i argumentLinkInteractionListener
. Dodaj tę adnotację doAnnotatedString
, aby uzyskać hiperlink. PrzekazującfocusedState
lubhoveredState
, możesz zdefiniować wizualizacjęconfiguration
dla linków, gdy są one w fokusie lub gdy nad nimi się zatrzymujesz. (I81ce4, b/139312671) - Kolumna
ImeOptions.hintLocales
nie może już być pusta. Jeśli chcesz przekazać pustą listę języków, użyj wartościLocaleList.Empty
. (Ic5bc4)
Poprawki błędów
- Umożliwia sprawne przetwarzanie nieprawidłowego lub uszkodzonego historycznego wejściowego pliku danych zdarzenia (ignoruje nieprawidłowe dane offsetu).
- Poprawia nieoczekiwane zdarzenia wskaźnika, gdy modyfikator wejścia wskaźnika jest dodawany dynamicznie przed innym modyfikatorem wejścia wskaźnika podczas aktywnego strumienia zdarzeń wejścia wskaźnika (np. między wejściem i wyjściem kursora [mysz/rysik]).
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
androidx.compose.ui:ui-*:1.7.0-alpha06
został zwolniony. Wersja 1.7.0-alpha06 zawiera te komisy.
Nowe funkcje
- Dodaliśmy metodę
parseAsHtml
dla ciągów znaków ze stylami: umożliwia ona konwersję ciągu znaków oznaczonego tagami HTML naAnnotatedString
. Pamiętaj, że nie wszystkie tagi są obsługiwane. Na przykład nie możesz jeszcze wyświetlać list wypunktowanych. (I84d3d, I30626, b/139326648) - Wdrożyliśmy eksperymentalne wsparcie dla długich zrzutów ekranu w slajdach przewijania w Compose za pomocą oficjalnego interfejsu API Androida (
ScrollCaptureCallback
). Ta funkcja jest eksperymentalna i obecnie może nie obsługiwać wszystkich przypadków. Z tego powodu jest ona obecnie domyślnie wyłączona. Aby je włączyć, ustaw flagęComposeFeatureFlag_LongScreenshotsEnabled
na wartość prawda. (I2b055, b/329296471)
Zmiany w interfejsie API
- Wartość
fun ClipEntry.getMetadata()
została zmieniona naval ClipEntry.clipMetadata
. (I50155) - Usunięto funkcje
ClipboardManager.getClipMetadata
iClipboardManager.hasClip
. Aby odczytać metadane bieżącego wpisu klipu, użyjclipEntry.getMetadata()
. Sprawdź też, czy wynik funkcjiClipboardManager.getClip
jest równy null, aby dowiedzieć się, czy schowek zawiera bieżący klip. (I50498) - Teraz możesz przekazywać obiekty
GraphicsLayer
do funkcjiplaceable.placeWithLayer()
(I1b22f). ClipboardManager.setClip
może teraz przyjmować wartość null, aby można było wyczyścić schowek. (I7d2e9)- Dodano identyfikatory zasobów, aby ułatwić ukrywanie widoków używanych jako szczegóły implementacji w narzędziach kompilacji (I99531).
- Dodano metodę zawieszania
GraphicsLayer#toImageBitmap
, aby umożliwić renderowanie zawartości bitmapy w elementachGraphicsLayer
. Jest to operacja renderowania przyspieszonego sprzętowo na poziomie interfejsu API 22 lub nowszym, która obsługuje ponad 99% wszystkich urządzeń z Androidem. W przypadku poziomu interfejsu API 21 Androida funkcja ta jest zastępowana przez renderowanie oprogramowania. (I9e114) - Metoda pomocnicza do konwertowania elementu
RectF
na Androida naComposeRect
(I39925, b/325660505) - Wszystkie parametry
KeyboardOptions
mają teraz domyślnie nieokreśloną wartość. Dodano metodęKeyboardOptions.merge
. - Zmieniliśmy nazwę pola
KeyboardOptions.autoCorrect
naautoCorrectEnabled
i nadaliśmy mu możliwość przyjmowania wartości null, gdzie null oznacza, że nie określono wartości. (Ia8ba0, b/295951492) - Wariant
BasicTextField(state)
iBasicSecureTextField
używają teraz wartościKeyboardActionHandler
zamiastKeyboardActions
do przetwarzania działań podejmowanych przez klawiaturę programową. (I58dda)
Wersja 1.7.0-alpha05
20 marca 2024 r.
androidx.compose.ui:ui-*:1.7.0-alpha05
został zwolniony. Wersja 1.7.0-alpha05 zawiera te komity.
Nowe funkcje
- Wprowadziliśmy nowy interfejs
GraphicsLayer
API do rejestrowania poleceń rysowania w liście wyświetlania oraz dodatkowych właściwości, które wpływają na jej renderowanie. Dzięki temu można podzielić skomplikowaną scenę na mniejsze elementy, które można aktualizować niezależnie od siebie bez konieczności ponownego tworzenia całej sceny. Przekształcenia wprowadzone w elementachGraphicsLayer
można wykonać bez ponownego nagrywania listy wyświetlania. W przeciwieństwie doModifier.graphicsLayer
GraphicsLayer
umożliwia renderowanie treści składanych w innym miejscu i jest przydatny w zastosowaniach animowanych, w których treści mają być renderowane w różnych scenach.
Zmiany w interfejsie API
- Interfejs
GraphicsLayer.draw(Canvas)
nie jest już interfejsem API dostępnym publicznie. Zamiast tego do rysowania warstwy użyj funkcji rozszerzeniaDrawScope.drawLayer(GraphicsLayer)
. (I7a7c0) - Podziel
restrictedConstraints()
na 2 metody:fitPrioritizingWidth()
ifitPrioritizingHeight()
(I6d7fd) - Wprowadziliśmy
HardwareCanvas
stub na potrzeby Androida L (I1c3b5, b/288494724). - Zaktualizuj framework Compose, aby udostępnić kompozycję lokalną
GraphicsContext
, a także zaktualizowane implementacje właściciela,DelegateableNode
i modyfikatoradrawWithCache
, aby udostępnić dostęp doGraphicsContext
w ramach ograniczonego dostępu, który automatycznie usunie instancjeGraphicsLayer
, gdy modyfikatory zostaną usunięte. (I64a2f, b/288494724) - Wprowadziliśmy
InterceptPlatformTextInput
, aby ułatwić pisanie testów niskiego poziomu związanych z IME i inne przypadki użycia IME na niskim poziomie. Środowisko wykonawczePlatformTextInputTestOverride
zostało wycofane. (I862ed, b/322680547) - Dodano funkcję rozszerzenia
GraphicsLayer.setOutline(Outline)
. (Ib81f4) - Wprowadzić konstruktor funkcji
GraphicsContext
, aby utworzyć fabrykę do tworzenia instancjiGraphicsLayer
(Ib98d6, b/288494724) - Interfejs API
GraphicsLayer
zapewnia programistom elastyczność w zakresie rejestrowania poleceń rysowania, które można stosować do rysowania w innych miejscach i do stosowania różnych efektów wizualnych w wyniku końcowym. (I80245, b/288494724) - Poznaj funkcję
Paragraph#getRangeForRect
, która zwraca zakres tekstu pokryty przez dany obszar prostokąta. (Iee516, b/325660505) - Usunięto eksperymentalne zastąpienie wartości
BasicText
argumentemonLinkClicked
. W przyszłości udostępnimy nowe API obsługujące hiperlinki. (I107d5)
Poprawki błędów
- Dodano definicję interfejsu API
GraphicsLayer
expect/actual, aby umożliwić rejestrowanie i odtwarzanie poleceń rysowania z opcjonalnym składaniem efektów wizualnych i przekształceń. Wprowadzić interfejsGraphicsContext
, który będzie zawierać zależności graficzne, w tym tworzenie i zarządzanie instancjamiGraphicsLayer
. (I4a8d6, b/288494724) - Rozwiązaliśmy problem z współdziałaniem w przypadku wyszukiwania z fokusem 1D, w którym fokus zatrzymywał się w elementach
ComposeView
umieszczonych w ramach innych widoków. (I08fd4)
Darowizna zewnętrzna
LocalLifecycleOwner
zostało przeniesione z interfejsu Compose dolifecycle-runtime-compose
, aby można było używać interfejsów API pomocniczych opartych na Compose poza interfejsem Compose. Dziękujemy Jake’owi Whartonowi za pomoc. (I6c41b, b/328263448)- Konsekwentnie wyświetlaj właściwości typu float w przypadku wszystkich podtypów wyrównania opartego na błędach. (I69f0f, b/328088992)
Wersja 1.7.0-alpha04
6 marca 2024 roku
androidx.compose.ui:ui-*:1.7.0-alpha04
został zwolniony. Wersja 1.7.0-alpha04 zawiera te komity.
Zmiany w interfejsie API
- Obsługa funkcji pisma odręcznego rysikiem w przypadku pola tekstowego podstawowego 2 na urządzeniach z Androidem U i nowszych. (I002e4)
- W tym CL dodajemy działanie semantyczne
GetScrollViewportLength
, aby przesyłać informacje o komponentach przewijanych w komponencie do systemu a11y. Ten CL dotyczy również używania tej usługi w podstawowych listach przewijanych. (Ic5fa2) FocusRequester.createRefs
jest teraz stabilna (I4d92c, b/261436820)- Wprowadziliśmy funkcję
DelegatableNode.requireView()
, aby umożliwić węzłom modyfikatorów pobieranie bieżącego AndroidaView
bez odczytywania kompozycji lokalnie. (I40768) - Nowy interfejs API
Path.reverse()
do odwracania kierunku ścieżki (I36348) - Dodano
hintLocales
doKeyboardOptions
, aby umożliwićTextFields
wyświetlanie podpowiedzi w systemach IME z określonymi lokalizacjami, które umożliwiają wstępne ustawienie preferowanego języka. - Wyświetla właściwość
platformLocale
z elementuLocale
, która zwraca obiekt platformy docelowej, np.java.util.Locale
. (I921c6)
Wersja 1.7.0-alpha03
21 lutego 2024 r.
androidx.compose.ui:ui-*:1.7.0-alpha03
został zwolniony. Wersja 1.7.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Przedstawiamy
ContextualFlowRow
i ulepszoneFlowRow
/Column
z MaxLines i Overflow. Z przyjemnością informujemy, że eksperymentalne funkcjeFlowRow
iFlowColumn
zostały ulepszone. Teraz obsługują one maxLines i przepełnienie. Wprowadziliśmy też funkcjeContextualFlowRow
iContextualFlowColumn
. To uaktualnienie ma na celu zapewnienie optymalnej wydajności komponentów.ContextualFlow*
doskonale nadaje się do dużej liczby elementów, korzystających z małej konfiguracjimaxLines
i dynamicznych przycisków „Pokaż więcej” +N. NatomiastFlowRow
iFlowColumn
są idealne do małej liczby elementów (mniej niż 100). Ważne: aby zachować dotychczasowe działanie funkcjiFlowRow
lubFlowColumn
, w której wszystkie elementy są łączone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjalizacji ustaw wartość parametruoverflow
naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. Aby zobaczyć przykłady działania nowych funkcji, przejdź do sekcjiContextualFlowRowSample
iFlowRowSample
. (Ib9135, b/293577082) - Dodaj właściwość semantyki
maxTextLength
, która powinna być ustawiona w polach tekstowych, które filtrują maksymalną dozwoloną liczbę znaków. (I24d9f, b/170648072) - Opakowanie
Modifier.inspectable
zostało wycofane. Ten interfejs API spowoduje więcej niepotrzebnych unieważnień modyfikatora, dlatego nie zalecamy jego używania. Deweloperzy powinni implementować metodęinspectableProperties()
w obiekcieModifierNodeElement
, jeśli chcą udostępnić właściwości modyfikatorów narzędziom. (Ib3236) - Nowy konstruktor
PopupProperties
, który umożliwia pełną kontrolę nad flagamiWindowManager.LayoutParams
. (Ibb33e, b/312485503) - Wprowadziliśmy funkcję
DelegatableNode.requireLayoutCoordinates()
, która umożliwia uzyskanie aktualnejLayoutCoordinates
obiektuModifier.Node
bez konieczności zastępowaniaonPlaced
i samodzielnego przechowywania współrzędnych w obiekcie. (Ia8657) - Wprowadziliśmy funkcję
DelegatableNode.currentLayoutCoordinates
, która umożliwia uzyskanie aktualnejLayoutCoordinates
obiektuModifier.Node
bez konieczności zastępowaniaonPlaced
i samodzielnego przechowywania współrzędnych w obiekcie. (Iaebaa) - Interfejs
BasicTextField2
i powiązane z nim interfejsy API w pakiecieandroidx.compose.foundation.text2
zostaną przeniesione do pakietuandroidx.compose.foundation.text
. (I9f635) - Dodano nowy interfejs API
ApproachLayoutModifierNode
, który umożliwia tworzenie niestandardowej logiki podejścia w wyraźnym węźle modyfikatora. Dodano też nowy eksperymentalny interfejs APIDeferredTargetAnimation
do animacji, których cel jest nieznany w momencie tworzenia. (I60745) - Nowe interfejsy API
Path
do wysyłania zapytań o kierunek ścieżki i wyodrębniania kontur zPath
. (I63d04) - Dodano
PathHitTest
iPath.contains(Offset)
, aby sprawdzić, czyPath
zawiera określony punkt. (I3b218) - Klasa
TextLayoutResult
udostępnia teraz metodęgetLineBaseline(lineIndex)
. Umożliwia to odczytywanie wartości bazowej dowolnego wiersza tekstu oprócz właściwościfirstBaseline
ilastBaseline
. (Ide4e8, b/237428541) - Dodano metodę do porównywania tylko adnotacji 2
AnnotatedStrings
. (I32659)
Poprawki błędów
- Rozwiązaliśmy problem ze zgodnością wsteczną w przypadku
SemanticsPropertyReceiver.performImeAction
iSemanticsActions.PerformImeAction
. (Id0528, b/322269946)
Wersja 1.7.0-alpha02
7 lutego 2024 r.
androidx.compose.ui:ui-*:1.7.0-alpha02
został zwolniony. Wersja 1.7.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Rozwiązano problem ze zgodnością binarną z
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - Konstruktor
PopupProperties
, który przyjmuje parametrusePlatformDefaultWidth
, nie jest już eksperymentalny. (I8f8d2) - Dodano przeciążenie funkcji
ComposeTestRule.waitUntil
, która przyjmuje ciąg znaków opisujący stan, który ma być uwzględniony w wiadomości o przekroczeniu limitu czasu. (I9413e) - Nowe interfejsy API semantyki
unset()
do usuwania właściwości semantycznych, które są dodawane w tym samym łańcuchu modyfikatorów. Nowa właściwość semantycznaisOpaque
. (I8c583, b/317966058, b/246056649) - Usunięto
originalEventPosition
z metody kopiowania w publicznym interfejsie API usługiPointerInputChange
. (I7bead)
Poprawki błędów
- Rozwiązaliśmy błąd związany z a11y, który umożliwiał klikanie elementów innych niż karty i opcje. (I2181c)
VelocityTracker
będzie teraz domyślnie dodawać punkty. W razie problemów możesz wyłączyć poprawkę, ustawiając wartośćVelocityTrackerAddPointsFix
na „fałsz”. (Ib3877, b/269487059)- Usunięto problem z brakiem zgodności wstecznej binarnych wersji
TextStyle
iParagraphStyle
. (I179f0, b/320819734)
Darowizna zewnętrzna
- Dodano nowy konstruktor
DialogProperties
bez parametrów specyficznych dla platformy. (I45829) - Dodano nowy konstruktor
PopupProperties
bez parametrów specyficznych dla platformy. (I9a038)
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
androidx.compose.ui:ui-*:1.7.0-alpha01
został zwolniony. Wersja 1.7.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
- Rozszerzyliśmy
ClipboardManager
o elementyClipEntry
iClipMetadata
, aby umożliwić obsługę dowolnych treści, np. obrazów. - Dodaje interfejs
DeviceConfigurationOverride
doui-test
, aby umożliwić lokalnie zastąpienie zachowania treści poddawanych testom, na przykład w celu określenia rozmiaru, lokalizacji, kierunku układu, skali czcionki lub motywu.
Wersja 1.6
Wersja 1.6.8
12 czerwca 2024 r.
androidx.compose.ui:ui-*:1.6.8
został zwolniony. Wersja 1.6.8 zawiera te komity.
Poprawki błędów
- Rozwiązano problemy z niespójnościami w skalowaniu czcionki, gdy skala czcionki jest mniejsza niż najniższa zdefiniowana tabela. W tym przypadku interpolujemy między skalą liniową 1x a najniższą zdefiniowaną tabelą, tak aby rozmiar czcionki monotonicznie wzrastał wraz ze wzrostem skali. (Icbae3)
Wersja 1.6.7
1 maja 2024 r.
androidx.compose.ui:ui-*:1.6.7
został zwolniony. Wersja 1.6.7 zawiera te komitowane zmiany.
Wersja 1.6.6
17 kwietnia 2024 r.
androidx.compose.ui:ui-*:1.6.6
został zwolniony. Wersja 1.6.6 zawiera te komity.
Poprawki błędów
- Naprawiono rzadki błąd
BasicTextField
.
Wersja 1.6.5
3 kwietnia 2024 r.
androidx.compose.ui:ui-*:1.6.5
został zwolniony. Wersja 1.6.5 zawiera te komity.
Wersja 1.6.4
20 marca 2024 r.
androidx.compose.ui:ui-*:1.6.4
został zwolniony. Wersja 1.6.4 zawiera te komitowane zmiany.
Wersja 1.6.3
6 marca 2024 roku
androidx.compose.ui:ui-*:1.6.3
został zwolniony. Wersja 1.6.3 zawiera te komisy.
Wersja 1.6.2
21 lutego 2024 r.
androidx.compose.ui:ui-*:1.6.2
został zwolniony. Wersja 1.6.2 zawiera te commity.
Wersja 1.6.1
7 lutego 2024 r.
androidx.compose.ui:ui-*:1.6.1
zostaje opublikowana. Wersja 1.6.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem ze zgodnością wsteczną w przypadku
SemanticsPropertyReceiver.performImeAction
iSemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946) - Teraz podczas pomiaru układów wyświetlany jest błąd, gdy jeden z nich zwraca nienormalnie duży rozmiar. Ten rodzaj błędu występuje zwykle wtedy, gdy pomiar używa bezpośrednio ograniczeń maksymalnych bez sprawdzania wartości
Constraints.Infinity
. Dzięki temu deweloperzy będą mogli szybciej znajdować problemy z nieprawidłowym rozmiarem układu, a nie z układem, który zawiera ten rozmiar. (I339a9)
Wersja 1.6.0
24 stycznia 2024 r.
androidx.compose.ui:ui-*:1.6.0
został zwolniony. Wersja 1.6.0 zawiera te zatwierdzenia.
Wersja 1.6.0-rc01
10 stycznia 2024 r.
androidx.compose.ui:ui-*:1.6.0-rc01
został zwolniony. Wersja 1.6.0-rc01 zawiera te commity.
Poprawki błędów
- Zoptymalizowana implementacja grafik wektorowych, która poprawia wydajność przez zminimalizowanie dodatkowych rekompozycji.
Wersja 1.6.0-beta03
13 grudnia 2023 r.
androidx.compose.ui:ui-*:1.6.0-beta03
został zwolniony. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.
Nowe funkcje
- Teraz można odłączyć
LayoutCoordinates
bez odłączania węzła. Zapobieganie temu w inspektorze układu w Compose (If693)
Poprawki błędów
PlatformImeOptions
jest teraz konkretną klasą, a nie interfejsem. (If40a4)- Naprawiono dodatkowe ponowne skompilowanie na kolejnych poziomach spowodowane tym, że
LocalSoftwareKeyboardController
iLocalTextInputService
otrzymywały nowe wartości za każdym razem, gdy korzeń był ponownie kompilowany. (I42190, b/310510985)
Wersja 1.6.0-beta02
29 listopada 2023 r.
androidx.compose.ui:ui-*:1.6.0-beta02
został zwolniony. Wersja 1.6.0-beta02 zawiera te commity.
Wersja 1.6.0-beta01
15 listopada 2023 r.
androidx.compose.ui:ui-*:1.6.0-beta01
został zwolniony. Wersja 1.6.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Modyfikator
DragAndDropTarget
przyjmuje teraz parametrDragAndDropTarget
w sposób jawny i ma funkcję lambda, która umożliwia włączenie sesji przeciągania i upuszczania. Teraz w przypadkuDragAndDropModifierNode
istnieją 2 funkcje fabryczne. Jeden do odbierania transferów i jeden do przesyłania danych (I69481) - Zaktualizowano
maximumFlingVelocity
, aby reprezentować je jako typ danych Float. Zaktualizowano dokumentację, aby była bardziej przejrzysta w sprawiemaximumFlingVelocity
. (I8adc7) onDragAndDropStart
w fabryceDragAndDropModifierNode
nosi teraz nazwęacceptDragAndDropTransfer
.Do modyfikatoradragAndDropTarget
dodano wartośćacceptsDragAndDropTransfer
, aby umożliwić akceptowanie podczas sesji przeciągania i upuszczania. Ta funkcja lambda zwracaDragAndDropTarget
, jeśli chcesz przeprowadzić sesję przeciągania i upuszczania. Zastąpiły one inne funkcje lambda służące do przetwarzania zdarzeń przeciągania. Dodano funkcję fabrycznąDragAndDropTarget
, która obsługuje sesje przeciągania i upuszczania (Iebf3a).Usunięto parametr
DragAndDropInfo
, ponieważ typDragAndDropModifierNode.drag
przyjmuje teraz parametry dlatransferData
, rozmiaru dekoracji i dekoracji przeciąganiaDrawScope
lambdaDragAndDropTarget
ma metody dla poszczególnych zdarzeń przeciągania i upuszczania zamiast jednej abstrakcyjnej metodyFunkcja fabryczna
onDragAndDropEvent
w przypadku obiektuDragAndDropModifierNode
została przemianowana naonDragAndDropStart
, aby lepiej wskazywać, że podany obiektDragAndDropTarget
jest prawidłowy tylko w przypadku danej sesji przeciągania i upuszczania.Opcja
DragAndDropEventType
została usunięta (I645b1).Nazwa
PlatformTextInputModifierNode.runTextInputSession
została zmieniona naestablishTextInputSession
. (I03cd0)Poprawiono nazwy interfejsów API węzłów dostępnych do przejścia, aby były bardziej zrozumiałe. (Ia4474)
Zastąp
OriginalText
wartościąTextSubstitution
. (Ifa5a8)Nazwa
PlatformTextInputModifierNode.textInputSession
została zmieniona narunTextInputSession
. (Ie9c6b)Elementy podrzędne
SubcomposeLayout
(i oparte na nich układy, np.LazyColumn
), które są zachowane, aby można było ich używać w przyszłości, są uważane za wyłączone. Wprowadziliśmy nowy interfejs API testówassertIsDeactivated()
, który umożliwia testowanie takich węzłów. Pozostałe interfejsy API testowe domyślnie odfiltrowują dezaktywowane węzły. (I2ef84, b/187188981)Usunięto
FocusDirection.In
iFocusDirection.Out
, zamiast nich używajFocusDirection.Enter
iFocusDirection.Exit
(I2f660)Interfejsy API Material
SwipeToReveal
(do tworzenia kart i elementów) korzystają teraz z interfejsu API opartego na slotach (zgodnie z zaleceniem Compose) zamiast z instancji opartych na klasie danych. Jest to zmiana powodująca przerwanie działania. Aby dowiedzieć się, jak korzystać z nowego interfejsu API, zapoznaj się z demonstracją i przykładowym kodem. (Ia8943)Konstruktor
FontStyle(int)
został wycofany. Zamiast niego używaj konstruktoraFontStyle.Normal
lubFontStyle.Italic
. (I66610)Nazwa interfejsu
FontScalable
została zmieniona naFontScaling
(Ie804a)
Poprawki błędów
SoftwareKeyboardController.show()
nie będzie już wyświetlać klawiatury, jeśli żaden edytor tekstu nie jest aktywny. (I2165a, b/301477279)- Zdarzenia klawisza sprzętowego W górę dotyczące klawiszy, które nie mają zdarzenia W dół w tym samym widoku tworzenia, będą ignorowane. (Ib37b4, b/305518328)
- Dodaliśmy obsługę renderowania gradientu Sweep w
ArcLine
. (I4d5bb) - Zaimplementuj metody equals i hashcode dla klasy
PageSize.Fixed
. (Ie3ede, b/300134276) - Rozwiązanie problemu z zgodnością binarną w związku ze zmianą w oknie (Iee695)
- Usuń warstwę główną materiału w przypadku elementu lub przycisku Material3, ponieważ mikrotesty pokazują lepszą wydajność bez niej. (I55555)
TestDispatcher
przekazywane do Compose jakoeffectContext
będą teraz używane do tworzenia testów i zegarów kadru. (Ia7178)
Wersja 1.6.0-alpha08
18 października 2023 r.
androidx.compose.ui:ui-*:1.6.0-alpha08
został zwolniony. Wersja 1.6.0-alpha08 zawiera te commity.
Zmiany w interfejsie API
- W funkcji
Modifier.dragAndDrawSource
nazwa funkcji lambdaonDrawDragShadow
została zmieniona nadrawDragDecoration
, a w funkcjiDragAndDropInfo
parametr size nadragDecorationSize
. (Id0e30, b/303904810) - Wprowadź
SemanticsNodeInteraction.isDisplayed()
iSemanticsNodeInteraction.isNotDisplayed()
, aby sprawdzić, czy dopasowany węzeł jest widoczny, bez konieczności jego opisu. (I2c196, b/302100809) - Wprowadziliśmy specjalną wartość
Unspecified
dla pólTextAlign
,TextDirection
,Hyphens
iLineBreak
w tabeliParagraphTextStyle
, aby zastąpić wartośćnull
. Ponieważ te klasy są klasami wbudowanymi, zastąpienie typu nullable typem nieokreślonym pozwala uniknąć zamykania typu prymitywnego. Konstruktory, metody gettera i inne metody w obiektachTextStyle
i Paragraph style zostały zaktualizowane, aby akceptowały wymienione parametry jako typy niezerowe. (I4197e, b/299490814) - Dodaj przeciążenie
GoogleFont
do odczytuGoogleFont
z XML. (If8f59) LoremIpsum
PreviewParameterProvider
stało się zajęciami otwartymi. (I41bf5, b/266918816, b/300116360)
Poprawki błędów
FontFamilyResolver
używa terazDispatchers.Main
do zarządzania współbieżnymi funkcjami obsługi pamięci podręcznej. (Ie8dd9)AndroidViewBinding
teraz synchronicznie usuwa wystąpieniaFragment
, które zostały wygenerowane przez uwzględnienieFragmentContainerView
w układzie jako elementonRelease
, używająccommitNow
(zamiastcommit
, którego używano wcześniej), dzięki czemu rozwiązuje problemy z metodą edycji na żywo polegającą na zastępowaniu kompozycji po wprowadzeniu zmian. (I58fbf)
Wersja 1.6.0-alpha07
4 października 2023 roku
androidx.compose.ui:ui-*:1.6.0-alpha07
został zwolniony. Wersja 1.6.0-alpha07 zawiera te commity.
Zmiany w interfejsie API
- Wprowadziliśmy
PlatformTextInputMethodTestOverride
do pisania testów dla niestandardowych edytorów tekstowych. (Id159b) - Dodaje modyfikator
dragAndDropSource
do inicjowania sesji przeciągania i upuszczania oraz modyfikatordragAndDropTarget
do odbierania danych z sesji przeciągania i upuszczania. (Ib7828, b/286038936) - Dodano kolekcje
ColorList
iColorSet
, które unikają przypisywania. (I744bd) - Dodano tymczasową flagę
DisableNonLinearFontScalingInCompose
, aby wyłączyć nieliniowe skalowanie czcionki. Jeśli potrzebujesz czasu na uporządkowanie testów, ustaw w nich wartośćDisableNonLinearFontScalingInCompose = true
. Ten parametr zostanie usunięty w wersji Compose 1.6.0-beta01. (Ic9486)
Poprawki błędów
- Zoptymalizowano analizowanie wektorów obiektów rysowalnych w pliku XML. (Ibb015)
Wersja 1.6.0-alpha06
20 września 2023 r.
androidx.compose.ui:ui-*:1.6.0-alpha06
został zwolniony. Wersja 1.6.0-alpha06 zawiera te commity.
Zmiany w interfejsie API
- Dodatkowe optymalizacje ikon w ramach Material Design. (I3e08d)
- Dodaje możliwość przeszukiwania w górę i w dół drzewa modyfikatorów w celu znalezienia podobnych węzłów. (I2d234)
- Dodano wywołanie zwrotne
onRestoreFailed()
do modyfikatorafocusRestorer()
(Ie1d43). - Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić
ColorInt
,FloatRange
,IntRange
,Size
i inne. (Id65c8, b/290950582) - Dodano
showSystemUi=true
do definicjiPreviewScreenSizes
(Ib61d3)
Zmiany w zachowaniu
- Funkcja tworzenia teraz wykorzystuje nieliniowe skalowanie czcionek, aby zwiększyć czytelność i dostępność. Jeśli w ustawieniach systemowych rozmiar czcionki > 100%, mały tekst będzie normalnie powiększany, ale i tak już duży tekst będzie powiększany tylko trochę. Wysokość wiersza zdefiniowana w SP będzie automatycznie dostosowywana, aby pozostać proporcjonalna do wysokości odpowiadającej 100% skali. Więcej informacji znajdziesz w artykule Sprawdzone metody dotyczące skalowania czcionek (I11518).
Wersja 1.6.0-alpha05
6 września 2023 r.
androidx.compose.ui:ui-*:1.6.0-alpha05
został zwolniony. Wersja 1.6.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Włącz przechwytywanie treści w
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - Prędkości w komponentach Widok, takich jak
ScrollView
iRecyclerView
, są ograniczone doViewConfiguration.ScaledMaximumFlingVelocity
. Teraz aplikacja Redagowanie zawiera własną wersjęmaximumFlingVelocity
, która ma zastosowanie doDraggable
. (Ibf974) - Dodaje wstępne elementy konstrukcyjne do obsługi interfejsów API platformy typu przeciągnij i upuść. (If84ce)
- Dodaj
deviceId
doRotaryScrollEvent
(Iba3bf) - Zaktualizowano interfejs API urządzeń
ui-tooling
, aby uwzględniał nowsze urządzenia (Ib25b4).
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
androidx.compose.ui:ui-*:1.6.0-alpha04
został zwolniony. Wersja 1.6.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Dodano metodę dezaktywacji
ReusableComposition
, która usuwa obserwacje, ale zachowuje węzły. Dezaktywowaną kompozycję można ponownie aktywować, wywołując funkcjęsetContent
. (Ib7f31) - Dodaj interfejs
ReusableComposition
do zarządzania cyklem życia i ponownego użycia podkompozycji. (I812d1, b/252846775) - Interfejs
Modifier.focusGroup
został przeniesiony do stabilnych interfejsów API. (I7ffa3) - Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić
ColorInt
,FloatRange
,IntRange
,Size
i inne. (I70487, b/290950582) - Zaktualizowano interfejs API
ColorFilter
, aby zawierał konkretne typy podklas, co ułatwia sprawdzanie parametrów. (I5fe29) - Wprowadzenie biblioteki narzędzi do wyświetlania podglądu na Wear OS, która zawiera listę prawidłowych urządzeń Wear OS, które można wykorzystać do wyświetlania podglądu interfejsu (Ib036e)
- Utworzono interfejs
FontScalable
, aby obsłużyć część interfejsu gęstości dotyczącą skalowania czcionek. (I2cf3f)
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
androidx.compose.ui:ui-*:1.6.0-alpha03
został zwolniony. Wersja 1.6.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Nowy typ przejścia wejścia/wyjścia, który skaluje zawartość na podstawie rozmiaru animowanego kontenera podczas animacji wejścia i wyjścia.
LookaheadScope
Funkcja komponowania i interfejs są teraz stabilne. (Ifb2ce) - Dodano obsługę konfiguracji
privateImeOptions
(Idb772).
Poprawki błędów
PopupPositionProvider.calculatePosition
będzie teraz automatycznie aktualizować pozycję wyskakującego okienka, gdy zmieni się stan odczytu w obliczeniach. (I676a1, b/292257547)- Rozwiązano problem z polami tekstowymi, które wyświetlają klawiaturę i są możliwe do edycji, gdy wartość
readOnly
to prawda. Naprawiliśmy też błąd polegający na tym, że klawiatura nie wyświetlała się, gdy wartośćreadOnly
zmieniła się z prawdy na fałsz podczas skupienia. (I34a19, b/246909589) - Rozszerzone zastosowanie stwierdzeń globalnych w testach UI (I1f90d)
Wersja 1.6.0-alpha02
26 lipca 2023 r.
androidx.compose.ui:ui-*:1.6.0-alpha02
został zwolniony. Wersja 1.6.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Dodano interfejs wyszukiwania usługi, który może być implementowany przez implementatorów kompozycji. Umożliwia on implementację kompozycji, która deleguje wyszukiwanie usługi do innej kompozycji, a potem do pierwotnej kompozycji. Nie należy go wywoływać bezpośrednio. Służy on do tworzenia eksperymentalnych interfejsów API w czasie wykonywania. Można go znaleźć w opakowanych wersjach kompozytora, np. w module interfejsu użytkownika. (I296b9)
- całkowicie przeprojektowany interfejs API
PlatformTextInput*
, (I6c93a, b/274661182, b/267235947, b/277380808) - Usługi
SoftwareKeyboardController
iLocalSoftwareKeyboardController
nie są już eksperymentalne.LocalSoftwareKeyboardController
jest teraz prawidłowymCompositionLocal
. (I4c364) - Interfejsy
LookaheadLayout
iLookaheadLayoutScope
zostały wycofane w kilku wersjach i zostały usunięte. Zastępcze interfejsy API toLookaheadScope
, które mogą działać z dowolnym układem. (I12ac3) - Dodano
SemanticsNodeInteraction.requestFocus
jako wygodniejszy i łatwiejszy do znalezienia sposób na prośbę o skupienie się na testach. (Ie8722) - Dodanie eksperymentalnych interfejsów API do rejestrowania asercji globalnych, które będą używane przez frameworki testowe w przyszłości. (I12d77)
Poprawki błędów
- Pierwsze wywołanie funkcji
AndroidView
w komponencieupdate
będzie teraz odkładane do momentu dołączenia widoku, zamiast uruchamiania się po zastosowaniu kompozycji, która wprowadza komponentAndroidView
. Rozwiązanie to naprawia błąd, który powodował, że wywołanie zwrotneupdate
nie było unieważniane, jeśli stan odczytany przez funkcję został natychmiast zmieniony przez efekt. (Ie9438, b/291094055)
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
androidx.compose.ui:ui-*:1.6.0-alpha01
został zwolniony. Wersja 1.6.0-alpha01 zawiera te commity.
Nowe funkcje
- Obsługa funkcji lookahead w
LazyList
. Dzięki temuLazyList
w przewidywaniu może pomijać animacje (np.animację umieszczania elementów,AnimatedVisibility
itp.) i obliczać rozmiar oraz pozycję przewidywania dla wszystkich elementów podrzędnych. Po etapie przewidywania dzieciLazyList
mogły animować niezależnie od rzeczywistości, jaką widziały na etapie przewidywania.
Zmiana zachowania: w sekcji Komponowanie domyślnie ustawiamy teraz wartość false dla parametru includeFontPadding
Wartość includeFontPadding
jest teraz domyślnie ustawiona na fałsz (21d806) w sekcji „Tworzenie”.
includeFontPadding
to starszy atrybut, który określa, czy w pierwszym i ostatnim wierszu tekstu ma być uwzględnione dodatkowe wypełnienie, aby uwzględnić znaki, które mogą wystawać poza podstawę tekstu.
Zmiana tej wersji aplikacji Compose spowoduje zmianę sposobu renderowania wszystkich tekstów w interfejsie. Usunie to dodatkowe wypełnienie na początku i na końcu każdego wyświetlanego tekstu.
W zależności od wymagań dotyczących interfejsu i danych czcionki zmiany powinny być minimalne. Możesz jednak napotkać przeszkody, takie jak: - testy nieprawidłowego zrzutu ekranu. W razie potrzeby napraw interfejs użytkownika i wygeneruj ponownie złote obrazy. – tekst jest lekko niedopasowany. Usuń wszelkie niestandardowe ujemne wypełnienie lub w razie potrzeby dodaj wypełnienie.
Możesz włączyć includeFontPadding
, używając PlatformTextStyle
dla każdego tekstu:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Możesz włączyć includeFontPadding
dla wszystkich tekstów, konfigurując style Material. Pamiętaj, że nazwy parametrów różnią się w przypadku M2 i M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Więcej informacji o składaniu includeFontPadding
znajdziesz w dokumentacji dla deweloperów i tym poście na blogu.
Jeśli wystąpią problemy lub błędy związane z tą zmianą, prześlij raport o błędzie za pomocą śledzika problemów.
Zmiany w interfejsie API
- Pomoc
InputConnection#requestCursorUpdates
(I0c69b) - Dodano
FocusRequester.saveFocusedChild
iFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318). - Dodaj typ
ResourceResolutionException
, aby opakować obiekty rzucane podczas próby załadowania zasobów bitmapy z opisem ścieżki zasobu, której nie udało się załadować. (I19f44, b/230166331, b/278424788) - Optymalizacja ułatwień dostępu pod kątem wydajności i alokacji pamięci. (Iede48)
- Dodano właściwości i działania semantyczne, aby umożliwić tłumaczenie tekstu. (I4a6bc)
- Nowa właściwość w funkcji
IntrinsincMeasureScope
i jej implementacjach (np.MeasureScope
) do wskazywania, czy bieżący pomiar jest pomiarem z wyprzedzeniem. (I7a812) - Zaktualizowaliśmy interfejs API
DrawScope
, aby umożliwić ponowne ukierunkowanie renderowania na innym płótnie z inną gęstością/kierunkiem układu i rozmiarem. - Zaktualizowano
DrawContext
, aby obsługiwać konfigurację gęstości i kierunku układu oraz umożliwić konfigurowanie obrazu. (Ie1f9b, b/225408150) - Dodano
Paragraph#fillBoundingBoxes
do obliczania ramek ograniczających znaki. (If30ee) - Dodano zestaw typowych
MultiPreviews
(Ia5a27)
Poprawki błędów
- Dodano interfejs
FocusTargetModifierNode
, który umożliwia tworzenie niestandardowychFocusTarget
. (I9790e) - Zmieniono nazwy parametrów
fallback*
w konstruktorzeTextMeasurer
nadefault*
. (I940a5) - Zmieniono nazwę
SemanticsPropertyReceiver.performImeAction
naonImeAction
, aSemanticsActions.PerformImeAction
naOnImeAction
. (I8e841) - Dodaje kółko, aby odróżnić przewijanie od przeciągania w ramach przewijania zagnieżdżonego (szczególnie w funkcji
NestedScrollConnection
). (Ie57e4) - Dodano interfejs API
asComposePaint
, który zastępuje interfejstoComposePaint
, ponieważ zwracany obiekt zawiera oryginalny obiektandroid.graphics.Paint
(I22b4c). - Wycofaj parametr
SemanticsProperties.imeAction
i zastąp go nowym parametremSemanticsActions.performImeAction
. (I4a587) - Dodano obsługę zaznaczania za pomocą myszy. Zaznaczenie dotykowe będzie się rozszerzać o wyraz, a zmniejszać o znak. (Ic0c6c, b/180639271)
- Metody
Paragraph
, które wcześniej zwracały błądAssertionError
w przypadku przesunięć poza zakres, teraz zwracają błądIllegalArgumentException
, tak jak metodaMultiParagraph
. (I549d3, b/243338896)
Wersja 1.5
Wersja 1.5.4
18 października 2023 r.
androidx.compose.ui:ui-*:1.5.4
został zwolniony. Wersja 1.5.4 zawiera te zatwierdzenia.
Wersja 1.5.3
4 października 2023 roku
androidx.compose.ui:ui-*:1.5.3
został zwolniony. Wersja 1.5.3 zawiera te zatwierdzenia.
Poprawki błędów
- (b/301209788)
TextField
czasami nieprawidłowo stosował poprzednie polecenia podczas skupiania i wprowadzania koreańskich danych wejściowych, co powodowało utratę znaków.
Wersja 1.5.2
27 września 2023 r.
androidx.compose.ui:ui-*:1.5.2
został zwolniony. Wersja 1.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano obejście problemu z zawieszeniami, które występowały, gdy z interfejsu API przesuwania treści w ramach ułatwień dostępu korzystano z podprocesu w tle.
- Rozwiązanie problemu polegający na dodawaniu do drzewa semantycznego nieprzypisanych węzłów.
Wersja 1.5.1
6 września 2023 r.
androidx.compose.ui:ui-*:1.5.1
został zwolniony. Wersja 1.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązano problem z polami tekstowymi, które wyświetlają klawiaturę i są możliwe do edycji, gdy wartość
readOnly
to prawda. Naprawiliśmy też błąd polegający na tym, że klawiatura nie wyświetlała się, gdy wartośćreadOnly
zmieniła się z prawdy na fałsz podczas skupienia. (I34a19, b/246909589)
Wersja 1.5.0
9 sierpnia 2023 r.
androidx.compose.ui:ui-*:1.5.0
został zwolniony. Wersja 1.5.0 zawiera te zatwierdzenia.
Wersja 1.5.0-rc01
26 lipca 2023 r.
androidx.compose.ui:ui-*:1.5.0-rc01
został zwolniony. Wersja 1.5.0-rc01 zawiera te commity.
Poprawki błędów
- Rozwiązano problem z awarią, która występowała podczas używania elementu
SubcomposeLayout
w elementachmovableContentOf()
.
Wersja 1.5.0-beta03
28 czerwca 2023 r.
androidx.compose.ui:ui-*:1.5.0-beta03
został zwolniony. Wersja 1.5.0-beta03 zawiera te commity.
Poprawki błędów
- Dodano interfejs FocusTargetModifierNode, który można wykorzystać do utworzenia niestandardowego obiektu FocusTarget. (Ifb1d6)
- Rozwiązaliśmy problem z komponowanymi oknami Dialog i Popup, który mógł powodować nieprawidłową zmianę rozmiaru okna podrzędnego po wywołaniu
usePlatformDefaultWidth=true
. (I112ee)
Wersja 1.5.0-beta02
7 czerwca 2023 r.
androidx.compose.ui:ui-*:1.5.0-beta02
został zwolniony. Wersja 1.5.0-beta02 zawiera te commity.
Zmiany w interfejsie API
- Dodano interfejs API
asComposePaint
, aby umożliwić korzystanie z instancjiandroid.graphics.Paint
w komponencie Compose.
Poprawki błędów
- Dodano interfejs API
asComposePaint
, który zastępuje interfejstoComposePaint
, ponieważ zwracany obiekt zawiera oryginalny obiektandroid.graphics.Paint
(I22b4c).
Wersja 1.5.0-beta01
24 maja 2023 r.
androidx.compose.ui:ui-*:1.5.0-beta01
został zwolniony. Wersja 1.5.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Usunięto alokacje w rekompozycji, animacjach kolorów i elementach
AndroidComposeView
(Ib2bfa). - Dodaje funkcję pomocniczą
CacheDrawModifierNode()
, aby umożliwić delegowanie (Icf8f9) - Przedstawiamy właściwość
isLookingAhead
, dostępną w ramachMeasureScope
, która umożliwia obserwowanie wyników prognozowania i w razie potrzeby wpływanie na główne przejście. (Ibf4c3) - Nowa właściwość semantyczna
traversalIndex
, która jest liczbą zmiennoprzecinkową służącą do zmiany kolejności węzłów w przeszukiwaniuTalkBack
(niższe wartości są w pierwszej kolejności). (I9a81b, b/186443263) - Zmiana nazwy usługi Semantics o nazwie
isContainer
naisTraversalGroup
(I121f6) ColorProducer
ma terazoperator fun invoke
zamiastproduce
(I4a9a2)- Dodaj interfejs API transformowania
Path
, aby stosować przekształcenia przesunięcia, skali i obrotu do obiektów ścieżki. (I23434, b/233772232) - Metoda
ColorProducer
jest wywoływana jakoproduce
. (I78bde) - Zmień nazwę
toFrameworkColorSpace
natoAndroidColorSpace
(I4f547) - Zmień nazwę
ColorLambda
naColorProducer
. (I73b1a) - Wprowadzenie interfejsów API do konwertowania między typami przestrzeni barw Androida i Compose. (Ie7db4, b/279979665)
- Dodano parametr koloru do
BasicText
, aby umożliwić wydajne animowanie lub ustawianie koloru tekstu. (Iffd88, b/246961787) - Nazwa
TextRange.constrain
została zmieniona naTextRange.coerceIn
. (I31be2) - Dodano zoptymalizowany
TextStyle.merge(...)
z pełną listą parametrów. (Iad234, b/246961787) - Ustabilizowaliśmy wiele interfejsów Text API, w tym
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
iMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
nie jest już wycofane. Pierwotnie chcieliśmy usunąć to pole, ale opinie wskazują, że deweloperzy potrzebują tej opcji konfiguracji. Dlatego usuwamy informacje o wycofaniu z tego pola (I98e96, b/277703184).- Dodano publiczną metodę
TextRange.constrain
. (I97912) UrlAnnotation
wAnnotatedString
można teraz otwierać za pomocą usług ułatwień dostępu, takich jakTalkBack
. (If4d82, b/253292081)- Dodano działanie semantyczne
InsertTextAtCursor
dla pól tekstowych. (I11ed5) - Konstruktor
LineHeightStyle.Alignment(topRatio)
został przeniesiony do stabilnej wersji interfejsu API. (I79c32, b/261565383) - Interfejs
TextMeasurer
i powiązane z nim interfejsy API nie są już eksperymentalne. (I74647, b/261581753) - Dodano działanie semantyczne
PerformImeAction
, aby wywołać działanie IME w węzłach edytora tekstu. (Ic606f, b/269633506) - Interfejsy
PlatformTextInput
API nie są już eksperymentalne w przypadku Androida. (I668eb) - Zmieniono nazwę parametru wartości
Enum.valueOf
(Ia9b89) - więcej wyjątków wyrzucanych z funkcji valueOf (I818fe)
- Wprowadziliśmy nowy interfejs API
PlatformTextInputAdapter
niskiego poziomu do tworzenia niestandardowych implementacji wprowadzania tekstu, które współpracują bezpośrednio z interfejsami API platformy. (I58df4) - Do metod
DrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
dodano parametrBlendMode
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu na płótnie. (I57508) - Zmień nazwę
Font.MaximumAsyncTimeout
naFont.MaximumAsyncTimeoutMillis
. tylko zmienić nazwę. (I07af5) - Zaktualizowano wartości DPI urządzeń referencyjnych
@Preview
(Id6151, b/254528382) - Dodaj parametry
brush
ialpha
doBasicText
, aby umożliwić wydajne animowanie lub ustawianie pędzla tekstowego. - Definiowanie typów lambda bez pudełka dla typów danych Float, Double, Long, Int i Short w ramach :ui:ui-unit (I6f18d, b/246961787)
Poprawki błędów
- Usunięto wiele alokacji w śledzeniu prędkości kursora (I26bae).
- Zmniejszone przydziały w zarządzaniu układem i wskaźnikiem (I5333a)
- Optymalizacja wykorzystania pamięci przez Vector i renderowania pierwszych klatek (I2f3c6)
- Usunięto przypisania podczas rysowania linii i punktów za pomocą Canvas (I9f535)
- Dodaj dokumenty dotyczące
AndroidFont.fontVariationSettings
(I7d9e2)
Darowizna zewnętrzna
- Zwiększona wydajność i zmniejszone przydziały w interfejsach API wektorów (I906cb)
Wersja 1.5.0-alpha04
10 maja 2023 r.
androidx.compose.ui:ui-*:1.5.0-alpha04
został zwolniony. Wersja 1.5.0-alpha04 zawiera te commity.
Nowe funkcje
Modifier.Node
Ulepszenia dotyczące delegowania Dodano ulepszoną możliwość delegowania do innych instancjiModifier.Node
z poziomu instancjiDelegatingNode
. Możesz to zrobić za pomocą interfejsów APIdelegate
iundelegate
. Przed tą zmianą każdy interfejs API z węzła delegującego musiał być delegowany wyraźnie do węzła delegowanego. Po tej zmianie interfejsy węzłów będą przypisywane domyślnie, chyba żeDelegatingNode
będzie je zastępować. (67352bc)
Zmiany w interfejsie API
- Przedstaw
NestedScrollModifierNode
, czyliNestedScroll Modifier.Node
, które może być delegowane. (I69513) - Dodaliśmy parametry
onReset
ionRelease
do kompozytowego elementuAndroidViewBinding
, odzwierciedlając kompozytowy elementAndroidView
i umożliwiając obsługę ponownego użycia widoku za pomocąViewBinding
. (I00b1e, b/276802519) - Zaktualizowaliśmy interfejs Compose Path API, aby obsługiwał operacje przewijania wstecz, co umożliwia częstsze manipulowanie ścieżką i szybsze jej ponowne używanie. (I7b797)
- Dodano zoptymalizowany
TextStyle.merge(...)
z pełną listą parametrów. (Iad234, b/246961787) - Ustabilizowaliśmy wiele interfejsów Text API, w tym
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
iMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
nie jest już wycofany. Pierwotnie chcieliśmy usunąć to pole, ale opinie wskazują, że deweloperzy potrzebują tej opcji konfiguracji. Dlatego usuwamy informacje o wycofaniu z pola (I98e96, b/277703184).
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że klawiatura nie wyświetlała się w przypadku pól tekstowych w oknach dialogowych, które nie zostały utworzone przez komponent
Dialog
. (I82551, b/262140644)
Wersja 1.5.0-alpha03
19 kwietnia 2023 r.
androidx.compose.ui:ui-*:1.5.0-alpha03
został zwolniony. Wersja 1.5.0-alpha03 zawiera te commity.
Nowe funkcje
- Nowe domyślne zachowanie
SubcomposeLayout
wLookaheadScope
:SubcomposeLayouts
, które nie mają slotów warunkowych (np.TabRow
,Scaffold
,BoxWithConstraints
itp.), teraz działają prawidłowo z animowanymi podglądowymi.
Zmiany w interfejsie API
- Nowa domyślna wartość
intermediateMeasurePolicy
, która ponownie używa polityki pomiaru z przewidywania, umożliwia domyślne korzystanie z podtypówSubcomposeLayout
bez slotów warunkowych, takich jakScaffold
,TabRow
iBoxWithConstraints
. (Id84c8) - Rekompozytor utworzony dla okna Androida będzie teraz blokować tylko połączenia do
withFrameNanos
, a nie wszystkie połączenia, gdy otrzyma powiadomienieON_STOP
. Oznacza to, że okna powiązane z zatrzymanymi aktywnościami będą nadal zmieniać kompozycję pod kątem zmian danych, ale animacje lub inne wywołaniawithFrameNanos
będą blokowane. (Id9e7f, b/240975572) - Zmiana wersji
motionEventSpy
na stabilną. (Ic5ec4, b/261560988) - Dodano publiczną metodę
TextRange.constrain
. (I97912) - Interfejs
PlatformTextStyle.includeFontPadding
nie jest już wycofany, aby zachęcić deweloperów do korzystania z interfejsu API zgodności do przełączania i testowania ustawieniaincludeFontPadding
false. (I98e96, b/277703184)
Wersja 1.5.0-alpha02
5 kwietnia 2023 r.
androidx.compose.ui:ui-*:1.5.0-alpha02
został zwolniony. Wersja 1.5.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Nowy interfejs API
SubcomposeLayout
, który przyjmuje dodatkową zasadę pośrednią dotyczącą pomiaru w celu obsługi logiki pomiaru/układu podczas animacji z wyprzedzeniem. (I017d3) - W celu zwiększenia wydajności element PointerInput jest teraz leniwy i korzysta z elementu Modifier.Node (więcej informacji o niewielkiej zmianie zachowania). (15dab9)
- Zmiana eksperymentalnych interfejsów API na stabilne za pomocą kluczowych zdarzeń. (I9c7d8, b/261566839, b/261567368)
- Zmiana eksperymentalnych interfejsów API na stabilne w wersji
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749) - Dodaje sposób tworzenia instancji
SuspendingPointerInputModifierNode
w przypadku bardziej złożonych implementacjiModifier.Node
. (Ic4933) UrlAnnotation
wAnnotatedString
można teraz otwierać za pomocą usług ułatwień dostępu, takich jakTalkBack
. (If4d82, b/253292081)- Dodano interfejs API do przechwytywania klawiszy sprzętowych przed wysłaniem ich do klawiatury ekranowej (I4f4c6, b/186800395).
- Dodano działanie semantyczne
InsertTextAtCursor
dla pól tekstowych. (I11ed5) - Działania testowe związane z tekstem (np.
performTextInput
) będą teraz bezpośrednio prosić o skupienie uwagi, używając działania semantycznego, zamiast klikania pola. (I6ed05)
Poprawki błędów
- Działania testów tekstowych wymagają teraz włączenia pól tekstowych. (Iab328)
Wersja 1.5.0-alpha01
22 marca 2023 r.
androidx.compose.ui:ui-*:1.5.0-alpha01
został zwolniony. Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Modifier.intermediateLayout nie wymaga już jawnego zakresu przewidywania. Blok pomiaru w intermediateLayout ma IntermediateMeasureScope jako odbiornik, co zapewnia wygodne CoroutineScope, LookaheadScope i MeasureScope.(Ibe2e5)
- LookaheadLayout został zastąpiony przez LookaheadScope, który nie jest już typem Layout. Dzięki temu treści podrzędne w zakresie wyszukiwania wstecznego mogą być bezpośrednio kontrolowane przez politykę MeasurePolicy nadrzędnego. (Ibe2e5)
- Dodano
Modifier.Node#coroutineScope
, aby umożliwić modyfikatorom uruchamianie coroutines. (I76ef9) - Umożliw Modifier.Nodes odczytywanie CompositionLocals, implementując interfejs CompositionLocalConsumerModifierNode. (Ib44df)
- Rozpowszechnianie klasy @Deprecated do właściwości. (I882d1)
Wersja 1.4
Wersja 1.4.3
3 maja 2023 r.
androidx.compose.ui:ui-*:1.4.3
został zwolniony. Wersja 1.4.3 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że znak
AndroidView
mógł nie być prawidłowo wyświetlany podczas używania go z niektórymi modyfikatorami. (I4dc77, b/274797771) - Naprawiono błąd w 2D Focus Search, który dotyczył menu
DropDown
(b/276811828). - Naprawiliśmy błąd w niestandardowych właściwościach wejścia/wyjścia z fokusa, który powodował, że blok wejścia/wyjścia był wykonywany tylko przy pierwszym wywołaniu funkcji lambda (b/277234245).
- Naprawiliśmy regresję w systemie fokusowania, która powodowała awarię podczas odczytu
focusProperties
. (b/271324781, b/274897776)
Wersja 1.4.2
19 kwietnia 2023 r.
androidx.compose.ui:ui-*:1.4.2
został zwolniony. Wersja 1.4.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że
AndroidView
nieprawidłowo używało modyfikatorów, co mogło prowadzić do nieoczekiwanego działania i zawieszania się. (Ib67ee, b/275919849) - Usunięto regresję, która powodowała, że klawiatura nie wyświetlała się w przypadku pól tekstowych w dialogach, które nie zostały utworzone przez komponent
Dialog
(I82551, b/262140644)
Wersja 1.4.1
5 kwietnia 2023 r.
androidx.compose.ui:ui-*:1.4.1
został zwolniony. Wersja 1.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązano problem, który powodował, że
ParentDataModifier
nie wpływało naAndroidView
(b/274797771).
Wersja 1.4.0
22 marca 2023 r.
androidx.compose.ui:ui-*:1.4.0
został zwolniony. Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
- Dodano nowy interfejs API
PinnableContainer
, który umożliwia przypinanie elementów listy z opóźnieniem, aby nie były usuwane, gdy zostaną przewinięte poza ekran. Na przykładModifier.focusable()
używa tego mechanizmu do przypinania elementu, który jest obecnie zaznaczony. (Ib8881, b/259274257, b/195049010) - System fokusowania został przepisany przy użyciu nowych eksperymentalnych interfejsów API
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Dodano właściwość semantyki
IsContainer
w sekcji Powierzchnie. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie semantycznego znaczenia elementów, takich jak powierzchnie. (I63379) - Dodano nową rolę dotyczącą dostępności
DropdownList
. Można go użyć do odtworzenia zachowaniaTalkBack
podczas skupianiaandroid.widget.Spinner
. (I177e5, b/236159001) - Teraz możesz użyć
PlatformTextStyle(emojiSupportMatch)
, aby opcjonalnie wyłączyć obsługę emotikonów w przypadku pojedynczego akapitu. (Ia7100, b/139326806) - Testy interfejsu użytkownika w Android Compose będą teraz wykonywać przejścia układu dla każdej ramki podczas wykonywania ramek, aby przejść do stanu bezczynności (np. za pomocą
waitForIdle
). Może to wpłynąć na testy, które sprawdzają poszczególne ramki animacji układu. (I8ea08, b/222093277) - Dodano eksperymentalny parametr
TextMotion
do parametruTextStyle
, aby zdefiniować tekst jakoStatic(default)
lub animowany. UżyjTextMotion.Animated
, jeśli tekst ma być skalowany, przesuwany lub obracany za pomocą animacji. (I24dd7)
Wersja 1.4.0-rc01
8 marca 2023 r.
androidx.compose.ui:ui-*:1.4.0-rc01
został zwolniony. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano przeciążenie funkcji kompozytowej
AndroidView
, która akceptuje parametronReset
. Umożliwia ponowne wykorzystanie instancji widoku, gdy ich węzeł w kompozycji zostanie odrzucony i ponowicie użyty w sposób zgodny. Jest to szczególnie przydatne w przypadkuLazyRows
iLazyColumns
wyświetleń. (I3f10d, b/230099236) - Wprowadziliśmy nowy interfejs API
PlatformTextInputAdapter
niskiego poziomu do tworzenia niestandardowych implementacji wprowadzania tekstu, które współpracują bezpośrednio z interfejsami API platformy. (I58df4)
Poprawki błędów
- Działania semantyczne
BasicTextField
SetText
będą teraz aktualizować bufor tekstowy za pomocą tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (np.performTextReplacement
). - Funkcje testowania tekstu
performTextClearance
,performTextReplacement
iperformTextSelection
używają teraz funkcjiSemanticsActions
. (I0807d, b/269633168, b/269624358)
Wersja 1.4.0-beta02
22 lutego 2023 roku
androidx.compose.ui:ui-*:1.4.0-beta02
został zwolniony. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięto interfejs API
modifierElementOf()
. Zamiast tego rozszerz je bezpośrednio z poziomuModifierNodeElement
. (I2256b) - Dodano nowe wywołanie zwrotne
Modifier.Node.onReset()
, które umożliwia zresetowanie niektórych stanów lokalnych, aby odpowiednio obsłużyć przypadek, gdy elementLayout
zostanie użyty ponownie (np. jako elementLazyColumn
). NaprawionoFocusTargetModifierNode
, aby prawidłowo zresetować stan fokusu. (I65495, b/265201972) - Do metod
DrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
dodano parametrBlendMode
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu na płótnie. (I57508)
Poprawki błędów
- Ulepszony algorytm kolejności fokusowania ułatwień dostępu, np. paski u góry/dołu są częściej odczytywane jako pierwsze/ostatnie (74e9c5)
Wersja 1.4.0-beta01
8 lutego 2023 r.
androidx.compose.ui:ui-*:1.4.0-beta01
został zwolniony. Wersja 1.4.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Nazwa
PinnableContainer.PinnedHandle.unpin()
została zmieniona narelease()
(I4667a) - Do interfejsu
ComposeTestRule
dodano interfejsywaitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
iwaitUntilDoesNotExist
jako eksperymentalne interfejsy API. Dzięki temu interfejswaitUntil
obsługuje dowolne dopasowywacze i dowolną liczbę węzłów. Więcej informacji znajdziesz w dokumentacjiComposeTestRule
. (Ifa1b9, b/226934294) - Zmień nazwę
Font.MaximumAsyncTimeout
naFont.MaximumAsyncTimeoutMillis
. (I07af5) - Usunięto
GoogleFont.Provider.AllFontsListUri
i zamiast tego dodano do niego link w dokumentie KT. (I16f29)
Poprawki błędów
- Dodaj dokumenty dotyczące
AndroidFont.fontVariationSettings
(I7d9e2)
Wersja 1.4.0-alpha05
25 stycznia 2023 r.
androidx.compose.ui:ui-*:1.4.0-alpha05
został zwolniony. Wersja 1.4.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
i funkcjicreate*ComposeRule
, które przyjmują parametryCoroutineContext
. Kontekst zostanie użyty do testowej kompozycji oraz wszystkich wywołań funkcjiLaunchedEffect
irememberCoroutineScope()
w jej obrębie. (I10614, b/265177763) - Dodawanie nowego interfejsu API do śledzenia prędkości jednowymiarowej (If5a82)
- Urządzenie
FocusRequester
jest teraz oznaczone jako@Stable
. (I580ee) - Usuń eksperymentalną adnotację z konstruktora
DialogProperties
, który przyjmuje parametrusePlatformDefaultWidth
. (Ic4048) - Dodano funkcję do obliczenia pozycji i stycznych na ścieżce z użyciem funkcji
PathMeasure.getPosition()
iPathMeasure.getTangent()
(I3b47c). - Usunięto przypadkowo odsłonięty publiczny setter w
PlatformParagraphStyle
. (I07f47) - Więcej typów i możliwości ustawienia wartości w przypadku funkcji wbudowanych i wycofanych (I24f91)
- Dodaj
AnnotatedString.hasStringAnnotations
, aby zapytać o adnotacje z zerową alokacją. (I94dfe, b/246960758) - Dodaliśmy nową wersję funkcji
TextMeasurer.measure
, która przyjmuje jako argumentString
w postaci tekstu. (I47b2d, b/242705342) - Interfejsy API
LineBreak
iHyphens
w TextStyle zostały przeniesione do stabilnej wersji. (Ic1e1d)
Darowizna zewnętrzna
- Metody
notifyFocusedRect
wTextInputSession
iTextInputService
nie są ponownie wycofywane. (I23a04, b/262648050)
Wersja 1.4.0-alpha04
11 stycznia 2023 r.
androidx.compose.ui:ui-*:1.4.0-alpha04
został zwolniony. Wersja 1.4.0-alpha04 zawiera te commity.
Nowe funkcje
- Dodano nowy interfejs API
PinnableContainer
, który umożliwia przypinanie elementów listy z opóźnionym wczytywaniem, aby nie były usuwane, gdy zostaną przewinięte poza ekran. Na przykładModifier.focusable()
używa tego mechanizmu do przypinania elementu, który jest obecnie zaznaczony. (Ib8881, b/259274257, b/195049010) - System fokusowania został przepisany przy użyciu nowych eksperymentalnych interfejsów API
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Dodano właściwość semantyki
IsContainer
w sekcji Powierzchnie. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie semantycznego znaczenia elementów, takich jak powierzchnie. (I63379) - Dodano nową rolę dotyczącą ułatwień dostępu:
DropdownList
. Można go użyć do odwzorowania zachowaniaTalkBack's
podczas ustawiania ostrościandroid.widget.Spinner
. (I177e5, b/236159001) - Teraz możesz użyć
PlatformTextStyle(emojiSupportMatch)
, aby opcjonalnie wyłączyć obsługę emotikonów w przypadku pojedynczego akapitu. (Ia7100, b/139326806) - Testy interfejsu użytkownika w Android Compose będą teraz wykonywać przejścia układu dla każdej ramki podczas wykonywania ramek, aby przejść do stanu bezczynności (np. za pomocą
waitForIdle
). Może to wpłynąć na testy, które sprawdzają poszczególne ramki animacji układu. (I8ea08, b/222093277) - Dodano eksperymentalną opcję
TextMotion
do opcjiTextStyle
, aby zdefiniować tekst jakoStatic(default)
lub animowany. UżyjTextMotion.Animated
, jeśli tekst ma być skalowany, przesuwany lub obracany za pomocą animacji. (I24dd7)
Zmiany w interfejsie API
- Argument
maxSize: IntSize
w funkcjidrawText
został zastąpiony argumentemsize: Size
, aby była ona zgodna z innymi funkcjamiDrawScope
. Wartość domyślna parametrusize
toSize.Unspecified
, co nie powinno zmieniać poprzedniego domyślnego działania. (Icd27d) - Usunięto wycofany eksperymentalny konstruktor czcionek. (I8a724, b/261435386)
- Klasa danych narzędzi interfejsu użytkownika
Group
zawiera teraz poleisInline
, które wskazuje, czy grupa służy do wywołania funkcji inline composable. JeśliisInline
totrue
, wywołanie jest wywołaniem funkcji inline composable. Wartość może jednak być fałszywa w przypadku wywołań funkcji inline composable, które pochodzą z modułów skompilowanych za pomocą wersji wtyczki kompilatora Compose, która nie generuje informacji o funkcji inline. (Idb846) - przekształciliśmy kilka wcześniej eksperymentalnych interfejsów API w stabilne;
- Interfejs API zdarzenia obrotowego przewijania jest teraz stabilny (I42ad3, b/261561229)
FontVariation
Interfejs API jest teraz stabilny (I8779f, b/241016309)- Wszystkie konstruktory
Font()
są teraz stabilnymi interfejsami API (I5948b, b/261435386) DeviceFontFamilyName
jest teraz stabilna (I8b640, b/261435386)- Konstruktor
AndroidFont
z argumentemvariationSettings
jest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807) - Interfejs API
createFontFamilyResolver
jest teraz stabilny. Można go użyć do przechwytywania nieobsłużonych wyjątków podczas asynchronicznego wczytywania czcionek. (Ibb481, b/261435386) - Interfejs API
Font.loadingStrategy
jest teraz stabilny. (I5937c, b/261435386) - Interfejs API
GoogleFont
jest teraz stabilny. (Ic90b0, b/261435386) - Interfejs
TextUnit(float, TextUnitType)
jest teraz stabilnym interfejsem API. (I90c84, b/261561612) - Interfejs API
pluralStringResource
jest teraz stabilny. (I09849, b/261439703)
Wersja 1.4.0-alpha03
7 grudnia 2022 r.
androidx.compose.ui:ui-*:1.4.0-alpha03
został zwolniony. Wersja 1.4.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Usuwam
ExperimentalComposeUiApi
zPointerIcon
(I23af8) - Przedstaw działania dotyczące ułatwień dostępu na stronie:
PageUp
,PageDown
,PageLeft
,PageRight
. Pamiętaj, że są one dostępne tylko w wersji interfejsu API 29. (Ida4ab) - Zmieniono widok parametru
rememberNestedScrollConnection
z widoku wyższego poziomu na widok hosta. (Ia5200) - Dodano interfejs API Modifier, aby zapytać o informacje dotyczące przewijania przodków (I2ba9d, b/203141462).
- Służy w
Clickable
do prawidłowego opóźnienia interakcji z przyciskiem, gdy gesty mogą stać się zdarzeniami przewijania. - Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów
Clickables
, gdy są używane w ramachScrollable ViewGroup
. - Zaktualizowano Drawers i Sheets, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
- Zmieniliśmy nazwę
CompositingStrategy.Always
naOffscreen
, aby wskazać, żegraphicsLayer
będzie zawsze renderowany do pośredniego bufora (I47dc1). - Przeciążenie układu z wieloma slotami na treści jest teraz stabilne (I10566, b/248294649)
- Dodaliśmy eksperymentalne nowe interfejsy API
PerfettoTrace.record {}
iPerfettoTraceRule
, które umożliwiają rejestrowanie śladów Perfetto (zwanych też śladami systemowymi) w ramach testu, aby sprawdzić zachowanie i wydajność testu. (I3ba16) - W testach UI korzystających z reguły Compose wznawianie kontynuacji podczas wywołań
withFrameNanos
nie będzie wysyłane, dopóki nie zakończą się wszystkie wywołaniawithFrameNanos
. Jest to zgodne z działaniem funkcji komponowania podczas normalnego działania. Testy oparte na starym zachowaniu mogą jednak nie działać. Ta zmiana powinna dotyczyć tylko kodu, który bezpośrednio wywołuje funkcjewithFrameNanos
lubwithFrameMillis
, i zawiera logikę spoza wywołania zwrotnego przekazaną do tych funkcji, którą może być konieczne przeniesienie do wywołań zwrotnych. Przykłady zmian w teście animacji znajdziesz w tym CL. - Do konstruktora i funkcji fabrycznej
TestMonotonicFrameClock
dodano opcjonalny parametronPerformTraversals: (Long) -> Unit
, który umożliwia uruchamianie kodu po wywołaniach zwrotnychwithFrameNanos
, ale przed wznowieniem korzystania z funkcji współbieżnych wywołujących. (Idb413, b/254115946, b/222093277, b/255802670) - Dodano EmojiCompat do Compose (Ibf6f9, b/139326806)
- Dodano nowy parametr tapety do
@Preview
w celu obsługi dynamicznych kolorów (I9f512)
Poprawki błędów
- Powiadomienia o zastosowaniu migawki są teraz wysyłane po zakończeniu stosowania zmian przez
Recomposer
. (Iad6c0, b/222093277) - Wprowadziliśmy zmiany w
captureToImage
, aby umożliwić przechwytywanie zrzutów ekranu z wielu okien. Jest to przydatne w przypadku testów zrzutów ekranu, które korzystają z komponentu PopUp. (I169c5)
Aktualizacje zależności
- Interfejs Compose UI i Compose Material są teraz zależne od Lifecycle 2.5.1. (I05ab0, b/258038814)
Wersja 1.4.0-alpha02
9 listopada 2022 r.
androidx.compose.ui:ui-*:1.4.0-alpha02
został zwolniony. Wersja 1.4.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Zaktualizowano
GraphicsLayerScope
, aby wyświetlać bieżący rozmiargraphicsLayer
. Jest to przydatne do obliczania transformacjigraphicsLayer
jako funkcji rozmiaru kompozytowego. (If8c43,b/181387080) - Wprowadziliśmy
CompositingStrategy
, aby określić, kiedy należy wykorzystać warstwę kompozytowania poza ekranem do renderowania treścigraphicsLayer
. Automatycznie zachowuje domyślne zachowanie, które wewnętrznie wykorzystuje warstwę, jeśli zastosowano kanał alfa, lubRenderEffect/Overscroll
. W trybie zawsze włączonym będzie zawsze używany bufor poza ekranem, podczas gdyModulateAlpha
nie będzie używać tego bufora, lecz zamiast tego będzie modulować każdą z nagranych instrukcji rysowania w ramachgraphicsLayer
. W przypadku korzystania z funkcjiModulateAlpha
nadal będzie używany bufor poza ekranem w przypadku korzystania z funkcjiRenderEffect/Overscroll
(I25e82, b/256382834) - Do elementu
Modifier.Node
dodano elementinvalidateSubtree()
, aby umożliwić unieważnienie całych hierarchii na potrzeby układu i rysowania. (I4bd90) - Zmień wersję
rememberNestedScrollInteropConnection
na stabilną. Wprowadziliśmy możliwość przekazywania widoku wyższego poziomu do funkcjirememberNestedScrollInteropConnection
. Dzięki temu widok niestandardowy może lepiej reagować na ograniczenia przewijania, zwłaszcza w przypadku widoków niestandardowych (np.ModalBottomSheetDialog
). (I9e107) - Dodano interfejs
ObserverNode
, którego mogą używać implementacjeModifier.Node
, które muszą być powiadamiane o zmianie wcześniej odczytanej wartości (I5728b, b/247716483) - Do klasy
Paint
dodaliśmy nowy konstruktor, który przyjmuje natywny obiektandroid.graphics.Paint
. Dodano też funkcję rozszerzeniatoComposePaint()
, która konwertuje istniejący natywny obiekt Paint na Compose Paint. (Ica91b) - Dodaj nowe
FontFamily.Resolver.resolveAsTypeface
do użycia na urządzeniu z Androidem. (I8950b) - Dodaj
ToolingState
, aby umożliwić narzędziom zmianę wewnętrznych stanów komponentu (Ie6614). - Ulepszenie narzędzi do refaktoryzacji w celu lepszego obsługiwania nowo dodanych animacji (I8677b)
- Dodano parametr
minLines
do komponentów material i material3 Text,TextField
iOutlinedTextField
, który umożliwia ustawienie minimalnej wysokości komponentu w ujęciu liczby wierszy (I4af1d).
Wersja 1.4.0-alpha01
24 października 2022 r.
androidx.compose.ui:ui-*:1.4.0-alpha01
został zwolniony. Wersja 1.4.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
- Dodano nową metodę
awaitEachGesture()
do wykrywania gestów. Działa ona podobnie doforEachGesture()
, ale pętla gestów działa całkowicie w ramachAwaitPointerEventScope
, dzięki czemu nie dochodzi do utraty zdarzeń między iteracjami. - Element
forEachGesture()
został wycofany na rzecz elementuawaitEachGesture()
, ponieważ pozwala on na utratę zdarzeń między gestami. (Iffc3f, b/251260206) - wycofanie obsługi recyklingu obiektów dostępności w androidx. Zdaliśmy sobie sprawę, że zmiany wydajności są znikome nawet w najstarszych obsługiwanych wersjach. (I0a961)
- Dodano atrybut
DrawStyle
jako atrybut eksperymentalny do atrybutówTextStyle
iSpanStyle
, aby umożliwić rysowanie tekstu z obrysem. (If24b8, b/155421273) AnnotatedString.Builder
wdraża terazkotlin.text.Appendable
. (I1a061, b/231030444)AnnotatedString.Builder
ma teraz metodęappend(AnnotatedString, start: Int, end: Int)
, która umożliwia dołączanie podciągu znaków zAnnotatedString
i styli nachodzących na siebie.- Do funkcji malowania
Paragraph
iMultiParagraph
dodano parametrDrawStyle
, który umożliwia rysowanie tekstu z obrysami. (Ic8102, b/155421273)
Darowizna zewnętrzna
- Dziękujemy za
vighnesh
za dodanie urządzeń TV do podglądu (Ie15cd).
Wersja 1.3
Wersja 1.3.3
11 stycznia 2023 r.
androidx.compose.ui:ui-*:1.3.3
został zwolniony. Wersja 1.3.3 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem z zawieszaniem się aplikacji na Androidzie 9, który występował czasami podczas zapisywania stanu widoku tworzenia. (I0b755, b/260322832)
Wersja 1.3.2
7 grudnia 2022 r.
androidx.compose.ui:ui-*:1.3.2
został zwolniony. Wersja 1.3.2 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano bibliotekę Profobuf do wersji 3.21.8, aby uniknąć alertu dotyczącego bezpieczeństwa w
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055)
Wersja 1.3.1
9 listopada 2022 r.
androidx.compose.ui:ui-*:1.3.1
został zwolniony. Wersja 1.3.1 zawiera te commity.
Wersja 1.3.0
24 października 2022 r.
androidx.compose.ui:ui-*:1.3.0
został zwolniony. Wersja 1.3.0 zawiera te commity.
Ważne zmiany od wersji 1.2.0
- Nowy eksperymentalny pakiet interfejsów API
LookaheadLayout
(umożliwiający wcześniej niemożliwe zachowania animacji) - Nowy eksperymentalny zestaw interfejsów API
Modifier.Node
(szybsza alternatywa dla interfejsuModifier.composed
) - Ulepszona obsługa wstawionych okien.
- Obsługa przycisku D-Pad i klawiatury sprzętowej w LazyLists.
- Maksymalna obsługiwana wysokość w oknach dialogowych i wyskakujących została zmniejszona do 8 pikseli (zmianę zachowania w przypadku niektórych niestandardowych systemów projektowania znajdziesz w opisie wersji beta01).
- wiele drobnych ulepszeń interfejsu API, które nie powodują przerw w działaniu.
- wiele poprawek błędów i usprawnień działania aplikacji.
Wersja 1.3.0-rc01
5 października 2022 r.
androidx.compose.ui:ui-*:1.3.0-rc01
został zwolniony. Wersja 1.3.0-rc01 zawiera te commity.
Zmiany w interfejsie API
- Dodano nowe eksperymentalne interfejsy API Hyphens, aby umożliwić automatyczne dzielenie wyrazów w tekście (Iaa869).
Poprawki błędów
- Fonts
DeviceFontFamilyName
nie skonfiguruje domyślnie ustawieńwght
iital
, lecz użyje ustawień platformy dla załadowanegoTypeface
. (Ia7a6d, b/246989332) - Naprawiono wyciek pamięci
LazyColumn
– funkcjaonModifierLocalsUpdated
nie była wywoływana z wartością domyślną, gdy modyfikatory były używane ponownie (b/230168389).
Wersja 1.3.0-beta03
21 września 2022 r.
androidx.compose.ui:ui-*:1.3.0-beta03
został zwolniony. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj opcje umożliwiające dostosowanie dzielenia wiersza w tekście. (I86907)
- Zmień argument
size:IntSize
naconstraints: Constraints
w metodzieTextMeasurer.measure
, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)
Poprawki błędów
- Interfejs API
BackHandler
w komponentach Activity w AndroidX działa teraz w komponentachDialog
. (I35342)
Wersja 1.3.0-beta02
7 września 2022 roku
androidx.compose.ui:ui-*:1.3.0-beta02
został zwolniony. Wersja 1.3.0-beta02 zawiera te commity.
Zmiany w interfejsie API
- Dodano eksperymentalną funkcję przeciążenia dla układu, która akceptuje listę wielu kompozytowalnych lambda treści, co pozwala na traktowanie mierzalnych danych w różny sposób w różnych lambdach treści (Ic1b4e).
Zmiany w eksperymentalnych interfejsach Focus API:
- Funkcje
FocusDirection.In
iFocusDirection.Out
zostały wycofane i zastąpione przez funkcjeFocusDirection.Enter
iFocusDirection.Exit
. (Ia4262, b/183746982) - Dodaliśmy 2 nowe właściwości fokusa: „focus-in” i „focus-out”, aby określić zachowanie niestandardowe dla właściwości
FocusManager.moveFocus(Enter)
iFocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982) - Możesz teraz użyć
FocusRequester.Cancel
, aby anulować zmianę ustawień.FocusRequester.Cancel
można używać w przypadku tych właściwości fokusa: w górę, w dół, w lewo, w prawo, następny, poprzedni, początek, koniec, enter i wyjście. (Ib300f)
Wersja 1.3.0-beta01
24 sierpnia 2022 r.
androidx.compose.ui:ui-*:1.3.0-beta01
został zwolniony. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Refaktoryzacja węzła modyfikatora
Warstwę, która obsługuje wystąpienia Modifier/Modifier.Element
i koordynuje ich działanie w LayoutNodes
, poddano gruntownej refaktoryzacji. W obecnej postaci była to refaktoryzacja, która nie wpłynęła na publiczny interfejs API żadnego z wielu modyfikatorów w Compose i może być traktowana jako zmiana tylko w implementacji. Mimo to jest to ważna zmiana z różnych powodów. (Ie4313)
Podsumowanie zmian
Dodane eksperymentalne interfejsy API Modifier.Node
zapewniają abstrakcję, która umożliwia utrzymanie stanu w instancji. Stan ten będzie zachowany w cyklu życia węzła układu i przypisany do węzła układu oraz do użycia odpowiedniego Modifier.Element
, który go wygenerował.
Ogólnie rzecz biorąc, ta abstrakcja zapewnia alternatywny mechanizm do tworzenia modyfikatorów stanu bez polegania na mechanizmie interfejsu API Modifier.composed
.
Ryzyko
Ta zmiana jest zgodna z poprzednimi wersjami w zakresie binarnym i ma być zgodna wstecznie w zakresie obserwowalnego zachowania w takim zakresie, w jakim jest to możliwe i uzasadnione. Niemniej jednak jest kilka podsystemów w komponencie, których ta refaktoryzacja nie objęła, i jest prawdopodobne, że zachowanie zmieniło się w sposób, który nie został objęty naszymi testami i nie został jeszcze znaleziony i naprawiony.
Zachowaj ostrożność podczas aktualizacji do tej wersji. Jeśli uważasz, że coś się zepsuło, daj nam znać.
Eksperymentalne interfejsy API
Dodano różne eksperymentalne interfejsy API, które odnoszą się do nowej koncepcji węzła modyfikującego. Elementy Modifier.Node są tworzone w wyniku
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
Złamanie zasad
Maksymalna obsługiwana wysokość w oknach dialogowych i wyskakujących została zmniejszona do 8 dp.
Maksymalna obsługiwana wysokość dla okienek dialogowych i wyskakujących w komponencie Redagowanie została zmniejszona z 30 dp na 8 dp. Ta zmiana dotyczy zarówno dialogów i wyskakujących okienek w Material Design, jak i w UI. Ta zmiana została wprowadzona, aby załagodzić problem z ułatwieniami dostępu w wersjach Androida niższych niż S oraz zapewnić, że usługi ułatwień dostępu w tych oknach będą mogły wchodzić w interakcję z treścią w dialogu lub wyskakującym okienku.
Ta zmiana będzie miała wpływ tylko wtedy, gdy tworzysz niestandardową implementację okna dialogowego lub wyskakującego z wysokością wyższą niż 8 dp. Rozważ obniżenie położenia okna dialogowego lub wyskakującego. Jeśli chcesz zrezygnować z tego nowego zachowania, rozważ utworzenie własnego okna dialogowego lub wyskakującego z odpowiednim ustawieniem poziomu. Nie jest to zalecane, ponieważ może to negatywnie wpłynąć na ułatwienia dostępu. Deweloper musi zadbać o to, aby dolna część okna dialogowego lub wyskakującego okna była interaktywna i czytelna dla usług ułatwień dostępu.
Zmiany w interfejsie API
- Rozwiązaliśmy problem, który powodował, że
painterResource
nie aktualizował się po zmianach w konfiguracji (I58e73, b/228862715). - Funkcja
rememberTextMeasurer
nie przyjmuje już parametrówFontFamily.Resolver
,Density
aniLayoutDirection
. Aby podać niestandardowe wartości tych parametrów, użyj konstruktoraTextMeasurer
. (Ia1da3) - Dodaliśmy właściwość
DialogProperties.decorFitsSystemWindows
, aby umożliwić obsługęWindowInsets
w dialogach. (I57742, b/229378542) - Konstruktory czcionek zostały przeniesione z powrotem do oryginalnego pliku Kotlin, aby zachować zgodność binarną. Bez zmian w porównaniu z ostatnią wersją stabilną. (Ieb2f3)
- Usunięto niepotrzebny operator z kilku definicji operatora równa się – nie miało to żadnego wpływu. (I6c309)
FontVariation.Setting
to zamknięty interfejs, który umożliwia przyszłe interfejsy API do blokowania. (I11021, b/143703328)- Dodano
CompositionGroup.findParameters
doSlotTree.kt
. Dzięki temu narzędzia mogą pobierać parametryCompositionGroup
bez konieczności analizowania całej tabeli slotów. (I124fe)
Wersja 1.3.0-alpha03
10 sierpnia 2022 r.
androidx.compose.ui:ui-*:1.3.0-alpha03
został zwolniony. Wersja 1.3.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
LayoutCoordinates.findRootCoordinates()
jest teraz publiczny (I7fa37, b/204723384).- Dodano eksperymentalny interfejs API do uzyskiwania wartości
LayoutCoordinates
w elementachPlacementScope
. Dzięki temu deweloperzy wiedzą, gdzie w ramach bieżącego układu umieścić elementy podrzędne względem jego pozycji. (I5482b, b/238632578) - Dodano
LayoutCoordinates.transformFrom
, aby uzyskać przekształcenie macierzowe z jednegoLayoutCoordinates
do drugiego. (Ic5ab1, b/238632578) - Wycofano
SemanticsModifier.id
i zamiast niego użyto identyfikatora semantycznegoLayoutInfo.semanticsId
. (Iac808, b/203559524) - Czcionki zasobów obsługują teraz ustawienia wariantów czcionek (API 26 i nowsze) (I900dd, b/143703328).
- Obsługa czcionek zmiennych w
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Konstruktory czcionek obsługują teraz listę
FontVariation.Setting
do konfigurowania czcionek zmiennych na urządzeniach O+. (I11a9d, b/143703328) - Dodaj interfejs API
FontVariation
do definiowania i używania czcionek zmiennych. (I3c40c, b/143703328) - Konstruktor
LineHeightStyle.Alignment
jest teraz publiczny (funkcja eksperymentalna) (I4bbbe, b/235876330) - Akapit jest teraz oczekiwany|rzeczywisty i zdefiniowany na urządzeniach z Androidem i na komputerach. (Id387e, b/239962983)
- Interfejs Paragraph jest teraz zamknięty. Nie ma żadnego przypadku użycia akapitu dotyczącego podklasy, dlatego jeśli ta zmiana ma wpływ na Twoją sytuację, skontaktuj się z nami. (If5247, b/239962983)
- Usunięto eksperymentalną adnotację z funkcji
PlatformTextStyle
iLineHeightStyle
. (I64bef) - Wycofaj
TextInputService.show|hideSoftwareKeyboard
. Zamiast niej użyj w kodzie aplikacji wartościSoftwareKeyboardController
, a w kodzie zarządzania IME – wartościTextInputSession
. (I14e4c, b/183448615) - Dodawanie nowego interfejsu API dla istniejących typów animacji (I26179)
Poprawki błędów
- Dodaliśmy uprawnienie
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnieniaPOST_NOTIFICATIONS
w pakiecie SDK 33 lub nowszym. (Ie542e, b/238790278)
Wersja 1.3.0-alpha02
27 lipca 2022 roku
androidx.compose.ui:ui-*:1.3.0-alpha02
został zwolniony. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy nową właściwość
PointerInputChange#pressure
, aby pobierać ciśnienie. (I45a5e, b/205164819) - Dodano
rememberTextMeasurer
, aby ułatwić tworzenie i zapamiętywanie instancjiTextMeasurer
w kompozycji. (I8d66e) Rect
,RoundRect
iMutableRect
obsługują teraz składnię Kotlinin
do wywoływania funkcjicontains
. (Ie42b0, b/238642990)- Usuń z
KeyInjectionScope
niepotrzebne funkcje, ponieważ można je łatwo zaimplementować za pomocą prostszych części interfejsu API. FunkcjapressKeys
,keysDown
ikeysUp
zostały usunięte. (I81d77) - Zmieniono nazwy stałych i parametrów w
KeyInjectionScope
, aby zawierały przyrostek „ms”, ponieważ jednostki tych stałych i parametrów to milisekundy. (Iabef5) - Dodaliśmy metodę
toStringForLog()
do metodyEditCommand
, aby ułatwić rozwiązywanie problemów z edytowaniem tekstu. (I53354, b/228862731) - Dodano funkcję rozszerzenia
drawText
w komponencieDrawScope
, aby umożliwić rysowanie tekstu w wielu stylach na komponentach i modyfikatorach, które działają naDrawScope
, takich jakCanvas
idrawBehind
. (I16a62, b/190787898) - Wprowadzamy nowy eksperymentalny interfejs API o nazwie
TextMeasurer
, który umożliwia dowolne obliczenie układu tekstu, które daje identyczne wyniki jakBasicText
, niezależnie od środowiska wykonawczego Compose. (I17101) - Dodano
mapTree
doSlotTree.kt
. Umożliwia to narzędziom sprawdzanieSlotTree
bez tworzenia kopii w pamięci, jak to robi asTree. W przypadku narzędzia do inspekcji układu oznacza to 10-krotne zwiększenie wydajności. (I5e113) - Zmieniliśmy sposób przechowywania podglądu w plikach binarnych, aby umożliwić deweloperom pisanie i ponowne używanie adnotacji
MultiPreview
z bibliotek. (I85699, b/233511976)
Poprawki błędów
- Podczas dodawania zdarzeń
InputEventChange
doVelocity
Trackera będziemy teraz brać pod uwagę różnice zamiast pozycji. Dzięki temu prędkość będzie obliczana prawidłowo we wszystkich przypadkach, nawet jeśli element docelowy się przemieści (Icea9d, b/216582726, b/223440806, b/227709803). - Napraw błędy NPE spowodowane przez
AnnotatedString.toUpperCase
, gdy występują adnotacje. (I0aca2, b/210899140)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
androidx.compose.ui:ui-*:1.3.0-alpha01
został zwolniony. Wersja 1.3.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
- Nowa funkcja
LookaheadLayout
, która obsługuje przetwarzanie wstępne przed rzeczywistymi pomiarami lub układem. Umożliwia to wstępny przeliczenie układu, gdy ulegnie on zmianie, a także pozwala na zastosowanie w post-lookahead measure/layout wstępnie obliczonych rozmiarów/pozycji, aby animować rozmiary i pozycje w kierunku celu.SubcomposeLayouts
nie są jeszcze obsługiwane, ale będzie można z nich korzystać w jednej z przyszłych wersji. (I477f5) - Dodaj opcjonalny parametr alfa do opcji pędzla
TextStyle
iSpanStyle
, aby zmienić przezroczystość całegoText
. (Ic2fac, b/234117635) - Wprowadziliśmy typ adnotacji
UrlAnnotation
i powiązane metody, aby umożliwić obsługę linkówTalkBack
w dokumentachAnnotatedString
. (I1c754, b/231495122) - Przenoszenie funkcji narzędzia do czasu wykonywania (I4f729)
Poprawki błędów
TextLayoutResult.getLineForOffset
nie rzuca. (Idc5d6, b/235876324)
Darowizna zewnętrzna
- Dodano nowy interfejs API
WindowInfo.keyboardModifiers
, aby obserwować stan w ramach funkcji składanych lub za pomocą snapshotFlow (Icdb8a).
Wersja 1.2
Wersja 1.2.1
10 sierpnia 2022 r.
androidx.compose.ui:ui-*:1.2.1
został zwolniony. Wersja 1.2.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd nullpointer w inspektorze (b/237987764).
- Naprawiono wyjątek podczas odwoływania się do klasy podczas zapamiętania w inspektorze (b/235526153)
Wersja 1.2.0
27 lipca 2022 roku
androidx.compose.ui:ui-*:1.2.0
został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
Ulepszenia dotyczące przełączania ostrości:
- Przewijanie list leniwych za pomocą fokusa działa teraz przy użyciu nowego interfejsu
BeyondBoundsLayout
. - Nowe interfejsy API do dostosowywania zachowań w
FocusOrder
iFocusProperties
- Ulepszone działanie klawiatury fizycznej lub pilota do telewizora
- Przewijanie list leniwych za pomocą fokusa działa teraz przy użyciu nowego interfejsu
Nowe interfejsy API do:
- Wstawki w oknie
- Podstawowe prymitywy do animacji gestów, nieskończonych i układów
GraphicsLayer
, w tymRenderEffect
wiele poprawek błędów i usprawnień działania aplikacji.
Wersja 1.2.0-rc03
29 czerwca 2022 r.
androidx.compose.ui:ui-*:1.2.0-rc03
został zwolniony. Wersja 1.2.0-rc03 zawiera te zatwierdzenia.
- Brak zmian od wersji 1.2.0-rc02.
Wersja 1.2.0-rc02
22 czerwca 2022 r.
androidx.compose.ui:ui-*:1.2.0-rc02
został zwolniony. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.
Wersja 1.2.0-rc01
15 czerwca 2022 r.
androidx.compose.ui:ui-*:1.2.0-rc01
został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejsy w bibliotekach kompozytowych są teraz tworzone za pomocą domyślnych metod interfejsu JDK 8 (I5bcf1).
- Do funkcji
KeyInjectionScope
dodano funkcje wyższego rzędu, aby umożliwić wstawianie naciśnięć klawiszy podczas przytrzymywania lub przełączania innych klawiszy. Do tych funkcji należąwithKeysDown
,withKeysToggled
itp. Dodano też właściwości do sprawdzania, czy dany klucz meta jest wciśnięty, np.isCtrlDown
, aby sprawdzić, czy któryś z przycisków kontrolnych jest wciśnięty. Dokumentację dotyczącą poszczególnych funkcji znajdziesz na stronieKeyInjectionScope
. (I9f6cd, b/229831515) - Wprowadziliśmy eksperymentalny element
OverscrollEffect
, który umożliwia stosowanie niestandardowych efektów przewijania, a także przeciążeńModifier.scrollable
, które go obsługują. - Eksperymentalny pakiet
LocalOverScrollConfiguration
został przeniesiony z poziomufoundation.gesture
do pakietu podstawowego i przemianowany naLocalOverscrollConfiguration
(If19fb, b/204650733) - Zmień nazwę
runComposeUiTestWithoutActivity {}
narunEmptyComposeUiTest {}
, aby dopasować ją docreateEmptyComposeRule()
(I6fed7)
Wersja 1.2.0-beta03
1 czerwca 2022 r.
androidx.compose.ui:ui-*:1.2.0-beta03
został zwolniony. Wersja 1.2.0-beta03 zawiera te commity.
Zmiany w interfejsie API
- Dodano użytkowników
pressKeyTimes
,isCapsLockOn
iKeyInjectionScope
do grupyKeyInjectionScope
. Interfejs API obsługuje teraz wzorce wstrzykiwania łączące mysz i klawiaturę, np. klikanie przycisku myszy przy wciśniętym klawiszu meta. (I4c8da, b/229831515) - Dodano eksperymentalną obsługę wstrzykiwania kluczowych zdarzeń. Użyj
performKeyInput
, aby wysyłać kluczowe zdarzenia, lub wyślij je za pomocą właściwościkey
obiektuMultiModalInjectionScope
podczas wielomodalnego gestu wprowadzania za pomocąperformMultiModalInput
. Dokumentację interfejsu API znajdziesz na stronieKeyInjectionScope
. (Ic5000, b/229831515) - Dodaj nowy parametr
GoogleFont.Provider.AllFontsListUri
, aby pobierać kanoniczne źródło internetowe czcionek Google obsługiwanych przez Androida. - Poprawiono komunikaty o błędach, które są ponownie zgłaszane, gdy nie można wczytać czcionek Google w edytorze. (I0416c)
Poprawki błędów
- Podczas dodawania zdarzeń
InputEventChange
do Śledzenia prędkości będziemy teraz brać pod uwagę różnice zamiast pozycji. Dzięki temu prędkość będzie obliczana prawidłowo we wszystkich przypadkach, nawet jeśli element docelowy się przesunie (I51ec3, b/216582726, b/223440806, b/227709803). - Ustawienie
Show Layout Bounds
będzie teraz stosowane do komponentów natychmiast po jego włączeniu na karcie szybkich ustawień, bez konieczności opuszczania aktywności i ponowniego otwierania jej. (I843d5, b/225937688) - Wyszukiwanie ciągu znaków ułatwień dostępu nie powoduje wczytywania czcionek. Wcześniej próbował wczytać czcionki dla
StyleSpans
, co powodowało awarie, jeśliFontFamily.Resolver
został zastąpiony. (I4609d) - Naciśnięcie klawisza Delete, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
- Funkcje
DeleteSurroundingTextCommand
iDeleteSurroundingTextInCodePointsCommand
wymagają teraz, aby ich argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)
Wersja 1.2.0-beta02
18 maja 2022 r.
androidx.compose.ui:ui-*:1.2.0-beta02
został zwolniony. Wersja 1.2.0-beta02 zawiera te commity.
Zmiany w interfejsie API
- Używanie funkcji w innych typach podglądu (I19f39)
Poprawki błędów
- Nazwa
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
została zmieniona naDisposeOnDetachedFromWindowOrReleasedFromPool
, aby lepiej odzwierciedlała to, kiedy dochodzi do utylizacji, a nie kiedy nie dochodzi do utylizacji. (If15ca)
Wersja 1.2.0-beta01
11 maja 2022 roku
androidx.compose.ui:ui-*:1.2.0-beta01
został zwolniony. Wersja 1.2.0-beta01 zawiera te commity.
Nowe funkcje
- To pierwsza wersja beta 1.2.
Zmiany w interfejsie API
- Dodano eksperymentalną funkcję
BeyondBoundsInterval
, której mogą używać niestandardowe implementacjeLazyList
podczas rozmieszczania elementów poza widocznymi granicami (Ifabfb, b/184670295). - Wersje klucza interfejsu
Modifier.composed
są teraz stabilne (Ie65e4, b/229988420) - Uproszczony interfejs API
rememberNestedScrollConnection
, który używa lokalnych kompozycji do pozyskiwania informacji o bieżącym widoku (I67ca7) - Adnotacja
@ComposableTarget
i adnotacje oznaczone symbolem@ComposableTargetMarker
mogą być teraz używane w zakresie pliku za pomocą prefiksu@file
. Jeśli użyjesz adnotacji docelowej w zakresie pliku, kompilator założy, że wszystkie funkcje kompozytowe w pliku są przeznaczone do użycia przez powiązany aplikator. Na przykład użycie@file:UiComposable
oznacza, że wszystkie funkcje@Composable
są kierowane do narzędzia do tworzenia interfejsu użytkownika. Funkcja, która musi być kierowana na innego aplikatora, musi wyraźnie podać adnotację znacznika docelowego dla odpowiedniego aplikatora. (I40804) Wprowadziliśmy nowy eksperymentalny interfejs API do testów niezależnych od platformy:
interface ComposeUiTest
ifun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, które można używać do przeprowadzania testów interfejsu Compose bez konieczności korzystania z interfejsuTestRule
. Aby przeprowadzić test bezComposeTestRule
, prześlij go jako funkcję lambda dorunComposeUiTest
i użyj metod oraz elementów w zakresie odbiornikaComposeUiTest
, które są takie same jak wComposeContentTestRule
.Specyficzne dla Androida parametry
interface AndroidComposeUiTest
ifun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
zostały dodane, aby zapewnić dostęp do podstawowej czynności, podobnie jak parametrAndroidComposeTestRule
. Aby uzyskać jeszcze większą kontrolę, możesz samodzielnie utworzyć instancję klasyclass AndroidComposeUiTestEnvironment
.Implementacja na komputery to
class DesktopComposeUiTest
, ale obecnie nie oferujemy żadnych funkcji dotyczących uruchamiania na komputerach.Migrację testu z poziomu
ComposeTestRule
naComposeUiTest
możesz przeprowadzić w ten sposób (przykład na Androida). Od:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
Aby:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Obecnie
ComposeContentTestRule
iComposeTestRule
nie rozszerzająComposeUiTest
, co oznacza, że funkcji rozszerzeń wComposeUiTest
nie można jeszcze wywołać w interfejsieTestRule
. GdyComposeUiTest
stanie się stabilnym interfejsem API, interfejsyComposeContentTestRule
iComposeTestRule
zostaną rozszerzone o interfejsComposeUiTest
. (Ib4e90)Nazwa
LineHeightBehavior
została zmieniona naLineHeightStyle
Nazwa
LineVerticalAlignment
została zmieniona naLineHeightStyle.Alignment
Zmiana nazwy
LineHeightTrim
naLineHeightStyle.Trim
Domyślne wartości konstruktora w
LineHeightStyle
zostały usunięte (I582bf, b/181155707).Dodano
Brush
doTextStyle
iSpanStyle
, aby umożliwić rysowanie tekstu z kolorem gradientowym. (I53869, b/187839528)Atrybuty
trimFirstLineTop
itrimLastLineBottom
obiektuLineHeightBehavior
zostały zastąpione jednym typem enumeracji:LineHeightTrim
.LineHeightTrim
mają 4 wartości zdefiniowane przez 2 wartości logiczne:FirstLineTop
,LastLineBottom
, Both i None (Ifc6a5, b/181155707)Dodano
LineHeightBehavior
do listTextStyle
iParagraphStyle
.LineHeightBehavior
określa, czy wysokość wiersza jest stosowana w górnej części pierwszego wiersza i w dolnej części ostatniego wiersza. Określa ona też wyrównanie linii w miejscu przeznaczonym przezTextStyle(lineHeight)
.Możesz np. uzyskać działanie podobne do tego, które usługa porównywania cen definiuje za pomocą parametru
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Konfiguracje
trimFirstLineTop
,trimLastLineBottom
działają prawidłowo tylko wtedy, gdyincludeFontPadding
ma wartość false. (I97332, b/181155707)Funkcje
PlatformParagraphStyle.lerp
iPlatformSpanStyle.lerp
zostały zmienione na funkcje najwyższego poziomu (I9a268).
Poprawki błędów
- Dokumentacja
PointerInputChange::copy
zawiera teraz prawidłową informację, że jest to płytka kopia. (I182f5) - Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
- Domyślnie włączone
includeFontPadding
. FunkcjęincludeFontPadding
można wyłączyć za pomocą atrybutuTextStyle.platformTextStyle
. W najbliższej przyszłości zmienimy domyślne zachowanie, ale do tego czasu pozwoli nam to lepiej zintegrować ulepszenia wysokości linii (aosp/2058653) i rozwiązać problemy zTextField
. (I01423, b/171394808)
Darowizna zewnętrzna
- Wartość
MouseInjectionScope.scroll(delta = someDelta)
jest teraz odwrócona na Androidzie, jeśli przewijamy pionowo (jeśli someDelta jest dodatnia, przewijanie odbywa się w dół) (Ifb697, b/224992993)
Wersja 1.2.0-alpha08
20 kwietnia 2022 r.
androidx.compose.ui:ui-*:1.2.0-alpha08
został zwolniony. Wersja 1.2.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Funkcje
pluralStringResource
zostały oznaczone jako eksperymentalne, aby umożliwić ewolucji lepsze wsparcie dla internacjonalizacji w przyszłości. (If24e4) - Elementy Paragraph i MultiParagraph obsługują teraz parametr Constraints. Przekazywanie wartości
Constraints.maxHeight
nie ma obecnie zastosowania, ale pozwoli na wykonanie pewnych obliczeń w przyszłości, np. elipsy na podstawie wysokości. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
obsługuje teraz niestandardową klasę podobną do MutableSet, która nie zezwala na dodawanie do niej nowych elementów. (Icd314)- Ikona wskaźnika jest teraz interfejsem
@Stable
(I9dafe) - Częściowe wyświetlanie (obniżanie lub pozycja) zostało wycofane w wersji
PointerInputChange
. Możesz użyćconsume()
, aby w pełni wdrożyć zmianę. Możesz użyćisConsumed
, aby sprawdzić, czy ktoś inny wcześniej nie wprowadził tej zmiany. PointerInputChange::copy()
zawsze tworzy teraz kopię powierzchowną. Oznacza to, że kopiePointerInputChange
zostaną wykorzystane, gdy wykorzystana zostanie jedna z nich. Jeśli chcesz utworzyć niewiążącą instancjęPointerInputChange
, użyj konstruktora. (Ie6be4, b/225669674)- Włącz interoperacyjność przewijania zagnieżdżonego między oknami tworzenia i wyświetlania w kierunku od tworzenia do wyświetlania. Oznacza to, że element nadrzędny będzie mógł otrzymywać zagnieżdżone różnice przewijania z zagnieżdżonego widoku przewijania. (If7949, b/174348612)
- Nowy
SemanticsProperty testTagsAsResourceId
, który można wykorzystać do dostosowania Compose do testów UIAutomator zaprojektowanych pod kątem systemu View. (I39c20) - wyświetlać wszystkie dostępne grubości czcionek systemowych na Androidzie, gdy używasz
FontFamily.SansSerif
. W interfejsie API 21–28 wewnętrznie będą używane nazwy czcionek zastępczych, np. sans-serif-medium. Jest to zmiana zachowania, ponieważ wcześniej w interfejsach API 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992) - W instruktorze dotyczącym akapitu i instruktorze dotyczącym wielu akapitów argumenty pozycyjne zostały umieszczone przed argumentami opcjonalnymi. (Idafaa)
AndroidFont
przyjmuje teraz typefaceLoader jako parametr konstruktora. (I2c971)
Wersja 1.2.0-alpha07
6 kwietnia 2022 roku
androidx.compose.ui:ui-*:1.2.0-alpha07
został zwolniony. Wersja 1.2.0-alpha07 zawiera te commity.
Zmiany w interfejsie API
- Dodano nową funkcję
Snapshot.withoutReadObservation { ... }
. Umożliwia użytkownikom uruchomienie przekazanej funkcji lambda bez subskrybowania zmian wartości stanu odczytanych w ramach tego bloku. Może się to przydać w przypadku, gdy chcesz korzystać z funkcji zapisu/odczytu w ramach wątku bezpiecznego na podstawie zrzutu, ale jednocześnie chcesz mieć możliwość odczytania wartości bez powodowania niepotrzebnej zmiany składu lub ponownego pomiaru. (I9f365, b/214054486) - Właściwość rozszerzenia
consumeWindowInsets
w komponencieComposeView
pozwala deweloperom wyłączyć korzystanie z AndroidaWindowInsets
. Dzięki temu oddzielneComposeViews
w hierarchii mogą stosowaćWindowInsets
bez wzajemnego zakłócania się. (I0ef08, b/220943142) - Dodano znak
KeyboardType.Decimal
jako alternatywę dla znakuKeyboard.Number
, aby umożliwić dodawanie separatora dziesiętnego w systemie IME. (Iec4c8, b/209835363) - Interfejsy API
PointerEventType.Scroll
iPointerEvent.scrollDelta
są teraz stabilne (I574c5, b/225669674). - Włącz interoperacyjność przewijania zagnieżdżonego między View i Compose w przypadku współpracujących klas View. Oznacza to, że kompozytor może teraz wysyłać różnice przewijania do (współpracującego) rodzica widoku. (I5d1ac, b/174348612)
- Zaktualizowano
FontFamily.Resolver
, aby zintegrować ustawienie ułatwień dostępu dotyczące pogrubienia tekstu w całym systemie (I6c1e7). - Środowisko wykonawcze
Font(AssetManager, String, ...)
zostało wycofane i zastąpione środowiskiemFont(String, AssetManager, ...)
. To jest eksperymentalny interfejs API. (I1c7a4) - Dodaj nowy opis czcionki
Font(DeviceFontFamilyName)
, aby opcjonalnie sprawdzać czcionki zainstalowane w systemie podczas łańcuchów czcionek. (I30468, b/219754572) - Dodano tymczasową konfigurację zgodności dla
includeFontPadding
w TextStyle/ParagraphStyle. WartośćincludeFontPadding
można zmienić za pomocą aplikacjiTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. To tymczasowa opcja konfiguracji, która umożliwia migrację. Zostanie ona usunięta. (If47be, b/171394808) - Dodaj rozszerzenie
GoogleFont.Provider.isAvailableOnDevice
, aby ułatwić debugowanie. (I64e31) - Dodaj konstruktor
GoogleFont.Provider
do użycia z@ArrayRes
(Ic5ee1, b/225984280) - Interfejs
Compose GoogleFont
ma teraz nazwęFont(GoogleFont)
, ale w pozostałych aspektach pozostaje stabilny. (I125f2)
Poprawki błędów
- Dodano sprawdzanie lint w material/Scaffold, aby zapewnić używanie wewnętrznego wypełnienia (Ifb111).
Wersja 1.2.0-alpha06
23 marca 2022 r.
androidx.compose.ui:ui-*:1.2.0-alpha06
został zwolniony. Wersja 1.2.0-alpha06 zawiera te commity.
Zmiany w interfejsie API
- Dodano działanie semantyczne
RequestFocus
, aby poprosić o skupienie się na elemencie, który można zaznaczyć. (I17b71) - Zaktualizowano parsowanie obiektów wektorowych, aby umożliwić automatyczne lustrzane odbicie treści
VectorPainter
, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237) Zaktualizowano kolory cienia/światła otoczenia, aby były parametrami końcowymi
Modifier.graphicsLayer
w celu zapewnienia zgodności z interfejsem API (I3f864, b/160665122)Dodano domyślne implementacje cienia/oświetlenia otoczenia w
GraphicsLayerScope
, aby zapewnić zmiany interfejsu API, które nie spowodują przerwania działaniaDodano czas zdarzenia do zdarzeń RSB (Ief8ae)
Usługa
FocusOrder
została scalona z usługąFocusProperties
, a usługafocusProperties()
ma teraz wszystkie funkcje usługifocusOrder()
. FunkcjeFocusOrder
ifocusOrder()
zostały wycofane. ObiektfocusOrder()
, który przyjmuje argumentfocusRequester
, należy zastąpić modyfikatoremfocusRequester()
w połączeniu z obiektemfocusProperties()
. Dzięki temu modyfikatory mają większą separację problemów. (I601b7)Uaktualnienie elementów
RecyclerView
iCompose
spowoduje teraz znacznie większą wydajność przewijania dla komponentów RecyclerView z komponentami Compose jako elementami podrzędnymi.Dodaj
ViewCompositionStrategy.Default
jako sposób na pobranie wbudowanej strategii domyślnejDodaj
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, która jest nową domyślną strategią i odpowiednio obsługuje tworzenie puli kontenerów, takich jak RecyclerView. (If7282)Dodaliśmy obsługę adnotacji klas za pomocą @Preview jako pierwszy krok do dodania funkcji podglądu zbiorczego. Takie adnotacje można stosować do adnotacji metod kompozytowych lub innych klas adnotacji, które można uznać za pośrednio adnotowane za pomocą podanego adnotacji @Preview. (I12eff)
Urządzenia referencyjne dodane do listy urządzeń w ramach wersji @Preview (I071c9)
Poprawki błędów
- Zaktualizowano interfejsy API grafiki wektorowej, aby używały odpowiedniej adnotacji kompozytowej @VectorComposable zamiast @UiComposable (I942bc).
- Usuń instrukcje warunkowe z poziomu wiersza
AnnotatedString.Builder.withStyle
(If84d5)
Darowizna zewnętrzna
- compose-ui: dodaj właściwości
ambientShadowColor
ispotShadowColor
doGraphicsLayerScope
(I1ba1a, b/160665122) - Zasoby liczby mnogiej są teraz obsługiwane za pomocą funkcji
pluralStringResource
. (Ib2f23, b/191375123)
Wersja 1.2.0-alpha05
9 marca 2022 r.
androidx.compose.ui:ui-*:1.2.0-alpha05
został zwolniony. Wersja 1.2.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Funkcja
TextToolbar
przyjmuje teraz argumenty lambda zamiastActionCallback
. (Ib2eb9, b/197950089) - Zaktualizowano opcjonalność w jądrze i pakiecie zgodności aplikacji, aby dopasować je do wersji DP2 Tiramisu (I0cbb7).
- Interfejs zmierzonego zdarzenia udostępnia teraz właściwość parentData (I3313f).
- Interfejs
Modifier.onPlaced
iOnPlacedModifier
działają stabilnie. (Ib5482) - Hurra! Animacja w edytorze obsługuje teraz ustawienie „Skala długości animacji” w opcjach dla deweloperów. (I5a4fc, b/161675988)
- Dodano modyfikator
BeyondBoundsLayout
lokalny (If8b51, b/184670295) - Tekst: opcja includeFontPadding jest teraz domyślnie wyłączona. Problemy z przycinaniem wynikające z użycia
includeFontPadding=false
zostały rozwiązane i w przypadku wysokich skryptów nie powinno już występować przycinanie. (I31c84, b/171394808)
Poprawki błędów
ComposeContentTestRule.setContent
będzie teraz wywoływać błądIllegalStateException
, jeśli spróbujesz ustawić treści, gdy już istnieją treści. (I888a5, b/199631334)- Naprawiono awarię spowodowaną przez zawartość schowka podczas odczytu ze schowka na Androidzie. (I06020, b/197769306)
- Ulepszenie przykładów przewijania RSB. (I6a596)
Darowizna zewnętrzna
- Zaktualizowano do wersji Kotlinx coroutines 1.6.0 (I3366d).
Wersja 1.2.0-alpha04
23 lutego 2022 r.
androidx.compose.ui:ui-*:1.2.0-alpha04
został zwolniony. Wersja 1.2.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
Dodano funkcje
ComposableTarget
,ComposableTargetMarker
iComposableOpenTarget
, które umożliwiają raportowanie w czasie kompilacji, gdy wywoływana jest funkcja typu „composable” kierowana na obiekt, który nie jest przeznaczony do jej użycia.W większości przypadków adnotacje mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc rzadko trzeba używać ich bezpośrednio . Do przypadków, w których nie można wywnioskować typu danych, należą tworzenie i używanie niestandardowego aplikatora, abstrakcyjnych funkcji składanych (np. metod interfejsu), pól lub zmiennych globalnych, które są składanymi funkcjami lambda (lokalne zmienne i parametry są wywnioskowane) oraz używanie funkcji
ComposeNode
lub powiązanych funkcji składanych.W przypadku niestandardowych funkcji dopasowujących funkcje składane, które wywołują
ComposeNode
lubReusableComposeNode
, muszą dodać adnotacjęComposableTarget
dla funkcji i wszystkich typów parametrów funkcji składanych lambda. Zalecamy jednak utworzenie adnotacji z oznaczeniemComposableTargetMarker
, a następnie używanie adnotacji z oznaczeniem zamiast bezpośrednioComposableTarget
. Kompozytowa adnotacja oznaczona symbolemComposableTargetMarker
jest równoważna atrybucieComposbleTarget
z pełną nazwą klasy atrybutu jako parametrem aplikatora. Przykład użycia funkcjiComposableTargetMarker
znajdziesz w sekcjianroidx.compose.ui.UiComposable
. (I38f11)Font(resId, ...)
przyjmuje teraz loadingStrategy w stabilnej wersji interfejsu API. (Ief3d2)Interfejs API
FontLoadingStrategy
jest teraz stabilny. (I1ee35, b/174162090)Obsługa asynchronicznego wczytywania czcionek w Tekście (I77057, b/214587005)
Dodaj interfejs Bridge API do konwertowania niestandardowego
Font.ResourceLoader
naFontFamily.Resolver
. (Ia0060)
Poprawki błędów
- Podane wartości
FontFamily.Resolver
są przekazywane do podkompozycji, takich jak Popup. - Podane wartości
Font.ResourceLoader
są przekazywane do podkompozycji, takich jak Popup. (I48fa5)
Wersja 1.2.0-alpha03
9 lutego 2022 r.
androidx.compose.ui:ui-*:1.2.0-alpha03
został zwolniony. Wersja 1.2.0-alpha03 zawiera te komisy.
Zmiany w interfejsie API
- Metody
notifyFocusedRect
w klasachTextInputSession
iTextInputService
są teraz wycofane i nie będą wywoływane. Zamiast tego użyjBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Wprowadzono metodę
destroyDisplayListData
w klasie zastępczejRenderNode
(I1e659, b/216660268). - Dodano nowy interfejs API, który umożliwia wstępne pomiary podelementów
SubcomposeLayout
. (I857ea) Dodano funkcję
movableContentOf
, która zamienia składaną funkcję lambda na funkcję lambda, która przenosi stan i odpowiednie węzły do dowolnej nowej lokalizacji, w której zostanie wywołana. Gdy poprzednie wywołanie opuszcza składnię, stan jest tymczasowo zachowany, a jeśli nowe wywołanie do funkcji lambda wchodzi do kompozycji, stan i powiązane węzły są przenoszone do lokalizacji nowego wywołania. Jeśli nie dodasz nowego wywołania, stan zostanie trwale usunięty, a obserwatorzy zostaną o tym powiadomieni.Jeśli funkcja
movableContentOf
lambda jest wywoływana wielokrotnie w tej samej kompozycji, dla każdego wywołania tworzony jest nowy stan i nowe węzły. Gdy wywołania opuszczają kompozycję i wchodzą nowe wywołania, stan jest przenoszony z pierwszych wywołań na opuszczające wywołania w kolejności ich wywołania. Wszystkie stany, które nie zostały zadeklarowane przez nowe połączenia, zostaną trwale usunięte. (Ib4850)FontFamilyResolver
jest teraz dostępne w usłudzeLocalFontFamilyResolver.current
Dodaliśmy funkcje
createFontFamilyResolver(context)
icreateFontFamilyResolver(context, coroutineScope)
, które umożliwiają tworzenie nowych rozwiązujących FontFamily poza kompozycją.Akapit i MultiParagraph przyjmują teraz wartość
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
zawiera teraz resolver używany w tym układzie, a nieużywany resolverTextLayoutResult.layoutInput.resourceLoader
, ponieważ nie jest już używany. (Id5a45, b/174162090)Obsługa asynchronicznego i opcjonalnego wczytywania czcionek z zachowaniem zachowania zastępczego. Ta ścieżka jest używana przez Text i TextField oraz jest dostępna za pomocą FontFamilyResolver
Obsługa wstępnego wczytywania czcionek za pomocą
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
umożliwia ustawienie globalnego kontekstu coroutine używanego do wczytywania czcionek asynchronicznych. (I87fe8, b/174162090)Dodano
AndroidFont
, nowy interfejs API na niskim poziomie do udostępniania nowych typów opisów zasobów czcionek na Androidzie. Może to być na przykład wczytywanie czcionek z back-endu konkretnej aplikacji, opcjonalne znajdowanie wstępnie zainstalowanych czcionek na urządzeniu lub wczytywanie czcionki z zasobu, który nie jest dostarczany przez bieżące fabryki czcionek.Rozszerzenie interfejsu
Font.ResourceLoaded
API o obsługę opcjonalnego i asynchronicznego wczytywania czcionek. Nie zalecamy, aby deweloperzy aplikacji używali tego interfejsu API bezpośrednio. Aby dodać nowe typy czcionek, zapoznaj się z artykułemAndroidFont
.Funkcja rozszerzenia
Font.AndroidResourceLoader
umożliwia tworzenieFont.ResourceLoader
poza kompozycją.Dodano parametr
loadingStrategy
do czcionek opartych na zasobach, aby umożliwić asynchroniczne wczytywanie, gdy czcionka oparta na zasobach odwołuje się do czcionek do pobrania w formacie XML. (Ie5aea, b/174162090)Konstruktor
Typeface(FontFamily)
został wycofany. Wcześniej służyła ona do wstępnego wczytania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku czcionek do pobrania może to potrwać 10 sekund. Zamiast tego użyjFontFamilyResolver.preload
.Środowisko wykonawcze
fontResource(FontFamily): Typeface
zostało wycofane. Wcześniej służyła ona do wstępnego wczytania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast tego użyjFontFamilyResolver.preload
(If8e7c, b/174162090).Konstruktor
SubcomposeLayoutState
przyjmującymaxSlotsToRetainForReuse
został wycofany. Zamiast tego jest nowy konstruktor, który akceptujeSubcomposeSlotReusePolicy
– nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które sloty powinny być zachowane na potrzeby ponownego użycia. (I52c4d)Udostępnia funkcje HSV i HSL w
Color
jako nieeksperymentalne interfejsy API. Przestrzeń barw Oklab jest teraz publicznie dostępnym interfejsem API. (I08fb6, b/180731008)Wycofany
AndroidComposeTestRule.AndroidComposeStatement
, który nie powinien znajdować się w publicznym interfejsie API i w ogóle niczego nie robił. (Ibc46b)Zmiana nazwy wewnętrznie wygenerowanej klasy kt (Ia0b9e, b/174162090)
Usunięto
FontLoadingStrategy.values
(I42a9d, b/174162090)Globalny wczytujący czcionki ma teraz nazwę
FontFamilyResolver
. (I4f773, b/174162090)Użyj nowego systemu wczytywania czcionek na komputerze. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
zwracaState<Any>
(I4406c, b/174162090)
Poprawki błędów
- Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są zaznaczone i wyświetla się klawiatura w trybie miękkiego wprowadzania
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Na komputerze kompozycja lokalna jest używana w przypadku
FontFamily.Resolver
- Środowisko wykonawcze
FontLoader
na komputery zostało wycofane - Nowa fabryka
createFontFamilyResolver
na komputery (I6bbbb, b/174162090) - Typ klawiatury wirtualnej nie miga już podczas przełączania fokusu między polami tekstowymi. (I1bf50, b/187746439)
Wersja 1.2.0-alpha02
26 stycznia 2022 r.
androidx.compose.ui:ui-*:1.2.0-alpha02
został zwolniony. Wersja 1.2.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Dodano
Modifier.onRotaryScrollEvent()
iModifier.onPreRotaryScrollEvent()
dla urządzeń Wear OS z obrotowym przyciskiem bocznym (I18bf5, b/210748686). - Dodaj eksperymentalne rozszerzenie
View.createLifecycleAwareRecomposer
(I0cde6)
Darowizna zewnętrzna
PointerEvent.scrollDelta.y
jest teraz odwrócone na Androidzie (zwraca teraz 1 zamiast -1, gdy przechylimy kółko myszy w prawo) (Ia9811)
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
androidx.compose.ui:ui-*:1.2.0-alpha01
został zwolniony. Wersja 1.2.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
- Wycofano:
FontFamily.canLoadSynchronously
. Ta usługa ma znaczenie semantyczne. (Ica5ef) - Dodano pole tożsamości do
CompositionData
na potrzeby generowania identyfikatorów niezmiennych w Inspektorze układu. (Ic116e) - Dodano identyfikatory urządzeń z Wear OS do listy urządzeń w wersji podglądowej (I93232)
Aktualizacje zależności
- Teraz zależy od Kotlina
1.6.10
.
Wersja 1.1
Wersja 1.1.1
23 lutego 2022 r.
androidx.compose.ui:ui-*:1.1.1
został zwolniony. Wersja 1.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw
NullPointerException
wandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462). - Naprawiono awarię spowodowaną przez zawartość schowka podczas odczytu ze schowka na Androidzie. (I06020, b/197769306)
- Naprawiono problem z językiem arabskim w usługach
LazyVerticalGrid
(aosp/1931080, b/207510535).
Wersja 1.1.0
9 lutego 2022 r.
androidx.compose.ui:ui-*:1.1.0
został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.0.0
- stabilna obsługa efektu przewijania do końca w Androidzie 12,
- Ulepszenia dotyczące rozmiaru docelowego elementu dotykowego
- Pamiętaj, że w wersji Compose 1.0 komponenty Material Design będą rozszerzać swoją przestrzeń układu, aby spełniać wytyczne Material Design dotyczące rozmiaru docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku będzie miał minimalny rozmiar 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu komponenty Compose będą działać tak samo jak komponenty Material Design, co zapewni spójność, jeśli użyjesz widoków i Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu użytkownika za pomocą komponentów Compose Material zostaną spełnione minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
- Stabilna obsługa kolumny nawigacji
- przekształciliśmy kilka wcześniej eksperymentalnych interfejsów API w stabilne.
- Obsługa nowszych wersji Kotlina
Wersja 1.1.0-rc03
26 stycznia 2022 r.
androidx.compose.ui:ui-*:1.1.0-rc03
został zwolniony. Wersja 1.1.0-rc03 zawiera te commity.
Poprawki błędów
- Zaktualizowano, aby obsługiwać Compose Material 1.1.0-rc03
Wersja 1.1.0-rc01
15 grudnia 2021 roku
androidx.compose.ui:ui-*:1.1.0-rc01
został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd powodujący brak działań związanych z przewijaniem w dostępności (I7cbfb).
- Funkcja
SemanticsNodeInteraction.captureToImage()
będzie teraz działać również wtedy, gdyHardwareRenderer.isDrawingEnabled()
ma wartośćfalse
, umożliwiając jej działanie przez cały czas trwania połączenia (Idf3d0)
Wersja 1.1.0-beta04
1 grudnia 2021 r.
androidx.compose.ui:ui-*:1.1.0-beta04
został zwolniony. Wersja 1.1.0-beta04 zawiera te commity.
Nowe funkcje
- Zaktualizowano, aby zapewnić zgodność z Kotlin
1.6.0
Zmiany w interfejsie API
- Usunięto możliwość ustawienia wartości null w funkcji
androidx.core.view
(I7078a, b/204917439) - Dodano eksperymentalne interfejsy API, które umożliwiają użytkownikom odczytywanie wartości PointerInputchange w całości lub sprawdzanie, czy została ona odczytana. (I2e59d)
- Dodano obsługę zdarzeń kółka myszy w warstwie interfejsu użytkownika. (Ia14eb, b/198214718)
- Dodaj eksperymentalne przeciążenia
Modifier.composed
, które akceptują klucze do porównania pod kątem równości i kwalifikują się do pomijania optymalizacji. (Ice799, b/205851704) ComposeNotIdleException
rozszerza się teraz zException
, a nie bezpośrednio zThrowable
. Oznacza to, że klauzule pętli catch, które przechwytywałyException
, mogą teraz przechwytywaćComposeNotIdleException
s, co wcześniej nie było możliwe. (I9c217)
Poprawki błędów
- Rozwiązanie problemu polegający na tym, że uchwyty tekstu nie poruszają się, gdy zmienia się widoczność IME. (I25f2e)
Wersja 1.1.0-beta03
17 listopada 2021 r.
androidx.compose.ui:ui-*:1.1.0-beta03
został zwolniony. Wersja 1.1.0-beta03 zawiera te commity.
Zmiany w interfejsie API
- Dodano nowy modyfikator Modifier.onPlaced, aby umożliwić obserwowanie zmiany położenia. W związku z tym można wprowadzić dodatkowe zmiany w przesunięciu modyfikatora podrzędnego na podstawie zaobserwowanej zmiany miejsca docelowego. (I558fd)
- Usunięto
InjectionScope.flush()
iInjectionScope.dispose()
. Wyczyszczanie wszystkich zdarzeń i usuwanie zakresu odbywa się teraz na końcu wywołanej metody perform*Input() tak jak wcześniej. (I2bed8) - Usunięto
MultiModalInjectionScope.Touch
iMultiModalInjectionScope.Mouse
. Aby wstrzykiwać zdarzenia dotykowe i myszy w przypadku gestów wielomodalnych, możesz teraz używać funkcjiMultiModalInjectionScope.touch()
iMultiModalInjectionScope.mouse()
, które obie akceptują funkcję lambda z zakresem odbiorczym odpowiadającym danej modalności. (Idde18)
Poprawki błędów
- Wartość domyślna dla
durationMillis
wTouchInjectionScope.swipeWithVelocity
jest teraz obliczana w taki sposób, aby umożliwić przesuwanie. (I19deb)
Wersja 1.1.0-beta02
3 listopada 2021 r.
androidx.compose.ui:ui-*:1.1.0-beta02
został zwolniony. Wersja 1.1.0-beta02 zawiera te commity.
Zmiany w interfejsie API
- Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysłanie do rodziców prośby o przewinięcie, aby element znalazł się w polu widzenia (Ib918d, b/195353459).
- Nowe interfejsy API animacji do obsługi narzędzi. W szczególności umożliwiają one narzędziom sprawdzenie animacji i ich konfiguracji w sekcji Przejścia. (I4116e)
Darowizna zewnętrzna
- Dodano Modifier.pointerHoverIcon (I95f01).
Wersja 1.1.0-beta01
27 października 2021 roku
androidx.compose.ui:ui-*:1.1.0-beta01
został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Dodano eksperymentalne API
BringIntoView
, które umożliwia wysłanie do rodziców prośby o przewinięcie do widoku danego elementu (Ib918d, b/195353459) - Nowe interfejsy API animacji do obsługi narzędzi. W szczególności umożliwiają one narzędziom sprawdzenie animacji i ich konfiguracji w sekcji Przejścia. (I4116e)
Wersja 1.1.0-alpha06
13 października 2021 r.
androidx.compose.ui:ui-*:1.1.0-alpha06
został zwolniony. Wersja 1.1.0-alpha06 zawiera te commity.
Zmiany w interfejsie API
- Usuń
ExperimentalComposeUiApi
z kontViewRootForInspector
iLayoutInfo.ownerViewId
(I5c2e3) - Dodano przeciążenie bez podrzędnych dla Layoutu, które zwiększa wydajność (Ib0d9a)
- Usunięto
InternalCompilerApi
z metod Composer, które muszą być wywoływane w ramach modułów (I1aa0b). - Funkcja
SemanticsNodeInteraction.performSemanticsAction
zwraca terazSemanticsNodeInteraction
, z którego została wywołana. (I9e5db) - Dodano LocalInputModeManager CompositionLocal do wykrywania trybu dotykowego/niedotykowego. (I6a83c, b/175899786)
- Dodano
viewConfiguration: ViewConfiguration
doLayoutInfo
, aby umożliwić konsumentom uzyskanie prawidłowej wartości w przypadku takich funkcji jak czas oczekiwania po długim naciśnięciu. (I76ca6)- Dodano
viewConfiguration: ViewConfiguration
doInjectionScope
, aby umożliwić testom dostosowywanie wstrzykiwania danych wejściowych na podstawie takich parametrów, jak czas oczekiwania na długie naciśnięcie lub tolerancja dotyku. - Zmieniono domyślny czas przytrzymania i kliknięcia dwukrotnego zarówno w przypadku dotyku, jak i myszy, aby zależał on od wartości w pliku
InjectionScope.viewConfiguration
.
- Dodano
- Implementacja ExposedDropdownMenu na podstawie ExposedDropdownMenuBox z TextField i DropdownMenu wewnątrz (If60b2)
- Do właściwości PopupProperties dodano wartość dismissOnOutsideClick, która zastępuje wycofaną opcję dismissOnClickOutside. Nowa właściwość odbiera pozycję kliknięcia i zakresy kotwicy, co zapewnia większą kontrolę nad tym, czy wywołać metodę onDismissRequest. Może to być przydatne na przykład do zapobiegania zamykaniu kotwicy po dotknięciu.
- Do PopupProperties dodano metodę updateAndroidWindowManagerFlags, która umożliwia kontrolowanie na niskim poziomie flag przekazywanych przez wyskakujące okienko do Android WindowManager. Parametrem funkcji lambda będą flagi obliczone na podstawie wartości PopupProperties, które prowadzą do flag WindowManager, np. focusable. Wynikiem funkcji lambda będą ostateczne flagi, które zostaną przekazane do WindowManagera Androida. Domyślnie funkcja updateAndroidWindowManagerFlags pozostawia flagi obliczone na podstawie parametrów bez zmian. Z tego interfejsu API należy korzystać ostrożnie, tylko wtedy, gdy wyskakujące okienko ma bardzo specyficzne wymagania dotyczące działania. (I6e9f9)
Recomposer.state
zostało wycofane i zastąpione przezRecomposer.currentState
, aby zmienić jego typ na StateFlow (Ic2ab3, b/197773820).- Dodano
flush()
idispose()
do listyInjectionScope
. Używaj ich, gdy chcesz natychmiast usunąć wszystkie zdarzenia z kolejki lub gdy chcesz usunąć zakres. (Ifb73a) - Dodano funkcję
performScrollToNode(matcher: SemanticsMatcher)
, która przewija element z możliwością przewijania do treści dopasowanych przez podany element dopasowujący. (Ic1cb8) InjectionScope
implementuje terazDensity
, co pozwala łatwo konwertować wartości px na dp wperformTouchInput
i innych usługach. (I8fe1f)
Poprawki błędów
- AndroidView rozpowszechnia teraz LocalLifecycleOwner i LocalSavedStateRegistryOwner do widoku za pomocą ViewTreeLifecycleOwner i ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Naprawiono błąd w WearOS, który powodował, że pole SwipeToDismissBox nie reagowało na gest przesunięcia. (I9387e)
- Domyślny czas między wstrzykniętymi zdarzeniami wejścia został zmieniony z 10 ms na 16 ms. Może to zmienić wyniki testów, które wykonują gesty wejściowe, takie jak określony gest przesunięcia. (I829fd)
Wersja 1.1.0-alpha05
29 września 2021 r.
androidx.compose.ui:ui-*:1.1.0-alpha05
został zwolniony. Wersja 1.1.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Dodano obsługę komunikacji między modyfikatorami (Id5467, b/198826874)
- Dodano eksperymentalne wskaźniki historyczne do PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
- Dodano
density: Density
ilayoutDirection: LayoutDirection
do listyLayoutInfo
. Dzięki temu użytkownicyLayoutInfo
mogą prawidłowo interpretować wymiary i położenie wLayoutInfo
. (I002f1) - Dodano eksperymentalną obsługę wstrzykiwania zdarzeń myszy. Użyj tagu
performMouseInput
, aby zacząć wysyłać zdarzenia myszy, lub wyślij zdarzenia myszy za pomocą właściwościMouse
w elementachMultiModalInjectionScope
podczas wielomodalnego gestu wejściowego z elementemperformMultiModalInput
. Dokumentację dostępnego interfejsu API znajdziesz na stronieMouseInjectionScope
. (Iaa4a8, b/190493367)
Poprawki błędów
- Naprawiono obsługę ułatwień dostępu w przypadku elementów do przewijania (zarówno statycznych, jak i niestatycznych) w związku z przewijaniem (I6cdb0).
- Ulepszono
TouchInjectionScope.swipeWithVelocity
. Teraz obsługuje szerszy zakres zmiennych wejściowych i w przypadku, gdy nie można utworzyć przesunięcia, sugeruje zmiany w danych wejściowych (I40fbe, b/182477143)
Wersja 1.1.0-alpha04
15 września 2021 r.
androidx.compose.ui:ui-*:1.1.0-alpha04
został zwolniony. Wersja 1.1.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
PointerEvent
ma terazPointerEventType
, aby obsługiwać zdarzenia związane z najechaniem kursorem. (I091fa)- Zezwalanie dzieciom na akceptowanie danych wejściowych wskaźnika poza granicami obszaru wskaźnika rodzica. Rodzice mogą przechwytywać te wywołania za pomocą właściwości PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
- Wycofane parametry
performGesture
iGestureScope
, które zostały zastąpione przez parametryperformTouchInput
iTouchInjectionScope
. (Ia5f3f, b/190493367) - Dodano
touchBoundsInRoot
doSemanticsNode
, które zawiera minimalny rozmiar docelowego elementu dotykowego, aby deweloperzy mogli mieć pewność, że docelowe elementy dotykowe spełniają minimalne wymagania dotyczące dostępności. (I2e14b, b/197751214) - Ponowna implementacja funkcji inspectable (I927bc, b/191017532)
- Zmieniono nazwę parametru inspectable na odpowiadającą składnikom (I3a482, b/191017532).
Wprowadziliśmy
performTouchInput
iTouchInjectionScope
jako zamiennikiperformTouchInput
iTouchInjectionScope
, co otwiera drogę do korzystania z innych metod (np. myszy).TouchInjectionScope
ma te same metody coGestureScope
, z wyjątkiem metodmovePointerTo
imovePointerBy
, które zostały przemianowane naupdatePointerTo
iupdatePointerBy
. Wszystkie inne metody są takie same.Funkcja
TouchInjectionScope
działa prawie tak samo jak funkcjaGestureScope
, z 2 małymi wyjątkami:- Podczas wysyłania zdarzenia down, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia move (czyli
updatePointerTo()
zostało użyte, ale niemove()
, a potem wywołanodown()
), poprzednia implementacja przesuwała czas zdarzenia i wysyłała zdarzenie move przed wysłaniem zdarzenia down. Nowa implementacja nadal wysyła zdarzenie move, ale w tym konkretnym scenariuszu nie przesuwa czasu zdarzenia. - W przypadku wysyłania zdarzenia up, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia move (podobnie jak w przypadku powyżej), poprzednia implementacja przesuwała czas zdarzenia i wysyłała zdarzenie move przed wysłaniem zdarzenia up. Nowa implementacja nie wykonuje żadnej z tych czynności: nowe pozycje wskaźników będą odzwierciedlane tylko w ramach zdarzenia up.
Na koniec
TouchInjectionScope
wprowadza nową metodęcurrentPosition(pointerId: Int)
, która służy do uzyskiwania bieżącej pozycji wskaźnika. (If1191, b/190493367)- Podczas wysyłania zdarzenia down, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia move (czyli
Poprawki błędów
- Zezwalanie na rozszerzenie granic docelowego elementu dotykowego poza region klipu w celu zapewnienia minimalnego docelowego elementu dotykowego. (I43e10, b/171509422)
- Dodano obsługę rozciągania podczas przewijania na urządzeniach z Androidem 12. (Iccf3c, b/171682480)
Wersja 1.1.0-alpha03
1 września 2021 roku
androidx.compose.ui:ui-*:1.1.0-alpha03
został zwolniony. Wersja 1.1.0-alpha03 zawiera te commity.
Nowe funkcje
- Zaktualizowano Compose
1.1.0-alpha03
, aby zależało od Kotlina1.5.30
. (I74545)
Zmiany w interfejsie API
- Dodano
Modifier.inspectable
do otaczania innych modyfikatorów. (I1909b, b/191017532) - Dodano interfejs API
BlurredEdgeTreatment
, aby uprościć przypadki użycia rozmycia, stosując najczęściej używane kombinacje flag klipów i trybów kafelków. Większość przypadków obejmuje renderowanie zamazanych treści poza oryginalnymi granicami treści i rozmycie obszarów poza tymi granicami za pomocą przezroczystej czerni lub przycinanie treści do granic treści, pobierając próbki z najbliższej krawędzi dla jąder rozmywania, które wykraczają poza granice treści. (I6b4b7, b/166927547) - Dodano obsługę RenderEffect w komponowaniu na komputerze. Wprowadziliśmy efekt przesunięcia oraz modyfikator rozmycia jako prosty sposób na wprowadzenie efektów wizualnych rozmycia do części hierarchii kompozycji. (I0f6aa, b/166927547)
- Wprowadziliśmy interfejs RenderEffect API, który można opcjonalnie skonfigurować na
Modifier.graphicsLayer
, aby zmienić zawartość danej warstwy. Można go użyć do rozmydlenia treści w komponowalnych i podrzędnych komponentach w hierarchii kompozycji. (I47c4d, b/166927547) - AwaitPointerEventScope ma teraz metody withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i wejściu wskaźnika w celu zapewnienia ułatwień dostępu. (Ie861c)
- Dodaj obsługę TileMode.Decal, która jest przydatna do definiowania zachowania krawędzi dla efektów RenderEffects opartych na rozmytym obrazie. (I7e8ed, b/166927547)
- Interfejsy API
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
ihasScrollToKeyAction
są teraz stabilne (I142ae, b/178483889) - Dodano metodę testową, która umożliwia uzyskanie ograniczonych granic. (I6b28e)
Poprawki błędów
- Usunięto metodę isBounded z BlurredEdgeTreatment na rzecz sprawdzania, czy parametr shape jest null. (I85d68)
Wersja 1.1.0-alpha02
18 sierpnia 2021 r.
androidx.compose.ui:ui-*:1.1.0-alpha02
został zwolniony. Wersja 1.1.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Zdarzenie PointerEvent obsługuje teraz odczyt stanu przycisku myszy i stanu modyfikatora klawiatury. (I6310c, b/180075467)
- Wstrzyknięte gesty używają teraz czasu z MainTestClock jako źródła informacji o czasie. Bieżący czas dla wstrzykniętych zdarzeń w funkcji
performGesture
zostanie zainicjowany na podstawie bieżącego czasu zegara MainTestClock. (Ifb364, b/192064452) - Dodano konstruktor
DpRect(DpOffset, DpSize)
(I2cf16, b/194219828) - Dodano klasę DpSize (I7abb1, b/194219828)
Poprawki błędów
- Zaktualizowano parsowanie XML grafik wektorowych, aby umożliwić używanie list stanów kolorów jako właściwości głównego zabarwienia kolorów w obiektach rysowalnych wektorowo. (I86915, b/195668138)
Wersja 1.1.0-alpha01
4 sierpnia 2021 r.
androidx.compose.ui:ui-*:1.1.0-alpha01
został zwolniony. Wersja 1.1.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
RelocationRequester.bringIntoView
może teraz przyjmować jako parametr prostokąt, co umożliwia wyświetlanie części kompozytowanej (Ice2c5, b/194330245).- Interfejs
AnimatedImageVector
i powiązane z nim interfejsy API znajdują się teraz w nowym moduleandroidx.compose.animation:animation-graphics
. (I60873) - Dodaliśmy eksperymentalny modyfikator do obsługi próśb o przeniesienie. (I65a97, b/178211874)
Wprowadziliśmy interfejs API BrushPainter, aby umożliwić rysowanie dowolnym pędzlem w ramach usługi Painter, podobnie jak w przypadku usługi ColorPainter.
Zaktualizowano interfejs Brush API, aby zawierał parametr rozmiaru wewnętrznego, który jest zapytany w BrushPainter (Ia2752, b/189466433).
Zaktualizowana metoda DrawScope#drawImage, która używa prostokątów źródła i docelowo, aby używać opcjonalnego parametru FilterQuality. Jest to przydatne w przypadku grafiki pikseli, która ma być pikselizowa, gdy zostanie powiększona do grafiki pikseli. Zaktualizowano kompozyt BitmapPainter + Image, aby używać opcjonalnego parametru FilterQuality (Ie4fb0, b/180311607).
Dodano metodę
GestureScope.advanceEventTime
, aby zapewnić większą kontrolę nad czasem zdarzeń w geście (Ibf3e2).
Poprawki błędów
- Aby lepiej obsługiwać łańcuchowanie modyfikatorów funkcji draw, upewnij się, że implementacja Modifier.paint wywołuje drawsContent.
Wcześniej oczekiwano, że Modifier.paint będzie węzłem liścia w łańcuchu modyfikatorów, ale uniemożliwia to skonfigurowanie go w składowym kontenerze (np. box) lub dodanie dodatkowych ozdób, takich jak
Modifier.paint().border()
. Dzięki temu, że metoda Modifier.paint wywołuje metodę drawContent po narysowaniu zawartości danego malarza, uzyskujemy większą spójność zachowania w przypadku wzorca modyfikatora. (Ibb2a7, b/178201337, b/186213275) - Dialogi są teraz dostosowywane do rozmiaru platformy. Aby zmienić to zachowanie, ustaw wartość
usePlatformDefaultWidth
na „False” (fałsz). (Iffaed, b/192682388) - Przeniesiono
InfiniteAnimationPolicy
do :compose:ui (I5eb09, b/160602714). - Przewijanie za pomocą działań semantycznych w przypadku list opartych na lazy loadingu i zwykłych komponentów z przewijaniem jest teraz animowane (Id9066, b/190742024)
Wersja 1.0
Wersja 1.0.5
3 listopada 2021 r.
androidx.compose.ui:ui-*:1.0.5
został zwolniony. Wersja 1.0.5 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem ze śledzeniem awarii w przypadku instancji derivedStateOf. (aosp/1792247)
Wersja 1.0.4
13 października 2021 r.
androidx.compose.ui:ui-*:1.0.4
został zwolniony. Wersja 1.0.4 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależało od Kotlina
1.5.31
Wersja 1.0.3
29 września 2021 r.
androidx.compose.ui:ui-*:1.0.3
został zwolniony. Wersja 1.0.3 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależało od Kotlina
1.5.30
Wersja 1.0.2
1 września 2021 roku
androidx.compose.ui:ui-*:1.0.2
został zwolniony. Wersja 1.0.2 zawiera te zatwierdzenia.
Zaktualizowano, aby obsługiwać wersję 1.0.2
aplikacji Compose. Compose 1.0.2
jest nadal zgodny z Kotlinem 1.5.21
.
Wersja 1.0.1
4 sierpnia 2021 r.
androidx.compose.ui:ui-*:1.0.1
został zwolniony. Wersja 1.0.1 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależało od Kotlina
1.5.21
.
Wersja 1.0.0
28 lipca 2021 roku
androidx.compose.ui:ui-*:1.0.0
został zwolniony. Wersja 1.0.0 zawiera te zatwierdzenia.
Najważniejsze funkcje wersji 1.0.0
To pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu Compose Release.
Znane problemy
Jeśli używasz Android Studio Bumblebee Canary 4 lub AGP
7.1.0-alpha04
/7.1.0-alpha05
, możesz napotkać ten błąd:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Aby to naprawić, tymczasowo zwiększ wartość minSdkVersion do 24 lub wyższej w pliku
build.gradle
. Ten problem zostanie rozwiązany w następnej wersji Android Studio Bumblebee i AGP7.1
. (b/194289155)
Wersja 1.0.0-rc02
14 lipca 2021 roku
androidx.compose.ui:ui-*:1.0.0-rc02
został zwolniony. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Dialogi są teraz dostosowywane do rozmiaru platformy. Aby zmienić to zachowanie, ustaw wartość
usePlatformDefaultWidth
na „False” (fałsz). (Iffaed, b/192682388)
Wersja 1.0.0-rc01
1 lipca 2021 r.
androidx.compose.ui:ui-*:1.0.0-rc01
został zwolniony. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Podział modułu ui-tooling na
ui-tooling
iui-tooling-preview
(Iefa28, b/190649014)
Zmiany w interfejsie API
- Usunięto przestarzałe eksperymentalne funkcje
FocusManager#moveFocusIn
iFocusManager#moveFocusOut
(I227d7, b/170154986, b/186567354, b/168510304) - Canvas obsługuje teraz parametr contentDescription dotyczący ułatwień dostępu. (Ib547c)
- Nazwa
useDefaultMaxWidth
wPopupProperties
została zmieniona nausePlatformDefaultWidth
. (I05710) - Dialogi mogą teraz wykorzystywać całą szerokość ekranu. (I83929, b/190810877)
- Dodano eksperymentalną obsługę reprezentacji kolorów HSV i HSL. (Id7cf8, b/180731008)
Zmiany w zachowaniu
- Narzędzia do tworzenia
@Preview
udostępniają terazLocalActivityResultRegistryOwner
, które umożliwia wyświetlanie podglądu komponentów, które korzystają z interfejsów API, takich jakrememberLauncherForActivityResult()
, i które zależą od istnienia tego właściciela. (Ib13d1, b/185693006) - Compose
@Preview
udostępnia terazLocalOnBackPressedDispatcherOwner
, który umożliwia wyświetlanie podglądu elementów składanych korzystających z interfejsów API, takich jakBackHandler
, które zależą od istnienia tego właściciela. (Ia1c05, b/185693006)
Poprawki błędów
- Urządzenie
InfiniteAnimationPolicy
zostało przeniesione do jednostki organizacyjnejandroidx.compose.ui:ui
(I5eb09, b/160602714) - Obiekt AnimatedImageVector został tymczasowo usunięty, aby zmienić strukturę modułu. (I41906, b/160602714)
Wersja 1.0.0-beta09
16 czerwca 2021 r.
androidx.compose.ui:ui-*:1.0.0-beta09
został zwolniony. Wersja 1.0.0-beta09 zawiera te commity.
Zmiany w interfejsie API
- Zmień typ wyliczeniowy Role i LiveRegionMode na klasy wbudowane z konstruktorem prywatnym (Id1890)
- Funkcja KeyboardCapitalization została przekształcona w klasę wstawianą. (Id5a1c)
- Zmień HapticFeedbackType na inline class. (I255ec)
- Modifier.pointerInteropFilter to @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis i TextDirection są teraz klasami wbudowanymi. (I212fe)
- TextOverflow został zmieniony na klasę wbudowaną. (I433af)
- FontStyle jest teraz klasą wbudowaną. (I9e48b)
Poprawki błędów
- Obecnie kluczowe stałe to @ExperimentalComposeUiApi. Kod korzystający z funkcji może deklarować prywatne stałe przed stabilizacja. (Ia5d48)
- Testy Compose można teraz uruchamiać w Robolectric. Dotychczas zidentyfikowano te ograniczenia:
- Nie ma natywnej bitmapy, więc
ImageBitmap()
powoduje wyjątek NullPointerException. - Nie ma rysowania, więc
captureToImage()
będzie bez końca oczekiwać na następny etap rysowania (czyli dojdzie do blokady). - Nie załadowano czcionki, więc tekst zostanie nieprawidłowo zmierzony. Wszystkie znaki mają stałą wysokość około 20 pikseli i szerokość 1 piksel.
ComposeTestRule.waitUntil {}
nie wykonuje wątku głównego podczas oczekiwania, co czyni go praktycznie takim samym jakComposeTestRule.mainClock.advanceTimeUntil {}
W przyszłości zostanie zidentyfikowanych więcej ograniczeń. (I284fa)
- Nie ma natywnej bitmapy, więc
Dodano reguły profilu
W tej wersji dodaliśmy reguły profilu do tych modułów tworzenia wiadomości (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Co to są reguły profilu?
Reguły profilu biblioteki są określone w pliku tekstowym
baseline-prof.txt
znajdującym się w katalogusrc/main
lub równoważnym. Plik określa regułę na wiersz, gdzie reguła w tym przypadku jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest superzbiorem czytelnego dla człowieka formatu profilu ART, który jest używany podczas korzystania zadb shell profman --dump-classes-and-methods ...
. Te reguły mogą mieć jedną z 2 form, aby kierować się na metody lub klasy.Reguła metody ma taki wzór:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Reguła klasy będzie miała ten wzór:
<CLASS_DESCRIPTOR>
Tutaj
<FLAGS>
to co najmniej jeden z znakówH
,S
lubP
, który wskazuje, czy ta metoda powinna być oznaczona jako „Aktywna”, „Uruchamianie” lub „Po uruchomieniu”.<CLASS_DESCRIPTOR>
to deskryptor klasy, do której należy docelowa metoda. Na przykład klasaandroidx.compose.runtime.SlotTable
miałaby opisLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
to sygnatura metody, która zawiera nazwę, typy parametrów i typ zwracany metody. Na przykład metodafun isPlaced(): Boolean
w klasieLayoutNode
ma sygnaturęisPlaced()Z
.Te wzorce mogą zawierać symbole wieloznaczne (
**
,*
i?
), aby jedno reguła obejmowała wiele metod lub klas.
Do czego służą reguły?
Metoda z flagą
H
wskazuje, że jest to metoda „gorąca” i należy ją skompilować z wyprzedzeniem.Metoda z flagą
S
wskazuje, że jest to metoda wywoływana podczas uruchamiania, i powinna zostać skompilowana wcześniej, aby uniknąć kosztów kompilacji i interpretacji metody podczas uruchamiania.Metoda z flagą
P
wskazuje, że jest wywoływana po uruchomieniu.Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i należy ją wstępnie przydzielić do stosu, aby uniknąć kosztów wczytywania klasy.
Jak to działa?
- Biblioteki mogą definiować te reguły, które zostaną zapakowane w artefakty AAR. Gdy skompilowana aplikacja zawiera te elementy, reguły są scalane, a scalane reguły są używane do tworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja zostanie zainstalowana na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji w celu poprawy jej wydajności, zwłaszcza podczas pierwszego uruchomienia. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.
Wersja 1.0.0-beta08
2 czerwca 2021 r.
androidx.compose.ui:ui-*:1.0.0-beta08
został zwolniony. Wersja 1.0.0-beta08 zawiera te commity.
Zmiany w interfejsie API
- Enum
NestedScrollSource
został zastąpiony przez wbudowaną klasę. (Ie321b, b/187055290) - Nazwa
FocusManager.clearFocus(forcedClear = true)
została zmieniona naFocusManager.clearFocus(force = true)
(Ia0c41). - Przekształciliśmy użycie wyliczeń w klasy wbudowane, aby uniknąć problemów z wyczerpującymi instrukcjami warunkowymi, gdy dodawane są nowe wartości wyliczenia. (I2b5eb)
- Usuń
@ExperimentalComposeUiApi
z kontaPopupProperties
. (I01fa6) - Typ enumeracji „
PointerType
” został zmieniony na klasę wbudowaną (If5058) - Właściwości ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je łączyć w postaci niemodyfikowanej, a nie w postaci konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które wykorzystują te zmiany (Ica6bf, b/184825850).
- Środowisko wykonawcze
Modifier.focusModifier()
zostało wycofane i zastąpione środowiskiemModifier.focusTarget()
(I6c860) - Funkcje
Modifier.onSizeChanged()
iModifier.onGloballyPositioned()
nie są już wstawiane w kodzie (I727f6, b/186109675). - Enum
KeyboardType
został zastąpiony przez wbudowaną klasę. (I73045, b/187055290) - Wymiana enumu
FocusState
na interfejsFocusState
(Iccc1a, b/187055290) - Enum ImeAction został zastąpiony przez wbudowaną klasę. (I18be5, b/187055290)
PlaceholderVerticalAlign
zostanie przekształcony w zajęcia wstawiane w tekście. (If6290)- Typ jednostki tekstowej jest teraz klasą wbudowaną. (I4cba9)
- Funkcje
AnnotatedString.withAnnotation
to teraz ExperimentalTextApi, a nie ExperimentalComposeApi. (I0cd0a)- Konstruktor TextUnit z parametrem TextUnitType używa teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
Poprawki błędów
- Usunęliśmy błąd wprowadzony w wersji beta07, który powodował, że elementy kolumny lub wiersza LazyColumn/Row były wyświetlane częściowo po przewinięciu (I8c9ac, b/188566058).
- Teraz funkcje
detectDragGesures
,detectVerticalGestures
idetectHorizontalGestures
będą automatycznie obsługiwać zmiany pozycji, więc nie trzeba wywoływać funkcji change.consumePositionChange w obsługach zwrotnych onDrag (I42fc4, b/185096350, b/187320697) - Naprawiono błędy związane z użyciem klasy LayoutModifiers, która zapewnia linie wyrównania. Usunęliśmy błąd, który powodował, że nie był wykonywany ponowny pomiar obiektu nadrzędnego, gdy zmieniały się linie wyrównania obiektów podrzędnych. (I4401f, b/174315652)
Modifier.onGloballyPositioned()
zostało zmienione, aby raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że kolejność modyfikatorów wpływa na to, jakie współrzędne zostaną zgłoszone. (Ieb67d, b/177926591)
Wersja 1.0.0-beta07
18 maja 2021 r.
androidx.compose.ui:ui-*:1.0.0-beta07
został zwolniony. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano interfejs
ViewRootForInspector
do inspektora (Ib70df). SubcomposeLayoutState
obsługuje teraz ustawienie liczby wielokrotnego użytku slotów. Układ będzie utrzymywał aktywne maksymalnie tyle slotów, ile podano w tym argumencie, zamiast je usuwać, aby móc ponownie użyć slotu następnym razem, gdy będzie potrzebny (Ieb981)- Enum KeyEventType jest zastępowany przez wbudowaną klasę. (Id670a, b/187055290)
- Enum
FocusDirection
został zastąpiony przez wbudowaną klasę. (Ib6d03, b/187055290, b/184086802) - Wprowadza możliwość podniesienia stanu SubcomposeLayout, co pozwala wstępnie skompilować zawartość w wymaganym slotId, co przyspieszy następny pomiar, ponieważ gdy spróbujemy skompilować podkompozycję z danym slotId, nie będzie już konieczne ponowne kompilowanie. (I42580, b/184940225)
- Dodano uchwyt do zaznaczania klipów (Iff80d, b/183408447).
- Usunięto nieużywane interfejsy API związane z obsługą narzędzia LayoutInspector. (I2ac78)
Poprawki błędów
- LazyColumn/Row będzie teraz utrzymywać aktywne (nieusunięte) maksymalnie 2 widoczne wcześniej elementy, nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie użyć aktywnych podkompozycji, gdy będziemy musieli utworzyć nowy element, co poprawia wydajność przewijania. (Ie5555)
- Ustawienia
TextGeomerticTransform
iTextDecoration
wAnnotatedString
zostaną zastosowane zgodnie z podanymi wartościami. (I61900, b/184760917)
Wersja 1.0.0-beta06
5 maja 2021 roku
androidx.compose.ui:ui-*:1.0.0-beta06
został zwolniony. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozwiąż konflikt z nawigacją przy użyciu gestów (I1145e)
@ComposeCompilerApi
nie jest już@RequiresOptIn
(Iab690)- 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 funkcję
SemanticsActions.ScrollToIndex
, która umożliwia przewijanie listy z indeksyzowanymi elementami do elementu o określonym indeksie, oraz funkcjęSemanticsProperties.IndexForKey
, która umożliwia uzyskanie indeksu elementu na liście z elementami kluczowymi. Oba działania są implementowane przez LazyList.- Dodano
SemanticsNodeInteraction.performScrollToIndex
, które przewija listę do podanego indeksu, orazSemanticsNodeInteraction.performScrollToKey
, które przewija listę do elementu z podanym kluczem. (I4fe63, b/178483889, b/161584524)
- Dodano
- Dodano ownerViewId do GraphicLayerInfo (I19f62)
- Dodano przeciążenia metody Font(), aby wczytywać czcionki z plików assets, File i FileDescriptor (I5d382).
- Dodano interfejs API ułatwień dostępu
error
, który umożliwia oznaczanie węzła zawierającego nieprawidłowy element wejściowy (I12997, b/180584804, b/182142737). - Dodano
Font()
przeciążenia do wczytywania czcionek z zasobach, File i FileDescriptor (I43007) - Obsługa zapisywania obiektu AnnotatedString w przypadku właściwości
TextFieldValue.Saver
. Dodano funkcje pomocniczeaddTtsAnnotation
i withAnnotation do funkcjiAnnotatedString.Builder
(I8cbdc, b/178446304) - Dodano funkcję konstruktora TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
Wersja 1.0.0-beta05
21 kwietnia 2021 r.
androidx.compose.ui:ui-*:1.0.0-beta05
został zwolniony. Wersja 1.0.0-beta05 zawiera te commity.
Zmiany w interfejsie API
- Dodano eksperymentalne funkcje
FocusManager.moveFocus(In)
iFocusManager.moveFocus(Out)
(Ic5534, b/183746743). - Dodano eksperymentalny interfejs API
performTextInputSelection
(I2dcbb, b/178510628). - Interfejs
InputEventCallback
został wycofany. Nie można było użyć tego interfejsu w żadnym publicznym interfejsie API, a w źródle kodu nie było go użyto. (I34a02, b/184003208) - Wycofana funkcja
TextLayoutResult/createTextLayoutResult
. Jest to nieużywana funkcja publiczna, która została dodana na potrzeby testowania. Funkcja nie wykonuje żadnych przydatnych działań w przypadku interfejsów API do tworzenia tekstu. Ta funkcja została wycofana i zostanie usunięta w przyszłości. (I80413)
Poprawki błędów
- Naprawiono działania przewijania w trybie dostępności dotyczące funkcji
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
iaccessibilityActionScrollDown
. Zamiast przewijania do końca elementu przewijalny będzie przesuwał się o jeden ekran w danym kierunku. (Ieccb0) - Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994)
Wersja 1.0.0-beta04
7 kwietnia 2021 r.
androidx.compose.ui:ui-*:1.0.0-beta04
został zwolniony. Wersja 1.0.0-beta04 zawiera te commity.
Zmiany w interfejsie API
- Zmień nazwy
hideSoftwareKeyboard
ishowSoftwareKeyboard
naSoftwareKeyboardController
nahide()
ishow()
.- Udostępnij pełny interfejs CompositionLocal dla klasy LocalSoftwareKeyboardController, aby umożliwić jej ustawienie (szczególnie przydatne w przypadku testów) (I579a6)
- Dodano interfejs API dostępności LiveRegion. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadomią użytkownika o zmianach (Idcf6f, b/172590946)
- Wprowadzono właściwość TextOverflow.Visible. (Ic8f89)
Poprawki błędów
- Rozwiązaliśmy problem, gdy elementy
LazyColumn
/LazyRow
znajdujące się na krawędziach były nieprawidłowo umieszczone po szybkim przełączeniu (Ie4d13, b/183877420) AndroidViewBinding
prawidłowo usuwa fragmenty utworzone za pomocąFragmentContainerView
, gdyAndroidViewBinding
zostanie usunięty z hierarchii tworzenia. (Ib0248, b/179915946)AndroidViewBinding
poprawnie zagnieżdżają fragmenty napompowane za pomocąFragmentContainerView
, gdyComposeView
znajduje się wFragment
. Rozwiązaliśmy w ten sposób problemy z zapisywaniem i przywracaniem stanu tych fragmentów. (I70eb0, b/179915946)- Compose ViewBinding zależy teraz od Fragment
1.3.2
i po zmianach w konfiguracji konsekwentnie wyświetla fragmenty napompowane za pomocąFragmentContainerView
. (I0743d, b/179915946)
Wersja 1.0.0-beta03
24 marca 2021 r.
androidx.compose.ui:ui-*:1.0.0-beta03
został zwolniony. Wersja 1.0.0-beta03 zawiera te komitowane zmiany.
Zmiany w interfejsie API
- Odroczona kontrola zależności ViewTree w ComposeView (I8dbbf, b/182466548)
- Do funkcji
swipeUp
/swipeDown
/swipeLeft
/swipeRight
wGestureScope
dodaliśmy opcjonalne parametrystartX
/endX
istartY
/endY
. (I49e2d, b/182063305)
Wersja 1.0.0-beta02
10 marca 2021 r.
androidx.compose.ui:ui-*:1.0.0-beta02
został zwolniony. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano nowe lokalne API
LocalSoftwareKeyboardController
do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I5951e, b/168778053) - Dodano nowe lokalne API
LocalSoftwareKeyboardController
do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I84472, b/168778053) - Usunięto te
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Oznaczono te
SemanticsMatchers
jako @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Dodaliśmy te
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Poprawki błędów
- Wprowadzanie ograniczeń dotyczących publicznego używania eksperymentalnych interfejsów API (I6aa29, b/174531520)
androidx.compose.ui:ui
nie zależy już od AppCompat ani Fragment. Jeśli w aplikacji używasz widoku ComposeView i fragmentu lub interfejsu AppCompat, upewnij się, że używasz interfejsu AppCompat w wersji 1.3 lub nowszej albo Fragment w wersji 1.3 lub nowszej. Te wersje są potrzebne do prawidłowego ustawienia cyklu życia i właścicieli zapisanego stanu wymaganych przez widok ComposeView. (I1d6fa, b/161814404)- Naprawiono błąd związany z użyciem elementu
rememberSaveable { mutableStateOf(0) }
w miejscu docelowym w komponencie nawigacji. (I1312b, b/180042685, b/180701630) - Dodano nowe lokalne API
LocalSoftwareKeyboardController
do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I658b6, b/168778053) - Usunięto rzadki błąd NoSuchElementException w funkcji
ComposeRootRegistry
w funkcjitearDownRegistry()
(Iddce1).
Wersja 1.0.0-beta01
24 lutego 2021 r.
androidx.compose.ui:ui-*:1.0.0-beta01
został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.
To pierwsza wersja Compose 1.0.0 w wersji beta.
Zmiany w interfejsie API
- Do
detectDragGestures
dodano wywołanie zwrotne onStart (I67269, b/179995594). - Modyfikatory służące do dopasowywania rozmiaru do wartości bezwzględnych nie są już eksperymentalne. (I15744)
- MeasureBlocks zostało przemianowane na MeasurePolicy i stało się przyjaznym interfejsem. Interfejsy API dotyczące układu zostały zaktualizowane i uproszczone, aby używały MeasurePolicy. (Icab48, b/167662468, b/156751158)
- Wartość
InteractionState
została zastąpiona wartością[Mutable]InteractionSource
- Interfejsy odpowiadają za emitowanie i zbieranie zdarzeń interakcji.
- Zamiast przekazywania wartości
interactionState = remember { InteractionState() }
do komponentów takich jakButton
iModifier.clickable()
, użyj wartościinteractionSource = remember { MutableInteractionSource() }
. - Zamiast:
Interaction.Pressed in interactionState
użyj funkcji rozszerzenia w źródle interakcji, np. InteractionSource.collectIsPressedAsState(). - W skomplikowanych przypadkach możesz używać parametru InteractionSource.interactions do obserwowania strumienia interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących źródła interakcji.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Dodaj interfejs AccessibilityMananger i LocalAccessibilityMananger w CompositionLocals (I53520)
- Usunięto przestarzałe metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent należy używać funkcji (I580ed, b/169874631, b/175142755).
- Typy aliasów zostały zastąpione przez podstawowe typy:
ColorStop
to terazPair<Float, Color>
SpanStyleRange
to teraz `AnnotatedString.RangeParagraphStyleRange
to terazAnnotatedString.Range<ParagraphStyle>
StringAnnotation
to terazAnnotatedString.Range<String>
- (I8dd1a)
- Utworzono nową klasę TextInputSession na potrzeby sesji wprowadzania danych z niskiego poziomu komponentów tekstowych, takich jak CoreTextField. (I8817f, b/177662148)
- Element Placeable udostępnia teraz wartość measuredSize, która określa rozmiar, do którego został zmierzony układ podrzędny. Ten rozmiar może nie spełniać ograniczeń dotyczących pomiarów. (Ib2729, b/172560206, b/172338608)
- Dodaj modyfikator selectionGroup, który umożliwia oznaczanie kolekcji kart lub przycisków opcji na potrzeby ułatwień dostępu (Ie5c29)
Pole
defaultFactory
w przypadkucompositionLocalOf
istaticCompositionLocalOf
jest teraz wymagane, a nie opcjonalne.Ta zmiana usuwa potencjalny błąd typu w przypadku typów, które nie mogą być puste, gdy nie podano fabryki domyślnej. Wcześniej w przypadku typu, który nie może być pusty, ta metoda zwracała odwołanie null.
W przypadku typów z opcją null warto podać
{ null }
jako domyślną fabrykę.Nie zalecamy używania zmiennych lokalnych z typami, które nie mogą być puste, chyba że można podać sensowne wartości domyślne. Jeśli nie ma żadnej sensownej wartości domyślnej, funkcja lambda
defaultFactory
powinna wyrzucić wyjątek. Jednak wywołanie wyjątku oznacza, że konsumenci lokalu będą mieli domyślną zależność od tego, że jest on dostarczany, co nie jest wymuszane przez system typów. (Ifbd2a)Usunięto przestarzałe metody z modułów interfejsu użytkownika (I646f6)
Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmienne width/height/size zostały przemianowane na requiredWidth/requiredHeight/requiredSize. Nazwa Modifier.preferredWidth/preferredHeight/preferredSize została zmieniona na width/height/size. (I5b414)
Modifier.tapGestureFilter
został(a) usunięty(a). Zamiast tego użyj polaModifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)usunięto częściowe zużycie z systemu wskaźnika. Zalecaną metodą koordynacji częściowego zużycia jest Modifier.nestedScroll. (Ie9c9b)
Orientacja została przeniesiona do pakietu podstawy. Moduł VelocityTracker został przeniesiony z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)
imageResource i vectorResource są teraz funkcjami rozszerzenia odpowiednio dla ImageBitmap i ImageVector. Usunięto
load{Image,Vector,Font}Resource
funkcji. (I89130)Klasa AnimationClockObservable i jej podklasy zostały usunięte. AnimatedFloat został usunięty. (Icde52, b/177457083)
Providers zostało zmienione na CompositionLocalProvider
- Konstruktor kompozycji nie akceptuje już parametru key i został wycofany.
- currentCompositeKeyHash została przekształcona z funkcji na najwyższym poziomie na funkcję składaną na najwyższym poziomie.
- Komponenty CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- Typ ComposableLambda został zastąpiony interfejsem, a typy nie są już parametrami.
- Zmienna ComposableLambdaN została zamieniona na interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
- Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime.
- metoda scalania w SnapshotMutationPolicy nie jest już eksperymentalna
- Usunięto funkcję @TestOnly clearRoots najwyższego poziomu. Nie jest już potrzebne.
- Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
- Funkcja Composer.collectKeySourceInformation została usunięta. Nie jest już potrzebne.
- Metody isJoinedKey, joinedKeyLeft i joinedKeyRight zostały usunięte. Nie są już potrzebne.
- Różne interfejsy API najwyższego poziomu zostały przeniesione i zreorganizowane w różnych plikach. Ze względu na semantykę klasy plików w Kotlinie spowoduje to utratę zgodności binarnej, ale nie źródłowej, więc nie powinno stanowić problemu dla większości użytkowników.
- (I99b7d, b/177245490)
ComponentActivity.setContent()
został usunięty z Compose:UI. Użyj tego zandroidx.activity:activity-compose:1.3.0-alpha01
. ElementyviewModel()
iLocalViewModelStoreOwner
zostały usunięte z interfejsu tworzenia wiadomości. Użyj tych zandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b).Funkcja Modifier.scrollable została zmieniona. Teraz zamiast klasy ScrollableController używa interfejsu Scrollable (I4f5a5, b/174485541, b/175294473)
Usunięto obsługę zdarzeń niestandardowych w komponencie PointerInputModifier (I02707, b/175294473).
SnapshotStateObserver nie jest już eksperymentalny (Id2e6a)
Usunięto niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932)
Filtry longPressGestureFilter i doubleClickGestureFilter zostały usunięte. Użyj funkcji Modifier.pointerInput z funkcjami pomocniczymi, np. detectTapGestures (I2fedf, b/175294473).
Usunięto interfejs String.format, a w różnych metodach toString przekształcono użycie tej metody, aby nie korzystała ona wewnętrznie z interfejsu String.format. (Id1290)
Usunięto stwierdzenia dotyczące dp (I798d2)
Usunięto androidx.compose.runtime:runtime-dispatch (I55feb)
Działania związane z tekstem sprawdzają teraz automatycznie ostrość (I13777, b/179648629)
Usunięto
runBlockingWithManualClock
(I15cdc, b/179664814)Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana za pomocą typów Int (I81298)
Element FlingConfig został przemianowany na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych wartości zanikania. (I02b86, b/175294473)
Dodano funkcję pomocniczą, która ułatwia ustawianie tego samego działania dla wszystkich wywołań zwrotnych ImeAction (I63447, b/179226323).
Z wszystkich pól tekstowych usunięto wywołanie metody SoftwareKeyboardController, które wkrótce zostanie zastąpione nowym interfejsem API. (Iae869, b/168778053)
Tagi FontSpan i FontWeigthStyleSpan nie są już używane i zostały usunięte. (Ie5b56, b/177423444)
Wprowadziliśmy następujące zmiany w Material API:
- Dodano parametr contentPadding do paska górnego i dolnego, aby umożliwić dostosowanie domyślnego wypełnienia.
- Zmieniliśmy kolejność parametrów w BackdropScaffold, aby były zgodne z wytycznymi dotyczącymi interfejsu API, zgodnie z którymi wymagane parametry są umieszczane przed opcjonalnymi.
- Parametr
icon
w BottomNavigationItem został przeniesiony za parametryselected
ionClick
. - Zmieniono nazwę parametru
alwaysShowLabels
w BottomNavigationItem naalwaysShowLabel
. - Parametry
bodyContent
w kilku komponentach zostały przemianowane nacontent
. - Zmieniono kolejność parametrów w plikach
ButtonDefaults.buttonColors()
. Pamiętaj, że typ parametrów się nie zmienił, więc nie spowoduje to błędu w kodzie. Upewnij się, że używasz parametrów nazwanych lub zaktualizujesz ręcznie kolejność parametrów. W przeciwnym razie kod nie będzie działać tak samo jak wcześniej. - Do elementu
darkColors()
dodano parametrsecondaryVariant
. Zwykle jest to ten sam kolor cosecondary
w ciemnym motywie, ale dodanie go zapewnia spójność i umożliwia dalsze dostosowywanie. - Usunęliśmy z publicznego interfejsu API funkcje ElevationDefaults i animateElevation(), ponieważ nie były one powszechnie używane ani przydatne.
- Zmieniono nazwę kolumny
onValueChangeEnd
w tabeliSlider
naonValueChangeFinished
i nadano jej atrybuty null. - Zmieniono nazwę parametru
text
w sekcjiSnackbar
nacontent
, aby zachować spójność. - Do parametru
DropdownMenuItem
dodano parametrcontentPadding
, aby umożliwić dostosowywanie domyślnego wypełnienia, oraz ustawiono parametrcontent
jako rozszerzenie parametruRowScope
. - Nazwa
ModalDrawerLayout
została zmieniona naModalDrawer
. - Nazwa
BottomDrawerLayout
została zmieniona naBottomDrawer
. - (I1cc66)
Poprawki błędów
- Dodano interfejs API do obsługi zasobów AnimatedVectorDrawable w Compose. Użyj metody animatedVectorResource, aby wczytać plik XML
<animated-vector>
jako AnimatedImageVector i animować go za pomocą metody painterFor (I8ea91). - Dodano nowe lokalne API kompozycyjne LocalSoftwareKeyboardController, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I658b6, b/168778053)
Wersja 1.0.0-alpha12
10 lutego 2021 r.
androidx.compose.ui:ui-*:1.0.0-alpha12
został zwolniony. Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Z interfejsu UiApplier usunięto obsługę grup widoków. Usunięto przestarzałe komponenty emitView. (Ifb214)
- Funkcja Modifier.pointerInput wymaga teraz kluczy zapamiętania, aby wskazywać, kiedy coroutine wykrywania danych wejściowych wskaźnika powinna zostać ponownie uruchomiona w przypadku nowych zależności. (I849cd)
- Zmiana nazwy CompositionReference na CompositionContext (I53fcb)
- Nazwa Bounds została zmieniona na DpRect (I4b32a).
- Aktualizacja testów: funkcja hasText() będzie sprawdzać, czy w polu tekstowym znajduje się tekst wejściowy, etykietowy, podpowiedzi lub tekst zastępczy (Iab803)
- Kompozycja viewModel() i interfejs LocalViewModelStoreOwner zostały przeniesione do pakietu androidx.lifecycle.viewmodel.compose. Aby z niego korzystać, musisz teraz dodać osobną zależność androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
- Dozwolić na działanie typu nullable w AccessibilityAction, zmienić etykietę działania w AccessibilityAction i CustomAccessibilityAction z CharSequence na String (I0dc82)
- Aby lepiej dopasować konwencje nazewnictwa do bibliotek ImageBitmap i ImageVector, zmieniliśmy nazwę klasy ImagePainter na BitmapPainter, a klasy VectorPainter – na VectorPainter. (Iba381, b/174565889)
- Lepsze testowanie interfejsów API pod kątem podciągu pod kątem podkładu jako argumentu (Icbe78)
- Dodano funkcję
Modifier.focusOrder()
, która przyjmuje obiekt FocusRequester bez określania niestandardowego porządku fokusa w lambda. Jest to przydatne, gdy musimy podać tylko odniesienie, a nie niestandardowy porządek fokusowania dla kompozytowego (I4f52a, b/179180978). - ComponentActivity.setContent zostało przeniesione do androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
- Z kilku klas, w których były rzadko używane, usunięto metody destrukturyzacji i copy(). (I26702, b/178659281)
- Przeniesienie wyskakującego okienka na platformę. Nazwa AndroidPopupProperties została zmieniona na PopupProperties, a wartość
isFocusable
została przeniesiona do parametrufocusable
w elementachPopupProperties
(Ieeea5). - Przeniesienie okna dialogowego na platformy. Nazwa AndroidDialogProperties została zmieniona na DialogProperties. (I4ef69, b/179138130)
- Układ Node jest wewnętrzny (I8a7b1, b/175103944)
- Funkcja Constraints.enforce została zastąpiona przez Constraints.constrain. (I8b8ea)
- Metoda loadFontResource została wycofana. Zamiast nich użyj fontResource. Metody imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj painterResource. (I6b809)
- Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambdas zwracające wartości typu Float zamiast bezpośrednich wartości typu Float. (If4a35, b/178657186)
- Dodano semantyczne pole tekstowe EditableText, aby oznaczać edytowalny tekst wejściowy w polu tekstowym na potrzeby ułatwień dostępu, oraz odpowiednie metody testów, aby sprawdzać semantykę (I8e07a)
- Uczyniliśmy wewnętrznymi OwnerLayer/OwnerScope/OwnerSnapshotObserver (I4ffaf, b/175103944).
- Funkcja toIntPx() została przemianowana na roundToPx(). (I9b7e4, b/173502290)
- Nazwa interfejsu API IntBounds została zmieniona na IntRect, a sam interfejs API został ulepszony. (I1f6ff)
- Interfejs Snapshot API został zaktualizowany, aby był bardziej zgodny z wytycznymi dotyczącymi interfejsu API, a także ukrywać wewnętrzne klasy implementacji z publicznego interfejsu API. (Id9e32)
- Dodano semantyczne działania rozwijania i zwijania. Dodano expand i halfExpand w ModalBottomSheetState (Ib5064)
- Metoda Modifier.dragGestureFilter została wycofana. Zamiast tego użyj pola
Modifier.pointerInput { detectDragGestures (...)}
. Możesz też użyć Modifier.draggable do przeciągania po jednej osi (I0ba93, b/175294473). - Zmieniliśmy nazwę sekcji Ambients, aby pasowała do nazwy Ambient -> CompositionLocal. Elementy tła miały kiedyś nazwę „AmbientFoo”, a teraz mają nazwę „LocalFoo”. (I2d55d)
- Wycofany komponent BaseTextField został usunięty. Zamiast tego użyj pola tekstowego podstawowego. (I71368)
- Zaznaczenie zostało przeniesione do modelu podstawowego. (I7892b)
- Podobnie jak w przypadku usunięcia kompozytowego komponentu
state { 0 }
i promocji komponenturemember { mutableStateOf(0) }
, usuniemy kompozytowy komponentsavedInstanceState { 0 }
. Zamiast tego użyj funkcjirememberSaveable { mutableStateOf(0) }
, która automatycznie zapisuje i przywraca stan, jeśli typ użyty w MutableState może być przechowywany w pakiecie. Jeśli wcześniej przekazywałeś niestandardowy obiekt zapisywania, teraz musisz użyć nowej przeciążonej funkcji rememberSaveable, która ma parametrstateSaver
. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Dodano semantykę hasła dla funkcji ułatwień dostępu (I231ce)
- Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczyć nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05).
- Narzędzia
emptyContent()
i(@Composable () -> Unit).orEmpty()
zostały wycofane, ponieważ nie mają już żadnego pozytywnego wpływu na wydajność ani wartości (I0484d) snapshotFlow
iwithMutableSnapshot
nie są już eksperymentalne (I6a45f).- Rekompilatory można teraz zamknąć. Zamknięte rekompilatory będą kontynuować rekompilację, dopóki nie zakończą się wszystkie podprocesy rekompilacji. Funkcja Recomposer.shutDown została przemianowana na cancel, aby odróżnić ją od funkcji close. (Ib6d76)
- Nazwa UiSavedStateRegistry została zmieniona na SaveableStateRegistry, a Nazwa AmbientUiSavedStateRegistry została zmieniona na AmbientSaveableStateRegistry. Obie zostały przeniesione do pakietu androidx.compose.runtime.saveable. (I30224)
- Artefakt androidx:compose:runtime:runtime-saved-instance-state został przemianowany na androidx:compose:runtime:runtime-saveable (I6dcac).
- Usunięto wiele starych interfejsów API w pakiecie ui. (I2f2dc)
- Element compose:runtime-dispatch został wycofany. MonotonicFrameClock znajdziesz teraz w komponencie compose:runtime, a AndroidUiDispatcher – w komponencie compose:ui. (Ib5c36)
- Klasy Outline.* nie są już klasami danych (I4879e, b/178001427)
- Usunięto element
view.captureToImage()
bez zastąpienia. (I7fcd2) - Wprowadziliśmy interfejs API ColorMatrix, który służy do modyfikowania wartości RGB treści źródłowych. Przekształciliśmy interfejs API ColorFilter w interfejs i dopasowaliśmy go do implementacji PathEffect. (Ica1e8)
- Dodaj parametr layoutDirection do metody createOutline obiektu Shape. Umożliwia to tworzenie kształtów uwzględniających kierunek układu. (I57c20, b/152756983)
- Metoda onImeActionPerformed została wycofana. Zamiast niej używaj metody KeyboardActions (If0bbd, b/179071523).
- Wprowadziliśmy element
InfiniteAnimationPolicy
kontekstu coroutine, który będzie stosowany w nieskończonych animacjach. Domyślnie nie jest instalowana żadna zasada, z wyjątkiem testów wykonywanych za pomocąComposeTestRule
. (I50ec4, b/151940543) - Zmienna canDrag została usunięta z modyfikatora scrollable. (Id66e7, b/175294473)
- Zmieniliśmy nazwę atrybutu LayoutCoordinates.parentCoordinates na LayoutCoordinates.parentLayoutCoordinates, aby umożliwić użycie nowego atrybutu parentCoordinates. Właściwość parentCoordinates zawiera teraz współrzędne układu modyfikatora nadrzędnego. Dzięki temu można będzie lepiej wykorzystać metody onSizeChanged() i onGloballyPositioned() (Idfbfd, b/177926591).
- Filtry tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)
- Metoda unregisterProvider rejestru SaveableStateRegistry została usunięta. Zamiast tego registerProvider() zwraca teraz obiekt SaveableStateRegistry.Entry, którego można użyć do wyrejestrowania (Ic4274, b/178583739)
- Metoda rememberSavedInstanceState() została przemianowana na rememberSaveable() i przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)
- Usunięto CoreText i CoreTextField z publicznego interfejsu API.
- Usunięto przestarzałe przeciążenie SelectionContainer
- (I99c19)
- Testy, w których kompozycja jest używana w hierarchiach dodawanych lub usuwanych bezpośrednio w WindowManagerze, są teraz stabilniejsze. (Ie81ed, b/175765614)
- Usunięto funkcję Recomposer.current(). [Abstract]ComposeView jest teraz domyślnie ustawiona na leniwie tworzone obiekty Recomposer ograniczone do okna, które są zarządzane przez obiekt ViewTreeLifecycleOwner dla okna. Rekompozycja i ticki animacji oparte na metodzie FrameNano są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (I38e11)
- Recomposer.runningRecomposers udostępnia teraz globalny stan StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwowanie bieżącego stanu kompilacji w trakcie procesu. Używaj tego interfejsu API zamiast Recomposer.current(), który został wycofany. (If8ebe)
- Saver, listSaver(), mapSaver(), autoSaver zostały przeniesione z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6)
- EditCommands akceptuje AnnotatedString. Jest to jednak zmiana tylko w interfejsie API, a edytowanie tekstu w wielu stylach nie zostało jeszcze zaimplementowane. (I4c3ea)
- Czas działania i czas trwania zostały usunięte. (Ib9bf4, b/177420019)
- CompositionData.asTree() i powiązane interfejsy API zostały przeniesione do osobnego modułu ui-tooling-data i oznaczone jako eksperymentalne (Ic95b8).
- Parametry RounderCornerShape, CutCornerShape i CornerBasedShape zostały przemianowane z left/right (lewo/prawo) na start/end (początek/koniec), aby umożliwić automatyczne lustrzane odwzorowanie kształtu w kierunku RTL. Parametry AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone w przypadkach, gdy automatyczne lustrzane odbicie nie jest pożądane. (I61040, b/152756983)
Interfejs API, do którego kieruje się działanie wtyczki kompilatora Compose, został przebudowany, aby używać interfejsu zamiast konkretnej klasy. Interfejs nie używa już też parametru typu.
Jest to zmiana wewnętrzna, która nie powinna mieć wpływu na zgodność kodu źródłowego, ale powoduje zmianę binarną. (I3b922, b/169406779)
Usuń niezamierzenie publiczną funkcję StringBuilder.deleteAt (Id6ed9)
Poprawki błędów
- Widoki kompozytowe umieszczone w hierarchiach widoków, które są elementami podrzędnymi innej kompozycji, zawierają teraz elementy podrzędne swoich elementów nadrzędnych (I92883)
- Zaktualizowano interfejs API imageFromResource w komponencie, aby umożliwić ponowne użycie pamięci podręcznej zasobów do rysowania podczas wczytywania obiektów ImageBitmap. (If3627, b/178751994)
Wersja 1.0.0-alpha11
28 stycznia 2021 roku
androidx.compose.ui:ui-*:1.0.0-alpha11
został zwolniony. Wersja 1.0.0-alpha11 zawiera te commity.
Zmiany w interfejsie API
- Element WithConstraints został przerobiony na BoxWithConstraints i przeniesiony do pakietu foundation.layout. (I9420b, b/173387208)
- Key.DPadUp zostało wycofane. Zamiast tego użyj Key.DirectionUp. (Iab335, b/177954892)
- Od teraz interfejs właściciela jest wewnętrzny. (If8e35)
- Dodano interfejs FocusManager.moveFocus(), aby przesuwać fokus za pomocą kodu. (I045cb, b/177681839)
- Zmiana PopupPositionProvider, aby używać współrzędnych względem okna, a nie współrzędnych globalnych. Zmiana nazwy parentGlobalBounds na anchorBounds i zmiany windowGlobalBounds na windowSize: IntSize (I2994a)
- Czas trwania i czas działania zostaną zastąpione wartością Długie milisekundy, a ten krok usuwa zależność od wejścia wskaźnika w tych klasach. (Ia33b2, b/175142755, b/177420019)
- Klasa AmbientSavedStateRegistryOwner została dodana podobnie jak istniejące klasy AmbientLifecycleOwner i AmbientViewModelStoreOwner (I9a3e8, b/176756365).
- Zaktualizowano interfejs API grafiki wektorowej, aby obsługiwał analizowanie zastosowanego barwienia w przypadku grafu wektorowego. (Id9d53, b/177210509)
- Dodano typ narzędzia do zdarzenia PointerInputChange, aby odróżnić urządzenia (Iac787, b/175142755).
- Zmiana nazwy klasy AmbientWindowManager na AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- wycofane metody dotyczące współrzędnych globalnych i wprowadziliśmy nowe metody dotyczące współrzędnych opartych na oknie; (Iee284)
- Dodano Modifier.toolingGraphicsLayer, który dodaje modyfikator warstwy graficznej, gdy włączona jest inspekcja. (I315df)
- Funkcja FocusRequester.createRefs jest teraz oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)
- Zmiana nazwy SemanticsPropertyReceiver.hidden na invisibleToUser i oznaczenie @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. Nazwa stateDescriptionRange została zmieniona na progressBarRangeInfo. AccessibilityScrollState zostało zmienione na ScrollAxisRange. horizontalAccessibilityScrollState zostało zmienione na horizontalScrollAxisRange. verticalAccessibilityScrollState zostało zmienione na verticalScrollAxisRange. (Id3148)
- Usunięto typ danych PointerInputData i zmodyfikowano typ danych PointerInputChange, aby zawierał on wszystkie pola typu danych PointerInputData. Zdarzenie PointerInputEvent i zdarzenie PointerInputEventData są teraz wewnętrzne, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
- Zaktualizowano implementację zakresu GraphicsLayerScope, aby obsługiwała gęstość pikseli (DP), umożliwiając konwersję na piksele natywne. (Ied528, b/176819695)
- Zaktualizowaliśmy interfejs API macierzy, aby stosował kolejność głównych wierszy i zapewniał stałe indeksów, co ułatwia konwersje między różnymi reprezentacjami macierzy, aby dopasować logikę konwersji między SkMatrix a Matrix4 w ramach wewnętrznych. (I432e6)
- Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).
- Przeniesienie funkcji String.fintPrecedingBreak i String.fingFollowingBreak do interfejsu wewnętrznego TextApi. (I657c4)
- Z publicznego interfejsu API usunięto metodę androidx.compose.ui.util.isSurrogatePair. (Ia9494)
- Nazwa TransformedText.transformedText została zmieniona na TransformedText.text.
- TransformedText nie jest już klasą danych (Ie672a)
- Usunięto
data class
z tych zajęć:- InlineTextContent
- LocaleList (I605c7)
- Te zajęcia nie są już klasami danych:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- Zmiana metody VisualTransformation na interfejs funkcjonalny (I3bba4)
- Dodano typ parametru funkcji (I5e1bd).
- Dodawanie przekształconych granic do węzła InspectorNode (Ice42f)
Poprawki błędów
- Interfejsy onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect (If760e).
Zmiany funkcji fabrycznych dotyczące czcionki, rodziny czcionek lub kroju pisma
- Dodano funkcje fabryczne, które zaczynają się od wielkiej litery
- wycofane wcześniejsze funkcje fabryczne z małymi literami na początku,
- Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
- Ukryj konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
- Zmieniono nazwę Font.asFontFamily na Font.toFontFamily (I42aa7).
Wprowadziliśmy funkcję
ComposeContentTestRule
, która rozszerza funkcjęComposeTestRule
i definiuje funkcjęsetContent
, która została usunięta z funkcjiComposeTestRule
. Dodano metodę fabrycznącreateEmptyComposeRule()
, która zwracaComposeTestRule
i nie uruchamia Activity. Użyj tego, gdy chcesz uruchomić aktywność podczas testu, np. za pomocąActivityScenario.launch
(I9d782, b/174472899)animateAsState jest teraz animateFooAsState, gdzie Foo to typ zmiennej, której dotyczy animacja, np. Float, Dp, Offset itp. (Ie7e25)
Do obrazu i ikony dodano parametr opisu treści. Służy do przekazywania opisu usług ułatwień dostępu (I2ac4c).
Usuń displaySize, ponieważ nie należy go używać. Zwykle lepiej jest użyć rozmiaru z onRoot() lub co najmniej rozmiaru okna. (I62db4)
Metoda OnSizeChanged zwracała rozmiar zawartości układu. Teraz raportuje rozmiar w swojej pozycji w łańcuchu modyfikatorów. (I36b78, b/177562900)
Interfejs emit() i wszystkie jego przeciążenia zostały wycofane i przemianowane na ComposeNode. Interfejsy API są identyczne, ale mają inną nazwę, aby zachować konwencję nazewnictwa w Compose (I4137b).
TextFieldValue akceptuje AnnotatedString. Ta zmiana dotyczy tylko interfejsu API, a edytowanie tekstu w wielu stylach nie jest jeszcze możliwe.
- Usunięto
initial
z parametrów konstruktora EditingBuffer. (I326d5)
- Usunięto
Funkcje invalidate i compositionReference() zostały wycofane na rzecz odpowiednio funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)
Klasa AnnotatedString została zmieniona tak, aby rozszerzała klasę kotlin.CharSequence. Dlatego długość i podciąg są teraz funkcjami instancji, a funkcje rozszerzenia zostały usunięte. (Iaf429)
Observer pamięci zastępuje CompositionLifecycleObserver, a CompositionLifecycleObserver jest teraz wycofany.
RememberObserver
zastępujeCompositionLifecycleObserver
z modyfikowaną semantyką i przemianowanymi metodami. Przejście na nowy interfejs API można przeprowadzić automatycznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to zalecana praktyka. Jeśli jednak odwołanie zostało zapamiętane więcej niż raz w kompozycji, funkcjaonRemembered
jest wywoływana w przypadku każdego odwołania, podczas gdy funkcjaonEnter
jest wywoływana tylko raz.onEnter
został wywołany wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jakWithConstraints
iScaffold
, co sprawia, że gwarancja pojedynczego wywołaniaonEnter
jest niewiarygodna i została usunięta zRememberObserver
.RememberObserver
dodajeonAbandoned
, które jest wywoływane, jeśli instancjaRememberObserver
zostanie zwrócona z połączenia zwrotnego przekazanego doremember
, ale nie została zapamiętana w stanie kompozycji. W związku z tym nigdy nie zostanie wywołaneonRemembered
. Może się tak zdarzyć, jeśli wyjątek spowoduje przerwanie tworzenia kompozycji przed jego zakończeniem lub jeśli kompozycja zostanie odrzucona, ponieważ stan, dla którego była tworzona, nie jest już aktualny lub nie jest już potrzebny. Jeśli instancjaRememberObserver
po rekomendacji z jednym odwołaniem powyżej śledzi zewnętrzny zasób, zarównoonForgotten
, jak ionAbandoned
wskazują, że zasób nie jest już potrzebny. Jeśli obiekt śledzi pracę rozpoczętą lub zasoby przydzielone w funkcjionRemembered
, można zignorować funkcjęonAbandoned
, ponieważ nie zostanie ona wywołana, gdy wywołana zostanie funkcjaonRemembered
. (I02c36)Wycofane operacje arytmetyczne na co najmniej 2 elementach TextUnit. wycofane funkcje TextUnit.Sp i TextUnit.Em na rzecz funkcji rozszerzeń, takich jak Int.sp i Int.em; (I48369)
Zasoby w bibliotekach bez wyraźnie zadeklarowanych zasobów publicznych (np. za pomocą pliku public.xml) są teraz domyślnie prywatne. (Ia1dcc, b/170882230)
Komórka/wiersz z możliwością przewijania zostały wycofane. Jeśli masz dużo treści, które się przewijają, korzystanie z ScrollableColumn jest mniej wydajne niż z LazyColumn, ponieważ za pomocą LazyColumn możemy tylko komponować, mierzyć i rysować widoczne elementy. Aby uniemożliwić użytkownikom korzystanie z nieefektywnej metody, zdecydowaliśmy się wycofać klasy ScrollableColumn i ScrollableRow oraz zachęcić do korzystania z klas LazyColumn i LazyRow. Użytkownicy mogą zrezygnować z zachowania typu lazy i używać modyfikatorów bezpośrednio w ten sposób: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Nowa metoda fabryczna
items(count: Int)
dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. Funkcjeitems(items: List)
iitemsIndexed(items: List)
są teraz funkcjami rozszerzenia, więc musisz je ręcznie importować. Nowe przeciążenia rozszerzenia dla tablic:items(items: Array)
iitemsIndexed(Array)
(I803fc, b/175562574)Zamiast ImeAction.NoAction użyj ImeAction.None
- Zamiast ImeAction.Unspecified (Ie1bcc) użyj ImeAction.Default.
Korzystanie z TestCoroutineDispatcher w testach (I532b6)
Zmieniono nazwę TextInputService.onStateUpdated na updateState (Id4853).
Wycofanie przejścia opartego na TransitionDefinition (I0ac57)
Typ TextUnitType.Inherit został usunięty. Zamiast tego użyj typu TextUnitType.Unspecified. (I9ff64)
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
androidx.compose.ui:ui-*:1.0.0-alpha10
został zwolniony. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.
Zmiany powodujące niezgodność
Restrukturyzacja wewnętrznego interfejsu API kompilatora umożliwia grupowanie zmian węzłów wygenerowanych w ramach etapu „Zastosuj zmiany” kompozycji po zakończeniu działania wszystkich funkcji
@Composable
.Jest to zmiana zachowania, która może wpłynąć na kod aplikacji, ponieważ węzły nie są już dostępne z interfejsów API eksperymentalnych i wewnętrznych do czasu zastosowania zmian. Zwykle można to obejść, otaczając kod z takimi zależnościami w komponencie
SideEffect
, aby odłożyć wykonanie kodu do momentu utworzenia i inicjalizacji węzłów. (I018da)
Zmiany w interfejsie API
- Dodano funkcję Modifier.focusOrder(), która może służyć do określania niestandardowego porządku przechodzenia przez fokus (I90cf5, b/175899543, b/170155556, b/170155429).
- Usunięto przestarzałe użycie focusObserver, zamiast niego należy używać onFocusChanged lub onFocusEvent (I3ecb9, b/175156387)
- Zmiany w interfejsie EditOperations API
- Zmiana nazwy operacji edycji na EditCommand
- Dodano sufiks polecenia dla konkretnych implementacji operacji edycji
- Polecenie EditCommand nie jest już klasą danych
- Funkcja EditOperation.process została przemianowana na applyTo.
- Zmieniono nazwę interfejsu InputEventListener na InputEventCallback.
- (I0a366)
- Usunięto nieużywane funkcje PxSquared, PxCubed i PxInverse. Zmiana funkcji Size.center() na właściwość. (I973f7)
- Moduł ui-test będzie teraz mógł konfigurować tworzenie rekompilacji dla testowanych interfejsów (Ibebd8)
- Zmodyfikowano funkcję Velocity, aby zawierała elementy składowe i operacje matematyczne. (Ib0447)
- Zmieniono nazwę
@ExperimentalTesting
na@ExperimentalTestApi
, aby zachować spójność z podobnymi adnotacjami interfejsów eksperymentalnych (Ia4502, b/171464963). - Zmiana nazwy funkcji Color.useOrElse() na Color.takeOrElse() (Ifdcf5)
- Usunięto nieużywane klasy DpInverse, DpSquared i DpCubed. (I4d62b)
- Nazwa Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
- Dodaj funkcję wywołania zwrotnego, aby powiadomić właściciela o zmianie granic węzła layoutu. (I72fd1)
- Dodano funkcje isSpecified, isUnspecified i useOrElse do klas inline z nieokreśloną stałą. (I93f7b, b/174310811)
Rozszerzenie interfejsów API [Abstract]ComposeView, aby umożliwić recykling widoków opartych na Compose, a także usuwanie ich kompozycji, aby można je było ponownie utworzyć w przyszłości. Dodać interfejsy API do instalowania i odnajdywania rekompilujących komponentów ograniczonych do okna oraz odniesienia do kompozycji do tworzenia podrzędnych kompozycji.
Dodaj ViewCompositionStrategy do konfigurowania strategii usuwania kompozycji [Abstract]ComposeViews; domyślne zachowanie to usunięcie przy odłączaniu okna. (I860ab)
Usunięto publiczny interfejs API Any.identityHashCode() (I025d7)
Usunięto interfejs API toStringAsFixed, ponieważ można go zastąpić bezpośrednim użyciem metody String.format. (Iaba6b)
Dodaj opcję przełączania do podstawy Strings.kt (I4a5b7, b/172366489)
Przeniesiono nativeClass do modułu ui i uczynił go wewnętrznym. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast tego używać „is MyClass”. (I4f734)
Metody Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj interfejsów Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
Wprowadziliśmy SelectionRegistrar.notifySelectableChange, aby powiadamiać Selectable o aktualizacjach SelectionManager. (I6ff30, b/173215242)
Wprowadziliśmy właściwość Outline.bounds, która umożliwia uzyskanie prostokąta ograniczającego dla różnych implementacji outline. (I16e74, b/175093504)
Wycofano klasę TestUiDispatcher. Zamiast tego użyj Dispatchers.Main (Ic171f, b/175385255).
ImeOptions i KeyboardOptions nie są już klasą danych (I3c898, b/168684531)
Zmiany w interfejsie VisualTransformation API
- Zmieniono nazwę klasy OffsetMap na OffsetMapping.
- Zmieniono nazwę klasy OffsetMapping.identityOffsetMap na OffsetMapping.Identity.
- Element PasswordTransformation nie jest już elementem klasy danych.
- Przeniesienie mapowania offsetów do oddzielnego pliku
- (I0bdf3)
Zmieniono nazwę pozycji na DpOffset i usunięto funkcję getDistance() (Ib2dfd).
Zmieniono fun Dp.isFinite() na val Dp.isFinite (I50e00).
Poprawki błędów
- Recomposer udostępnia teraz przepływ danych w bieżącym stanie, co umożliwia monitorowanie jego aktywności i aktywności powiązanych efektów. (Ifb2b9)
- Do natywnego zdarzenia keyEvent można teraz uzyskać dostęp przez keyEvent.nativeKeyEvent (I87c57, b/173086397)
- Wartość
animate()
została zastąpiona wartościąanimateAsState()
, która zwraca wartośćState<T>
zamiastT
. Dzięki temu można uzyskać lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczywana jest wartość State. (Ib179e) - Dodaj interfejs API roli semantycznej i dodaj parametr Role do klikalnego, możliwego do wybrania i przełączalnego SemanticsModifier. Zmieniono Modifier.progressSemantics, aby można było go używać również w Slider. (I216cd)
- Nowy interfejs API oparty na korobonach
Animatable
, który zapewnia wzajemną wykluczalność animacji.- Nowy obiekt DecayAnimationSpec do obsługi animacji wygaszania wielowymiarowej
- (I820f2, b/168014930)
Wersja 1.0.0-alpha09
16 grudnia 2020 roku
androidx.compose.ui:ui-*:1.0.0-alpha09
został zwolniony. Wersja 1.0.0-alpha09 zawiera te commity.
Zmiany w interfejsie API
- Wycofana metoda KeyEvent.Alt została teraz usunięta. Zamiast tego użyj KeyEvent.isAltPressed. (Idd695)
- Interfejsy Modifier.keyInputFilter i Modifier.previewKeyInputFilter zostały wycofane. Zamiast nich używaj interfejsów Modifier.onKeyEvent i Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
- Metoda Modifier.focusObserver została wycofana. Zamiast tego użyj metody Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).
- W przypadku zawieszania interfejsów API związanych z wskaźnikiem zmieniono nazwy: HandlePointerInputScope na AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)
- Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga wyrażenia zgody (I0a1ec)
- Dodanie deklaracji destrukturyzacji w celu utworzenia instancji FocuSRequester (I35d84, b/174817008)
- accessibilityLabel zmieniono na contentDescription. accessibilityValue zmieniono na stateDescription. (I250f2)
- Z interfejsu API zawieszania wskaźnika usunięto zdarzenia niestandardowe (Ia54d5, b/175142755)
- Wprowadziliśmy kilka nowych funkcji w SelectionRegistrar i zmieniliśmy nazwę funkcji onPositionChange na notifyPositionChange. (Ifbaf7)
- Więcej elementów LayoutNode oznaczonych jako wewnętrzne (I443c6)
- Dodano informacje o układzie, aby były używane przez narzędzia i podczas testowania (I9b190).
- AndroidOwner made internal (Ibcad0, b/170296980)
- Usunięto adnotację ExperimentalPointerInput (Ia7a24)
- Dodano system przewijania zagnieżdżonego. Więcej informacji znajdziesz w funkcji Modifier.nestedScroll (I36e15, b/162408885).
- Funkcja subcomposeInto(LayoutNode) została oznaczona jako wewnętrzna (Id724a)
Interfejs
Applier
został zmieniony, aby ułatwić tworzenie drzew od dołu do góry zamiast odwrotnie.Nazwa metody
insert()
została zmieniona nainsertTopDown()
.Dodano nową metodę
insertBottomUp()
.Aplikator wstawia węzły do drzewa, które modyfikuje, za pomocą funkcji
insertTopDown()
lubinsertBottomUp()
, w zależności od tego, która z nich działa lepiej.Niektóre drzewa, takie jak
LayoutNode
iView
, są znacznie wydajniejsze w budowaniu od dołu do góry niż odwrotnie. Przed wprowadzeniem tej zmiany do wdrażania metody od dołu wymagany był stos wstawek, który trzeba było kopiować do każdego miejsca, w którym była potrzebna konstrukcja od dołu ze względu na wydajność. Ta zmiana zastępujeApplier
przezinsertBottomUp()
, aby tworzyć drzewo od dołu do góry, orazinsertTopDown()
, aby tworzyć drzewo od góry do dołu. (Icbdc2)Do właściwości AndroidDialogProperties dodano właściwości dismissOnBackPress i dismissOnClickOutside. Te parametry umożliwiają skonfigurowanie, kiedy zostanie wywołana funkcja lambda onDismissRequest okna dialogowego. (If5e17)
Dodano interfejs API painterResource do obsługi ładowania obiektów Painter z nieprzezroczystym ładowaniem z formatów zasobów rastrowych (np. PNG) lub obiektów VectorDrawable. Użytkownicy nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponencie obrazu lub modyfikatorze paintera. (I2c703, b/173818471)
Dodano funkcję Modifier.clearAndSetSemantics, która służy do wyczyszczania semantyki potomków i ustawiania nowej semantyki. (I277ca)
Przeniesienie ContentDrawScope do modułu ui-graphics, aby był on razem z DrawScope. (Iee043, b/173832789)
Wprowadziliśmy interfejs API PathEffect Graphics, aby udostępnić różne wzory obrysowanych kształtów. Zastosowanie przestarzałego efektu NativePathEffect na rzecz oczekiwanej lub rzeczywistej implementacji PathEffect. (I5e976, b/171072166)
Dodano do Compose interfejsy IdlingResource jako obsługiwany przez Compose wariant zasobów nieaktywnych w Espresso. Można je rejestrować i wyrejestrować za pomocą reguły testowej (I433f3).
Usunięto globalną rejestrację i wyrejestrowanie ComposeIdlingResource oraz globalną rejestrację i wyrejestrowanie zegara w ComposeIdlingResource (I32660)
Poprawki błędów
- Lambda w modyfikatorach przesunięcia zwraca teraz IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
Usunięto klasy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia.
Dodaliśmy interfejsy CompositionData i CompositionGroup jako zamiennik interfejsu ui-tooling API do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ zawierają informacje w postaci nieprzetworzonej, które interfejs ui-tooling API interpretuje (I31a9c).
Funkcja ShaderBrush została przerobiona, aby tworzyć instancję shadera w trybie łagodnym, gdy dostępne są informacje o wymiarach środowiska rysunku. Jest to przydatne do definiowania gradientów, które zajmują pełne granice rysowania kompozytowego w czasie tworzenia kompozycji, bez konieczności implementowania niestandardowych implementacji modyfikatora rysowania.
wycofane interfejsy API konstruktora funkcji gradienta na rzecz metod fabrycznych obiektu Gradient; (I511fc, b/173066799)
Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego użyj LazyColumn i LazyRow (I5b48c)
Wycofana metoda BuildCompat.isAtLeastR (Idb37e)
Dodano funkcję fabryki buildAnnotatedString do tworzenia obiektów AnnotatedString. Wycofana funkcja annotatedString.builder. (Idfe0b)
Usunięto rozszerzone metody typu Float i Double służące do konwertowania wartości na radiany. Przeniesiono ją do funkcji prywatnej w ramach implementacji PathParser, która była jedynym miejscem, w którym była używana (I25f52).
Wersja 1.0.0-alpha08
2 grudnia 2020 r.
androidx.compose.ui:ui-*:1.0.0-alpha08
został zwolniony. Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj działanie semantyczne Odrzuć (I2b706)
- Przeniesienie interfejsów API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, aby uwzględnić aliasy typów i metody pomocnicze, które ułatwiają migrację z przestarzałych interfejsów API do obecnych. (Id6044, b/173834241)
- Zmieniono nazwę Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowano też powiązane klasy do GraphicsLayer zgodnie z opiniami na temat interfejsu API. (I0bd29, b/173834241)
- Dodano nowe metody placeable.placeWithLayer() i placeable.placeRelativeWithLayer(), które umożliwiają umieszczanie elementów podrzędnych za pomocą niestandardowych układów i modyfikatorów układu z dodatkiem warstwy graficznej do rysowania. Dzięki temu możemy najpierw zoptymalizować przerysowywanie, aby nie trzeba było ponownie rysować zawartości podrzędnego elementu. Po drugie, możemy zastosować przekształcenia rysunku dla podrzędnego elementu (Ibd8f6, b/170296989, b/171493718, b/173030831).
- Element
<T>
został usunięty z deklaracji SubcomposeLayout. Możesz go używać bez określania typu. (Ib60c8) - Dodano interfejsy API Modifier.scale/rotate do ułatwienia korzystania z drawLayer.
- Zmieniono nazwę
Modifier.drawOpacity
naModifier.alpha
- Nazwa
Modifier.drawShadow
została zmieniona naModifier.shadow
(I264ca, b/173208140)
- Zmieniono nazwę
- Ustawienie pól uptime i position w danych PointerInputData tak, aby nie mogły być puste. (Id468a)
- Motyw MaterialTheme teraz ustawia prawidłowe kolory uchwytów i tła zaznaczenia. Aplikacje niebędące w stylu Material mogą ręcznie używać kolorów AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
- Dodano WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywne, oraz WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
- Zaktualizowano interfejs API TransformOrigin, aby zawierał składnię destrukturyzacji zwracającą
pivotFractionX
ipivotFractionY
jakocomponent1
icomponent2
(If43c4, b/173586560) - Dodano sprawdzanie lint pod kątem nazw i pozycji parametrów funkcji kompozytowych lambda, aby sprawdzić zgodność z wytycznymi Compose.
Zgodnie z instrukcjami i sprawdzaniem błędów niektóre interfejsy API, które używają nazwy
children
jako nazwy funkcji lambda na końcu, zostały przeniesione docontent
. (Iec48e) - Dodano interfejs API do sprawdzania, czy podczas wysyłania zdarzenia klawiszowego zostały naciśnięte klawisze modyfikujące Alt, Ctrl, Meta lub Shift. (I50ed9)
- Dodano nową przeciążoną metodę
Modifier.drawLayer()
. Ta funkcja przyjmuje blok lambda w ramach nowego zakresu GraphicsLayer, w którym definiujesz parametry warstwy w sposób umożliwiający pominięcie ponownego składania i układania podczas zmiany stanu. Modyfikator DrawLayerModifier jest teraz wewnętrzny w ramach przygotowań do przeniesienia jego logiki do metody placeable.placeWithLayer() w klasie LayoutModifier (I15e9f, b/173030831). - wycofane ambienty o nazwach zawierających sufiks
Ambient
i zastąpione nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi ambientów i interfejsu Compose API; (I33440) - Element
androidx.compose.ui.text.Typeface
został przeniesiony doandroidx.compose.ui.text.font.Typeface
(Ic2b81) - Argument semantyczny mergeAllDescendants został przemianowany na mergeDescendants. (Ib6250)
- Nowy interfejs API do wykrywania gestów przeciągania, który zawiesza wskaźnik, w tym blokowanie orientacji. (Icef25)
- Zmiana nazwy klasy VectorAsset na ImageVector. Przeniesienie klasy VectorAsset i zmiana jej nazwy na Builder, aby była ona klasą wewnętrzną klasy ImageVector zgodnie z wytycznymi dotyczącymi interfejsu API. Dodano alias typu VectorAssetBuilder, aby umożliwić linkowanie do ImageVector.Builder w celu zapewnienia zgodności. (Icfdc8)
- Zmieniono nazwę klasy ImageAsset i powiązanych z nią metod na ImageBitmap. (Ia2d99)
- Dodaj parametr zIndex do metody place() w klasie PlacementScope, aby funkcja Modifier.zIndex() działała jako modyfikator układu, a dowolny niestandardowy układ mógł ustawiać wartości zIndex dla swoich elementów bezpośrednio w bloku umieszczania (I711f7, b/171493718).
- Przeniesienie właściwości semantycznych z warstwy podstawowej do warstwy interfejsu użytkownika (I6f05c)
- Wycofaj place(Offset) i placeRelative(Offset). Zamiast tego użyj przeciążeń z przesunięciem int (I4c5e7)
- Wycofane interfejsy API zostały usunięte: Modifier.onPositioned został usunięty, użyj Modifier.onGloballyPositioned. Funkcja Modifier.onDraw została usunięta. Użyj funkcji Modifier.onDrawBehind. Modifier.plus został usunięty, użyj Modifier.then. Element Color.Unset został usunięty. Użyj elementu Color.Unspecified. Klasa PxBounds została usunięta. Zamiast niej używaj klasy Rect. (Ie9d02, b/172562222)
- Interfejs wyrównania został zaktualizowany i wprowadzony. (I46a07, b/172311734)
- Dodano funkcję wykrywania gestów, która umożliwia rozpoznawanie dotyku, dwukrotnego dotyku, długiego naciśnięcia i wskazania naciśnięcia przy użyciu nowego wejścia za pomocą wskaźnika zawieszenia. Dodaliśmy też kilka narzędzi, które ułatwiają deweloperom pisanie własnych detektorów gestów. (I00807)
- Nazwa
id
została zmieniona nalayoutId
w przypadkuLayoutIdParentData
. NazwaMeasurable.id
została zmieniona naMeasurable.layoutId
. (Iadbcb, b/172449643) - Nowy moduł wykrywania gestów wielodotykowych, w tym pomocników do wykrywania obracania, powiększania i przesuwania. (Ic459d)
- Wprowadziliśmy interfejsy SweepGradientShader i SweepGradientBrush. (Ia22c1)
- Kontrola czasu w testach (TestAnimationClock i jego użycia) jest teraz funkcją eksperymentalną (I6ef86, b/171378521).
Dodaj interfejsy API do przewijania opartego na korobonach:
Dodaje metody LazyListState.snapToItem i LazyListState.smoothScrollBy, a także interfejsy API niskiego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają zawieszony interfejs do sterowania przewijaniem, który czeka, aż przewijanie się zakończy, zanim zwróci wynik. (Ie5642)
W ustawieniu podstawowym dodano potrzebę związaną z elementem Modifier.focusable. Dzięki temu możesz dodać do komponentu zachowanie polegające na skupianiu uwagi z zachowaniem prawidłowej semantyki i dostępności. (I41eb9, b/152525426, b/162865824)
Dostarczaj domyślne implementacje metod i właściwości w AnimationClockTestRule, które można delegować do
clock
(I7ea3d, b/173399709)AndroidComposeTestRule może teraz akceptować niestandardowe inicjatory aktywności (Ib8288, b/153623653, b/154135019).
Interfejs TextLayoutResult.getLineVisibleEnd został wycofany. W zamian TextLayoutResult.getLineEnd ma teraz nowy parametr visibleEnd. (I73282)
Zaktualizowany interfejs TextFieldValue API
- ustawienie TextFieldValue.composition tylko do odczytu
- usunięto wyjątek wywołany z powodu nieprawidłowego zakresu wyboru (I4a675, b/172239032)
Obsługa TtsAnnotation dla mechanizmu zamiany tekstu na mowę. (I54cc6)
Nowe interfejsy API do uruchamiania animacji w korobodach (Ied662)
Poprawki błędów
- Zmieniliśmy nazwę parametru alignment w sekcji Box na contentAlignment. (I2c957)
- Modyfikatory offsetPx zostały przemianowane na offset. Teraz zamiast stanu przyjmują one parametry lambda. (Ic3021, b/173594846)
- Dodano parametr resetInput do metody TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947).
- Dodano sprawdzanie lint dla parametrów modyfikatora w funkcjach kompozytowych. Ten test sprawdza, czy nazwa, typ zwracanej wartości, wartość domyślna i kolejność parametrów są zgodne ze wskazówkami dotyczącymi tworzenia aplikacji. (If493b)
- Tymczasowo dodano opcję, która pozwala sterować TestAnimationClock za pomocą MonotonicFrameClock (I1403b, b/173402197).
- Dodano owijacz czcionek Androida. Możesz wczytać czcionkę Androida za pomocą funkcji
typeface
, np.typeface(Typeface.DEFAULT)
. Zmieniono też nazwętypefaceFromFontFamily()
natypeface()
(I52ab7). - Dodano sprawdzanie lint, aby sprawdzić, czy funkcje fabryki modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, aby można je było płynnie łączyć. (I07981)
- Usuwanie starego modułu testu UI i jego zastępników (I3a7cb)
- Recomposer nie akceptuje już EmbeddingContext; wymagane zależności harmonogramu są pobierane z effectCoroutineContext. Interfejs FrameManager został wycofany. Integracje z platformami powinny inicjować własne globalne przetwarzanie zrzutów. (I02369)
- Przekazywanie informacji o stylu do węzła ułatwień dostępu. (If5e8d)
- Aby zachować spójność z innymi jednostkami, nazwa TextUnit.Inherit została zmieniona na TextUnit.Unspecified. (Ifce19)
Wersja interfejsu Compose 1.0.0-alpha07
11 listopada 2020 roku
androidx.compose.ui:ui-*:1.0.0-alpha07
został zwolniony. Wersja 1.0.0-alpha07 zawiera te commity.
Zmiany w interfejsie API
- Wprowadziliśmy klasę inline ScaleFactor, aby reprezentować czynniki skalowania dla osi poziomej i pionowej niezależnie od siebie w celu obsługi niejednolitego skalowania.
- Dodano metodę computeScaleFactor do ContentScale.
- Dodano ContentScale.FillBounds, aby wykonać niejednolite skalowanie w celu rozciągnięcia granic src, tak aby wypełniały one całkowicie obszar docelowy.
- Dodano metody operatora do obliczania parametrów ScaleFactor za pomocą parametrów Size.
- (Ic96a6, b/172291582)
- Dodano fabryki BiasAlignment i BiasAbsoluteAlignment do tworzenia wyrównania. (Iac836, b/169406772)
- Zezwalanie deweloperowi na wymuszenie wyłączenia fokusa. (I90372)
- Naprawiono błąd, który powodował, że nie była wyświetlana wysokość w przypadku widoków w edytorze. (If7782)
- Tworzony w ramach ContentDrawScope interfejs API onDrawBehind odpowiada konwencji nazewnictwa Modifier.drawBehind. (I4fc3a, b/171955269)
- Dodawanie obsługi odległości kamery w celu uzupełnienia transformacji 3D (obrotX/obrotY) w interfejsach API warstw. (I40213, b/171492100)
- Dodano SelectionContainer bez wywołania zwrotnego (Ibfadb)
- Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Można teraz używać elementu SubcomposeLayout bez dodawania @OptIn (I708ad)
- FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
- Usunięto przezroczystość z modyfikatora drawShadow(), ponieważ wprowadzała ona zamieszanie. (I82c62, b/171624638)
- MeasureResult został przeniesiony z MeasureScope. (Ibf96d, b/171184002)
- Kilka symboli związanych z rozkładem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
- Usunięto przestarzałą metodę FocusState2 (I686cb, b/168686446)
- ZIndexModifier jest teraz wewnętrzny (I1808b, b/171493718)
- Zmieniono typ zwracany przez metodę lerp w parametrze Size, aby zwracała niezerową wartość Size, co pozwala uniknąć niepotrzebnego zaokrąglenia. (Ib0044)
- Dodano TestMonotonicFrameClock do testowania kodu, który korzysta z MonotonicFrameClock w Compose do oczekujących zdarzeń dotyczących ramki kompozytowania za pomocą runBlockingTest w kotlinx-coroutines-test (I4402f).
- Usunięto GestureScope.localToGlobal (I15299, b/171462785).
- Dodano wyszukiwarkę
onAllNodesWithSubstring
(I81dd7, b/171462889) - Moduł androidx.ui.test został wycofany. Przejdź na androidx.compose.ui.test i androidx.compose.ui.test.junit4 (I452e8).
Poprawki błędów
- captureToBitmap przeniesiono do captureToImage. (I86385)
- Komponent foundation.Text został wycofany i zastąpiony komponentem material.Text. Podstawowy interfejs API tekstu, który nie używa wartości z motywu, znajdziesz w bibliotece androidx.compose.foundation.BasicText. (If64cb)
- Zaktualizuj pola tekstowe, aby akceptowały KeyboardOptions (Ida7f3)
- Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
- Przeniesienie KeyboardType i ImeAction do KeyboardOptions (I910ce)
- Funkcja provideDefault została dodana jako alternatywa dla funkcji provideAmbients i może służyć do określania wartości ambient, które będą ustawiane tylko wtedy, gdy nie ma jeszcze wartości ambient. (Id6635, b/171024925)
- Komponent BaseTextField został wycofany. Zamiast tego użyj pola tekstowego podstawowego. (I896eb)
- Wprowadzenie modułu ui-test-junit4 (Ib91f8)
- Nazwa
relativePaddingFrom
została zmieniona napaddingFrom
. Dodano modyfikatorpaddingFromBaseline
, który ułatwia określanie odległości od granic układu do linii bazowej tekstu. (I0440a, b/170633813) - Zadanie uruchamiane zostało przemianowane na efekt uruchamiania w celu zachowania spójności z interfejsami SideEffect i DisposableEffect. Aby zachęcić do stosowania sprawdzonych metod, nie zezwalamy na używanie LaunchedEffect bez parametrów podmiotu. (Ifd3d4)
- Wprowadziliśmy zasoby, które można łączyć i które są ponownie składane po zaktualizowaniu konfiguracji. (I6387c, b/167352819)
- Recomposer wymaga teraz kontekstu coroutine w czasie tworzenia (Ic4610)
- Suma wartości
zIndex
, gdy zastosowano wiele wartościModifier.zIndex()
. Wcześniej pierwsza była zwycięska. (Ic514c, b/170623936) - Zmiany w wewnętrznej implementacji SlotTable, które nie powinny mieć wpływu na publiczny interfejs API. (If9828)
- Dodano opcję autokorekty IME w klawiaturze (I57b8d)
- androidx.ui.test przeniesione do androidx.compose.ui.test (I9ffdb)
- Usunięto KeyboardOptions.toImeOptions z publicznego interfejsu API. (Ic2e45)
Darowizna zewnętrzna
- Wyłączenie publikacji wewnętrznego artefaktu androidx.compose.ui:ui-text-android (Ib93fa)
Wersja 1.0.0-alpha06
28 października 2020 r.
androidx.compose.ui:ui-*:1.0.0-alpha06
został zwolniony. Wersja 1.0.0-alpha06 zawiera te commity.
Zmiany w interfejsie API
- Recomposer jest teraz elementem CompositionReference i prawidłowym elementem nadrzędnym kompozycji. Wyraźny Recomposer jest teraz wymagany w mniejszej liczbie miejsc. (I4036f)
- Wycofaj VectorPainter na rzecz rememberVectorPainter, aby lepiej wskazać, że interfejs API do komponowania wewnętrznie korzysta z funkcji „remember”, aby przechowywać dane w ramach kompozycji. (Ifda43)
- Zaktualizowano interfejs Modifier.drawWithCache API, aby udostępnić ContentDrawScope jako zakres odbiorczy zamiast DrawScope, co umożliwia implementacjom możliwość zmiany kolejności poleceń rysowania. Jest to przydatne w przypadku stosowania mieszania lub zabarwiania, gdy piksele treści muszą zostać najpierw wyrenderowane, aby można było prawidłowo zastosować odpowiedni algorytm trybu mieszania. (Ie7ec8)
- Przenoszenie SimpleContainer do pliku PopupTestUtils.kt (I78c57)
- Klasa danych ConsumedData nie jest już klasą danych. Szczegóły (I1737f) znajdziesz na stronie https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219
- Popraw pozycję uchwytu RTL. (I6e1e0)
- Zmieniono zakresy DrawScope i ContentDrawScope na interfejsy zamiast abstrakcyjnych klas.
- Utworzono implementację CanvasDrawScope w DrawScope
- Przekształcono implementacje DrawScope, aby zamiast nich używać CanvasScope.
- Utworzono DrawContext do owijania zależności dla DrawScope.
- Usunięto wycofane metody w DrawScope (I56f5e).
- Zmiana powodująca przerwanie działania: usunięto wartość zwracaną z funkcji
PointerInputFilter.onPointerEvent(...)
, ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o konsumpcji. Zamiast zwracać dane zPointerInputFilter.onPointerEvent(...)
, możesz teraz zmienić dane o konsumpcji przekazywanych zdarzeń PointerEvents. (I6acd0) - MeasureScope i IntrinsicMeasureScope zostały przekształcone w interfejsy. (I1a087, b/170461665)
- Funkcja scalania dla AlignmentLine została ukryta. (I9da1a, b/170612900, b/170611568)
- Dodanie możliwości określania informacji o inspektorze w składanym modyfikatorze (Idee08, b/163494569)
- Dodano opcję Zaznacz wszystko w menu wyboru (Ief02b)
- Zaktualizowano DrawTransform.rotate, aby przyjmował domyślny parametr pivot o wartości center, zgodnie z dokumentacją.
- Zaktualizowano DrawScope.rotateRad, aby używać przesunięcia punktu obrotu, co odpowiada innym metodom przekształcenia.
- Wycofana metoda DrawScope.rotateRad, która używała zmiennych typu float do współrzędnych x i y osi obrotu.
- (Iffcbb, b/170434992)
Poprawki błędów
- Sprawdzanie lint interfejsu API pod kątem braku metody gettera pasującego do Buildera jest włączone w androidx (I4bbea, b/138602561).
- Dodaj test. (I6b8ae)
- Włącz przejścia w komponencie ComposeTestRule. Usuń z niego opcję włączania migającego kursora. (If0de3)
- Dodano opcję IME KeyboardCapitalization (I8ac38)
- Dodano opcję klawiatury jednowierszowej do CoreTextField (I72e6d).
- Przenoszenie SimpleContainer do pliku PopupTestUtils.kt (I65c3e)
- Zmieniliśmy nazwę interfejsu API Radius na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w komponowaniu. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie narożników są ograniczane do zera. (I130c7, b/168762961)
- Ulepszona współpraca z Androidem dzięki ciągłemu wysyłaniu zdarzeń MotionEvents do podrzędnych widoków Androida, które zwracają wartość false dla onTouchEvent we wszystkich przypadkach oprócz
ACTION_DOWN
(I94c5a, b/170320973) - Funkcja Box została przekształcona w funkcję wbudowaną. (Ibce0c, b/155056091)
Darowizna zewnętrzna
- Obsługa różnych wersji językowych w przypadku
AnnotatedString.capitalize
iAnnotatedString.decapitalize
(I4aa7f)
Wersja 1.0.0-alpha05
14 października 2020 r.
androidx.compose.ui:ui-*:1.0.0-alpha05
został zwolniony. Wersja 1.0.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Dodaj DSL do określania informacji o inspektorze (Ic9a22)
- Przesuń opcję „Przytrzymaj” do sekcji „Tekst”. (Iff2bc)
- Eksperymentalny modyfikator Modifier.pointerInput zawieszający modyfikator wejścia (Ia77d2)
- Dodano działania związane z ułatwieniami dostępu związane z kopiowaniem/wklejaniem/wycinaniem (I6db4f)
- Usunięto publiczny konstruktor klasy AndroidOwner (Iacaef).
- Okna popup i dialogi dziedziczą teraz flagę FLAG_SECURE od okna nadrzędnego. Dodano też opcję konfiguracji tego parametru w sposób jawny (I64966, b/143778148, b/143778149).
Dane o konsumpcji można teraz zmieniać. Ponadto wywołania funkcji rozszerzenia, które obsługują konsumpcję, nie zwracają już nowego obiektu PointerInputChange, lecz zamiast tego modyfikują podany obiekt PointerInputChange.
Jest to pierwszy z 2 etapów procesu, który umożliwia zmianę danych zdarzenia PointerEvent, tak aby inne dane wskaźnika nie mogły być edytowane przez kod użytkownika. Drugim krokiem będzie usunięcie typu zwrotu
List<PointerInputChange>
zPointerInputFilter.onPointerEvent(...)
. (Id067e)Wyłącz zaznaczenie w Tekście i demonstrację. (Ie7e97)
Zrobiono z onGloballyPositioned funkcję wbudowaną (I15830)
Zmiana nazwy metody OnPositionedModifier na OnGloballyPositionedModifier oraz metody onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
Do właściwości Owner dodano właściwość hasPendingMeasureOrLayout, która informuje, czy właściciel ma jakieś oczekujące zadania związane z rozmieszczeniem. (I3d9f8, b/169038599)
Dodano interfejs API do programowego wyczyszczania fokusa (Ie1dc2, b/161487952).
Użytkownik
PointerInputFilter.onPointerInput(...)
został usunięty. Należy użyć atrybutuPointerInputFilter.onPointerEvent(...)
. (I6f04a)Zmiany dotyczące rozmiaru
- Usunięto Size.getFlipped
- Usunięto Size.rem
- Usunięto Size.truncDiv (Ief44d, b/169790720).
W ramach standaryzacji wartości sygnalizacyjnych klas wbudowanych zmień nazwę Color.Unset na Color.Unspecified, aby zachować spójność z innymi klasami wbudowanymi (I97611, b/169797763).
Wprowadzono TextOverflow.None. Gdy wartość overflow jest równa None, Text nie będzie już obsługiwać przepełnienia i będzie przekazywać rzeczywisty rozmiar do LayoutNode. (I175c9, b/158830170)
Parametr zakresu w funkcji AnnotatedString.Builder.addStringAnnotation został przemianowany na tag w celu zachowania spójności interfejsu API. (I7c8cb)
Poprawki błędów
- Wydajność przewijania kolumny/wiersza typu Lazy jest ulepszona dzięki mniejszemu obciążeniu podkompozycji przy każdym przewijaniu. Do klasy Composition dodano nową metodę hasInvalidations(). Metoda hasPendingChanges() z kompozycji została przemianowana na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371).
- Zaktualizowano parametry Size.Unspecified, aby były to wartości Float.NaN zamiast Float.POSITIVE_INFINITY. Zaktualizowano implementacje usługi Painter, aby sprawdzały rozmiar Size.Unspecified oraz nieskończone rozmiary. (I95a7e)
- Kolejność wywołań place() w niestandardowych układach określa teraz kolejność rysowania elementów podrzędnych (Ibc9f6)
- Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907)
- Dodano szablony dla klas Androida, które są dostępne na starszych platformach, aby uniknąć używania odbicia lustrzanego, o ile to możliwe. (Ia1790)
- Naprawiono błąd: jeśli aplikacja była tłumaczona przez klawiaturę ekranową, współrzędne wskaźnika wejściowego były nieprawidłowe. (Ic4cec, b/163077821)
Wersja 1.0.0-alpha04
1 października 2020 roku
androidx.compose.ui:ui-*:1.0.0-alpha04
został zwolniony. Wersja 1.0.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Dodano OwnerScope, aby umożliwić zbieranie zakresów obserwacji układu i rysowania, gdy nie są już ważne. (Ic4cf8)
- Dodano metody OnRemeasuredModifier i onSizeChanged(), aby odbierać wywołania zwrotne po ponownym zmierzeniu układu treści i odpowiednio po zmianie jego rozmiaru. (I657cf, b/154108792)
- Dodaj działanie semantyczne długiego kliknięcia (I6281b, b/156468846)
- Usługa FocusManager jest teraz prywatna. (I7872f)
Zaktualizowano implementację, aby utworzyć dedykowaną implementację DrawCacheModifier zamiast dodawać opcjonalne właściwości do DrawModifier.
Zaktualizowano dokumentację dotyczącą różnych metod (Ibd166)
Aby uniknąć tworzenia obiektów, ustaw zakres tekstu w tekście. (Id034b)
Wartości PlacementScope#parentWidth i PlacementScope#parentLayoutDirection nie można już odczytać z bloku miejsca docelowego w niestandardowym układzie. (Icc1ae, b/168295623)
dodaj stan AccessibilityScrollState do właściwości semantycznych. (Ifeda9)
Wprowadziliśmy metodę Modifier.drawWithCache, aby umożliwić tworzenie obiektu rysowania, który warunkowo odtwarza zależności zależne od informacji o rozmiarze lub stanie (I376dc).
Element ParagraphConstraints został usunięty. Szerokość jest teraz przekazywana bezpośrednio do elementu Paragraph. (Ica712)
Poprawki błędów
- Zaktualizowano wiele interfejsów API do obsługi grafiki.
- Zaktualizowane interfejsy API do skalowania i obrotu, aby używały pojedynczego parametru Offset zamiast oddzielnych parametrów typu float dla współrzędnych x/y w DrawScope i DrawTransform
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowano dokumentację Radius, aby zawierała informacje o elipsydalnych obiektach o kształcie eliptycznym.
- Dodano dokumentację, aby wskazać, że publicznego konstruktora klasy Inline Radius nie należy wywoływać bezpośrednio, ale zamiast tego instancje obiektów Radius należy tworzyć za pomocą konstruktorów funkcji.
- Usunięto interfejsy API RoundRect do zapytań topRight, bottomRight, bottomCenter itp.
- Wycofanie funkcji Rect.shift na rzecz funkcji Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect.
- Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium.
- Zmieniono nazwę RoundRect.longestSide na RoundRect.maxDimension.
- Zmieniono nazwę RoundRect.shortestSide na RoundRect.minDimension.
- Zmiana funkcji RoundRect.center na właściwość
- Zaktualizowano konstruktor RoundRect, aby używał właściwości Radius zamiast poszczególnych parametrów wartości promienia x/y.
- Usunięto interfejsy API dotyczące rozmiaru, które zakładały, że jest to prostokąt z początkiem w punkcie 0,0
- Dodano do Radius interfejs API do niszczenia
- Przeniesienie różnych funkcji rozszerzenia RoundRect do właściwości
- (I8f5c7, b/168762961)
- Element foundation.Box został wycofany. Zamiast tego użyj elementu foundation.layout.Box. (Ie5950, b/167680279)
- Grupa została przemianowana na Box. Dotychczasowe pole Box zostanie wycofane na rzecz nowego pola Box w komponencie compose.foundation.layout. Nowa ramka układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Jest to inne zachowanie niż w przypadku poprzedniej ramki, która działała podobnie jak kolumna. (I94893, b/167680279)
- Parametry dekoracji pudełka zostały wycofane. Jeśli chcesz użyć dekoracji lub wypełnienia w pudełku, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Zaktualizowano wiele interfejsów API do obsługi grafiki.
- Zaktualizowano interfejsy API DrawScope o metody przekształceń ograniczonych zakresem, aby wskazać, że przekształcenie jest stosowane tylko w ramach wywołania zwrotnego i usuwane po jego wywołaniu.
- Zaktualizowano dokumentację clipPath, aby odwoływała się do ścieżki zamiast zaokrąglonego prostokąta
- Naprawiono odstępy w dokumentacji parametru clipPath
- Zmieniono nazwę metody DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr size
- Zmieniono nazwy parametrów dx/dy w metodie inset na horizontal i vertical.
- Dodano przeciążenie w przypadku wstawienia, które zapewnia tę samą wartość wstawienia dla wszystkich 4 ograniczeń
- Usunięto dokumentację dotyczącą metody wstawienia, która wskazywała, że wstawienie zostanie zastosowane do wszystkich 4 stron.
- Zaktualizowano dokumentację klasy Rect
- Zaktualizowano komentarze dotyczące parametrów Rect, aby pasowały do kdoc style
- Usunięto Rect.join i Rect.expandToInclude
- Utworzono przeciążenie metody Rect.translate(offset) i wycofano przestarzałą metodę Rect.shift.
- (If086a, b/167737376)
- Dodała adnotacje do rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled i textInputServiceFactory z dodatkiem @VisibleForTesting, aby uczynić je wewnętrznym interfejsem API i ukryć ich kdoc (I554eb, b/168308412).
- Usuń SelectionContainer z poziomu Top, aby wyłączyć domyślny wybór i uniknąć nieoczekiwanego działania. Można użyć kontenera wyboru, aby opakować zawartość, która ma być wybierana. (I8dfe0, b/158459594)
Wersja 1.0.0-alpha03
16 września 2020 roku
androidx.compose.ui:ui-*:1.0.0-alpha03
został zwolniony. Wersja 1.0.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Usuń działania semantyczne przewijania do przodu/do tyłu. Dodano kroki w AccessibilityRangeInfo. (Ia47b0)
- Usunięto
onInvalidate()
zOwner
–OwnedLayer
obsługuje unieważnienie. (Ica72b, b/162061312) Usunięto metody operatora w interfejsie Size API, które używają parametrów przesunięcia. Wynik tych operacji jest niejasny, a ich typ jest nieoczekiwany. Czy np. funkcja size - offset powinna zwracać przesunięcie czy rozmiar z różnicą?
Usunięto też przestarzałe metody klasy Size. (Iec902, b/166514214)
Poprawki błędów
- Naprawiono problem z nieprawidłowym rysowaniem elementów kolumny LazyColumn, który w niektórych warunkach powodował też awarie. (Ibcf17, b/163066980, b/165921895)
- Wycofano interfejs DpConstraints i interfejsy API, które go używały. (I90cdb, b/167389835)
- Urządzenia
createAndroidComposeRule
iAndroidInputDispatcher
zostały przeniesione zandroidx.ui.test.android
doandroidx.ui.test
(Idef08, b/164060572) - W interfejsach API dotyczących układu nazwy metod związanych z grawitacją zostały zmienione na „wyrównaj” lub „wyrównywanie”. (I2421a, b/164077038)
- Dodano metodę onNode i inne metody globalne w komponencie ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
Wersja 1.0.0-alpha02
2 września 2020 r.
androidx.compose.ui:ui-*:1.0.0-alpha02
został zwolniony. Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- usunąć wywołanie zwrotne, aby powiadomić właściciela o zmianie granic węzła układu. (If654e, b/166106882)
- Dodaliśmy obsługę parametrów filltype na ścieżkach grafiki wektorowej, aby umożliwić wycinanie kształtów zgodnie z regułami wypełnienia ścieżki evenOdd lub NonZero. (I43dd2)
- Uptime i Velocity są teraz klasami wbudowanymi (I48f4a)
- Czas trwania jest teraz klasą wbudowaną (I565eb)
- Dodaj funkcję wywołania zwrotnego, aby powiadomić właściciela o zmianie granic węzła layoutu. (Ic40b3)
Rozwiązaliśmy problem polegający na tym, że konstruktor funkcji Rect z parametrami Offset i Radius tworzy prostokąt w kolejności lewo, prawo, góra, dół zamiast lewo, góra, prawo, dół.
Usunięto wycofane metody towarzyszące z klasy Rect na rzecz konstruktorów funkcji.
Dodano testy weryfikujące metody w pliku Rect.kt (I08460, b/165822356).
Poprawki błędów
- Dodano MutableRect, czyli prostokąt, który można modyfikować. (I71bd2, b/160140398)
- Matrix4 został zastąpiony przez Matrix. Wszystkie pozostałe części pakietu vectormath zostały usunięte. (Ibd665, b/160140398)
Zmieniono konwencję wywoływania funkcji składanych. To zmiana powodująca niezgodność binarną. Wszystkie biblioteki muszą zostać ponownie skompilowane, aby działały z tą wersją wtyczki kompilatora Compose.
Ta zmiana nie powoduje zmiany w źródle, ponieważ jedynymi zmienionymi interfejsami API są interfejsy kompilatora, które wymagają wyraźnego włączenia. (I7afd2, b/158123185)
Naprawiono awarię, która mogła wystąpić podczas wysyłania do obiektu PointerInputFilter, co mogło spowodować synchroniczne usunięcie obiektu PointerInputFilter. (I58f25)
Wersja 1.0.0-alpha01
26 sierpnia 2020 r.
androidx.compose.ui:ui-*:1.0.0-alpha01
został zwolniony. Wersja 1.0.0-alpha01 zawiera te commity.
Wersja 0.1.0-dev
Wersja 0.1.0-dev17
19 sierpnia 2020 r.
androidx.compose.ui:ui-*:0.1.0-dev17
został zwolniony. Wersja 0.1.0-dev17 zawiera te commity.
Zmiany w interfejsie API
- Środowisko wykonawcze
emitView
zostało wycofane. Jeśli to możliwe, do emitowania widoków w komponencie Compose użyj elementuAndroidView
. Pamiętaj, że w przyszłości nie będzie można bezpośrednio tworzyć widoków i grup widoków, chyba że są one elementami liściastymi w drzewie kompozycji, co można osiągnąć za pomocą AndroidView. (I29b1e, b/163871221) FocusState2
jest wycofany i zastąpiony przezFocusState
(Ia8b79, b/160822876, b/160923332)- Usunięto przestarzałe przeciążenia AndroidView. (I946b9, b/163802393)
- Emitowanie niestandardowe może teraz deklarować, że co najmniej 1 z jego ustawień może być pomijane i zmieniane niezależnie od emitowania. (Ibbd13)
Zmieniliśmy klasy wektorów tak, aby nie były już klasami danych, ponieważ do kompozycji używany jest ten sam obiekt.
Dodano flagę mutableStateOf dla klasy VectorPainter, aby warunkowo ponownie rysować, jeśli zawartość wektora ulegnie zmianie.
Przekształcono instancję VectorComponent, aby była częścią VectorPainter, ponieważ jest używana w różnych kompozycjach.
Zaktualizowano komponenty GroupComponent i PathComponent, aby ich pola nazwy były zmienne (Ieae45, b/151378808).
Usunięto
onChildPositioned
iOnChildPositionedModifier
. Deweloperzy powinni zamiast tego używać w układzie podrzędnym wartościonPositioned
iOnPositionedModifier
. (I4522e, b/162109766)Opóźnienie stało się klasą wbudowaną (Iaec70)
Dodano parametr modyfikatora do SelectionContainer (I4aada, b/161487952).
Usunięto przestarzały modyfikator FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940).
Dodano funkcję
mergePolicy
do listySemanticsPropertyKey
. Można go użyć do zdefiniowania niestandardowej zasady złączania z użyciem semantycznej metody mergeAllDescendants. Domyślnie używana jest wartość nadrzędna, jeśli jest już dostępna, a w przeciwnym razie wartość podrzędna. (Iaf6c4, b/161979921)Ograniczenia są teraz klasą wbudowaną (I88736)
Dodano FocusManager, który przenosi wspólną logikę skupienia z AndroidComposeView (I528ef, b/161487952, b/162206799).
Zaktualizowano nazwy PointerEventPass w wersji alfa. (Ifda6f)
IntOffset jest teraz klasą wbudowaną (Iac0bf)
IntSize jest teraz klasą wbudowaną (I2bf42).
Nazwa
PlacementScope.placeAbsolute()
została zmieniona naPlacementScope.place()
, a poprzednia nazwaPlacementScope.place()
została zmieniona naPlacementScope.placeRelative()
. W rezultacie metodaPlacementScope.place()
nie będzie już automatycznie odzwierciedlać pozycji w kontekście od prawej do lewej. W takim przypadku użyj zamiast tego polaPlacementScope.placeRelative()
. (I873ac, b/162916675)AlertDialog używa teraz FlowRow do przycisków (I00ec1, b/161809319, b/143682374)
Niektóre narzędzia testowe są teraz prywatne, ponieważ nie znajdują się tam, gdzie powinny. W przyszłości zostanie ona udostępniona publicznie. (I32ab1)
Zmieniono organizację kodu wejściowego wskaźnika. (Ie3f45)
PxBounds jest nieużywany na rzecz Rect. Zaktualizowano wszystkie przypadki użycia PxBounds na rect i dodano odpowiednie adnotacje wycofywania/zastępowania, aby ułatwić migrację. (I37038, b/162627058)
Usunięto wycofane zdarzenie KeyEvent2. Zamiast tego użyj KeyEvent. (Ied2d0, b/162097587)
KeyEvent ma właściwość Unicode, której można użyć do uzyskania znaku Unicode wygenerowanego przez określoną kombinację stanu klucza i metaklucza (If3afc).
Zdarzenie niestandardowe DelayUp i powiązane z nim klasy są teraz opcjonalne w interfejsie API, ponieważ istnieje duże prawdopodobieństwo, że zostaną zmienione. (I56d6f)
Usunięto 2 elementy PointerEventPasses, które nie są już potrzebne. (I3dd9d)
Dodaj parametry color, shadow i TextDecoration do funkcji Paragraph.paint. Ta funkcja jest przydatna, aby uniknąć niepotrzebnego ponownego tworzenia akapitu. (I81689)
Poprawki błędów
- Usunięto z TextField wywołania zwrotne onFocusChanged. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
- Metoda Modifier.drawBorder została wycofana. Zamiast tego użyj Modifier.border. Klasa danych Border została zastąpiona przez BorderStroke (I4257d, b/158160576)
Usunięto wycofane wywołania FrameManager.
Zmieniono wewnętrzne interfejsy API kompozytora, aby zmniejszyć nakład pracy związany z monitorowaniem obiektów stanu, takich jak
mutableStateof()
(I80ba6).Komponenty VerticalScroller i HorizontalScroller zostały usunięte. Zamiast tego użyj kolumny lub wiersza przewijalnego. Funkcja Modifier.drawBackground została usunięta. Użyj Modifier.background (I73b0d, b/163019183).
Naprawiono błąd powodujący awarię, gdy w pętli for używano czegoś, co zapisuje stan. Teraz można używać tego samego klucza w savedInstanceState(), a interfejs API rejestru UiSavedStateRegistry został dostosowany do tego nowego wymagania (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Właściwość
state { ... }
została wycofana na rzecz wywołań funkcjiremember { mutableStateOf(...) }
, aby zwiększyć przejrzystość. Dzięki temu zmniejsza się ogólna powierzchnia interfejsu API i liczba pojęć związanych z zarządzaniem stanem oraz dopasowuje się do wzoruby mutableStateOf()
dotyczącego delegowania właściwości klasy. (Ia5727)Zmieniono nazwę RRect na RoundRect, aby lepiej pasowała do wzorca nazewnictwa funkcji. Utworzono konstruktory funkcji podobnych do RRect i wycofane konstruktory funkcji RRect (I5d325).
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
androidx.compose.ui:ui-*:0.1.0-dev16
został zwolniony. Wersja 0.1.0-dev16 zawiera te commity.
Zmiany w interfejsie API
- Metoda OnChildPositioned została wycofana. Zamiast tego użyj metody OnPositioned w podrzędnym elemencie. (I87f95, b/162109766)
- Metoda setViewContent została wycofana. Zamiast niej należy używać metody setContent. (I7e497, b/160335130)
- Dodano interfejs API AndroidViewBinding do napełniania i komponowania zasobów układu na podstawie ViewBinding. (I081c6)
- KeyEvent2 zostaje zastąpiony przez KeyEvent (I2d770, b/162097585)
- Dodano obsługę klucza sprzętowego Alt (I9036b)
- Interfejs FocusManager został wycofany. Zamiast tego użyj metod Modifier.focus(), Modifier.focusObserver() i Modifier.focusRequester(). (I74ae4, b/162211322)
- loadVectorResource obsługuje atrybuty trimPath (I808fe)
- Przenoszenie okna do interfejsu (I47fa6)
- Usunięto 2 elementy PointerEventPasses, które nie są już potrzebne. (I33ca7)
- Wdrożony interfejs PointerInteropModifier, który umożliwia odbieranie zdarzeń MotionEvent i współdziałanie z Compose tak, jak implementacja widoku Androida. (Ieb08c)
- Usunięto wycofany modyfikator tagu. Zamiast tego użyj pola layoutId. (Idaa05, b/162023919)
- Zaktualizowano interfejsy API obsługujące tekst od prawej do lewej. Dodano atrybut LayoutDirectionAmbient, który umożliwia odczytywanie i zmienianie kierunku układu. Zmienniki Modifier.rtl i Modifier.ltr zostały usunięte. (I080b3)
- Obsługa przycinania ścieżek w grafice wektorowej (Ie16c9, b/158188351)
- Dodano funkcję Modifier.layout(), która umożliwia wygodne tworzenie niestandardowego modyfikatora układu (I73b69, b/161355194).
- Dodano nowy interfejs API AndroidView i wycofano istniejące. (I5bcfd)
- Interfejs Modifier.plus został wycofany. Zamiast niego używaj interfejsu Modifier.then. „Then” ma silniejszy sygnał dotyczący kolejności, ale jednocześnie uniemożliwia wpisanie
Modifier.padding().background() + anotherModifier
, co powoduje przerwanie łańcucha i utrudnia czytanie (Iedd58, b/161529964) - Dodaj podklasy widoku [Abstract]ComposeView, aby hostować zawartość Compose w hierarchii widoku. (I46357)
- Funkcje
Row
iColumn
są teraz funkcjami w wierszu, co znacznie zmniejsza obciążenie związane z ich używaniem. (I75c10) - Dodano element SubcomposeLayout. Jest to prymityw niskiego poziomu, który umożliwia tworzenie podrzędnych podczas pomiaru, jeśli chcemy użyć niektórych wartości dostępnych dopiero później podczas pomiaru podrzędnego. Na przykład ograniczenie WithConstraints nie jest implementowane za pomocą funkcji SubcomposeLayout. (I25cc8)
- Dodano metodę
SemanticsNode.positionInRoot
, która zwraca pozycję węzła SemanticsNode względem poziomu głównego hierarchii Compose (Icdf26, b/161336532). - Zdarzenie MotionEvents przechodziło przez cały Androida, do Compose i z powrotem do Androida. (I14be8, b/158034713)
- Usunięto menu rozwijane. (I00430)
- Poprawiono pozycję wyskakującego okienka na wyciętym ekranie. (Idd7dd)
- Dodaj działanie związane z ułatwieniami dostępu, aby uzyskać TextLayoutResult (I9d6e6)
- Dodano modyfikator RemeasurementModifier, który umożliwia synchroniczne ponowne pomiarowanie układu. Zazwyczaj nie jest to potrzebne, ponieważ pomiar i przestrzeń są aktualizowane automatycznie, ale używamy tego w elementach LazyColumnItems podczas przewijania. (I5f331, b/160791058)
- Usuń getLineEllipsisOffset/getLineEllipsisCount. Zamiast tego użyj getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- Dodaj znaczniki lub adnotacje, aby dowiedzieć się, jak postępować zgodnie ze sprawdzonymi metodami. (I66b20)
- udostępnić więcej interfejsów API linii w wyniku TextLayoutResult. (I79bd2)
- Wbudowane konwertery wektorów do konwertowania wbudowanych jednostek są teraz dostępne za pomocą Foo.VectorConverter. np.Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter itp. (I3e273)
Poprawki błędów
- Rozwiązanie ogólnych problemów z interfejsem API (I077bc)
- Usuwanie nieużywanego interfejsu OffsetBase
- Dopasuj klasy Offset i IntOffset, aby uzyskać spójną powierzchnię interfejsu API
- Zmień nazwę IntOffset.Origin na IntOffset.Zero, aby zachować spójność z interfejsem Offset API.
- Przeniesienie metody nativeCanvas z interfejsu Canvas, aby umożliwić użytkownikom tworzenie własnych instancji Canvas
- Utworzono szablon klasy EmptyCanvas, aby zmienić DrawScope na parametr niepusty zamiast inicjalizacji i zapewnić, aby pole nie było puste.
- Zmieniono nazwy typów ClipOp na Pascal Case.
- Zmieniono nazwy filtrów w układ Pascala.
- Zmieniono nazwy enumów StrokeJoin na Pascal Case.
- Zmieniono nazwy typów punktu na Pascal Case
- Zmieniono nazwy typów za pomocą Pascal Case.
- Zmieniono nazwy typów ścieżki w układ Pascala.
- Zmieniono nazwy enumów StrokeCap na Pascal Case.
- Zaktualizowano implementację DrawCache, aby nie używała parametrów lateinit
- Zaktualizowano DrawScope, aby nie używać już nieaktywnych delegacji w przypadku wewnętrznych parametrów fillPaint i strokePaint.
- Zaktualizowano komponent Image, aby uniknąć korzystania z Box, co pozwoliło zmniejszyć obciążenie.
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano węzeł PathNode, aby zawierał adnotacje @Immutable dla każdej instrukcji ścieżki
- Zaktualizowano podkompozycję wektorową, aby usunąć zbędne sprawdzanie warunków równości, ponieważ kompozycja już je obsługuje
- wycofanie metod konstruktora towarzysza Rect na rzecz konstruktorów funkcji;
- Zaktualizowano klasy pędzli i konstruktorów funkcji, aby używały interfejsów API @Immutable i @Stable.
- Zmieniono typ VertexMode na PascalCase
- Zaktualizowano metodę selectPaint klasy DrawScope, aby warunkowo zastępować parametry obrysu w obiekcie paint, jeśli uległy zmianie.
- Zaktualizowano rozmiar, aby dodać interfejs API do destrukturyzacji, zmieniono nazwę na nieokreślony rozmiar i usunięto nieużywane metody.
- Zaktualizowano interfejs API compose BlendMode, aby prawidłowo mapować tryby BlendMode w ramach Androida i PorterDuffa w zależności od poziomu interfejsu API. Wprowadziliśmy interfejs API BlendMode#isSupported, który działa jako zapytanie o możliwości. Pozwala ono określić, czy urządzenie obsługuje dany tryb mieszania, zanim zostanie on użyty. (I0ef42)
- Do parametru itemContent w przypadku list typu Lazy dodano LazyItemScope. Udostępnia ona modyfikatory do wypełniania maksymalnego rozmiaru elementu nadrzędnego, co rozwiązuje problem, gdy element ma wypełniać widok, a zwykła funkcja Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
- Użytkownik
SemanticsNodeInteraction.performPartialGesture
został usunięty. Zamiast tego użyjSemanticsNodeInteraction.performGesture
. (Id9b62) - Nazwa
LazyColumnItems
została zmieniona naLazyColumnFor
. NazwaLazyRowItems
została zmieniona naLazyRowFor
(I84f84) - Pakiet
foundation.shape.corner
został spłaszczony dofoundation.share
(I46491, b/161887429) - Nazwa
AndroidComposeTestRule
została zmieniona nacreateAndroidComposeRule
. (I70aaf) - Dodano więcej interfejsów API do
TextLayoutResult
. (Id7e04) - Interfejs Material
FilledTextField
został przemianowany naTextField
, a interfejs podstawowyTextField
naBaseTextField
, aby ułatwić znajdowanie i używanie najprostszego żądanego interfejsu API (Ia6242, b/155482676) - Modifier.drawBackground został przemianowany na Modifier.background (I13677)
Wersja 0.1.0-dev15
22 lipca 2020 r.
androidx.compose.ui:ui-*:0.1.0-dev15
został zwolniony. Wersja 0.1.0-dev15 zawiera te commity.
Aktualizacja zależności
- Aby używać wersji
0.1.0-dev15
biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany w interfejsie API
- Interfejs FocusModifier został wycofany i zastąpiony interfejsami Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. FocusState i FocusDetailedState są wycofywane na rzecz FocusState2 (I46919, b/160822875, b/160922136).
- Dodano modyfikator do obserwowania zmiany stanu fokusa. (I05866, b/160924455, b/160923326)
- Dodano modyfikator do prośby o zmianę punktu skupienia (I8dd73, b/161182057, b/160924778)
- Dostosuj menu paska narzędzi, aby prawidłowo wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955)
- Właściwości semantyczne o pojedynczej wartości używają teraz stylu wywoływania.
Na przykład „semantics { hidden = true }” jest teraz zapisywane jako:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Dodano Modifier.focus, który zastępuje FocusModifier. (Ib852a, b/160924778)
- Dodaj FloatingToolbar do wyboru pola tekstowego. (Ie8b07)
- Dodano eksperymentalną adnotację interfejsu API dla interfejsu API związanego z kluczami wejściowymi (I53c0a).
- Dodano eksperymentalną adnotację interfejsu API dla wszystkich interfejsów Focus (I53b24, b/160903352).
- Dodano FocusState2, który zastąpi FocusDetailedState (I0a3ba, b/160822595).
- Dodano ExperimentalFocus, czyli adnotację @OptIn dla interfejsu Focus API. (I1544b, b/160820961)
- Dodano klasę jednostki IntBounds, która reprezentuje całkowite granice pikseli z układu. Interfejs API klasy PopupPositionProvider został zaktualizowany, aby można było go używać. (I0d8d0, b/159596546)
- Applier wymaga teraz metody clear() do usuwania kompozyt (Ibe697)
- Metoda KeyEvent została wycofana i zastąpiona metodą KeyEvent2 (I68730)
- Do testowania wyszukiwarek dodano nowy opcjonalny parametr useUnmergedTree. (I2ce48)
- Dodano eksperymentalny interfejs API LayoutNode (I4f2e9)
Dodano metody kopiowania do różnych typów wbudowanych klas, w tym:
- Przesunięcie
- Rozmiar
- Promień
- Ruch
TransformOrigin
Wycofana metoda obiektu towarzyszącego Size.copy na rzecz metody kopiowania instancji (Ife290, b/159905651)
Okienka, dialogi i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
Nazwa atrybutu TextDirection została zmieniona na ResolvedTextDirection (I3ff38)
Usunięto parametr kierunku układu z bloku pomiaru funkcji Layout(). Kierunek układu jest jednak dostępny w obiekcie zakresu pomiaru w wywołaniu zwrotnym (Ic7d9d).
Przerzuć SelectionHandles do ponownego użycia. (I420e0)
Możliwość kliknięcia została usunięta. Użyj modyfikatora clickable (I84bdf).
TestTag i Semantics zostały usunięte. Zamiast tego użyj funkcji Modifier.testTag i Modifier.semantics (I15ff0, b/158841414).
Przed tą zmianą wtyczka kompilatora kompozytora przechwytywała wywołania konstruktorów w ramach funkcji @Composable, jeśli wystąpiły one w ramach funkcji (I5205a, b/158123804).
Nazwa Modifier.tag została zmieniona na Modifier.layoutId, aby uniknąć pomyłek z tagiem Modifier.testTag. (I995f0)
Wartości pozycji linii wyrównania zwracane przez Placeable#get(AlignmentLine) są teraz niezerowe. Jeśli nie ma linii wyrównania, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)
Do interfejsu AndroidView dodano parametr modyfikatora. (I48a88, b/158746303)
Metoda Semantics() została wycofana. Zamiast tego użyj metody Modifier.semantics(). (I72407, b/158841414)
Dodaj komponent viewModel(), który umożliwia tworzenie lub pobieranie już utworzonego widoku ViewModel w sposób podobny do tego, w jaki działa on w komponencie Activity lub Fragment (I5fdd1).
Zastąpiono użycie funkcji IntPx za pomocą funkcji Int. Zastąpiono funkcję IntPxPosition za pomocą funkcji IntOffset. Zmienna IntPxSize została zastąpiona zmienną IntSize. (Ib7b44)
Aby skonsolidować liczbę klas używanych do reprezentowania informacji o rozmiarze, zamiast klasy PxSize użyj klasy Size. Daje to korzyści płynące z klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących szerokość i wysokość jako zmiennoprzecinkowe. (Ic0191)
Aby skonsolidować liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, zamiast klasy PxPosition użyj klasy Offset. Dzięki temu można korzystać z klasy wbudowanej, aby za pomocą typu long pakować 2 wartości zmiennoprzecinkową, które reprezentują przesunięcia x i y zapisane jako zmiennoprzecinkowe. (I3ad98)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby w przypadku parametrów pikseli używać tylko typu dp i typów prymitywnych. Usunięto całą klasę Px (I3ff33)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i pierwotnych w przypadku parametrów pikseli (I086f4)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (Id3434).
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I97a5a).
Tag testowy został wycofany. Zamiast tego użyj funkcji Modifier.testTag. (If5110, b/157173105)
Domyślna implementacja ParentDataModifier#modifyParentData, która nie wykonuje żadnej operacji, została usunięta, ponieważ była równoważna z nieimplementowaniem interfejsu. (I0deaa)
Funkcja ScaleFit, która została wycofana, została usunięta. Zamiast tego użyj atrybutu ContentScale. (Ifbc5b)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i prymitywnych w przypadku parametrów pikseli (I19d02)
Dodano komponent DropdownMenu w pakiecie ui-material, który jest implementacją menu w stylu Material Design. (I9bb3d)
Usunięto wycofany interfejs LayoutTag(). Zamiast niego używaj interfejsu Modifier.tag(). Wycofano wycofany interfejs Modifier.matchParent(). Zamiast niego użyj interfejsu Modifier.matchParentSize(). (If8044)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I57bff)
Element Modifier.semantics został wycofany, aby umożliwić jego użycie w przypadku komponentów wysokiego poziomu. (I4cfdc)
Zbiorcze CanvasScope zostały scalone, więc teraz są tylko DrawScope i ContentDrawScope. Zmieniliśmy nazwę CanvasScope na DrawScope. Zaktualizowano DrawScope w celu implementacji interfejsu Density i zapewnienia kierunku układu. Usunięto podklasę DrawScope w ContentDrawScope. Painter i PainterModifier zostały zaktualizowane tak, aby nie utrzymywać własności RTL, ponieważ DrawScope zapewnia ją już bez ręcznego podawania (I1798e).
Filtr podwójnego dotknięcia teraz rozróżnia filtr pojedynczego dotknięcia w drzewie. (If92b1)
Zaktualizowaliśmy interfejs Alignment API i dodaliśmy obsługę wyrównania bezwzględnego (które nie powoduje automatycznego lustrzanego odbicia w kontekście Rtl) (I38cd3).
Zmieniono interfejs API modyfikatorów DrawLayer: outlineShape został przemianowany na shape i ma domyślną wartość RectangleShape, która nie może być pusta; clipToBounds został usunięty, ponieważ jest to to samo co clip == true z RectangleShape (I7ef11, b/155075735).
Zaktualizowano interfejsy API wyższego poziomu, które udostępniają interfejs Canvas, tak aby zamiast niego udostępniały interfejs CanvasScope. Dzięki temu użytkownicy nie muszą już samodzielnie zarządzać obiektami w Paint. Użytkownicy, którzy nadal potrzebują dostępu do Canvas, mogą użyć metody rozszerzenia drawCanvas, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania do Canvas. (I80afd)
Zmiana interfejsu lambda z dodatkiem Constraints. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń i kierunku układu zawiera właściwości minWidth, maxWidth, minHeight i maxHeight w pikselach (I91b9a, b/149979702)
Zmieniono nazwę LayoutModifier2 na LayoutModifier. (Id29f3)
Usunięto wycofany interfejs LayoutModifier. (I2a9d6)
Funkcje pomiarów wewnętrznych w Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia interfejs API zapytań wewnętrznych z domyślnie propagowanym kierunkiem układu. (Id9945)
Dzieci elementów Layout i LayoutModifier można mierzyć z użyciem innego kierunku układu. (Ibd731)
Dodano nową metodę Modifier.zIndex(), która służy do kontrolowania kolejności rysowania elementów podrzędnych w ramach tego samego układu nadrzędnego. Właściwość elevation w modyfikatorze DrawLayerModifier została przemianowana na shadowElevation i nie kontroluje już kolejności rysowania. Zmieniono kolejność parametrów metody DrawShadow: teraz pierwszą jest wysokość, a drugą – kształt (z domyślnym kształtem prostokątnym). (I20150, b/152417501)
Usunięto metody onSizeChange i onPositionChange w klasie Owner. (I5c718)
Dodano Constraints2, czyli kopię Constraints, która obsługuje tylko wartości ograniczeń Int, a nie IntPx. IntPx zostanie usunięty, a zakładamy, że wszystkie ograniczenia liczb całkowitych będą miały wartości w pikselach, tak jak w Androidzie.
- Dodano również IntSize, który ostatecznie zastąpi IntPxSize. (I4b43a)
Umożliwiono tworzenie wyrównania z dowolnymi wartościami. Dodano wyrównania 1D. (Ia0c05)
alignToSiblings przyjmuje teraz obiekt Measured zamiast obiektu Placeable. (I5788d)
-
- Zmiana nazwy ScaleFit na ContentScale
- Przeniesienie ContentScale z modułu ui-graphics do modułu ui-core, aby znajdował się on w tym samym module co interfejs API Alignment.
- Zmieniono nazwę FillMaxDimension na Crop.
- Zmieniono nazwę FillMinDimension na Fit.
- Zmieniono nazwę funkcji Dopasuj do wnętrza, aby lepiej pasowała do nazwy.
- Odpowiedniki ImageView.ScaleType
- Dodano dokumentację wskazującą, że kombinacja Crop i Alignment.Center daje ten sam efekt co ImageView.ScaleType.CENTER_CROP oraz Fit używane z Alignment.Center dają ten sam efekt co ImageView.ScaleType.FIT_CENTER Inside używane z Alignment.Center dają ten sam efekt co ImageView.ScaleType.CENTER_INSIDE
Obsługa modyfikatorów typu draw w reklamach elastycznych. (I0aaf9)
Opublikowano interfejs API do tworzenia obiektów Android Views z plików XML. Więcej informacji znajdziesz w demonstracji ViewInCompose. (I42916)
Ulepszenie interfejsu DrawModifier API:
- Zmiana zakresu odbiornika dla metody draw() ContentDrawScope
- Usunięto wszystkie parametry w metodzie draw().
- DrawScope ma ten sam interfejs co poprzedni CanvasScope
- ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067).
Dodano pozycję w rodzicu i zakres w rodzicu dla współrzędnych układu. (Icacdd, b/152735784)
Domyślne wartości parametrów clipToBounds i clipToOutline w funkcjach DrawLayerModifier i drawLayer zostały ustawione na false. (I0eb8b, b/152810850)
Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)
Dodano interfejs LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofanie interfejsu LayoutModifier (If32ac).
Zastąpienie operatora Modifier plus funkcjami rozszerzenia fabrycznego (I225e4)
Dodaliśmy właściwości translationX/Y, aby umożliwić przesuwanie listy wyświetlania poleceń rysowania dla danej warstwy. Jest to przydatne, gdy chcesz przesuwać treści w odpowiedzi na animacje lub zdarzenia dotykowe. (I8641c)
Dodano parametry pivotX i pivotY do interfejsów API warstwy, aby umożliwić obracanie i skalowanie wokół określonego punktu na warstwie (Icf7c3).
Dodaj modyfikatory OnPositionedModifier i OnChildPositionedModifier, aby zastąpić funkcje kompozytowe OnPositioned i OnChildPositioned. (I2ec8f)
Dodano modyfikator LayerModifier, który umożliwia dodanie RenderNode do układu. Umożliwia ustawienie przycinania, krycia, obrotu, skalowania i cieni. Zastąpi ona opcję RepaintBoundary. (I7100d, b/150774014)
Zmieniliśmy kierunek propagacji układu z węzła nadrzędnego do podrzędnych. Dodano modyfikator kierunku układu. (I3d955)
Komponent grupy obsługuje kierunek od prawej do lewej (Ic9e00)
Wstępna obsługa RTL w układzie tworzenia wiadomości (Ia5519)
Density i DensityScope zostały połączone w jeden interfejs. Zamiast ambientDensity() możesz teraz używać DensityAmbient.current. Zamiast withDensity(gęstość) wpisz tylko with(gęstość) (I11cb1)
Zmiana metody LayoutCoordinates, aby ustawić parametry alignmentLines jako zbiór zamiast mapy i zamiast tego, aby zwracać wartość, użyj operatora get(). Dzięki temu modyfikatory mogą łatwiej modyfikować co najmniej 1 wartość zbioru bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
Właściwość position nie jest już dostępna w przypadku atrybutu LayoutCoordinates. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obracania ani skalowania. Zamiast tego programiści powinni używać funkcji parentCoordinates i childToLocal() do obliczania transformacji z jednego układu współrzędnych na inny.
Właściwość size w metodzie LayoutCoordinates używa wartości IntPxSize zamiast PxSize. Układy używają rozmiarów w pikselach w postaci liczb całkowitych, dlatego wszystkie rozmiary układów powinny być podawane jako liczby całkowite, a nie wartości zmiennoprzecinkowe. (I9367b)
Ulepszenia interfejsu API ograniczeń (I0fd15)
Utworzono interfejs CanvasScope API, który otacza obiekt Canvas, aby udostępnić bezstanową, deklaratywną powierzchnię rysowania. Transformacje są zawarte w ramach własnego zakresu odbiornika, a informacje o rozmiarach są również ograniczone do odpowiednich granic wstawki. Nie wymaga od użytkownika utrzymywania własnego obiektu stanu aplikacji Paint do konfigurowania operacji rysowania.
- Dodano CanvasScopeSample oraz zaktualizowano aplikację demonstracyjną, aby zawierała demonstrację deklaratywnej grafiki (Ifd86d).
Usunięto nieużywany interfejs MaskFilter API, ponieważ ma on ograniczone zastosowanie i nie jest zoptymalizowany pod kątem przyspieszania sprzętowego w większości przypadków użycia (I54f76).
RectangleShape został przeniesiony z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Zastąpiono wszystkie przypadki użycia typu Color w interfejsie API, w których wartością może być null, wartością niepustą i używaniem Color.Unset zamiast null (Iabaa7).
Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter w celu obsługi rysowania podzbioru podrzędnego w ramach komponentu ImageAsset (I0ea9e)
Dodano opcję Nieokreślony kolor, która reprezentuje niezdefiniowaną wartość bez otaczania kolorów. (If901a)
Dodano metody rozszerzenia Canvas.rotate i Canvas.scale, aby można było używać opcjonalnych współrzędnych punktu obrotu do przekształceń. Te domyślne wartości są przenoszone do lewego górnego rogu bieżącego przekładu na kanwie.
W celu zachowania spójności przeniesiono też Canvas.rotateRad do metody rozszerzenia (Ibaca6).
Utworzono interfejs PixelMap API, aby umożliwić wysyłanie zapytań o informacje o pikselach z obiektu ImageAsset. (I69ad6)
Nazwy interfejsów toFrameworkRect/toFrameworkRectF zostały zmienione na toAndroidRect/toAndroidRectF, aby pasowały do konwencji nazewnictwa konwersji obiektów między interfejsami API platformy Compose a interfejsami API platformy Android, na których są one oparte. Zaktualizowano też dokumentację dotyczącą tych interfejsów API (I86337).
Dodano interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API do obsługi grafik wektorowych. Wynik podkompozycji to obiekt VectorPainter, a nie DrawModifier. Wycofano poprzednie komponenty DrawVector na rzecz komponentu VectorPainter.
Zmieniliśmy nazwę interfejsu API Image(Painter) na PaintBox(Painter). Utworzyliśmy kompozytywny obiekt wektorowy, który zachowuje się jak kompozytywny obiekt obrazu, ale zamiast ImageAsset używa VectorAsset (I9af9a, b/149030271).
Zmieniliśmy nazwę Image na ImageAsset, aby lepiej odróżnić dane Image od nadchodzącego komponentu Image, który służy do tworzenia układu i rysowania zawartości. _Body:Utworzono metodę rozszerzenia w android.graphics.Bitmap, Bitmap.asImageAsset(), aby utworzyć instancję ImageAsset przydatną do łączenia tradycyjnego Androida rozwijanie aplikacji z ramami kompozytowymi (Id5bbd)
Dodano TextDirection.Content (I48f36).
Dodano operator TextDecoration.plus (I0ad1a)
Wartość
Force
została usunięta z wartości typu wyliczeniowego TextDirectionAlgorithm (Icc944)Nazwa parametru TextDirectionAlgorithm została zmieniona na TextDirection (I75ce8).
Implementuje LongPressAndDrag dla TextField Selection. (I17919)
Dodano metodę AnnotatedString.getStringAnnotations, która zwraca wszystkie adnotacje w danym zakresie. (I1fa00)
Zmieniono nazwę pakietu Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c).
Kursor pola tekstowego ma migającą animację (Id10a7)
Zmiana w interfejsie API: funkcja AnnotatedString(builder: Builder) została przemianowana na annotatedString(builder: Builder). (Ia6377)
Zmiana w interfejsie API: element AnnotatedString.Item został przemianowany na AnnotatedString.Range. (I2d44d)
Zmień nazwę AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)
Teraz można ukryć lub wyświetlić klawiaturę za pomocą klasy SoftwareKeyboardController, która jest dostarczana przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).
Dodano operator plusa dla stylu (Text/Paragraph/Span), który deleguje do funkcji merge(). (Ia1add)
FontWeight.lerp nie jest już stosowany. Nadal jest to klasa danych. (I521c2)
Konstruktor FontWeight jest teraz publiczny, a nie jest już klasą danych. (Id6b1f)
Dodaj getLineStart, getLineEnd, getEllipsisOffset i getEllipsisCount do TextLayoutResult (Ibc801)
Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec).
Usunięto nieużywaną klasę rozmiaru, ponieważ w używanym module ui-geometry znajduje się jej duplikat. (I1b602)
Dodano AdapterList, komponent listy przewijanej, który tylko składa i umieszcza widoczne elementy. Obecne znane problemy obejmują to, że jest to rozwiązanie tylko w orientacji pionowej i nie obsługuje w pełni wszystkich przypadków zmian w podrzędnych. (Ib351b)
Dodaj parametry wypełnień, obramowania, kształtu i tła do pola tekstowego (I05027, b/148147281)
Poprawki błędów
- Wywołanie zwrotne onFocusChange w polach tekstowych zostało zmienione na onFocusChanged (Ida4a1).
- Komponenty VerticalScroller i HorizontalScroller zostały wycofane. Użyj ScrollableColumn i ScrollableRow, aby uzyskać wbudowane funkcje z zachowaniem i parametrami kolumny/wiersza, lub użyj Modifier.verticalScroll i Modifier.horizontalScroll w swoim własnym elemencie. Podobnie w przypadku ScrollerPosition zastosowano wycofanie w wersji na rzecz ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
- Nazwa
runOnIdleCompose
została zmieniona narunOnIdle
(I83607) - Zmieniliśmy nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie interfejsy findXYZ zostały przemianowane na onNodeXYZ. Wszystkie interfejsy doXYZ zostały przemianowane na performXYZ. (I7f164)
- Teraz interfejs tworzenia można tworzyć w grupach widoków bez konieczności tworzenia nowego. Przykład znajdziesz w pliku ViewInteropDemo. (I9ab0b, b/160455080)
- Dodano sortWith i removeRange do MutableVector (Icccf7)
- Zaimplementuj uchwyty przeciągania, aby zmienić zaznaczenie pola tekstowego. (I27032)
- Usunięto wbudowaną klasę Shader, która owijała klasę NativeShader. Nazwa klasy NativeShader została zmieniona na Shader. Zawinięta klasa inline Shader nie wnosiła nic wartościowego do interfejsu API i była klasą inline, dlatego używaj bezpośrednio klasy NativeShader. (I25e4d)
Zmodyfikowaliśmy funkcję PainterModifier, aby nie skalowała ona już na podstawie podanych ograniczeń i parametru ContentScale. Implementacje funkcji Painter powinny skalować zawartość rysunku na podstawie podanego rozmiaru zakresu rysowania, do którego rysują.
Rozwiązaliśmy problem polegający na tym, że bitmapa w pamięci podręcznej VectorPainter miała domyślny rozmiar zamiast rozmiaru do rysowania.
Zaktualizowano ImagePainter, aby skalował on zawartość samodzielnie, zamiast polegać na funkcji PainterModifier. (I6ba90)
dodać funkcję najwyższego poziomu withFrameNanos do określania czasu animacji (Ie34c5)
Adnotacja @Untracked została wycofana. Zastąp to elementem @ComposableContract(tracked=false) (Id211e).
Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Wycofane zostały też komponenty TextField, FilledTextField i CoreTextField, które używają tego typu. Zamiast tego użyj interfejsu androidx.ui.input.TextFieldValue (I4066d, b/155211005).
Rozwiązaliśmy problem, który powodował awarię podczas przetwarzania danych wejściowych wskaźnika, jeśli podczas przetwarzania usuwane były filtry danych wejściowych wskaźnika za pomocą podkompozycji. Zostało to już rozwiązane. (I1f48b, b/157998762)
Rozwiązaliśmy problem, który powodował awarię podczas rozsyłania danych wejściowych wskaźnika, jeśli podczas rozkładu usunięto filtry danych wejściowych wskaźnika. Zostało to już rozwiązane. (Iab398, b/157998762)
Zmieniono klasę Radius na klasę wbudowaną. Usunięto metody tworzenia towarzysza na rzecz konstruktora funkcji z parametrem domyślnym, aby promień na osi y był zgodny z obowiązkowym parametrem promienia na osi x.
Zaktualizowano DrawScope.drawRoundRect, aby używać pojedynczego parametru Radius zamiast 2 oddzielnych wartości typu float dla promienia wzdłuż osi X i Y (I46d1b).
Komponent Recompose nie jest już przydatną abstrakcją. Większość ponownych skompilowań powinna nastąpić w wyniku przypisania stanu zmiennego. W przypadku innych wartości zalecamy użycie funkcji
invalidate
, aby wywołać ponowne zdefiniowanie bieżącego zakresu. (Ifc992)W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (Iede0b).
Zmienia strategię generowania kodu kompilatora Compose. Przed wprowadzeniem tej zmiany kompilator kompozytowy przekształcał wywołania w funkcje kompozytowe. Dzięki tej zmianie modyfikujemy teraz ciało funkcji składanej, a miejsce wywołania pozostawiamy bez zmian (w większości).
Oznacza to, że większość logiki komunikującej się z runtimem usługi Compose jest wykonywana na początku ciała funkcji, a nie w miejscu wywołania.
Powinna to być zmiana zgodna ze źródłem we wszystkich przypadkach użycia funkcji Compose. Większość użytkowników usługi Compose nie powinna być zmuszona do aktualizowania kodu.
Aby umożliwić to, zmieniliśmy sygnaturę JVM wszystkich funkcji kompozytowych. Funkcja składana, która akceptuje jeden parametr, jest przekształcana w funkcję akceptującą 3 parametry. Dodatkowe parametry to kompozytor, liczba całkowita „klucza” i liczba całkowita bitowa używana do propagowania metadanych w wywołaniach.
Funkcja Compose przekształca teraz również argumenty domyślne w funkcję składającą się. Robi to bez wprowadzania dodatkowego domyślnego przeciążenia funkcji, więc ta zmiana spowoduje zdefiniowanie mniejszej liczby funkcji.
Znane celowe zmiany w zachowaniu wynikające z tego:
- Niektóre połączenia będą pomijane, co nie miało miejsca wcześniej.
- Wyrażenia kompozytowe w domyślnych wyrażeniach argumentów są teraz prawidłowo subskrybowane i obsługiwane
W ramach tych prac wprowadziliśmy kilka optymalizacji: 1. Wyniki porównań parametrów są propagowane przez wykres wywołania do innych funkcji kompozytowych. Spowoduje to mniejszą liczbę porównań w czasie wykonywania, zmniejszy rozmiar tabeli slotów, a także zwiększy pomijanie funkcji kompozytowych, które wcześniej nie były pomijane. Parametry, które w czasie kompilacji zostały uznane za „statyczne”, nie są już porównywane ani przechowywane w czasie wykonywania. Zmniejsza to liczbę porównań i rozmiar tabeli slotów. 3. Struktura przepływu danych w ciele funkcji służy do minimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli slotów i obciążenie środowiska wykonawczego. 4. Nieużywane parametry funkcji dispatch i receiver nie są uwzględniane przy określaniu możliwości pominięcia funkcji, jeśli nie są używane w jej treści.
Większość zmian dotyczyła interfejsów API, na które kompilator kieruje bezpośrednio. Nie wpłynęło to na typowe korzystanie z Compose: 1. Funkcja Composer::startExpr została usunięta. Funkcja Composer::endExpr została usunięta. Funkcja Composer::call została wycofana. Przeciążenia funkcji
key
, które nie są przeciążeniami varargs, zostały usunięte. Od teraz używaj wersjivararg
. 5. Adnotacja Pivotal została wycofana. Użyjkey
jako zamiennika. 6. Zmieniono funkcję ScopeUpdateScope::updateScope, aby oczekiwała ona funkcji Function3 zamiast funkcji Function1. 7. Zaktualizowano funkcje restartableFunction i restartableFunctionN, aby uwzględniały dodatkowe parametry kompilacji (I60756, b/143464846).Usunięto przestarzałe modyfikatory LayoutAlign. (I10877)
Usunięto RepaintBoundary na rzecz DrawLayerModifier (I00aa4)
Przyciski Button, FloatingActionButton i Clickable mają teraz oddzielny parametr
enabled
. Niektóre parametry przycisku zostały przemianowane lub zmieniono ich kolejność. (I54b5a)Zastąpiono ButtonStyle oddzielnymi funkcjami i usunięto przeciążenie tekstu (string). Informacje o użyciu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)
Zmiany w interfejsie API ambients. Szczegółowe informacje znajdziesz w logach i dokumentacji
Ambient<T>
(I4c7ee, b/143769776).Zmieniono zachowanie domyślnego kierunku tekstu, aby był on określany przez kierunek układu. Jeśli kierunek układu to RTL, domyślny kierunek tekstu będzie RTL. Poprzednio: TextDirection.ContentOrLtr/Rtl (I4e803)
Rozwiązanie problemu: gdy grubość czcionki i styl czcionki są zagnieżdżone w AnnotatedString, tekst nie jest renderowany prawidłowo. (I77a9d)
Dodaje do funkcji Text() często używane parametry. Jeśli obecnie tworzysz lokalny styl tekstu, aby przekazać niewielką liczbę tych parametrów, np. Text(style = TextStyle(textAlign = TextAlign.Center)), możesz teraz podać te parametry bezpośrednio: Text(textAlign = TextAlign.Center) (I82768)
Moduł ui-android-text został przemianowany na ui-text-android (I68cbe).