Interfejs tworzenia
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Zobacz dokumentację API wszystkich pakietów Compose)
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 9 września 2026 r. | 1.12.1 | - | - | 1.13.0-alpha03 |
Struktura
Compose to połączenie 7 identyfikatorów grupy Maven w androidx. Każda grupa zawiera ukierunkowany podzbiór funkcji, a każda z nich ma własny zestaw informacji o wersji.
W tej tabeli znajdziesz grupy 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łcanie funkcji z adnotacją @Composable i włączanie optymalizacji za pomocą wtyczki kompilatora Kotlin. |
| compose.foundation | Twórz aplikacje w Jetpack Compose za pomocą gotowych elementów składowych i rozszerzaj podstawy, aby tworzyć własne elementy systemu projektowania. |
| compose.material | Twórz interfejsy Jetpack Compose za pomocą gotowych komponentów Material Design. Jest to punkt wejścia wyższego poziomu do Compose, który ma zapewniać komponenty zgodne z opisanymi na stronie www.material.io. |
| compose.material3 | Twórz interfejsy Jetpack Compose za pomocą komponentów Material Design 3, czyli kolejnej ewolucji Material Design. Material 3 zawiera zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczny kolor. Jest on spójny z nowym stylem wizualnym Androida 12 i interfejsem systemu. |
| compose.runtime | Podstawowe elementy modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, do którego kierowany jest wtyczka kompilatora Compose. |
| compose.ui | Podstawowe komponenty interfejsu Compose potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i dane wejściowe. |
Deklarowanie zależności
Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.12.1") } 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.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.13
Wersja 1.13.0-alpha03
9 września 2026 r.
Publikacja androidx.compose.ui:ui-*:1.13.0-alpha03 Wersja 1.13.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Przeciążenia pola tekstowego Material 2, które akceptują parametry
value, onValueChange, zostały wycofane. Przejdź na przeciążenie, które używaTextFieldStatedo przenoszenia stanu. (I6b841, b/556234973) - Dodano wspólny interfejs API, aby wyłączyć
WindowInsetsRulersglobalnie przed utworzeniem pierwszego elementu głównego Compose. Wycofaj parametr Android onlyComposeView.disableWindowInsetsRulers()na rzecz parametru commonWindowInsetsRulers.disable()(Iadc8f). - Dodaje funkcje rozszerzeń
PolygonShape.transformediPolygonShape.scaledToFitw Compose Foundation do przekształcania i dopasowywania kształtów wielokątów. (I3f327) - Zmiana nazwy funkcji modyfikatora z
LineHeight.Trim.isTrimLastLineBottom()naLineHeight.Trim.trimsLastLineBottomi zLineHeight.Trim.isTrimFirstLineTopnaLineHeight.Trim.trimsFirstLineTop(I02211) - Dodaliśmy
boundsAssertionTolerancedoPlatformTestConfigw sekcjiComposeUiTestConfig.platform, co umożliwia testom konfigurowanie domyślnej tolerancji asercji granic na poziomie środowiska lub reguły. (I7819d, b/545673912) BasicTextFieldprzeciążenia, które akceptują parametryvalue, onValueChange, zostały wycofane. Zamiast niej użyjBasicTextFieldoverload that usesTextFieldStatedo przenoszenia stanu. (I636bf, b/552879150)- Podobnie jak
BasicTextField(value, onValueChange), interfejsVisualTransformationzostał wycofany, ponieważ jest udostępniany tylko w tej wersjiTextField. Dotychczasowe przekształcenia powinny zostać przeniesione doOutputTransformation. (I636bf, b/552879150) - Dodano
LineHeightStyle.Mode.PerLine, aby obliczać wysokość wiersza niezależnie dla każdego wiersza, co umożliwia stosowanie różnych rozmiarów czcionek w tym samym akapicie bez nakładania się tekstu. (I41738) - Przekazywanie wartości
LazyLayoutCacheWindowiLazyListPrefetchStrategyza pomocąLazyListStatezostało wycofane na rzecz przekazywania wartościLazyLayoutCacheWindowdo funkcji typu „composable”. (I71f19) - Dodano interfejs API
Modifier.blur { ... }do obsługi progresywnego rozmycia (np. gradientów i niestandardowych shaderów) (Ie6595, b/481685669) - Dodano Modifier.
interactionBarrier(), aby blokować interakcje dotykowe, fokus i ułatwienia dostępu. (I7c1b7, b/347038246) - Dodaliśmy właściwość rozszerzenia
isCrossWindowBlurEnabledw obiekcieWindowInfo, aby umożliwić deweloperom wykonywanie zapytań o stan rozmycia w różnych oknach w całym systemie Android i jego obserwowanie. (If38e2, b/538405295) - Dodano
LocalWindow CompositionLocal, aby umożliwić pobieranie bieżącego obiektuandroid.view.Window, co ułatwia sterowanie interfejsami API na poziomie okna z poziomu funkcji kompozycyjnych. (I4d4ff, b/221889664)
Poprawki błędów
- Domyślnie włączona
isMinimalistLocalsEnabled. (Ibb4eb, b/523295932) - Domyślnie włączona optymalizacja wysokości jednego wiersza. Może to powodować niewielkie różnice w pikselach w przypadku niektórych danych tekstowych, takich jak wysokość lub ścieżka zaznaczenia (I5575a).
compileSdkbibliotek Compose zaktualizowanych do wersji 37.1. Wymaga to przechodniego zaktualizowaniacompileSdkwe wszystkich aplikacjach i bibliotekach korzystających z Compose. (I05b0f)- Rozwiązaliśmy problem polegający na tym, że
WindowInsetsRulerswstawki IME nie były oznaczane jako animowane podczas przewidywanego przejścia wstecz, oraz problem zimePadding, który nie był aktualizowany podczas przełączania fokusu między polami tekstowymi. (Id4562, b/537386261, b/539686000) - Rozwiązaliśmy problem polegający na tym, że gesty uszczypnięcia na trackpadzie były ignorowane, gdy
ComposeViewbył hostowany w standardowym elemencieViewGroupna Androidzie. (I80f79)
Wkład zewnętrzny
- Naprawiono wyciek aktywności, gdy element
ComposeViewzostał odłączony i ponownie dołączony w ramach jednej klatki, na przykład gdy zmieniono jego kolejność za pomocąremoveViewiaddView. (Ib5129, b/547675867)
Wersja 1.13.0-alpha02
26 sierpnia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.13.0-alpha02 Wersja 1.13.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano nową właściwość semantyczną
BackgroundColordla Modifier.background (I7eec3, b/518049030) - Możesz teraz tworzyć
Verticesz istniejących tablic typów prostych. (Ifaba8, b/496412761) VectorPainterbędzie teraz udostępniać wewnętrzne zasoby graficzne (ImageBitmap) podczas renderowania tego samego elementuImageVectorw wielu komponentach. Ogranicza to zbędne przesyłanie tekstur i wykorzystanie pamięci, co poprawia wydajność w przypadku list z powtarzającymi się ikonami. Tę optymalizację można wyłączyć wComposeUiFlags.isVectorDrawCacheSharingEnabled. (I35639, b/331283180)- Dodaj
requestFocusForChildInLocalBoundshelper (Ib1a48)
Wersja 1.13.0-alpha01
12 sierpnia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.13.0-alpha01 Wersja 1.13.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje flagę funkcji
isVelocityTrackerMinSampleSizeFixEnabled(Ic9b51, b/533444810, b/533775739, b/523705159) - Usunięto przestarzałą klasę adnotacji
ExperimentalVelocityTrackerApi. (I6f9c6, b/483449576) - Usuń flagę isClearNestedScrollCoroutineScopeFixEnabled (Iedfd7, b/506963276)
TextFieldStatezapisuje i przywraca teraz informacje o stylu tekstu.AnnotatedString.Annotation.Saverjest teraz publiczna, co umożliwia zapisywanie i przywracanie obiektówAnnotatedString.Annotation. (I8b533, b/135556699)- Wprowadzono adnotacje
TestFailurePolicyiTestFailureHandlerwComposeTestConfig, aby obsługiwać niestandardowe procedury obsługi zdarzeń niepowodzenia i kontekst artefaktów niepowodzenia w testach interfejsu Compose. (Ib1a85, b/414802953, b/291106656, b/430644575) - Dodano
SemanticsProperties.alpha, aby udostępniać na potrzeby testowania rozwiązane złożone wartości alfa węzłów układu nadrzędnego i podrzędnego. (Ifddb6, b/524035059) - Wycofaliśmy przeciążenia
createComposeRule,createAndroidComposeRuleicreateEmptyComposeRulew pakiecieui-test-junit4w wersji 2, które przyjmują poszczególne parametry. Użyj przeciążeń akceptującychComposeUiTestConfiglub przeciążeń bez parametrów, które używają domyślnegoComposeUiTestConfig. Pamiętaj, że domyślny znakComposeUiTestConfigustawia początkowy tryb wprowadzania naInputMode.Touchna początku każdego testu. Może to spowodować niepowodzenie dotychczasowych testów, które oczekują trybu klawiatury (InputMode.Keyboard). Aby naprawić testy, których dotyczy problem, przekażComposeUiTestConfig(inputMode = InputMode.Keyboard)w sposób jawny i usuń wszelkie ręczne ustawienia trybów wprowadzania. Możesz też ustawić wartośćAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false, aby tymczasowo wyłączyć ustawianie domyślnego trybu wprowadzania na początku każdego testu i zachować starsze działanie podczas migracji testów. Ten flag zostanie w przyszłości usunięty, więc jeśli tylko niewielka liczba testów zakończy się niepowodzeniem, zalecamy bezpośrednie rozwiązanie problemu przez zmianę konfiguracji testów. (Idfb86, b/504195741) - Wywołania funkcji
createComposeRuleicreateAndroidComposeRulebez argumentów (np.createComposeRule()lubcreateAndroidComposeRule<MyActivity>()) używają teraz domyślnego parametruComposeUiTestConfig, który ustawia początkowy tryb wprowadzania naInputMode.Touchna początku każdego testu. Dzięki temu urządzenie jest w czystym stanie, a poprzednie zmiany trybu wprowadzania nie wpływają na kolejne testy. Ten nowy domyślny tryb dotykowy może jednak spowodować niepowodzenie dotychczasowych testów, które oczekują trybu klawiatury (InputMode.Keyboard). Aby naprawić testy, których dotyczy problem, przekażComposeUiTestConfig(inputMode = InputMode.Keyboard)jawnie i usuń wszelką logikę ręcznej konfiguracji trybów wprowadzania. Możesz też ustawić wartośćAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false, aby tymczasowo wyłączyć ustawianie domyślnego trybu wprowadzania na początku każdego testu i zachować starsze działanie podczas migracji testów. Ten flag zostanie w przyszłości usunięty, więc jeśli tylko niewielka liczba testów zakończy się niepowodzeniem, zalecamy bezpośrednie rozwiązanie problemu przez zmianę konfiguracji testów. (Idc4dd, b/267253920, b/504195741) - Dodano adnotacje do pustych metod bazowych, które można zastąpić w Compose, za pomocą symbolu
@EmptySuper, aby wskazać, że zastępujące implementacje nie powinny wywoływać super. (Id407b) ExposedDropdownMenujest teraz funkcją rozszerzenia wExposedDropdownMenuBoxScope, a nie elementem członkowskim. Może być konieczne zaktualizowanie kodu za pomocą nowego importu. (Ie8a65, b/356452026)- Dodaliśmy właściwości
blurBehindRadius,backgroundBlurRadius,scrimAlphaiwindowShapedo elementuDialogProperties, a także właściwościblurBehindRadiusiscrimAlphado elementuPopupProperties. Deweloperzy mogą teraz konfigurować rozmycie tła, rozmycie okna i krycie zasłony bezpośrednio w przypadku okien dialogowych i wyskakujących. UstawieniewindowShapeumożliwia przycinanie rozmycia tła okna dialogowego do zaokrąglonych rogów. (I5d437) - Usunięto flagę funkcji – przyciski tworzenia zachowują teraz prawidłowo fokus ułatwień dostępu i nie migają, gdy aktywna jest funkcja eksplorowania przez dotyk, ponieważ zdarzenia najechania są prawidłowo oznaczane jako obsłużone. (Ib1c80)
- Dodano przeciążenia scalania do
FontVariation.Settings, aby scalić inne kolekcje ustawień lub zastąpić ustawienia w wierszu. (I6340c) - Udostępniliśmy właściwość
variationSettingsw interfejsie Font, która domyślnie przyjmuje nową wartośćFontVariation.Empty. Zoptymalizowano konstruktorFontVariation.Settingsvararg, aby używaćasList()i uniknąć przydzielania kopii tablicy. (I9c22f) - Zaktualizowaliśmy właściwość
NestedScrollDispatcher.coroutineScope, aby bezpiecznie zwracać anulowaną wartośćCoroutineScope, gdy jest ona niepowiązana lub odłączona. (I9b112, b/535290281) - Wycofano przeciążenia funkcji
runComposeUiTest,runAndroidComposeUiTestiAndroidComposeUiTestEnvironment, które przyjmują poszczególne parametryeffectContext,runTestContextitestTimeout. Użyj przeciążeń akceptującychComposeUiTestConfiglub przeciążeń bez parametrów, które używają domyślnegoComposeUiTestConfig. Pamiętaj, że domyślny znakComposeUiTestConfigustawia początkowy tryb wprowadzania naInputMode.Touchna początku każdego testu. Może to spowodować niepowodzenie dotychczasowych testów, które oczekują trybu klawiatury (InputMode.Keyboard). Aby naprawić testy, których dotyczy ten problem, przekaż wartośćComposeUiTestConfig(inputMode = InputMode.Keyboard)i usuń wszelkie ręczne ustawienia trybów wprowadzania. Możesz też ustawić wartośćAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false, aby tymczasowo wyłączyć ustawianie domyślnego trybu wprowadzania na początku każdego testu i zachować starsze działanie podczas migracji testów. Ten flag zostanie w przyszłości usunięty, więc jeśli tylko niewielka liczba testów zakończy się niepowodzeniem, zalecamy bezpośrednie rozwiązanie problemu przez zmianę konfiguracji testów. (Ia6d55, b/504195741) - Wywołania funkcji
runComposeUiTest,runAndroidComposeUiTestiAndroidComposeUiTestEnvironmentz samą tylko lambdą końcową używają teraz domyślnej funkcjiComposeUiTestConfig, która ustawia początkowy tryb wprowadzania naInputMode.Touchna początku każdego testu. Dzięki temu urządzenie jest w czystym stanie, a poprzednie zmiany trybu wprowadzania nie wpływają na kolejne testy. Ten nowy domyślny tryb dotykowy może jednak spowodować niepowodzenie dotychczasowych testów, które oczekują trybu klawiatury (InputMode.Keyboard). Aby naprawić testy, których dotyczy problem, przekażComposeUiTestConfig(inputMode = InputMode.Keyboard)jawnie i usuń wszelką logikę ręcznej konfiguracji trybów wprowadzania. Możesz też ustawić wartośćAndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false, aby tymczasowo wyłączyć ustawianie domyślnego trybu wprowadzania na początku każdego testu i zachować starsze działanie podczas migracji testów. Ten flag zostanie w przyszłości usunięty, więc jeśli tylko niewielka liczba testów zakończy się niepowodzeniem, zalecamy bezpośrednie rozwiązanie problemu przez zmianę konfiguracji testów. (I8c85d, b/504195741) - Dodano @
CheckResultdo funkcjiSemanticsNodeInteraction.isDisplayed() iisNotDisplayed(), aby zapewnić potwierdzenie ich wartości zwracanych, co zapobiega cichym błędom testów, gdy deweloperzy omyłkowo używają ich zamiast interfejsów API do potwierdzania. (I1b447, b/508178494) - Flaga
AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabledspowoduje, żeViewGroupzawierającyAndroidViewzostanie utworzony tylko wtedy, gdy zostanie dodanyAndroidView, aby zwiększyć skutecznośćComposeView, które nie mająAndroidView. Gdy flaga jest wyłączona, zawierający elementViewGroupjest tworzony i dołączany, gdy elementComposeViewjest dołączany do okna. (I306a3, b/524283041) - Wprowadzenie
coroutineScopeOrNull()wNestedScrollDispatcher, alternatywnego interfejsu API do uzyskiwania dostępu do zakresu nadrzędnej współprogramu wysyłającego. (I18c0f) - Zmień
clearCallbacksnarunAndClearCallbacks, aby mieć pewność, że działania czyszczące są zawsze wykonywane. (If4720, b/526700075) - Nazwa
ComposeTestConfigzostała zmieniona naComposeUiTestConfig, a sam element został przeniesiony z pakietu v2 do pakietu nadrzędnegoandroidx.compose.ui.test. (I1d2a1, b/504195741) - Dodano parametr
timeoutMillis(domyślnie 2000 ms) do funkcjiSemanticsNodeInteraction.captureToImage(), aby umożliwić skonfigurowanie niestandardowego limitu czasu podczas oczekiwania na ponowne rysowanie. (Ib7d62, b/249501063) - Dodaje informacje historyczne do zmian danych wejściowych wskaźnika pośredniego (Ie62d2, b/526961645)
- Dodano nową właściwość semantyczną
hintText, która reprezentuje tekst podpowiedzi w polach tekstowych, co poprawia obsługę ułatwień dostępu dzięki mapowaniu naAccessibilityNodeInfo.hintText(Ib65da, b/448376876) - Zoptymalizowana rozdzielczość
CompositionLocaldzięki dynamicznemu rozwiązywaniu problemów zLocalOwneriLocalAndroidComposeViewna żądanie, co można przełączać za pomocąComposeUiFlags.isMinimalistLocalsEnabled. (I2bf6d) androidx.benchmarkma terazminSdkna poziomie 24. (Ic2a85)- Dodano eksperymentalną flagę
isPropagateHideFromAccessibilityToMergingChildrenEnableddoAndroidComposeUiFlags, aby kontrolować propagacjęhideFromAccessibilitydo scalania elementów podrzędnych. (Ie41ff, b/483506400) - Promowanie interfejsów API
ComposeUiTesti powiązanych interfejsów API do testowania (w tym wariantówComposeTestRuleiwaitUntil) z wersji eksperymentalnej do stabilnej. (Iaec77, b/471148519, b/485124363) - Naprawiono kolejność nawigacji
TalkBackw scalonych grupach przechodzenia. W razie potrzeby tę zmianę można cofnąć, wyłączającAndroidComposeUiFlags.isTraversalGroupSortingEnabled. (I5ae09, b/285043826) - Usuwa eksperymentalną, nieaktualną funkcję pomocniczą
IndirectPointerEvent. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467) - Zastąp eksperymentalny interfejs @AnimationToolingApi interfejsem @RestrictTo API, który zapewnia ściślejsze śledzenie. (Ia4fd1, b/524317805)
- Dodano selektor
onDescendants(), który umożliwia znajdowanie wszystkich węzłów semantycznych w poddrzewie danego węzła. (Id6b9b, b/444588117) - Wycofane interfejsy API
waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExistsiwaitUntilDoesNotExist, które nie akceptują wartościuseUnmergedTree. Dodano nowe przeciążenia, które akceptująuseUnmergedTree, aby obsługiwać oczekiwanie na węzły w niepołączonym drzewie semantycznym. (If675f, b/268432145) - Dodano parametr
tolerancedo asercji rozmiaru i pozycjiSemanticsNodeInteraction(assertWidthIsEqualTo,assertHeightIsEqualTo,assertTouchWidthIsEqualTo,assertTouchHeightIsEqualTo,assertPositionInRootIsEqualTo,assertTopPositionInRootIsEqualTo,assertLeftPositionInRootIsEqualTo), aby umożliwić deweloperom konfigurowanie progu porównania, co zwiększa niezawodność testów na różnych gęstościach ekranu. (I3a477, b/202752461) - Testowanie Compose obsługuje teraz synchronizację wątku głównego. Możesz teraz bezpiecznie wywoływać interfejsy API synchronizacji (takie jak
waitForIdle() irunOnIdle()) oraz wykonywać asercje lub działania Compose bezpośrednio w wywołaniach zwrotnych wątku interfejsu lub głównego. (I0247a, b/498478569) - Wprowadziliśmy nowy model konfiguracji (
ComposeTestConfig) interfejsów API testów Compose, aby uprościć zarządzanie parametrami i zwiększyć skalowalność. Dodano obsługę konfigurowania trybu wprowadzania (dotykowy/klawiatura) bezpośrednio za pomocąComposeTestConfig, co zapewnia automatyczną konfigurację i resetowanie, aby zapobiec niestabilności testów z powodu wycieku stanu. Dodaliśmy nowe przeciążenia funkcjirun*ComposeUiTesticreate*ComposeRule, które akceptują obiektComposeTestConfig. (Ia3da9, b/267253920, b/504195741) - Naprawiono błąd w podglądzie Compose podczas używania
PreviewParameterProviderz właściwościami zapytania o media (Posture,PointerPrecisionitp.) poprzez zmianę ich podstawowej reprezentacji zStringnaInt. (Ic8f92, b/489939558) - Dodano parametr
includeInputTextdohasTextExactlyiassertTextEquals, aby umożliwić dokładne dopasowywanie surowego tekstu wejściowego wraz z tekstem wizualnym. (Iee329, b/519026043)
Poprawki błędów
- Zoptymalizowany
SaveableStateRegistry.performSave(), aby zapobiegaćHashMapalokacjom. Wewnętrznie korzysta z funkcjiScatterMap. (I7d510) - Wypełnione kolory tekstu w klasie AccessibilityNodeInfo.ExtraRenderingInfo dla komponentów tekstowych. (I11c94, b/518049030)
- Rozwiązaliśmy problem polegający na tym, że dostęp do
NestedScrollDispatcher.coroutineScopeOrNullpodczas odłączania węzła układu powodował zgłoszenieIllegalStateExceptionzamiast zwrócenianull. (I55634, b/533444810) - Zoptymalizowana inicjalizacja na poziomie pliku właściwości klasy wartości najwyższego poziomu
compose:uiza pomocą dynamicznych funkcji pobierających. (I34184) - Zoptymalizowane inicjowanie obiektów towarzyszących klas wartości
ui-unit(TextUnit) za pomocą dynamicznych funkcji pobierających. (If4a99) - Zoptymalizowano inicjowanie obiektów towarzyszących o wartości
ui-graphicsw klasach (BlendMode,Coloritp.) przez użycie dynamicznych funkcji pobierających. (Iaa86a) - Zoptymalizowana inicjalizacja obiektu towarzyszącego klas wartości
compose:ui:ui(Key,CompositingStrategyitp.) za pomocą dynamicznych getterów. (I1a340) - Zoptymalizowana inicjalizacja obiektu towarzyszącego klas wartości tekstowych
compose:ui(TextAlign,TextOverflow,ImeActionitp.) za pomocą dynamicznych getterów. (I776e0) - Zoptymalizowano inicjowanie obiektu towarzyszącego
compose:uiklas narzędzi i wartości testowych (AnimatedVisibilityState,MouseButton,ScrollWheel) przez użycie dynamicznych funkcji pobierających. (I23e1b) - Zoptymalizowana inicjalizacja obiektu towarzyszącego klas wartości jednostkowych
compose:ui(Dp,DpOffset,TextUnitTypeitp.) za pomocą dynamicznych getterów. (If5eb5) - Zoptymalizowano inicjowanie obiektów towarzyszących klas wartości geometrycznych
compose:ui(Offset,Size,CornerRadius) przez użycie dynamicznych getterów. (I3b110) - Zoptymalizowano inicjowanie obiektu towarzyszącego klas wartości
compose:ui(Role,FocusDirection,PointerEventTypeitp.) za pomocą dynamicznych funkcji pobierających. (Ie35dd) - Prawidłowo obsługuj elementy
BaselineShift.NoneiBaselineShift.UnspecifiedorazBaselineShift(0f), aby uniknąć niepotrzebnych wolnych przebiegów układu. (I4350c) - Rozwiązaliśmy problem, w którym wartości Dp zawierające ujemne zero (–0,0) zachowywały się inaczej w porównaniach lub sprawdzaniu równości niż wartości zmiennoprzecinkowe. (I7dbcf, b/525506543)
- Czyszczenie informacji o interfejsie API (Ia8066)
Wkład zewnętrzny
- Interfejsy
Alignment.topRatio,Trim.isTrimFirstLineTop()iTrim.isTrimLastLineBottom()są teraz publiczne (I84f62)
Wersja 1.12
Wersja 1.12.1
9 września 2026 r.
Publikacja androidx.compose.ui:ui-*:1.12.1 Wersja 1.12.1 zawiera te zmiany.
Wersja 1.12.0
12 sierpnia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.12.0 Wersja 1.12.0 zawiera te zmiany.
### Czcionki zmienne do pobrania i konfiguracja bez ustawień (ui-text-google-fonts)
• Czcionki zmienne i certyfikaty GMS bez konfiguracji.
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontVariation
import androidx.compose.ui.text.googlefonts.Font
import androidx.compose.ui.text.googlefonts.GoogleFont
val fontFamily = FontFamily(
Font(
googleFont = GoogleFont("Google Sans Flex"),
// Automatically uses default GMS certificates!
variationSettings = FontVariation.Settings(
FontVariation.weight(900),
FontVariation.slant(0f)
)
)
)
──────
### Obsługa szerokiej gamy kolorów (WCG) (ui-graphics)
Zachowywanie szerokiej gamy kolorów: * Przestrzenie kolorów inne niż sRGB (np. AdobeRgb, DisplayP3) ustawione w programie Paint lub Shader są zachowywane w przypadku interfejsu API w wersji 29 lub nowszej. * W przypadku starszych wersji interfejsu API przywracana jest przestrzeń sRGB.
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Paint
import androidx.compose.ui.graphics.colorspace.ColorSpaces
val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)
val paint = Paint().apply {
color = wcgColor // Preserved on API 29+
}
──────
### Sprzętowo akcelerowane gradienty siatkowe (ui)
• Interfejs Painter API: Modifier.meshGradient został zastąpiony przez MeshGradientPainter, który korzysta z akcelerowanej sprzętowo funkcji Canvas.drawMesh.
• Użycie: użyj MeshGradientPainter w funkcji Modifier.paint.
import androidx.compose.ui.draw.paint
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.MeshGradientPainter
val meshPainter = remember {
MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {
setVertex(0, 0, Offset(0f, 0f), Color.Red)
setVertex(0, 1, Offset(1f, 0f), Color.Blue)
setVertex(1, 0, Offset(0f, 1f), Color.Green)
setVertex(1, 1, Offset(1f, 1f), Color.Yellow)
}
}
Box(Modifier.fillMaxSize().paint(meshPainter))
──────
### 4. Integracja Credential Manager API (interfejs)
Autouzupełnianie: dodaje właściwość semantyczną niskiego poziomu credentialRequest dla pól tekstowych API 34+.
import androidx.compose.ui.semantics.credentialRequest
import androidx.compose.ui.semantics.CredentialRequestData
import androidx.compose.ui.semantics.semantics
BasicTextField(
value = value,
onValueChange = onValueChange,
modifier = Modifier.semantics {
if (Build.VERSION.SDK_INT >= 34) {
credentialRequest = CredentialRequestData(request, callback)
}
}
)
──────
### 5. Automatyczne dźwięki interakcji (ui)
Dźwięki kliknięcia i nawigacji: * Obsługa dźwięków kliknięcia i nawigacji zgodnych z Androidem za pomocą konfiguracji dźwięku platformy. * Rezygnacja: użyj otoczki SoundEffectOnInteraction, aby wyłączyć dźwięki w poddrzewie.
import androidx.compose.ui.platform.SoundEffectOnInteraction
// Opt-out of sounds for everything inside
SoundEffectOnInteraction(enabled = false) {
Button(onClick = {}) {
Text("Silent Button")
}
}
### 6. Integracja Espresso w przypadku hybrydowych interfejsów (ui-test)
Ograniczanie interakcji Compose do hierarchii widoków pasujących do Espresso ViewInteraction.
import androidx.compose.ui.test.junit4.onRootWithViewInteraction
import androidx.test.espresso.Espresso.onView
// Match RecyclerView row using Espresso
val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))
// Scope Compose interactions to that row
composeTestRule.onRootWithViewInteraction(specificRow)
.onNodeWithTag("fav_icon")
.performClick()
Wersja 1.12.0-rc01
29 lipca 2026 r.
Publikacja androidx.compose.ui:ui-*:1.12.0-rc01 Wersja 1.12.0-rc01 zawiera te zmiany.
Wersja 1.12.0-beta02
1 lipca 2026 r.
Publikacja androidx.compose.ui:ui-*:1.12.0-beta02 Wersja 1.12.0-beta02 zawiera te zmiany.
Wersja 1.12.0-beta01
17 czerwca 2026 r.
Publikacja androidx.compose.ui:ui-*:1.12.0-beta01 Wersja 1.12.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Nie dotyczy (przenoszenie wewnętrznej flagi funkcji dewelopera) (Iaf2c4, b/368702588)
- Nie dotyczy – przeniesiono flagę funkcji. (I24668, b/521811270)
- Dodano flagę funkcji eksperymentalnej
ComposeUiFlags.isTrackpadPinchReinterpretationEnabled, aby ponownie interpretować gesty uszczypnięcia na trackpadzie jako zdarzenia myszy ze współczynnikami skalowania. (Id3477, b/478053727) - Zmiana nazwy funkcji testowej do wywoływania zdarzeń wskaźnika pośredniego (I3ee35, b/509618414)
- Dodano optymalizację do
BasicTextiBasicTextField, gdzie ustawianie wysokości wiersza tekstu z softwrap=false jest teraz obliczane w bardziej optymalny sposób (I2150a).
Poprawki błędów
- Optymalizacja propagacji stanu przechwytywania przewijania w kompozycjach podrzędnych, aby zapobiec niepotrzebnemu ponownemu komponowaniu interfejsu. (I05830)
- Włączono flagę funkcji eksperymentalnej
ComposeUiFlags.isTrackpadPinchReinterpretationEnableddomyślnie. (I35ab8, b/478053727) - Rozwiązaliśmy problem z analizowaniem zasobów obiektów rysowalnych wektorowo, który powodował, że elementy nadrzędne
<clip-path>były ignorowane, jeśli zawierały zagnieżdżone elementy<group>. (Id4ea9, b/474530439) - Dodaliśmy obsługę standardowych reguł ponawiania testów JUnit 4 w
AndroidComposeTestRuleprzez ponowne generowanie wewnętrznego środowiska testowego i zakresu współprogramu między próbami wykonania. (Iafaa7, b/235383900)
Wkład zewnętrzny
- Udostępnienie interfejsu
AndroidClipboardna potrzeby testowania, aby umożliwić symulowanie implementacji schowka (Ie4d72, b/512924975) - Dodaj zgodność wsteczną dla
TextAttributewariantówcommitText()isetComposingText(). W przypadku SDK>=37 usługi ułatwień dostępu będą mogły ogłaszać, czy wybrano tekst zastępczy sugestii. W przypadku SDK<37 nie wpłynie to na odczytywanie informacji zwrotnych (czyli na dotychczasowe działanie). (I90e3d, b/439879822)
Wersja 1.12.0-alpha03
19 maja 2026 r.
Publikacja androidx.compose.ui:ui-*:1.12.0-alpha03 Wersja 1.12.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy nową
credentialRequestwłaściwość Semantics iCredentialRequestDatapomocnika w interfejsie API w wersji 34 lub nowszej, aby umożliwić polom tekstowym Jetpack Compose integrację z Credential Managerem na Androidzie za pomocą platformy autouzupełniania. (Ida2bf, b/488446455) - Dodano funkcję fabryczną
ParagraphIntrinsics, która przyjmuje m.in. argumentsoftWrap. Wewnętrznie możemy używać tego sygnału, aby określić, czy tekst jest renderowany jako jeden wiersz, i przeprowadzać określone optymalizacje. (I66ca4, b/485495112) - Dodano obsługę automatycznych dźwięków interakcji (kliknięć i nawigacji za pomocą fokusu) w komponentach Compose, a także nowy komponent
SoundEffectOnInteraction, który umożliwia rezygnację z tej funkcji. Pamiętaj, że w wyniku tej zmiany odbiorniki kliknięć semantycznych muszą być teraz wywoływane z wątku głównego, co może mieć wpływ na niewielką liczbę przypadków testowych. (I78f65) - Stabilizowana funkcja fabryczna
Font, która zajmujevariationSettings. (I183f2) - Stabilizacja właściwości
ResourceFontloadingStrategyi metodycopy. (I40d84) - Stabilne interfejsy API
InterceptPlatformTextInputiPlatformTextInputInterceptor. (Id2784) - Aby poprawić rozdzielenie platform, funkcje
registerIdlingResourceiunregisterIdlingResourcezostały przeniesione do funkcji rozszerzeń. Może być konieczne zaktualizowanie importów. (I21d3d, b/471148519) - Wprowadzono
runWithoutImplicitWaitdoComposeTestRuleiComposeUiTest, aby zwiększyć wydajność testu podczas sprawdzania stanu. Ten interfejs API umożliwia wykonanie bloku kodu z wyłączoną synchronizacją niejawną, co pozwala uniknąć obciążenia związanego z powtarzającą się synchronizacją w przypadku każdego zapytania o węzeł. Dzięki temu wykonanie testu jest znacznie szybsze, zwłaszcza w przypadku testów, które ręcznie przechodzą przez klatki i próbkują wiele właściwości, np. w testach animacji. (Ie00e9, b/490270394) - Adnotację
@PreviewWrappermożna teraz stosować do klas adnotacjiMultiPreview, co umożliwia deweloperom tworzenie wielokrotnego użytku wstępnie przygotowanych konfiguracji podglądu. (I8ae66, b/511170361) - Wprowadza
MeshGradientPainterdo renderowania gradientów siatkowych. UsuniętoModifier.meshGradient. Zamiast niego używajMeshGradientPainterzModifier.paint.MeshGradientRendererjest teraz wewnętrzny. (I2d170, b/508110246) - Reguły można teraz udostępniać indywidualnie, podając funkcję lambda, która określa, czy reguła może być udostępniona, oraz osobną funkcję lambda, która podaje wartość reguły. Funkcja lambda
isRulerProvidednie jest obserwowana i powinna być optymistyczna w kwestii możliwości podania wartości. Obserwujemy funkcję lambdarulerProvider, więc jeśli jakakolwiek wartość się zmieni, zaktualizuje ona wartość linijki i wszystkie jej odczyty. (Ie9089) - W eksperymentalnym interfejsie Style API dodano obsługę tworzenia niestandardowych typów stylów, które mogą mieć niestandardowe zakresy stylów. Umożliwia to tworzenie podzbiorów właściwości, które można ustawić za pomocą stylu (np. całkowite usunięcie warstwy graficznej lub właściwości tekstu), a także rozszerzanie zakresu niezależnie od innych stylów (np. obsługiwanie tylko składni
playing { }w komponowalnymMediaPlayer). Ta zmiana powoduje naruszenie zgodności binarnej i zgodności kodu źródłowego. Główną zmianą, która powoduje utratę zgodności ze źródłem, jest przeniesienie funkcji pomocniczych wStyleScopedo funkcji rozszerzających (np.fun contentProperty(all: Dp)jest teraz funkcją rozszerzającą). Aby kod wywołujący te metody został prawidłowo skompilowany, wystarczy zaimportować wymagane funkcje rozszerzenia lub wszystkie symbole z androidx.compose.foundation.styles. (I1ef27, b/493676648) - Dodaje
updatePointerBy()z argumentem domyślnym dla identyfikatora wskaźnika. (I99f30, b/502001776) DeferredTargetAnimationnie jest już eksperymentalne, usuń zgodę na korzystanie z tej funkcji”.- Dodano flagę
isClearNestedScrollCoroutineScopeFixEnabled, aby kontrolować poprawkę. (Ibd394, b/505343254) DeferredTargetAnimationnie jest już eksperymentalną funkcją. Zrezygnuj z niej. (I1e4ae, b/500030165)- Nowy typ wyliczeniowy do obsługi wyzwalaczy w narzędziach interfejsu (I6e198, b/478807872)
ComposeViewContextmożna utworzyć bez dołączonego widoku referencyjnego. Nadal wymaga to dołączenia widoku odniesienia przed wywołaniem funkcjisetContent(). (Id0952)
Poprawki błędów
- Rozwiązuje problem z nieprawidłowym przywracaniem fokusu
focusRestorer, gdy w przypadku tego samego układu występuje wiele wywołań zapisywania (I10277, b/505371994). - Poprzednie ulepszenie skuteczności spowodowało, że nie można było mierzyć niepowiązanych
ComposeViews. Ta zmiana umożliwia teraz takie działanie bez ponownego wprowadzania problemu ze skutecznością. (I9b2c5, b/508650647) - Kompozycja jest teraz odtwarzana po
ComposeViewContextzmianie, aby zapewnić szybszy dostęp doComposeViewContext. (I3b3a8, b/487364963) - Zezwalaj na ustawianie w Compose kolorów innych niż sRGB w przypadku obiektu Paint i cieniowania na Androidzie, zachowując szeroką gamę kolorów dzięki prawidłowemu mapowaniu przestrzeni kolorów Compose na odpowiedniki platformy. Przestrzenie kolorów nieobsługiwane w przypadku operacji renderowania na platformie (np. CIE XYZ, CIE Lab, OkLab) lub niedostępne na bieżącym poziomie interfejsu API zostaną bezpiecznie zastąpione przestrzenią kolorów sRGB. (I3efb5, b/388511109)
Wkład zewnętrzny
androidx.compose.ui.platform.NativeClipboardtypealias został wycofany. Zamiast niego używaj bezpośrednioandroid.content.ClipboardManager(Ibc611)- Zastąp właściwość
Clipboard.nativeClipboardrozszerzeniemClipboard.nativeClipboardManager, aby uniknąć ujawniania typu platformy wcommonMainsourceset za pomocątypealias(Ibc611)
Wersja 1.12.0-alpha02
6 maja 2026 r.
Publikacja androidx.compose.ui:ui-*:1.12.0-alpha02 Wersja 1.12.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadza
MeshGradientModifier. (Ia9a08, b/455752719) - Usuwa wbudowane wywołania zwrotne rejestrowania debugowania autouzupełniania. Tę samą funkcję można uzyskać, logując się z
AutofillManager.AutofillCallback. (I631c7, b/502279690) - Obsługa ustawień wariacji w przypadku czcionek do pobrania (Ic25c7, b/496278020)
- Zaktualizowano funkcje
mediaQueryiderivedMediaQuery, aby zwracały typ ogólny zamiastBoolean, co umożliwia bardziej elastyczne korzystanie z nich podczas tworzenia adaptacyjnych interfejsów. (I93830, b/498698350)
Wersja 1.12.0-alpha01
22 kwietnia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.12.0-alpha01 Wersja 1.12.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Usuwa flagę funkcji
ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled(I82be3, b/455601135) - Funkcja
mediaQueryzostała przekształcona w funkcję wbudowaną (Ie9457, b/498698350) ComposeViewContextwyszedł z fazy eksperymentalnej i usunięto adnotacjęExperimentalComposeViewContextApi(I32eca)ComposeView.disableWindowInsetsRulers()nie jest już eksperymentalny (Ia81a5)- Dodano interfejs
hasPendingWork()API, który umożliwia pasywne sprawdzanie, czy interfejs Compose UI ma obecnie oczekujące zadania, bez wywoływania oczekiwania ani przesuwania zegara. Jest to przydatne w przypadku ręcznych testów zegara, które pozwalają określić, kiedy animacje lub inne działania w tle zostały zakończone. (Ic54e3) - Usunięto flagę funkcji
AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled(I7fd25, b/491111451) - Usunięto flagę funkcji
AndroidComposeUiFlags.isSharedFontEnabled(I2cebe, b/479898293) - Dodaje kolejne
KeyboardTypeopcje, aby uzupełnić zestaw obsługiwanych opcji klawiatury na Androidzie, w tym datę, godzinę, datę i godzinę, liczbę dziesiętną ze znakiem i inne. (I3713e, b/202353328) - Usunięto flagę
AndroidComposeUiFlags.isSharedHapticsEnabled(I6a1d4, b/479895628) - Usunięto flagę
AndroidComposeUiFlags.isSharedClipboardManagerEnabled(I41e3c, b/479895130) - Usunięto flagę
AndroidComposeUiFlags.isSharedViewConfigurationEnabled(I6d3aa, b/479890645) - Usunięto flagę funkcji
AndroidComposeUiFlags.isSharedDrawingEnabled. (I27912, b/479849019) - Usunięto flagę funkcji
AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled(I6b726, b/479845566) - Usuwanie flagi
AndroidComposeUiFlags.isSharedWindowInfoEnabled(Ife9a9, b/479837249) - Usuń flagę
AndroidComposeUiFlags.isSharedComposeViewContextEnabled. (Ic522a, b/479834257) - Dodawanie ustawień wariacji w celu dostosowywania czcionek zmiennych do pobrania (Ifdc93, b/223262013)
- Dodawanie ustawień wariacji w celu dostosowywania czcionek zmiennych do pobrania (I390af, b/223262013)
- Usuwanie flagi
isTraversableDelegatesFixEnabled(Ia7dfe, b/485962494) - Wprowadziliśmy funkcję
runWhenIdlei jej wariant zawieszającyawaitAndRunWhenIdlew przypadku funkcjiComposeTestRuleiComposeUiTest, aby poprawić wydajność testów i stabilność stanu. Te interfejsy API synchronizują interfejs użytkownika tylko raz, a następnie wykonują blok kodu bez obciążenia związanego z powtarzającymi się synchronizacjami dla każdej operacji. Dzięki temu testy są wykonywane znacznie szybciej i są mniej podatne na błędy, zwłaszcza w przypadku testów, które sprawdzają wiele właściwości, np. w testach animacji. (Iabf66, b/490270394) - Dodaje
LayerOutsetsdoGraphicsLayeriModifier.graphicsLayer, co może zwiększyć wizualne granice warstwy poza jej zmierzony rozmiar. Można tego użyć, aby uniknąć domyślnego zachowaniaclipToBounds, gdy warstwa jest promowana do bufora poza ekranem. (Ic1189) - Domyślnie wyłączono rejestrowanie zdarzeń wejściowych autouzupełniania. Można je teraz włączyć, dzwoniąc pod numer
ComposeView.setAutofillDebugEnabled. (I5b430, b/487947860) - Zmieniono klasę VelocityTracker, aby korzystała z implementacji dostarczonej przez Android Framework (można ją skonfigurować za pomocą parametru
AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2, b/359962905) - Gdy wartość
AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabledto „prawda”, widoki podrzędne zawsze będą miały układ wywoływany po pomiarze podczas przekazywania układu. Funkcja Compose nie zawsze układa element podrzędny po pomiarze, ale widoki wymagają tego do prawidłowego zarządzania stanem. (Ib4fe9, b/430974758) - Dodawanie
isVirtualdoLayoutInfo(I3e5cd, b/494243978) - Usunięto flagę
isGraphicsLayerShapeSemanticsEnabled. (I44be0, b/455600081) - Dodaliśmy nowy interfejs Font API, który umożliwia pobieranie czcionek bez ręcznego dodawania certyfikatów czcionek do bazy kodu. (I30b86, b/479454159)
- Dodano
onRootWithViewInteraction, aby ograniczyć zakres wyszukiwania semantycznego w Compose do konkretnych widoków Androida . Upraszcza to testowanie hybrydowych interfejsów, takich jakRecyclerViews, bez konieczności stosowania unikalnych tagów testowych w kodzie produkcyjnym . (Ic02c4, b/175226753)
Poprawki błędów
- Interfejs
captureToImage()API umożliwia teraz przechwytywanie wyskakującego okienka lub okna dialogowego wraz z jego elementem zakotwiczającym w postaci pojedynczej mapy bitowej. (I9b83a, b/443137545) - Zaktualizowano Compose
compileSdkdo interfejsu API 37. Oznacza to, że podczas korzystania z Compose wymagana jest minimalna wersja AGP 9.2.0. (Id45cd, b/413674743) - Ustawienie
ContentDataType.Nonew semantyce zapobiega teraz wysyłaniu zdarzeń autouzupełniania przez Compose. Powinno to zapobiec kosztom inicjowania związanym z żądaniem usług autouzupełniania. (I8fbda, b/487947860)
Wersja 1.11
Wersja 1.11.4
1 lipca 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.4 Wersja 1.11.4 zawiera te zmiany.
Wersja 1.11.3
17 czerwca 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.3 Wersja 1.11.3 zawiera te zmiany.
Wersja 1.11.2
19 maja 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.2 Wersja 1.11.2 zawiera te zmiany.
Wersja 1.11.1
6 maja 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.1 Wersja 1.11.1 zawiera te zmiany.
Wersja 1.11.0
22 kwietnia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.0 Wersja 1.11.0 zawiera te zmiany.
Wersja 1.11.0-rc01
8 kwietnia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.0-rc01 Wersja 1.11.0-rc01 zawiera te zmiany.
Wersja 1.11.0-beta02
25 marca 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.0-beta02 Wersja 1.11.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Zmiana nazwy interfejsu API
PreviewWrapperw celu zachowania spójności (I62659, b/490085948) ComposeViewContextumożliwia tworzenieComposeViewbez dołączania do hierarchii widoków. UżyjAbstractComposeView.createComposition(composeViewContext), aby rozpocząć pisanie bez dołączaniaComposeView. (I46e6f)- Dodano
delayMillisdo interfejsów API testowania trackpada na potrzebypanEndiscaleEnd(If80fe).
Poprawki błędów
ClipboardiClipboardManagerwysyłają teraz żądanie do usługi systemowej przy pierwszym wywołaniu metody (If0016, b/487947860).- Tryb pełnej koncentracji zostanie prawidłowo przywrócony w kontenerach leniwych, w których węzły i grupy koncentracji są ponownie używane (I18d36, b/481564275).
- Wyskakujące okienko z
clippingEnabled = falseprawidłowo wykorzystuje teraz pełne granice okna do wyświetlania od krawędzi do krawędzi (I206408, b/327017902).
Wersja 1.11.0-beta01
11 marca 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.0-beta01 Wersja 1.11.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy obsługę niestandardowych
windowTokenw oknie Jetpack Compose Dialog (Ic7728) - Dodaliśmy obsługę niestandardowych elementów
windowTokeniwindowTypew wyskakujących okienkach Jetpack Compose. (I0a04f) - Przedstaw interfejs
PreviewWrapperi dostawcę adnotacji. Dzięki temu deweloperzy będą mogli bezproblemowo dodawać do podglądów niestandardowe zachowania. (I29f54, b/484306729) - Gdy wartość
AndroidComposeUiFlags.isSharedFontEnabledto „true”, instancje obiektów związane z czcionką, takie jakFontLoaderiFontFamilyResolver, mogą być udostępniane w instancjachComposeVieww ramachComposeViewContext. (I403e8) - Procesory semantyczne Compose będą używać view.handler zamiast
mainLooper, co pozwoli uniknąć awarii w widokach, które używają innych niż główne modułów obsługi. (I671c3, b/486235925) - Dodano flagę
isSkipNonImportantSemanticsNodesHitTestEnabled, która chroni poprawkę błędu w testowaniu semantycznym, co wpływa na funkcjęTalkBack„dotknij, aby eksplorować”. (I2933f, b/481011169, b/454377558, b/461360154) - Dodaliśmy obsługę wyświetlania okien dialogowych Jetpack Compose z usług Androida. Dzięki podaniu niestandardowego typu okna za pomocą nowego parametru
windowTypewDialogPropertiesdeweloperzy mogą teraz wyświetlać okna dialogowe w oknach nakładkowych. (I7c504, b/478214962) - Zmienia nazwy właściwości
PointerInputChangeiHistoricalChange, aby pobierać wartości skalowania i przesuwania. (I989a8, b/481333653) - Dodaje więcej funkcji do interfejsów API testowania trackpada, aby symulować różne krzywe i dane wejściowe dla gestu na trackpadzie. (I290fb, b/473603145, b/479213358)
- Dzieli nowy identyfikator
PointerEventType.PannaPointerEventType.PanStart,PointerEventType.PanMoveiPointerEventType.PanEnd. PodobniePointerEventType.Scalejest podzielona naPointerEventType.ScaleStart,PointerEventType.ScaleChangeiPointerEventType.ScaleEnd. Ten podział umożliwia przekazywanie dodatkowych informacji o początku i końcu gestów przesuwania i skalowania interpretowanych przez platformę. Dzięki temu moduły obsługi danych wejściowych wskaźnika w Compose mogą używać tych informacji do prawidłowego wykrywania zdarzeń, a zwłaszcza do rozpoznawania, kiedy przesuwanie lub skalowanie się kończy. (I4daf6, b/479285849, b/481333653) - Gdy
AndroidComposeUiFlags.isSharedHapticsEnabledma wartość true,ComposeViewContextzawiera instancję kontrolera haptycznego. (Icd79a) - Wprowadziliśmy eksperymentalne interfejsy API
mediaQuery,derivedMediaQueryiUiMediaScope(oznaczone jako@ExperimentalMediaQueryApi), które umożliwiają deklaratywne tworzenie adaptacyjnego interfejsu na podstawie wymiarów okna, jego orientacji oraz innych funkcji urządzenia i środowiska. (I2d21e, b/479800750)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że elementy
Modifier.dropShadowiModifier.innerShadowo zakresie bloku nie były ponownie rysowane, gdy parametr Kształt był dynamicznie zmieniany. (Ida262, b/486202623) - Naprawiliśmy błąd, który powodował, że treści wstawiane w tekście były nieprawidłowo umieszczane w układach od prawej do lewej z tekstem od lewej do prawej lub w układach od lewej do prawej z tekstem od prawej do lewej. (I09789)
- Rozwiązaliśmy problem, który powodował, że w przypadku użycia znaku
ComposeVieww przejściu fragmentu zgłaszany był wyjątek. (Ia425f, b/484100557)
Wkład zewnętrzny
- Dodaj właściwość
InputTextSuggestionState, aby ułatwić identyfikowanie różnych stanów, w jakich może znajdować się dane wejściowe transliteracji, gdy dostępne są sugestie zastąpienia tekstu. Wprowadza też znakTextCompositionRange, który śledzi zakres bieżącego tekstu transliteracji; wartość null oznacza brak kompozycji. (I7a67f, b/476472318)
Wersja 1.11.0-alpha06
25 lutego 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.0-alpha06 Wersja 1.11.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Flaga
ComposeUiFlags.areWindowInsetsRulersEnabledzostała zastąpiona interfejsemComposeView.disableWindowInsetsRulers()API. (Idcdb4, b/455590696) - Przeniesiono eksperymentalną flagę funkcji dostępną tylko na Androidzie
isAccessibilityShowOnScreenNestedScrollingEnableddo (I1c13a) - Dodanie obsługi wchodzenia po schodach (I1c13a)
- Zgłaszanie semantycznych węzłów poza ekranem, które są elementami podrzędnymi częściowo widocznych węzłów scalania w kontenerach z możliwością przewijania, aby poprawić komfort korzystania z czytników ekranu i podobnych usług ułatwień dostępu (I71df9, b/434782764)
- Gdy
AndroidComposeUiFlags.isSharedClipboardManagerEnabledma wartość „prawda”, instancje związane ze schowkiem można udostępniać wComposeViewsza pomocąComposeViewContext(I65e2c). - Usunięto
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled(I6e14a, b/455601894)
Wersja 1.11.0-alpha05
11 lutego 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.0-alpha05 Wersja 1.11.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Usługa
AndroidComposeUiFlags.isSharedWindowInfoEnabledprzeniesie informacjeWindowInfodoComposeViewContext. Wyłączenie flagi pozostawiaWindowInfopod kontroląAndroidComposeView(I3b364) - Typowe struktury w
ComposeViewzostaną przeniesione na dysk współdzielonyComposeViewContext. To pierwsza zmiana, która przenosiCoroutineContextdoComposeViewContext. GdyAndroidComposeUiFlags.isSharedComposeViewContextEnabledma wartość true, wartości są udostępniane automatycznie. Jeśli ma wartość „fałsz”, nie są one udostępniane. (I9364d, b/461566955) - Dodaje obsługę gestów na trackpadzie i konwersję zdarzeń wejściowych z trackpada na mysz. Dzięki tej zmianie zdarzenia wskaźnika na trackpadzie, które sterują kursorem, np. na tabletach lub laptopach, będą zwykle zgłaszane jako wskaźniki myszy, co poprawia działanie w przypadku odchylenia wskaźnika, przewijania i najeżdżania kursorem. Gesty przesuwania i skalowania będą też zgłaszane z dodatkowymi informacjami dostępnymi w zmianach zdarzenia wskaźnika. Nowe wartości PointerEventType.Pan i PointerEventType.Scale będą wskazywać, że te wartości zostaną ustawione (Id071a, b/315527861, b/459831570).
Poprawki błędów
- Wyślij
CONTENT_CHANGE_TYPE_CHECKEDw przypadku zmiany właściwości, którą można włączać i wyłączać. (I6ac64, b/476894689, b/474538004, b/475754416)
Wkład zewnętrzny
androidx.compose.ui.graphics.NativePainttypealias został wycofany. Zamiast niego używaj bezpośrednioandroid.graphics.Paint(I6303c, b/477394763)- Zastąp rozszerzenie
Paint.asFrameworkPaint()rozszerzeniemPaint.nativePaint, aby uniknąć ujawnienia typu platformy wcommonMainźródłach za pomocątypealias(I6303c, b/477394763). - Dodanie obsługi klawiszy ruchu
NumPad(I1ff12)
Wersja 1.11.0-alpha04
28 stycznia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.0-alpha04 Wersja 1.11.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Udostępniliśmy
TestCoroutineScheduler, aby umożliwić korzystanie zrunCurrent()i zapewnić dostęp do udostępnionej instancji harmonogramu. (Iea662, b/254115946) - Dodanie obsługi przewijania zagnieżdżonego w odpowiedzi na
android.R.id.accessibilityActionShowOnScreenz ułatwień dostępu. (Ib2723, b/431148846)
Poprawki błędów
- Poprawiono konwersję niestandardowej przestrzeni kolorów RGB na Androidzie. Niestandardowe przekształcenia w odcieniach szarości były nieprawidłowo konwertowane między niestandardowymi przestrzeniami kolorów Compose i Android RGB.(ebd45,b/377021410)
Wersja 1.11.0-alpha03
14 stycznia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.11.0-alpha03 Wersja 1.11.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto flagę
ComposeUiTestFlags.isStandardTestDispatcherSupportEnabled. Interfejsy API w wersji 2run*ComposeUiTesticreate*ComposeRuledomyślnie korzystają teraz zStandardTestDispatcher. Aby nadal korzystać zUnconfinedTestDispatcher, możesz używać wycofanych wariantów interfejsu API. Zdecydowanie zalecamy jednak przejście na interfejsy API w wersji 2, aby mieć większą kontrolę nad wykonywaniem współprogramów. (Iecc9c, b/455601592) - Wprowadziliśmy interfejsy API
androidx.compose.ui.test.junit4.v2.create*ComposeRule. Te nowe interfejsy API domyślnie używająStandardTestDispatcher, aby lepiej symulować zachowanie w środowisku produkcyjnym, w którym korutyny są kolejkowane, a nie wykonywane natychmiast. Więcej informacji znajdziesz w wytycznych dotyczących migracji. (I1870e, b/254115946) - Wprowadziliśmy interfejsy API
androidx.compose.ui.test.v2.run*ComposeUiTest. Te nowe interfejsy API domyślnie używająStandardTestDispatcher, aby lepiej symulować zachowanie w środowisku produkcyjnym, w którym korutyny są kolejkowane, a nie wykonywane natychmiast. Więcej informacji znajdziesz w wytycznych dotyczących migracji. (I4f782, b/254115946) - Możesz teraz udostępniać typowe struktury w
ComposeView. GdyComposeUiFlags.isSharedComposeViewContextEnabledma wartość true, wartości są udostępniane automatycznie. Jeśli ma wartość Fałsz, nie są one udostępniane. (I0d1b4, b/463540495, b/460468959, b/461503366, b/463641813)
Poprawki błędów
- Naprawiono błąd, który powodował, że usunięcie wszystkich treści z
ComposeViewnie powodowało usunięcia narysowanych treści. (I8b382, b/299503084) - Naprawiliśmy awarię kompozycji z możliwością wstrzymania, która występowała podczas animowania za pomocą funkcji
LookaheadScope. (I7e649, b/469669851) - Rozwiązaliśmy problem, w wyniku którego przesyłanie zbyt długich ciągów znaków do usługi autouzupełniania powodowało awarię. Aby temu zapobiec, tekst jest teraz automatycznie skracany do prawidłowej długości przed wysłaniem.
- Usunięto błąd, który w bardzo specyficznych warunkach mógł powodować kliknięcie po najechaniu kursorem na element i jego opuszczeniu (a3d5a0f).
- Poprawia wysyłanie zdarzeń najechania rysikiem w przypadku testów i przygotowuje testy myszy do nowych testów rysika. (9ca9bc9)
- Dodaje obsługę umieszczania i usuwania elementów interfejsu za pomocą wskaźnika. (d0742b0, b/BUD_ID)
- Naprawiliśmy błąd w Jetpack Compose
Popup, który powodował przekazywanie bezwzględnych współrzędnych granic elementu zakotwiczonego doPopupPositionProvider, co prowadziło do nieprawidłowego umieszczania wyskakujących okien. Obliczenia pozycji wyskakującego okienka korzystają teraz z prawidłowych współrzędnych względnych.(1f7edf,b/469940907)
Wersja 1.11.0-alpha02
17 grudnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.11.0-alpha02 Wersja 1.11.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Interfejsy API
MultiModalInjectionScopesą już stabilne. Obejmuje to elementyperformKeyInputiperformRotaryScrollInputoraz powiązane z nimi interfejsy API klawiszy i pokrętła. Adnotacja eksperymentalna została usunięta. (Ie8bbc, b/261561237) - Dodaje interfejsy API do testowania trackpada. Są one podobne do interfejsów API do testowania myszy i wstrzykują zdarzenia, które naśladują działanie trackpada tabletu lub laptopa. Główne punkty wejścia to
SemanticsNodeInteraction.performTrackpadInputiMultiModalInjectionScope.trackpad(I2ce67), b/432326139.
Poprawki błędów
- Poprawia interoperacyjność danych wejściowych przewijania kółkiem myszy, aby były one wykorzystywane tylko wtedy, gdy są wykorzystywane w Compose, a nie wtedy, gdy są wysyłane w Compose. (I5e0c4),
Wersja 1.11.0-alpha01
3 grudnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.11.0-alpha01 Wersja 1.11.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Usuwa flagę interfejsu
isSemanticAutofillEnabled, ponieważ semantyczne autouzupełnianie zostało domyślnie włączone. (I849cf, b/455587954) - Zmieniliśmy sposób, w jaki metoda traversable find
findNearestAncestorwykrywa odpowiednie węzły. Teraz podczas przechodzenia będą widoczne delegaty tego samego typu (NodeKind). Zmiana jest chroniona przez flagęisTraversableDelegatesFixEnabled. (Ia3165, b/280804097) - Dodaj mapowanie
TextEntryKeydlaANI#isTextEntryKey(Ifde7b, b/399540654) Modifier.onFirstVisible()jest wycofany, ponieważ jego działanie jest mylące i nie zawsze jest zgodne z umową, którą sugeruje nazwa. Jeśli np. zostanie dodane do elementuLazyColumn, to wywołanie zwrotne będzie wywoływane za każdym razem, gdy ten element stanie się widoczny po przewinięciu. Nie jest to zgodne z oczekiwaniami użytkowników modyfikatora o tej nazwie. Zamiast tego zalecamy używanieModifier.onVisibilityChanged()i ręczne śledzenie, czy układ był już wcześniej widoczny, na podstawie wymagań konkretnego przypadku użycia. (Ia7095, b/447601783)- Wprowadzono
MeasuredSizeAwareModifierNode, które jest potrzebne, gdy chcesz, abyonRemeasured()oddzwonił. Jeśli nie potrzebujesz innych wywołań zwrotnych, używaj bezpośrednio tego interfejsu zamiast bardziej ogólnego interfejsuLayoutAwareModifierNode. (If6fb0)
Wersja 1.10
Wersja 1.10.6
25 marca 2026 r.
Publikacja androidx.compose.ui:ui-*:1.10.6 Wersja 1.10.6 zawiera te zmiany.
Wersja 1.10.5
11 marca 2026 r.
Publikacja androidx.compose.ui:ui-*:1.10.5 Wersja 1.10.5 zawiera te zmiany.
Wersja 1.10.4
25 lutego 2026 r.
Publikacja androidx.compose.ui:ui-*:1.10.4 Wersja 1.10.4 zawiera te zatwierdzenia.
Wersja 1.10.3
11 lutego 2026 r.
Publikacja androidx.compose.ui:ui-*:1.10.3 Wersja 1.10.3 zawiera te zmiany.
Wersja 1.10.2
28 stycznia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.10.2 Wersja 1.10.2 zawiera te zmiany.
Wersja 1.10.1
14 stycznia 2026 r.
Publikacja androidx.compose.ui:ui-*:1.10.1 Wersja 1.10.1 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z awarią kompozycji z możliwością wstrzymania, gdy była animowana za pomocą
LookaheadScope(I7e649, b/469669851). - Naprawiliśmy błąd w Jetpack Compose
Popup, który powodował przekazywanie bezwzględnych współrzędnych granic elementu zakotwiczonego doPopupPositionProvider, co prowadziło do nieprawidłowego umieszczania wyskakujących okien. Obliczenia pozycji wyskakującego okienka korzystają teraz z prawidłowych współrzędnych względnych.(1f7edf,b/469940907)
Wersja 1.10.0
3 grudnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0 Wersja 1.10.0 zawiera te zmiany.
Wersja 1.10.0-rc01
19 listopada 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-rc01 Wersja 1.10.0-rc01 zawiera te zmiany.
Poprawki błędów
- Prawidłowe wysyłanie wywołań zwrotnych
visibilityChangedz wartością „fałsz”, gdy wartośćminDurationMsjest różna od zera. (2ac08b8, b/456384555) - Nie wywołuj funkcji zwrotnej
onVisibilityChanged, gdy węzeł początkowo nie jest widoczny. (3969e8d, b/447364998)
Wersja 1.10.0-beta02
5 listopada 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-beta02 Wersja 1.10.0-beta02 zawiera te zmiany.
Wersja 1.10.0-beta01
22 października 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-beta01 Wersja 1.10.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje optymalizację wysyłania zmiany ostrości. Można to wyłączyć za pomocą
isOptimizedFocusEventDispatchEnabled = false(I919fb, b/449228515). - Aktualizuje wszystkie interfejsy API dotyku pośredniego, aby używać nazwy interfejsy API wskaźnika pośredniego, co jest zgodne z interfejsami API danych wejściowych wskaźnika. (I238ce, b/451607214)
- Funkcje
TextDirection,TextAlign,Hyphens,FontSynthesisivalueOfzwracają teraz błądIllegalArgumentException, gdy otrzymają nieznaną wartość. (I07c67) - Zaktualizuj
CompositionDataTree.makeTree, aby przekazywać wartości domyślne zamiast funkcji opakowującej. (Id64a6, b/445229688) - Interfejsy API reguł testowych
createComposeRule,createAndroidComposeRuleicreateEmptyComposeRule, które akceptują parametreffectContext, są stabilne, a wartość domyślna tego parametru toEmptyCoroutineContext. (If400c, b/450540702) - Nazwa
UnplacedStateAwareModifierNodezostała zmieniona naUnplacedAwareModifierNode(I6a551, b/449719932) - Cofanie optymalizacji przechwytywania treści (Ic000b, b/442364065)
- Dodano flagę funkcji
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled. Umożliwia to optymalizację wydajności, dzięki czemu żądania współrzędnych, takie jakLayoutCoordinates.positionInRoot(), korzystają z buforowanych przesunięć, które mamy już wRectManager, zamiast przechodzić przez całe drzewo przy każdym wywołaniu. (Ieaadc)
Poprawki błędów
PlaceholderSpanprawidłowo używa teraz nieliniowego skalowania czcionki do określania rozmiaru (Id2ead, b/324462728).- Używaj
ViewCompat, aby wykonywać stałe wartości wibracji obsługiwane na poziomie platformy, korzystając z jej obsługi rezerwowej w przypadku nowszych stałych wartości. (Ib5a00)
Wersja 1.10.0-alpha05
8 października 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-alpha05 Wersja 1.10.0-alpha05 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy błąd polegający na tym, że zagnieżdżone wyskakujące okienka były nieprawidłowo umieszczane u góry ekranu. Teraz są prawidłowo przytwierdzane do nadrzędnego wyskakującego okienka. (Id4603, b/191279752)
- Rozwiązaliśmy problem z przenoszeniem zaznaczenia na inne widoki w hierarchii. (I95223, b/446028624)
- Naprawiono pola z parametrami wbudowanymi, których brakuje w inspektorze w wyrażeniach lambda wygenerowanych przez Kotlin 2.2.20 (I9855d, b/447110005).
- Poprawka dotycząca zasobów autouzupełniania w modułach interfejsu i modułach podstawowych (I5da5a).
Wkład zewnętrzny
UiModeszmieniono nazwę na AndroidUiModes, aby odzwierciedlała fakt, że jej stałe pochodzą z interfejsu Android API. (Ia0a77)
Wersja 1.10.0-alpha04
24 września 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-alpha04 Wersja 1.10.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Wariant reguły testu tworzenia, który akceptuje parametr
CoroutineContext, został przeniesiony do wersji stabilnej. Eksperymentalna adnotacja została usunięta i deweloperzy nie muszą już wyrażać zgody na korzystanie z tego interfejsu API. (I74e6e) - Pole „
ComposeUiFlags.isRectTrackingEnabled” zostało usunięte. Ta logika nie zawsze jest włączona. (Id78df) - Przestarzałe przeciążenie wbudowane
Updater#set, ponieważ zbyt wiele razy opakowywało podaną wartość (Id679e) - Oznacz właściwość semantyczną
onAutofillTextjako wycofaną. (I6f81c) - Wprowadzono
UnplacedStateAwareModifierNode. Zawiera wywołanie zwrotne, które jest wywoływane, gdy wcześniej umieszczony układ nie jest już umieszczony. (I8fdd8, b/309776096) - Poprawiliśmy dokumentację dotyczącą elementu
RetainObserver.onRetainedi dodaliśmy elementRetainObserver.onUnused, który jest odpowiednikiem elementuRememberObserver.onAbandoned. (Ia6fc5) - Dodano
onVisibilityChangedNode(), które generujeModifier.Nodeużywane przezModifier.onVisibilityChanged()za pomocą delegowania, co pozwala rozszerzyć tę funkcję w niestandardowymModifier.Node. (I70d84, b/443001320)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że treści wstawiane nie były renderowane, gdy znajdowały się w ostatnim wierszu wielowierszowego tekstu z wielokropkiem, mimo że symbol zastępczy poprzedzał obszar z wielokropkiem. (I76aaf, b/441829208)
Wersja 1.10.0-alpha03
10 września 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-alpha03 Wersja 1.10.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Zmienia nazwę
DelegatableNode.invalidateLayoutForSubtreenaDelegatableNode.invalidateMeasurementForSubtree. (I94257, b/430106107) - Usuwa zbędny
isInHiddenAccessibilitySubtree. (I4476c, b/443792965) - Wprowadza ślady stosu Compose oparte na kluczu grupy, które są domyślnie włączone w przypadku wszystkich zminimalizowanych aplikacji. Mapowanie ProGuard dla tych śladów będzie generowane przez wtyczkę Gradle kompilatora Compose od wersji Kotlin 2.3.0. (Ifbcb5)
Modifier.skipToLookaheadSizekorzysta teraz z domyślnie włączonej funkcji lambda, która włącza pomijanie rozmiaru tylko wtedy, gdy aktywna jest wspólna zmiana, tak samo jakModifier.skipToLookaheadPosition. (Ibe0f5, b/432485585)ComposeUiFlags.isOutOfFrameDeactivationEnabledzostaje usunięta, a ta funkcja jest teraz zawsze włączona. (I421ed)- Przeniesienie funkcji fabrycznych do tworzenia instancji
FillableDatado obiektu towarzyszącego. Zamiast wywoływaćFillableData(value), użyj nowych metod fabrycznych:FillableData.createFrom(value). (I2e200, b/441719650) - Wprowadzamy nowy węzeł modyfikatora
BeyondBoundsLayoutModifierNode, który umożliwia wyszukiwanie poza granicami układu. (I39be1, b/416133658) FocusTargetModifierNode.requestFocus()przekazuje fokus do jednego z elementów podrzędnych, gdy sam nie może być zaznaczony. Jest to teraz zgodne z przeglądarkamiFocusRequester.requestFocus()iFocusRequesterModifierNode.requestFocus(). Jeśli nie potrzebujesz takiego działania, ustaw w aplikacji wartośćComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledna false. (Icca5c, b/436863604)- Podaj rozmiar okna w jednostkach DP w
WindowInfo(I9322b, b/424442112) - Usunięto flagę
isNestedScrollDispatcherNodeFixEnabled. (If451a) - Dodanie obsługi wartości dat w autouzupełnianiu w interfejsie
FillableDataAPI.val dateMillisValue: Longdodano w celu pobierania informacji o dacie, a odpowiedni konstruktorFillableData(dateMillisValue: Long)dodano w celu tworzenia instancjiFillableDatana podstawie daty. (Id072a)
Wkład zewnętrzny
- Wprowadzono obiekt
UiModes, aby deklarować stałe używane do adnotacjiUiMode(I03cb8).
Wersja 1.10.0-alpha02
27 sierpnia 2025 roku
Publikacja androidx.compose.ui:ui-*:1.10.0-alpha02 Wersja 1.10.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Zaktualizuj
FillableData, aby obsługiwać komponenty inne niż tekstowe, takie jak przełączniki i listy, w tym wartości logiczne i liczby całkowite wFillableDataoraz konstruktory fabryczne do tworzenia instancji logicznych i listFillableData, które są tłumaczone naAutofillValueplatformy. Dodawana jest też odpowiednia właściwość semantyczna i działanie. (Ia8105, Icc5cf) - W trybie bez dotyku system widoku przypisuje początkowy/domyślny fokus do jednego z elementów możliwych do zaznaczenia na ekranie. Ta funkcja jest dodawana do Compose i można ją włączyć, włączając
ComposeUiFlags.isInitialFocusOnFocusableAvailable. (Ib9178) - Usunięto flagę
isPointerInteropFilterDispatchingFixEnabled. (Iaa589) - Usunięto flagę
isNestedScrollInteropPostFlingFixEnabled. (I2a756) - Dodaj w nich dopasowania semantyczne
isHiddenFromAccessibility()iisInHiddenAccessibilitySubtree(). (I9f5a1) - Dodano
runCurrent()doMainTestClock, aby uruchamiać wszystkie zaległe zadania w harmonogramie bazowym. Ma to na celu umożliwienie przeprowadzania testów naStandardTestDispatcher, gdzie zadania są dodawane do harmonogramu, a nie wykonywane natychmiast, gdy mają opóźnienie 0 ms. Test można skonfigurować tak, aby używałStandardTestDispatcher, tworzącComposeTestRulei przekazując do niegoStandardTestDispatcher. Domyślnie testy są uruchamiane naUnconfinedTestDispatcher, w którym to przypadku nigdy nie trzeba wywoływać funkcjirunCurrent(). - Dodaliśmy obsługę przeprowadzania testów na urządzeniu
StandardTestDispatcher. W przeszłości platforma testowa była (i nadal jest) konfigurowana za pomocąUnconfinedTestDispatcher, która w subtelny sposób różni się od środowiska produkcyjnego. Możesz teraz zmienić tę konfigurację, tworząc własnyStandardTestDispatcheri dodając go doeffectContextpodczas tworzeniaComposeTestRule(lub podczas wywoływania runComposeUiTest). (I334d0, b/254115946) - Zaktualizuj kod, aby utworzyć drzewo węzłów z
SlotTree. (I997d3)
Poprawki błędów
- Interfejs Compose UI instaluje teraz na Androidzie komponenty
RetainScopesuwzględniające cykl życia. Domyślne działanie będzie teraz zachowywać wartościretainw przypadku zmian konfiguracji. (Id4a09, b/177562901)
Wkład zewnętrzny
- Dodaje możliwość obliczania przez
VelocityTrackerprędkości wskaźnika na podstawie śledzonych zdarzeń wskaźnika przy użyciu zachowania specyficznego dla platformy. (I621e8)
Wersja 1.10.0-alpha01
13 sierpnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-alpha01 Wersja 1.10.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wskaźniki myszy lub touchpada w
ComposeViewbędą teraz automatycznie usuwać fokus, jeśli wskaźnik nie znajduje się w granicach węzła, na którym jest fokus. Dzięki temu użytkownik może wyczyścić fokus, klikając ekran. Jest to bardziej intuicyjne niż obecne zachowanie w przypadku korzystania z urządzeń wskazujących. Możesz zrezygnować z tego sposobu działania za pomocą nowego interfejsuAbstractComposeView.isClearFocusOnPointerDownEnabledAPI. (I6322b, b/282963174) - Wprowadzamy interfejs
FillableData, który obsługuje różne typy komponentów autouzupełniania, w tym tekst. (If9bd2) - Nowy interfejs API umożliwiający dynamiczne włączanie i wyłączanie udostępnionych elementów, który uwzględnia też, czy trwa już przejście udostępnionego elementu. Nowy interfejs API do konfigurowania alternatywnych granic elementu docelowego, gdy docelowy element udostępniony zostanie usunięty podczas przejścia. Nowy interfejs API do uzyskiwania
LayoutCoordinatesLookaheadScope. (I18dd4, b/409819304, b/395670637) - Wprowadzono flagę
isNestedScrollInteropIntegerPropagationEnabled, która umożliwia kontrolowanie eksperymentu polegającego na wysyłaniu prawidłowych liczb całkowitych do zagnieżdżonego przewijania. (If8316) - Dodano
requestFocusForChildInRootBounds()doDelegatableNode, aby przenieść fokus na element podrzędny, który nakłada się na dany prostokąt. (I001ef) - Usunięto flagi:
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) - Dodaliśmy adnotację
@CheckResultdo funkcji wyszukiwania i selektoraSemanticsNode, aby wymusić używanie zwracanych wartości. (I6f86e, b/201652748) - Poprawić wydajność procesu przechwytywania treści (I3c7c0).
- Wprowadziliśmy
CompositionLocal, którego można używać do modyfikowania pędzla podświetlenia udanego wypełnienia autouzupełniania. (I52329) - Wprowadziliśmy nowy interfejs Interpolatable, który umożliwia automatyczną interpolację między różnymi typami, pod warunkiem że jeden typ wie, jak przekonwertować dane z drugiego. Ten interfejs jest wykorzystywany w kilku typach kompozycji, takich jak Pędzel i Kształt, ale można go też używać zewnętrznie. (I58eab)
- Komponent Scrollable lepiej obsługuje teraz dwuwymiarowe zdarzenia przewijania za pomocą kółka myszy. Udostępniliśmy nowy interfejs API do testowania, który pomaga testować przypadki użycia w
MouseInjectionScope. Wprowadziliśmy też nowe przeciążenie metod przewijania wMouseInjectionScopeoraz flagę do kontrolowania nowego działania o nazwieisMouseWheel1DAxisLockingEnabled(I136df). - Dodaj
DeviceConfigurationOverridesdla typu i stanu klawiatury, typu i stanu nawigacji, stanu ekranu dotykowego oraz typu trybu interfejsu (I282f0). - Dodano nowy
LineHeightStyle.Modeo nazwieTight. Ten tryb pomaga wymuszać mniejsze wysokości wierszy, nawet jeśli mogą one obcinać wyższe glify. (Id3849) BaselineShiftma teraz wartość „Nieokreślony”, aby zapobiec boksowaniu.BaselineShift,Hyphens,LineBreak,TextAligniTextDirectionmają terazisSpecifiedfunkcje pomocnicze.Hyphens,TextAlign,TextDecorationiTextDirectionmają teraz metodyvalueOf()i wartości umożliwiające wydajną serializację i deserializację. (I8d44c)- Dodaliśmy nowy interfejs metody
getDisplayName, który umożliwia stosowanie niestandardowych nazw wyświetlanych w przypadku instancji parametrów podglądu. (I19bdf, b/241699422) - Gdy wartości Dp są porównywane z wartością Unspecified za pomocą operatorów mniejszy niż lub większy niż, zawsze zwracają wartość false. Użycie funkcji
Dp.compareTo(Unspecified)zawsze zwraca wartość 0. Ustawienie flagiComposeUiUnitFlags.isDpCompareToChangedna wartość false przywróci poprzednie działanie funkcjiDp.compareTo(), w którym porównywanie wartości Unspecified z wartościami mniejszymi i większymi nie zawsze zwraca wartość false, a funkcjacompareTo()z wartością Unspecified działa tak samo jak funkcjaFloat.compareTo(). (Ifa88b, b/429221319)
Poprawki błędów
- Przeniesienie domyślnego minSdk z API 21 na API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Rozwiązuje problem, który uniemożliwiał tworzenie nowych
AndroidComposeViewspodczas przejścia. (I2e23e, b/340894487, b/287484338) - Naprawia błąd koloru podczas używania obiektu rysowalnego wektorowo, który używa jednego koloru, a
fillColornie jest ani całkowicie nieprzezroczysty, ani całkowicie przezroczysty. (I3b041, b/328677973) - Rozwiązuje problem polegający na tym, że ikony wczytywane za pomocą
painterResourcez kolorami specyficznymi dla motywu nie były aktualizowane po zmianie motywu. (I85ea0, b/424416571) - Wprowadzenie semantyki
onFillDataifillableData(I45d9e) - Kodowanie stanu specyficzne dla platformy jest teraz zawsze włączone w
StateRestorationTester. Dzięki temu zachowanie testu będzie zgodne z przywracaniem rzeczywistego stanu aplikacji, np. z parcelizacją na Androidzie. (I38211, b/408154192, b/382294247) - Naprawiliśmy sporadyczne awarie podczas przesyłania żądania ostrości. (57b31a11, b/431111149)
Wersja 1.9
Wersja 1.9.5
19 listopada 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.5 Wersja 1.9.5 zawiera te zatwierdzenia.
Wersja 1.9.4
22 października 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.4 Wersja 1.9.4 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że wbudowane treści tekstowe znikały, jeśli znajdowały się w ostatnim wierszu wielowierszowego tekstu z wielokropkiem, mimo że nie znajdowały się w regionie z wielokropkiem. (I76aaf, b/441829208)
- Rozwiązaliśmy problem, który powodował, że wywołania zwrotne modyfikatora
onLayoutRectChangednie zawsze były wywoływane, gdydebounceMillisnie było równe zero. (72aba47, b/445324854)
Wersja 1.9.3
8 października 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.3 Wersja 1.9.3 zawiera te zatwierdzenia.
Poprawki błędów
- Usunęliśmy błąd, który powodował, że modyfikatory
onVisibilityChanged/onFirstVisible/onLayoutRectChangednie otrzymywały wywołań zwrotnych, jeśli przenoszony układ miał ponad 170 elementów podrzędnych. (4f2fdd, b/445356774)
Wersja 1.9.2
24 września 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.2 Wersja 1.9.2 zawiera te zatwierdzenia.
Poprawki błędów
Modifier.onVisibilityChanged()jest teraz prawidłowo uruchamiana, gdy węzeł jest odłączany lub ponownie używany. (Ic5ce20)Modifier.onVisibilityChanged()ionLayoutRectChanged()prawidłowo obsługują teraz układy nadrzędne, używającplaceWithLayer()do umieszczania elementów podrzędnych. (Ia05ac9)- W przypadku
Modifier.onVisibilityChanged()ionLayoutRectChanged()prawidłowo powiadamiaj w sytuacjach granicznych, takich jak usuwanie warstwy lub modyfikatora warstwy albo aktualizowanie właściwości warstwy. (Ia05ac)
Wersja 1.9.1
10 września 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.1 Wersja 1.9.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawia błąd koloru podczas używania obiektu rysowalnego wektorowo, który używa jednego koloru, a
fillColornie jest ani całkowicie nieprzezroczysty, ani całkowicie przezroczysty. (I3b041, b/328677973)
Wersja 1.9.0
13 sierpnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0 Wersja 1.9.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.8.0
- Ważne zmiany w wersji 1.9.0 zostały opisane w tym poście na blogu.
- Sprawdzanie kodu za pomocą narzędzia Lint w Compose wymaga teraz minimalnej wersji AGP 8.8.2. Jeśli nie możesz uaktualnić AGP, możesz zamiast tego uaktualnić Lint, używając w pliku
gradle.propertieswersjiandroid.experimental.lint.version=8.8.2(lub nowszej). Aby uruchamiać sprawdzanie kodu Compose w IDE, musisz mieć Androida Studio w wersji Ladybug lub nowszej. - Zmiana powodująca niezgodność: węzły modyfikatora
graphicsLayerimplementują teraz interfejsSemanticsModifierNode. Może to spowodować dodanie nowychSemanticsNodesdo drzewa semantycznego, a tym samym doprowadzić do niepowodzenia testów, które opierają się na założeniach dotyczących struktury drzewa semantycznego. Na przykład testy, które używająonChild,onParent,onSiblingi innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na rozwiązanie tych problemów jest dodanietestTagbezpośrednio do węzła docelowego. Inne podejście to użycie mniej ścisłego dopasowania, np.onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Wersja 1.9.0-rc01
30 lipca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-rc01 Wersja 1.9.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że ikony wczytywane za pomocą
painterResourcez kolorami specyficznymi dla motywu nie były aktualizowane po zmianie motywu systemu. (I85ea0, b/424416571) - Naprawia błędy w interfejsach API 21(Lollipop) i 28(Pie), w których podczas optymalizacji zmieniono nazwy ważnych metod graficznych. (Iebf99, b/425120571, b/420462749)
- Sprawdź, czy nowo wstawione modyfikatory
onLayoutRectChangedsą początkowo wywoływane. (l9aa91), (lb348a) - Poprawka dotycząca nieprawidłowego unieważniania pamięci podręcznej przesunięcia, co powodowało wywoływanie modyfikatorów
onLayoutRectChangedz nieprawidłowymi współrzędnymi (ibd4cd), (lddc57) - Poprawka dotycząca obróconych lub przekrzywionych układów, które otrzymywały nieprawidłowe współrzędne przez modyfikatory
onLayoutRectChanged(lddc57, b/426750475)
Wkład zewnętrzny
- Rozwiązaliśmy problem polegający na tym, że podczas przewijania znikały
dragAndDropSourceelementy wLazyList. Dziękujemy Victorowi Rendinie! (dc3bcd3, b/425894792)
Wersja 1.9.0-beta03
16 lipca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-beta03 Wersja 1.9.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że równomiernie rozmyte cienie wewnętrzne nie przesuwały się prawidłowo z przesunięciem.
Wersja 1.9.0-beta02
2 lipca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-beta02 Wersja 1.9.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmienia obiekt towarzyszący na eksperymentalny, aby pasował do klasy. (I8452a)
- Usunięto eksperymentalną flagę
isTrackFocusEnabled(I003fd)
Poprawki błędów
- Jeśli
WindowInsetsnie narusza treściComposeView, wartościWindowInsetsRulersnie są podawane. (I71221)
Wersja 1.9.0-beta01
18 czerwca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-beta01 Wersja 1.9.0-beta01 zawiera te zatwierdzenia.
Zmiany powodujące niezgodność
- Węzły modyfikatora
graphicsLayerimplementują terazSemanticsModifierNode. Może to spowodować dodanie nowych elementówSemanticsNodesdo drzewa semantycznego, a tym samym doprowadzić do niepowodzenia testów, które opierają się na założeniach dotyczących struktury drzewa semantycznego. Na przykład testy, które używająonChild,onParent,onSiblingi innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na rozwiązanie tych problemów jest dodanietestTagbezpośrednio do węzła docelowego. Inne podejście to użycie mniej ścisłego dopasowania, np.onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Zmiany w interfejsie API
- Zmieniono
ShadowContextna interfejs zamknięty (I3ce40) - Dodaje sposób tworzenia zdarzenia dotyku pośredniego w różnych modułach (na potrzeby testowania) (I22e4c).
- Ustawia
IndirectTouchEvent.nativeEventjako eksperymentalną. (I6fda5) - Wprowadza zmiany w zestawie interfejsów API na podstawie opinii rady ds. API. (Ibf378)
- Usuń stałą
FrameRateCategory.NoPreference. Zmień nazwęModifier.requestedFrameRatenaModifier.preferredFrameRate. (I2f976) WindowInsetsRulers: zmieniono wartość w kolumnie „rulersIgnoringVisibility” na maksymalną. Zmieniono funkcjęgetDisplayCutoutBounds(), aby była funkcją rozszerzenia funkcjiPlacementScope. WartośćWindowInsetsAnimationPropertieszostała zmieniona naWindowInsetsAnimation, a wartośćgetAnimationProperties()została zmieniona nagetAnimation(). (I3816f)- Zmieniono klasę
ShadowParamsnaShadow(I11cca) - Zmiana pakietu interfejsu API liczby klatek z
androidx.compose.ui.uinaandroidx.compose.ui(I8994e) - Zmieniono
InsetsRulers, aby był w kodzie wspólnym o nazwieWindowInsetsRulers. Uprościliśmy interfejs API, aby wszystkie wstawki miały wartośćWindowInsetsRulers. Wyodrębniono właściwości animacji inne niż linijki do klasyAnimationProperties. UsługaWindowInsetsRulers.innermostOf()może służyć do łączenia wieluWindowInsetsRulers. (I2f0c6, b/415012444) - Dodaliśmy interfejs API narzędzi do analizowania informacji o źródle dodanych przez kompilator Compose. (Iceaf9, b/408492167)
Poprawki błędów
- Flaga dla
isGetFocusedRectReturnEmptyEnabledzostała usunięta, ponieważ funkcja została w pełni zweryfikowana. (Ife722) - Naprawia błąd w
performScrollToNode, który w niektórych przypadkach nie docierał do węzła docelowego. Po wprowadzeniu tej poprawki w takich przypadkach zawsze powinien docierać do węzła docelowego. Skutkiem ubocznym tej zmiany jest to, że dokładna pozycja przewijania na końcu działania może być teraz inna, co ma wpływ na testy zrzutów ekranu i testy, które zakładają dokładną pozycję przewijania. (I2c8a1)
Wersja 1.9.0-alpha04
4 czerwca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-alpha04 Wersja 1.9.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano interfejsy API modyfikatorów do dostosowywania cieni. (I2058d, b/160665122)
- Dodaj
SemanticsModifierNode.isImportantForBoundswłaściwość, która określa, czy węzeł powinien być uwzględniany podczas obliczania granic. Domyślnie właściwość ma wartość „true” (prawda). Można ją ustawić na „false” (fałsz), aby wskazać, że węzeł nie powinien być brany pod uwagę przy określaniu granic. (I7ebec) - Dodaj
SemanticsPropertyKeyfunkcję fabryczną do deklarowania właściwości semantycznych specyficznych dla Androida, które są udostępniane jako dodatki ułatwień dostępu za pomocąAccessibilityNodeInfo.getExtras. (I2ed51) - Usunięto użycie
ComposeUiFlags.isRemoveFocusedViewFixEnabledi wycofano flagę. (I50328) - Wprowadzamy nową platformę cieni, którą można dostosowywać. Obejmuje to
DropShadowPainteriInnerShadowPainter, a także zależnościDropShadow/InnerShadow. Infrastruktura cieni jest udostępniana w taki sposób, że te same wygenerowane cienie mogą być udostępniane w wielu centrach telefonicznych bez konieczności ponownego generowania ich n razy. (I24f7a, b/160665122) - Wprowadzono funkcje
CompositeShaderiCompositeShaderBrush, które tworzą złożony wynik z 2 cieni. Dodaj teżShaderBrush#transform, aby ustawić macierz przekształcenia dla shadera. (I2621a, b/160665122)
Poprawki błędów
- Naprawiliśmy błąd w
NestedScrollInteropConnection, który powodował, że metody przesuwania były w niewłaściwej kolejności w stosunku do widoków. (I56ad4) - Wcześniej okna, które zajmowały cały ekran, nie były wyświetlane w obszarze wycięcia w ekranie. Ten błąd został naprawiony, dzięki czemu okna z
decorFitsSystemWindows = falseiusePlatformDefaultWidth = falsemogą zajmować obszar wycięcia w ekranie. (I9e975) - Rozwiązaliśmy błąd, który powodował, że zielony wskaźnik ostrości
TalkBacknie był rysowany po włączeniu, gdy aplikacja do pisania była w tle. (Ifd12a)
Wersja 1.9.0-alpha03
20 maja 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-alpha03 Wersja 1.9.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Flaga
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledpowoduje, że jeśli wComposeViewnie ma elementów, na których można ustawić fokus, prostokąt przyjmuje wartość Empty. Zapobiega to wybraniu widoku, na którym ma się skupić wyszukiwanie. Jest to szczególnie ważne, gdy edytor IME ma opcję DALEJ, która może próbować skupić się na znakachComposeViewirequestFocus(). (Ibd0e2, b/369256395) - Wprowadź flagę
isNestedScrollDispatcherNodeFixEnabled. (I0d24a) - Zmień nazwę
DialogProperties'dialogContentTitlenawindowTitle(Ibd27b) - Wprowadzono modyfikatory
Modifier.onFirstVisibleiModifier.onVisibilityChanged, które są modyfikatorami wysokiego poziomu opartymi na modyfikatorzeModifier.onLayoutRectChanged. Te modyfikatory zostały opracowane specjalnie z myślą o obsłudze wielu typowych wymagań aplikacji, takich jak rejestrowanie wyświetleń czy automatyczne odtwarzanie filmów. Zostały one zaprojektowane z uwzględnieniem wydajności, dzięki czemu można ich używać w krytycznych scenariuszach opartych na listach bez ryzyka pogorszenia wydajności przewijania. Oprócz tych interfejsów API modyfikatorów dodaliśmy dodatkowe interfejsy APIRelativeLayoutBounds, aby obsługiwać te przypadki użycia i ułatwić deweloperom tworzenie podobnych modyfikatorów niestandardowych, które dokładnie odpowiadają ich potrzebom. (I759b8) - Zmień
setDiagnosticStackTraceEnabledna eksperymentalne, aby uwzględnić przyszły rozwój tej funkcji. (I11db3) - Wprowadź interfejsy API
Modifier.scrollable2D,Scrollable2DStatei towarzyszące do tworzenia stanu. Wprowadziliśmy też typowe funkcje rozszerzenia przewijania. (Ic61c8, b/214410040) - Wartości kolorów Compose 64-bitowych nie są bezpośrednio porównywalne z wartościami kolorów Androida
ColorLongs, ponieważ identyfikatory przestrzeni kolorów są w przypadku niektórych przestrzeni kolorów nieuporządkowane. Aby konwertować przestrzenie kolorów Androida, dodaliśmy 2 nowe interfejsy API:toColorLong()ifromColorLong(). (I36899) - Wprowadzono
ViewConfiguration.minimumFlingVelocity, aby umożliwić kontrolę dolnej granicy prędkości przesunięcia. (I11aab)
Wersja 1.9.0-alpha02
7 maja 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-alpha02 Wersja 1.9.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj
dialogContentTitledoDialogProperties, co ustawia tytuł okna treści. bf9d670
Poprawki błędów
- Linijki wstawień okien zostały tymczasowo wyłączone na czas naprawy testów wewnętrznych. 8d1402
- Poprawiono sposób dodawania zmian danych wejściowych wskaźnika do
VelocityTrackerwDragGestureNode. Można to kontrolować za pomocą nowej flagiisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled.254ddb
Wersja 1.9.0-alpha01
23 kwietnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-alpha01 Wersja 1.9.0-alpha01 zawiera te zatwierdzenia.
Zmiany w zachowaniu
- Sprawdzanie za pomocą narzędzia Lint dostarczane z Compose wymaga teraz minimalnej wersji AGP 8.8.2. Jeśli nie możesz uaktualnić AGP, możesz zamiast tego uaktualnić Lint, używając w pliku
gradle.propertieswersjiandroid.experimental.lint.version=8.8.2(lub nowszej). Aby uruchamiać sprawdzanie kodu Compose w IDE, musisz mieć Androida Studio w wersji Ladybug lub nowszej.
Zmiany w interfejsie API
- Usuwa flagę, aby włączyć instrukcje śledzenia w narzędziu do śledzenia ścieżki zdarzenia (debugowanie). (I1b2a1)
- Zmieniono
InnerRectRulersiOuterRectRulesna metody. Usunęliśmy parametr name z publicznego interfejsu APIRectRulers.DerivedRulersjest teraz opcją konstruktora w przypadku linijek pionowych i poziomych. MetodyMergedHorizontalRulersiMergedVerticalRulerszostały zastąpione metodamiminOfimaxOfdo generowania instancji. (Iee89f, b/408192133) - Wycofaj
androidx.compose.ui.LocalSavedStateRegistryOwnerna rzeczandroidx.savedstate.compose.LocalSavedStateRegistryOwner. (I5439f, b/377946781) - Dodaj
Modifier.keepScreenOn, aby ustawić wyświetlacz tak, aby nie przechodził w stan uśpienia, gdy jest obecny (Ib5af4, b/408284174). - Dodaj nową właściwość semantyczną
Shape, którą można ustawić, gdy kształt elementu interfejsu różni się od jego prostokąta ograniczającego, np. prostokąta z zaokrąglonymi rogami. (I1376f) - Rozwiązaliśmy problem z wysyłaniem zdarzeń wskaźnika w
AndroidViewsi dodaliśmy flagęisPointerInteropFilterDispatchingFixEnabled, aby chronić zmiany. (I0e272, b/372055500, b/408002332) FocusRestorernie przypina już poprzednio zaznaczonego elementu. Użytkownicy powinni używać klucza, aby mieć pewność, że poprzednio zaznaczony element ma ten sam hash kompozycji, dzięki czemu fokus zostanie przywrócony. (I4203b, b/330696779)- Zezwól na wywoływanie
ViewTreeObserver.OnScrollChangedprzez funkcję Tworzenie. To działanie jest wprowadzane pod flagąisOnScrollChangedCallbackEnabled. Wprowadziliśmy też funkcję rozszerzeniaDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) - Środowisko wykonawcze
currentCompositeKeyHashzostało wycofane. Użyj w zamian zasadycurrentCompositeKeyHashCode. Zastępczy interfejs API koduje ten sam ciąg za pomocą większej liczby bitów, co wykładniczo zmniejsza prawdopodobieństwo, że 2 losowe, niezwiązane ze sobą grupy w hierarchii kompozycji będą miały ten sam klucz ciągu. (I4cb6a, b/177562901) - Projekty wydane w Kotlinie 2.0 wymagają użycia KGP w wersji 2.0.0 lub nowszej (Idb6b5).
- Dodano obsługę sprawdzania kodu w przypadku
FocusRequester, aby mieć pewność, że jest on zapamiętany w kompozycji (I6bf91). - Dodaliśmy możliwość ustawienia preferowanej liczby klatek na sekundę lub kategorii liczby klatek na sekundę, w której ma być renderowany element Composable (Ie5201).
- Udostępnianie natywnych
MotionEventna Androidzie. (I17286) - Dodaj
getChecked() + setChecked(int), wycofajisChecked + setChecked(boolean)(Iaac9d) - Modyfikator
graphicsLayerakceptuje terazblendModeicolorFilter(Iab0e6). - Dodano
LocalResourceskompozycję lokalną do zasobów zapytania. Wywołanie funkcjiLocalResources.currentspowoduje ponowne skomponowanie, gdy zmieni się konfiguracja, więc wywołania interfejsów API, takich jakstringResource(), zwrócą zaktualizowane wartości. (I50c13, b/274786917) - Udostępnianie eksperymentalnego interfejsu API dla funkcji kompozycyjnych do obsługi pośrednich zdarzeń dotykowych (Icff57)
- Ta wersja ulepsza raportowanie nieobsłużonych wyjątków zgłaszanych podczas faz układu i rysowania treści kompozycyjnych. Wcześniej nieobsłużony wyjątek w tym miejscu powodował awarię narzędzia do uruchamiania testów i przedwczesne zakończenie zestawu testów. Te wyjątki można teraz zgłaszać w bardziej elegancki sposób, bez przerywania zestawu testów. (I9928b, b/314128080)
- Wycofaliśmy eksperymentalny interfejs API
GlobalAssertions. Zamiast tego używaj go do sprawdzania ułatwień dostępu. W tym celu skorzystaj zenableAccessibilityChecks(). (I50aa5) SemanticsNodeInteraction.performTextInputSelectionnie jest już eksperymentalny i obsługuje dodatkowy parametrrelativeToOriginal, który umożliwia zastosowanie wyboru do oryginalnego, nieprzekształconego tekstu lub do tekstu przekształconego. (I3a905, b/261561038, b/277018945)- Wprowadzenie interfejsu API do tworzenia niestandardowych list punktowanych za pomocą
AnnotatedString(I1d066, b/383269496, b/139326648) - Zastąpienie wartości
runWithTimingDisabledwartościąrunWithMeasurementDisabled, która lepiej opisuje działanie – wszystkie dane są wstrzymane. Dodatkowo udostępnij superklasęMicrobenchmarkScope, ponieważ ponowne zadeklarowanie funkcjirunWithMeasurementDisabledw celu otwarcia dostępu nie jest możliwe, ponieważ jest ona wstawiana. (I9e23b, b/389149423, b/149979716) - Zaktualizowano interfejs ui-tooling Devices API, aby uwzględniał nowsze urządzenia. (Ia2ac1)
- Dodaj do kolekcji rozmiarów ekranu podglądu format pionowy tabletu, aby pomóc deweloperowi w uwzględnieniu większych okien (Ia1976).
- Wprowadzamy interfejs Trace Value API do oznaczania i rejestrowania śladów z wartościami w danym momencie. Wartości śledzenia są wyświetlane w Prefetto jako nowa ścieżka, którą można zobaczyć na osi czasu śledzenia. Na Androidzie są one implementowane za pomocą
Trace.setCounter. (Idcf48)
Poprawki błędów
- Naprawiono wysyłanie zapamiętanych obserwatorów w kompozycji z możliwością wstrzymania, aby uniknąć wysyłania zapamiętanych/zapomnianych w ramach tej samej aplikacji (I570b2, b/404645679, b/407931790)
android:dialogThememożna teraz ustawić tak, aby kontrolować właściwości okna, gdydecorFitsSystemWindowsma wartość false (I7922f, b/246909281).- Naprawiliśmy błąd, który powodował, że każde zdarzenie ruchu zarejestrowane poza oknem mogło je zamknąć. (Ia78fd)
- Sprawdzanie kodu w Compose wymaga teraz minimalnej wersji AGP 8.8.2 w wierszu poleceń i co najmniej Androida Studio Ladybug w przypadku obsługi w IDE. Jeśli używasz starszej wersji AGP, możesz ustawić
android.experimental.lint.version=8.8.2w pliku gradle.properties, aby uaktualnić wersję Lint bez wpływu na AGP. (I6f2a8) - Dodano nową właściwość semantyczną
InputText, która rejestruje wartośćtextfieldprzed zastosowaniem transformacji danych wyjściowych. (Iae46a, b/395911609, b/176949051) - Przeniesiono interfejs
enableAccessibilityChecks()API, który włącza sprawdzanie dostępności na Androidzie, do osobnych pakietów, które sącompose:ui:ui-test-accessibility, jeśli nie używaszTestRule, icompose:ui:ui-test-junit4-accessibilitypodczas wywoływaniaTestRule(I3c318, b/391560768). - Dodaliśmy obsługę tworzenia śladów stosu w
LaunchedEffectirememberCoroutineScope(I705c0, b/354163858)
Wkład zewnętrzny
- Zmiana eksperymentalnej funkcji
runComposeUiTest, aby akceptowała blok zawieszenia. Dodano też wycofaną funkcjęrunComposeUiTestna potrzeby zgodności binarnej (I3b88c, b/361577328).
Wersja 1.8
Wersja 1.8.3
18 czerwca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.3 Wersja 1.8.3 zawiera te zatwierdzenia.
Poprawki błędów
- Flaga dla
isGetFocusedRectReturnEmptyEnabledzostała usunięta, ponieważ funkcja została w pełni zweryfikowana. (Ife722) - Flaga
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledpowoduje, że jeśli wComposeViewnie ma elementów, na których można ustawić fokus, prostokąt przyjmuje wartość Empty. Zapobiega to wybraniu widoku, na którym ma się skupić wyszukiwanie. Jest to szczególnie ważne, gdy edytor IME ma opcję DALEJ, która może próbować skupić się naComposeViewirequestFocus(), ale nie działa. (Ibd0e2, b/369256395)
Wersja 1.8.2
20 maja 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.2 Wersja 1.8.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawia błąd NullPointerException, który występuje, gdy okno jest usuwane podczas aktywnego strumienia zdarzeń w oknie (6a7e7f).
- Naprawiono problem z nieaktualizowaniem się ikony
onLayoutRectChangezgodnie z ograniczoną osią czasu, gdy występują aktualizacje tylko do rysowania. (03b82d)
Wersja 1.8.1
7 maja 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.1 Wersja 1.8.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązywanie niektórych problemów z
onLayoutRectChangediLazyLayoutd791b11 - Pomiń prośby o ponowne pomiary w przypadku wstępnie skomponowanych produktów. Ten błąd wpływał na wydajność przewijania układów wczytywanych na żądanie, ponieważ w niektórych przypadkach pobieranie z wyprzedzeniem nie działało wydajnie, a pomiar odbywał się w ramce. 742087a
Wersja 1.8.0
23 kwietnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0 Wersja 1.8.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.7.0
- Compose 1.8 zawiera nową obsługę semantycznego autouzupełniania. Upewnij się, że używane wersje interfejsu i Foundation to 1.8 lub nowsze, ponieważ autouzupełnianie komponentów tekstowych wymaga najnowszych wersji obu modułów. Więcej informacji o korzystaniu z interfejsu API i przykłady znajdziesz w dokumentacji autouzupełniania tutaj.
- Compose 1.8 obsługuje dodatkowe typy reakcji haptycznych:
Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Jest ona dostępna po kliknięciuLocalHapticFeedback. Na urządzeniach z Androidem jest domyślnie dostępna, gdy Vibrator API wskazuje, że czujnik haptyczny jest obsługiwany. - Kilka interfejsów Focus API jest już stabilnych, w tym
Modifier.focusRestorer()ionEnterorazonExitFocusProperties(I6e667). Teraz możesz podaćFocusDirection, gdy dzwonisz pod numerrequestFocus. Dodaliśmy interfejs APIrequestFocus(FocusDirection)zarówno dofocusRequester, jak iFocusTargetModifierNode, aby umożliwić ustawianie ostrości w określonym kierunku. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
Wersja 1.8.0-rc03
9 kwietnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-rc03 Wersja 1.8.0-rc03 zawiera te zmiany.
Poprawki błędów
- Wyłącza niektóre poprawki dotyczące współdziałania z fokusem, które spowodowały regresję. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
Wersja 1.8.0-rc02
26 marca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-rc02 Wersja 1.8.0-rc02 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że widoki z fokusem osadzone w hierarchii Compose powodowały ponowne komponowanie, gdy widok z fokusem był usuwany z listy leniwej. (765562)
Wersja 1.8.0-rc01
12 marca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-rc01 Wersja 1.8.0-rc01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z awarią, która występowała, gdy aktywna była klawiatura ekranowa, a skupiony element
AndroidViewzostał usunięty. (Ic725a) - Rozwiązuje kilka problemów w nowej implementacji obsługi stanu zaznaczenia. (b/395895685)
- Rozwiązuje problem blokujący automatyczne wypełnianie podczas używania
LaunchedEffectdo żądania zaznaczenia pola tekstowego. (b/392539099)
Wersja 1.8.0-beta03
26 lutego 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-beta03 Wersja 1.8.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Przeniesiono interfejs
enableAccessibilityChecks()API, który włącza sprawdzanie dostępności w Androidzie, do osobnych pakietów, które sącompose:ui:ui-test-accessibility, jeśli nie używasz TestRule, icompose:ui:ui-test-junit4-accessibility, gdy wywołujeszTestRule(I547ef, b/391560768). - Dodano nową właściwość semantyczną
InputText, która rejestruje wartość pola tekstowego przed zastosowaniem transformacji wyjściowej. (Iae46a)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że usługi autouzupełniania zapisywały przekształcony tekst wyjściowy zamiast tekstu wejściowego. (Iae46a, b/395911609, b/176949051)
Wersja 1.8.0-beta02
12 lutego 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-beta02 Wersja 1.8.0-beta02 zawiera te zmiany.
Nowe funkcje
- Dodano sprawdzanie kodu, aby ostrzegać przed wywołaniami funkcji
Configuration#screenWidth/heightDp– zamiast nich można użyć funkcjiLocalWindowInfo.current.containerSize, aby pobrać bieżący rozmiar okna.
Wersja 1.8.0-beta01
29 stycznia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-beta01 Wersja 1.8.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
ContextualFlowRowiContextualFlowColumnzostały oznaczone jako wycofane. Ten eksperymentalny komponent został wprowadzony w wersji 1.7 i nie został jeszcze ustabilizowany, a jego wdrożenie uznano za niepożądane. W przyszłości może zostać udostępniony komponent rozwiązujący problemy, do których ten komponent był przeznaczony.FlowRowiFlowColumnmają eksperymentalne przeciążenia wprowadzone w wersji 1.7, które zawierają parametroverflow. Używanie tego parametru zostało wycofane. Zamiast niego można używać przeciążeń bez tego parametru. Domyślne działanie „overflow” w przypadku tych przeciążeń będzie miało wartość „Clip”, tak jak od momentu wprowadzenia.- Wiele przypadków użycia
ContextualFlowRowmożna zrealizować za pomocą FlowRow, ale zdajemy sobie sprawę, że nie zawsze jest to możliwe.ContextualFlowRowmożna w pełni wdrożyć w przestrzeni użytkownika. Możesz skopiować jego implementację i w razie potrzeby ją dostosować. W przyszłości chcemy rozwiązywać te problemy w inny sposób. (Ibafec)
- Usunięto
SemanticsNodeInteraction.semanticsId(). Użyj w zamian zasadySemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a) - Stare interfejsy API autouzupełniania zostały wycofane. Zamiast tego użyj nowego interfejsu API opartego na semantyce. (I943ff)
- Przepisz interfejs
requestAutofillAPI, aby istniał poza menedżerem autouzupełniania. (Id1929)
Poprawki błędów
- Rozwiązaliśmy problem z ogniskowaniem, który powodował, że element
requestFocus()z bezsensownym parametrempreviouslyFocusedRect(związanym z kierunkiem ogniskowania) pomijał elementComposeView. (Ifdc2f, b/388590015) - Rozwiązaliśmy problem z sporadycznym błędem NPE podczas korzystania z właściwości
GraphicsLayer.record { this@ContentDrawScope.drawContent() }. Jeśli nagrywaszdrawContent()w ten sposób, użyj funkcji rozszerzeniaGraphicsLayer#recordwewnątrzDrawScope, a nie funkcji składowej wGraphicsLayer. (I75fc0, b/389046242) - Poprawiono układ tekstu z wielokropkiem, który czasami był nieprawidłowo tłumaczony podczas animacji. Więcej informacji znajdziesz w b/389707025 (Ie55b1, b/389707025).
Wersja 1.8.0-alpha08
15 stycznia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha08 Wersja 1.8.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Ustawienie
AutofillManagerjako klasy abstrakcyjnej. (I0a3b0) - Naprawiono kilka problemów związanych z ogniskowaniem, w tym awarie, gdy edytor IME próbuje ustawić fokus na elemencie
ComposeViewbez elementów, na których można ustawić fokus, zmianę fokusu w elemencie podrzędnymAndroidViewsoraz żądanie fokusu pozostawiające elementAndroidView. (Ia03c3, b/369256395, b/378570682, b/376142752) - Zamień słowo
FocusEnterExitScope.cancelFocus()nacancelFocusChange()(I89959) - Możesz teraz obliczać kompozycyjne okluzje za pomocą
RectInfo.calculateOcclusions(). - Dodano funkcję rozszerzenia w
DelegatableNode, aby rejestrować detektor globalnych zmian układu. (I68b59)
Poprawki błędów
- Aktywność używana jako host dla testowanego komponentu kompozycyjnego podczas korzystania z funkcji
ComposeContentTestRule.setContentużywa teraz motywuTheme.Material.Light.NoActionBar, aby uniknąć nakładania się elementuActionBarna treści testowe w przypadku pakietu SDK 35. Aby zrezygnować z tego działania, możesz usunąć zależność odui-test-manifesti dodać wpis aktywności w pliku AndroidManifest.xml aplikacji testowej dlaComponentActivityz wybranym motywem. (I7ae1b, b/383368165) - Czcionki zasobów z tymi samymi ustawieniami wariantu nie będą już nadmiernie buforowane, co powodowało stosowanie nieprawidłowych ustawień wariantu. (If3dff, b/372044241)
AnnotatedString.fromHtmlobsługuje teraz tagi<ul>/<li>. (I7c2fe, b/299662276, b/139326648)
Wkład zewnętrzny
- Dodaliśmy nowy interfejs schowka i lokalną kompozycję. (I80809)
Wersja 1.8.0-alpha07
11 grudnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha07 Wersja 1.8.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Udostępniono właściciela z domeny
LayoutNodew przypadku narzędzi. (I26f7f) - Właściwość
LocalAutofillHighlightColorcomposition local musi mieć typ Color. (I0e05b) - Zachowaj oznaczenie wycofanej funkcji
UrlAnnotationi jej metod jako eksperymentalnych. (Ic0021)
Poprawki błędów
- Naprawiono awarię
IndexOutOfBoundsExceptionpodczas używaniaLinkAnnotationw kompozycjiBasicTextlub Text (be7605, b/374115892) - Rozwiązaliśmy problem polegający na tym, że wypełnione pola tekstowe o niestandardowym kształcie nie przycinały linii wskaźnika. (I4f87f, b/380704151)
- Rozwiązanie problemu z brakującym tłem w przypadku długich zrzutów ekranu. (I4d57a)
- Ta biblioteka używa teraz adnotacji o wartościach null z JSpecify, które są używane w typach. Deweloperzy Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie:
-Xjspecify-annotations=strict(jest to domyślne ustawienie od wersji 2.1.0 kompilatora Kotlin). (Idfef8, b/326456246) - Zaktualizowano obsługę Compose w przypadku szerokiej gamy kolorów i kolorów HDR na urządzeniach z Androidem Q+. (Icd8be, b/379135036)
- Czcionki zasobów, których nie udało się wczytać, będą teraz cicho wracać do czcionki domyślnej, zamiast zgłaszać wyjątek w funkcji measure, jak to miało miejsce wcześniej. (Ib6a49)
- Rozwiązaliśmy problem z utratą zaznaczenia po odłączeniu i ponownym podłączeniu urządzenia
AndroidView. (I53446) - Zaakceptuj działanie
requestFocus()spoza układu ograniczonego. (Ia8461)
Wkład zewnętrzny
- Dodanie
BringIntoViewResponderModifierNodedo interfejsu, co zapewnia nowy sposób implementacji funkcji Bring Into View, a także umożliwia implementację na poziomie platformy. (Ia6dd8)
Wersja 1.8.0-alpha06
13 listopada 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha06 Wersja 1.8.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje modyfikator
stylusHoverIcon. (Iff20a, b/331289114) - Zmienia menedżera autouzupełniania na interfejs. (I84914, b/376080755)
- Dodaje
requestFocus(FocusDirection)dofocusRequesteriFocusTargetModifierNode, aby umożliwić ustawianie ostrości w określonym kierunku. (I5d9ec, b/245755256) FocusProperties.enteriFocusProperties.exitzostały zastąpione przezonEnterionExit, które używają zakresu odbiorcy zamiast parametruFocusDirection. (I6e667)- Dodanie obsługi autouzupełniania na pasku narzędzi tekstowych. (Ie6a4c)
- Zmiany w interfejsie API
Modifier.focusRestorer()(I99c03):- nazwę parametru zmieniono na „fallback”
- parametr jest teraz
FocusRequester, a nie funkcją lambda. - parametr nie może już mieć wartości NULL, a wartością domyślną jest Default.
- Usuwanie adnotacji
@Experimentalz interfejsu menedżera autouzupełniania. Ta funkcja jest nadal w trakcie prac nad wdrożeniem w tej wersji, ale nie chcemy wprowadzać interfejsu @Experimental API (Id8398). LocalHapticFeedbackudostępnia teraz domyślną implementacjęHapticFeedback, gdy interfejs Vibrator API wskazuje, że haptyka jest obsługiwana. DoHapticFeedbackTypedodano te elementy:Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Komponenty Wear Compose, które można długo klikać, takie jakButton,IconButton,TextButtoniCard, teraz wykonująLONG_PRESSwibracje, gdy podano procedurę obsługi długiego kliknięcia. (I5083d)- Usuwa
OverscrollConfigurationiLocalOverscrollConfigurationoraz dodajerememberPlatformOverscrollFactory, aby utworzyć instancję domyślnej implementacji przewijania poza krawędź lub dostosować jej parametry. Aby wyłączyć przewijanie poza krawędź, zamiastLocalOverscrollConfiguration provides nullużyjLocalOverscrollFactory provides null. Aby zmienić kolor lub wypełnienie efektu poświaty, zamiastLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)użyjLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516) - Usunięto eksperymentalny interfejs API
GlobalAssertions. Został on zaprojektowany do przeprowadzania testów ułatwień dostępu. Zamiast tego użyjenableAccessibilityChecks(). (I59322)
Wersja 1.8.0-alpha05
30 października 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha05 Wersja 1.8.0-alpha05 zawiera te zmiany.
Nowe funkcje
Autouzupełnianie jest w tej wersji dostępne za flagą funkcji. Pracujemy nad poprawą wydajności i chętnie poznamy Twoją opinię o interfejsach API. Na podstawie opinii interfejsy API będą prawdopodobnie rozwijane przed osiągnięciem stabilnej wersji.
- Aby włączyć autouzupełnianie, ustaw wartość
ComposeUiFlags.isSemanticAutofillEnabledna true wonCreatei użyj najnowszej wersji Compose Snapshot. - Ta wersja autouzupełniania obsługuje ręczne zapisywanie danych logowania, sugerowanie silnych haseł i nawigację. Obsługuje też wypełnianie, gdy pole, które można wypełnić automatycznie, zostanie zaznaczone lub gdy automatyczne wypełnianie zostanie wywołane za pomocą paska narzędzi tekstowych w komponentach tekstowych. Komponent zostanie podświetlony, aby wskazać, kiedy automatyczne wypełnianie zostało zakończone.
Zmiany w interfejsie API
- Zmodyfikuj interfejs autouzupełniania, aby był zgodny ze strukturą
expect/actual. (I22dce) - Wprowadzamy parametr
CompositionLocal, który umożliwia modyfikowanie odcienia koloru podświetlenia autouzupełniania. (I32092) - Dodano interfejs
Modifier.onRectChangedAPI, który umożliwia subskrybowanie pozycji i rozmiaru elementuLayoutNodewzględem elementu głównego, okna lub ekranu. Interfejs API rozwiązuje wiele przypadków użycia, które obsługuje istniejący modyfikatoronGloballyPositioned, ale robi to przy znacznie mniejszym obciążeniu. Interfejs API ma też funkcje ograniczania liczby wywołań zwrotnych i ich opóźniania zgodnie z wymaganiami danego przypadku użycia. (Id28c7, b/372765423, b/372757007, b/372994338) - Rozszerza 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 precyzyjne dostosowywanie procesu autouzupełniania, oraz flagęisSemanticAutofillEnabled, która włącza nową wersję autouzupełniania. (I9d484) - Dodano interfejs
Modifier.onRectChangedAPI, który umożliwia subskrybowanie pozycji i rozmiaru elementuLayoutNodewzględem elementu głównego, okna lub ekranu. Interfejs API rozwiązuje wiele przypadków użycia, które obsługuje istniejący modyfikatoronGloballyPositioned, ale robi to przy znacznie mniejszym obciążeniu. Interfejs API ma też funkcje ograniczania liczby wywołań zwrotnych i ich opóźniania zgodnie z wymaganiami danego przypadku użycia. (I3c8fa) - Dodaj właściwości semantyczne i typy danych, aby rozszerzyć obsługę Autouzupełniania. (I52c7d)
- Wszystkie metody w narzędziu do tworzenia
AnnotatedStringsą teraz nieeksperymentalne (Ia89c8, b/261561823)
Poprawki błędów
- Widoki umieszczone w oknie tworzenia wiadomości mogą teraz odbierać zdarzenia obrotowe, jeśli są aktywne (I4d53a, b/320510084).
- Rozwiązano problem polegający na tym, że różne typy zasobów nie były aktualizowane po zmianach konfiguracji (Ia9b99, b/352336694).
- Rozwiązaliśmy problem, który uniemożliwiał prawidłowe działanie
TextFieldpodczas korzystania z japońskiej klawiatury POBox na niektórych starszych urządzeniach Sony. (Ia9b99, b/373743376) - Rozwiązano problem z wyświetlaniem okien dialogowych u dołu ekranu zamiast na środku (Ia2ec, b/373093006).
- Kierowanie na interfejs API w wersji 35 lub nowszej nie wymusza już ustawienia wartości
decorFitsSystemWindowsna false w przypadku okien. (Ibc94, b/364492593) - Naprawiono błąd powodujący awarię podczas przenoszenia warstw między oknami (np. oknem dialogowym a główną treścią) (I675ba, b/330955281)
Wersja 1.8.0-alpha04
16 października 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha04 Wersja 1.8.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje wywołania zwrotne
DelegatableNode#onDensityChangeiDelegatableNode#onLayoutDirectionChange, aby umożliwić aktualizowanie stanu węzła, gdy te wartości się zmienią (I04f3e, b/340662451). - Dodaje
WindowInfo#containerSize, aby podać rozmiar kontenera treści bieżącego okna. Można go pobrać za pomocąLocalWindowInfo. (Idc38c, b/369334429, b/360343819) - Wprowadziliśmy poprawkę dotyczącą zagnieżdżonych elementów z możliwością przewijania, które są usuwane z drzewa węzłów podczas trwającego przewijania. Teraz te węzły anulują szybkie przesunięcie i prawidłowo wysyłają zdarzenie
onPostFlingz pozostałą prędkością. Wprowadzamy też flagęNewNestedScrollFlingDispatchingEnabled, która pozwala kontrolować zachowanie w przypadku regresji. Flaga zostanie usunięta przed rozpoczęciem testów beta. (I05c37, b/371168883) - Wprowadzono
PointerInputModifierNode#touchBoundsExpansion, którego można używać do powiększania obszaru dotyku modyfikatora danych wejściowych pojedynczego wskaźnika. (Iccf02, b/335339283) - Dodaje
WindowInfo#containerSize, aby podać rozmiar kontenera treści bieżącego okna. Można go pobrać za pomocąLocalWindowInfo. (I27767, b/369334429, b/360343819) - Usuń
readOnlyzTextFields', aby przypiąć do stabilnej wersji podstawowej. (I3aaba) ParagraphiParagraphIntrinsicsprzyjmują teraz listę wszystkich adnotacji zastosowanych doAnnotatedString. Wcześniej zawierały tylko listęSpanStyles(I12f80).
Poprawki błędów
- Zaktualizowano sposób traktowania akapitów w
AnnotatedString. Wcześniej można było tworzyć tylko niepokrywające się akapity. TerazAnnotatedStringumożliwia w pełni pokrywające się akapity, które zostaną połączone, oraz akapity zagnieżdżone, w których przypadku akapit zewnętrzny zostanie podzielony na granice akapitu wewnętrznego, a styl akapitu wewnętrznego zostanie połączony ze stylem akapitu zewnętrznego (Ic9554). - Naprawianie błędu w
AnnotatedStringza pomocąLinkAnnotationo zerowej długości. (89aac6)
Wersja 1.8.0-alpha03
2 października 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha03 Wersja 1.8.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Aktualizacja wersji języka Kotlin do 1.9 (I1a14c)
- Wprowadzono nową rolę semantyczną o nazwie Karuzela, która emuluje zachowanie listy w pagerach na potrzeby usług ułatwień dostępu. (Id354b, b/354109776, b/239672673)
- Zmień nazwę
invisibleToUser()nahideFromAccessibility. Jego funkcja pozostaje bez zmian. Więcej informacji znajdziesz w dokumentacji. (Ib43a3)
Poprawki błędów
- Aktualizacja dokumentacji dotyczącej modyfikatora
SensitiveContent(Ib0442) - Rozwiązaliśmy problem polegający na tym, że niektóre ogólne klipy konturowe były ignorowane w połączeniu z cieniami wysokości na niektórych wersjach Androida.
- Rozwiązaliśmy problem polegający na tym, że w przypadku niektórych wersji Androida po określeniu ogólnych klipów konturu stosowane były puste klipy.
- Rozwiązaliśmy problem z wyjątkiem zgłaszanym, gdy edytor IME jest aktywny w zewnętrznym widoku, a działanie Dalej jest używane do ustawienia fokusu na elemencie
ComposeView. DziałanieclearFocus()jest zgodne z działaniem widoku w przypadku interfejsu API w wersji starszej niż 28, w którymclearFocus()może spowodować, że domyślny widok zostanie ustawiony jako aktywny. - Rozwiązaliśmy problem, który powodował, że umieszczanie odbywało się na odłączonych węzłach w
LazyList, poprzez rozdzielenie zarządzania podkompozycją dla różnych przebiegów układu. - Rozwiązaliśmy problem polegający na tym, że klawiatura ekranowa migała, gdy fokus przełączał się z
TextFieldnaEditTextlub dowolny inny edytor oparty na widoku. - Węzły Nested Scroll będą teraz prawidłowo wysyłać zdarzenia
onPostFlingpo odłączeniu. - Ogólne ulepszenia wydajności
Wersja 1.8.0-alpha02
18 września 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha02 Wersja 1.8.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dostępne są teraz znaki
TextOverflow.StartEllipsisiTextOverflow.MiddleEllipsis, które umożliwiają umieszczenie wielokropka na początku lub w środku wiersza tekstu jednowierszowego. (I38913, b/185418980)
Poprawki błędów
- Poprawianie dialogu
dismissOnClickoutside(39a3d, b/364508685) - Nie przycinaj cieni treści okna dialogowego (e8e2f, b/363027803)
- Naprawiono nieprawidłowe działanie, gdy wyszukiwanie przenosiło fokus między funkcją pisania a widokiem (58377, b/350534714).
Wkład zewnętrzny
- Funkcja
AlignmentLinesMapakceptuje teraz typy konkretneVerticalAlignmentLinelubHorizontalAlignmentLine. (I02912) - Nowa wspólna metoda
ByteArray.decodeToImageBitmap(): ImageBitmap. (I83c21)
Wersja 1.8.0-alpha01
4 września 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha01 Wersja 1.8.0-alpha01 zawiera te zmiany.
Wersja 1.7
Wersja 1.7.8
12 lutego 2025 r.
Publikacja androidx.compose.ui:ui-*:1.7.8 Wersja 1.7.8 zawiera te zmiany.
Wersja 1.7.7
29 stycznia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.7.7 Wersja 1.7.7 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z
IndexOutOfBoundsExceptionpodczas przekazywaniaAnnotatedStringzLinkAnnotationdo elementu kompozycyjnego Text. (Ic96d2) - Rozwiązaliśmy problem z przekroczeniem limitu czasu w testach w rzadkich przypadkach, gdy w
AnnotatedStringużyto znakuLinkAnnotation. (I04a03)
Wersja 1.7.6
11 grudnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.6 Wersja 1.7.6 zawiera te zmiany.
Poprawki błędów
- Wcześniej zgłaszaliśmy błąd za każdym razem, gdy napotykaliśmy kluczowe zdarzenie, gdy system ostrości miał oczekujące unieważnienia. Zamiast tego rejestrujemy teraz błąd (I7ea0, b/346370327).
- Usunięto eksperymentalną adnotację z
SemanticsPropertyReceiver.invisibleToUser(). W wersji 1.8 zostanie wycofana i zastąpiona przezSemanticsPropertyReceiver.hideFromAccessibility(). (I448f0, b/376479686) - Rozwiązaliśmy problem, który uniemożliwiał prawidłowe działanie
TextFieldpodczas korzystania z japońskiej klawiatury POBox na niektórych starszych urządzeniach Sony. (I94e0e, b/373743376) - Rozwiązaliśmy problem z ułatwieniami dostępu, który powodował, że element
BasicText’s inlineContent nie był odczytywany przezTalkBack. (I67bcb, b/376479686)
Wersja 1.7.5
30 października 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.5 Wersja 1.7.5 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problemy polegające na tym, że wysokość i przycinanie z użyciem niestandardowych konturów nie były renderowane prawidłowo.
- Rozwiązuje problem z awarią tekstu, która występuje w przypadku znaku o zerowej szerokości
LinkAnnotation. (Ic1e2e) - Poprawia komunikat w
Talkbackprzycisku, gdy jest on zbudowany jako klikalna funkcja kompozycyjna Text. (I1f588)
Wersja 1.7.4
16 października 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.4 Wersja 1.7.4 zawiera te zmiany.
Wersja 1.7.3
2 października 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.3 Wersja 1.7.3 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że określenie ogólnego klipu konturowego powodowało wyświetlanie pustej granicy klipu w niektórych wersjach Androida.
- Rozwiązaliśmy problem z wyjątkiem zgłaszanym, gdy edytor IME jest aktywny w zewnętrznym widoku, a działanie Dalej jest używane do ustawienia fokusu na elemencie
ComposeView. DziałanieclearFocus()jest zgodne z działaniem widoku w przypadku interfejsu API w wersji starszej niż 28, w którymclearFocus()może spowodować, że domyślny widok zostanie ustawiony jako aktywny. - Rozwiązaliśmy problem, który powodował, że do unieważniania wyprzedzającego używano nieprawidłowego
placeOrder, co powodowało pomijanie umieszczania wyprzedzającego w niektórych przypadkach.
Wersja 1.7.2
18 września 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.2 Wersja 1.7.2 zawiera te zmiany.
Poprawki błędów
- Zwiększyliśmy wydajność informacji o węzłach ułatwień dostępu i zdarzeń semantycznych, usuwając szczegółowe śledzenie. (I89156, b/362530618)
ComposeViewnie będzie już ulegać awarii w przypadku przekazania wyjątkowo dużego rozmiaru pomiarowego (da5db, b/347036173).- Rozwiązaliśmy problem z czytnikiem ekranu dotyczący ułatwień dostępu, który powodował, że nie były odczytywane komunikaty
LiveRegionna przyciskach. (f66fa7, b/348590026)
Wersja 1.7.1
10 września 2024 r.
- Brak zmian w artefaktach Androida. Usunięto
-desktopartefaktów, a dodano-jvmStubsi-linuxx64Stubsartefakty. Żaden z tych celów nie jest przeznaczony do użycia. Są to tylko symbole zastępcze, które mają pomóc w pracach nad Jetbrains Compose.
Wersja 1.7.0
4 września 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0
Ważne zmiany od wersji 1.6.0
Ważne zmiany w wersji 1.7.0 zostały opisane w tym poście na blogu.
Wersja 1.7.0-rc01
21 sierpnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-rc01 Wersja 1.7.0-rc01 zawiera te zmiany.
Najważniejsze zmiany
- Moduł ui:ui wymusza teraz wymaganie minimalnej wersji foundation:foundation, która musi być co najmniej 1.7.0-rc01 lub nowsza. Jest to wymuszane w celu usunięcia niezgodności w działaniu interfejsu i biblioteki Foundation w odniesieniu do
NestedScrollSource, które zaszły na początku wersji 1.7.0-alpha01.
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta07 Wersja 1.7.0-beta07 zawiera te zmiany.
Poprawki błędów
- Funkcje związane z wprowadzaniem tekstu
SemanticsNodeInteraction,performTextReplacement,performTextInputiperformTextClearancebędą teraz zgłaszać błędy asercji, gdy zostaną wywołane w przypadkuTextFieldstylko do odczytu. (I4ae8f)
Wersja 1.7.0-beta06
24 lipca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta06 Wersja 1.7.0-beta06 zawiera te zmiany.
Wersja 1.7.0-beta05
10 lipca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta05 Wersja 1.7.0-beta05 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że zmiana klawiatury ekranowej powodowała, że
TextFieldnie akceptował danych wejściowych z nowej klawiatury, dopóki nie utracił i nie odzyskał fokusu. - Rozwiązaliśmy problem, w którym próby utrwalenia zawartości warstwy powodowały niepożądane efekty uboczne podczas renderowania treści
SurfaceView.
Wersja 1.7.0-beta04
26 czerwca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta04 Wersja 1.7.0-beta04 zawiera te zmiany.
Poprawki błędów
- Unikanie awarii podczas pomiaru bardzo długich wierszy tekstu (np.10 tys. znaków) (8157ab)
- Wyłącz obsługę renderowania oprogramowania dla interfejsu
GraphicsLayerAPI. (35ddd8) - Poprawka awarii w logice utrwalania warstw. (70b13e)
- Optymalizacja ponownego używania obiektów warstwy została wycofana, ponieważ powodowała problemy z renderowaniem. (70b13e)
Wersja 1.7.0-beta03
12 czerwca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta03 Wersja 1.7.0-beta03 zawiera te zmiany.
Wersja 1.7.0-beta02
29 maja 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta02 Wersja 1.7.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Zmieniliśmy nazwę
SemanticsProperties.EditablenaIsEditablei zmieniliśmy wartośćSemanticsPropertyReceiver.editablenaisEditable. Właściwość jest teraz wartością logiczną i zawsze jest określana przez pola tekstowe. (I8acd8) - Zmień nazwę parametru testu porównawczego ułatwień dostępu. (I3d440)
- Zaktualizowany interfejs API do stylizowania linków:
TextLinkStylesjest teraz częścią konstruktoraLinkAnnotationi metodyAnnotatedString.fromHtml(I90b2b). Usunięto teżTextDefaultsz materiału (I5477b)
Poprawki błędów
- Nazwa
LayoutCoordinates.introducesFrameOfReferencezostała zmieniona naLayoutCoordinates.introducesMotionFrameOfReference, aby lepiej odzwierciedlała jej przeznaczenie. Zmieniono nazwę powiązanej funkcji, aby obliczać współrzędne na podstawie tej flagi. (I3a330)
Wersja 1.7.0-beta01
14 maja 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta01 Wersja 1.7.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Zmieniono nazwę
performCustomAccessibilityActionLabellednaperformCustomAccessibilityActionWithLabeliperformCustomAccessibilityActionWherenaperformCustomAccessibilityActionWithLabelMatching. (I5387f) AnnotatedString.hasEqualsAnnotationsto terazhasEqualAnnotations(I685c0)- Zaktualizowano interfejs API do pobierania linków w tekście w motywie Material. W szczególności usunęliśmy metody z
TextDefaultsdo tworzenia tematycznychLinkAnnotationsi parsowania kodu HTML z tematycznymi linkami. Zamiast tego dodaliśmy klasęTextLinkStyles, która umożliwia stylowanie linków jako parametru funkcji kompozycyjnej Text. (I31b93)
Poprawki błędów
- Rozwiązuje dodatkowe przypadki użycia dynamicznego dodawania modyfikatorów danych wejściowych wskaźnika podczas zdarzeń 63e1504
Wersja 1.7.0-alpha08
1 maja 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha08 Wersja 1.7.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje obsługę implementacji kształtów z możliwością zmiany.
Shape#createOutlinejest teraz obserwowany w warstwach graficznych, więc odczytywanie wartości stanu w nich spowoduje unieważnienie, gdy stan się zmieni, co umożliwi wydajniejsze animacje kształtów. (Id1629, b/326070216) - Zmieniono nazwę
isPositionedByParentWithDirectManipulationnaintroducesFrameOfReference. Pamiętaj, że teraz ma odwrotny efekt, co oznacza, że domyślnie większośćLayoutCoordinateswprowadza ramkę odniesienia, a właściwość ma wartość fałsz tylko wtedy, gdy jest poddawana bezpośredniej manipulacji. Aby wysłać zapytanie o pozycję tylko w przypadku tych, które wprowadzają ramę odniesienia, użyj znakupositionInLocalFrameOfReference(...). lubpositionInLocalLookaheadFrameOfReferencezLookaheadScope. (Ifc5f7) LookaheadScopeInterfejsy API zostały ustabilizowane (I21507)- Zmień funkcję lambda działania w przypadku
getScrollViewportLengthzgodnie z opinią rady ds. API. (Ibc74a) - Zaktualizowano interfejsy API
GraphicsLayer, aby używały parametrów zmiennoprzecinkowych zamiast liczb całkowitych. Usunięto wartości wartowniczeUnsetOffset/UnsetSize IntSizena rzecz istniejących już stałych Unspecified w klasach wbudowanych Offset i Size opartych na liczbach zmiennoprzecinkowych (I2fb03, b/333863462). - Podczas wstrzykiwania sygnału myszy w trakcie testów funkcje
MouseInjectionScope.click(),MouseInjectionScope.doubleClick(),MouseInjectionScope.tripleClick()iMouseInjectionScope.longClick()akceptują teraz parametrbutton: MouseButton, dzięki czemu są bardziej uniwersalne. Wartością domyślną wszystkich metod jestMouseButton.Primary. (I31a23, b/190493367, b/261439695) - Zmieniono nazwę
onClickednaonClickwLinkInteractionListener. (Iaa35c) - Zmień nazwę
TextInclusionStrategy.isInsidenaisIncluded. Ustaw zwracany typParagraph/MultiParagraph#getRangeForRect()jako niepusty. (I51f26)
Poprawki błędów
- Naprawiliśmy robienie długich zrzutów ekranu w przypadku przewijanych kontenerów z
reverseScrolling=true. (I7c59c)
Wkład zewnętrzny
- Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych komponentach
LazyLists(np. w komponencieLazyColumn, który renderuje zagnieżdżony komponentLazyRows). Oczekuje się, że ta zmiana zmniejszy liczbę pominiętych klatek podczas przewijania tych komponentówLazyLists. Domyślnie implementacja pobiera wstępnie pierwsze 2 zagnieżdżone elementy, 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.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha07 Wersja 1.7.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
ClickableTextjest oznaczony jako wycofany. Aby dodać linki do tekstu, utwórzAnnotatedStringzLinkAnnotationodpowiadającym linkowi i przekaż ten elementAnnotatedStringdo funkcji kompozycyjnej Text. (I34d4b, b/323346994)- Wprowadź
ViewConfiguration.HandwritingGestureLineMargindla gestów pisma odręcznego. Obsługa gestuJoinOrSplitw przypadkuBasicTextField(Ie6e13, b/325660505) - Atrybuty
FocusProperties.enteriFocusProperties.exitnie są już eksperymentalne. AtrybutyFocusDirection.EnteriFocusDirection.Exitnie są już eksperymentalne.FocusRequester.Cancelnie jest już funkcją eksperymentalną (I461a1, b/261564106) - Podczas wysyłania zapytań o współrzędne układu możesz teraz używać argumentu
excludeDirectManipulationOffset, aby wykluczyć przesunięcie ustawione przez układy nadrzędne, które umieściły elementy podrzędne za pomocą argumentuPlaceable.PlacementScope.withDirectManipulationPlacement. Podobnie układ, który często zmienia pozycję elementów podrzędnych, może teraz umieszczać je za pomocąwithDirectManipulationPlacement(np. Scroll, zaimplementowany domyślnie). Dzięki temu animacje oparte naapproachLayoutsą bardziej intuicyjne, ponieważ użytkownicy mają teraz możliwość rozróżniania, które przesunięcie ma być animowane, a które ma być stosowane bezpośrednio podczas decydowania o animowaniu swojego podejścia. (I60ec7) - Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
LazyColumnbędzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)- Źródła
NestedScrollDrag i Fling zostaną zastąpione źródłamiUserInputiSideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz kółko myszy i klawiaturę (UserInput). (I40579) ApproachLayoutModifierNodeiModifier.approachLayoutsą teraz stabilne, a noweisMeasurementApproachInProgress()iisPlacementApproachInProgress()zastępują odpowiednio stareisMeasurementApproachComplete()iisPlacementApproachComplete().- Usunięto wycofany modyfikator
intermediateLayout. (I3e91c) - Zmień nazwę
GraphicsLayer#buildLayerna record, aby odzwierciedlić metody begin/endRecording interfejsów API opartych na liście wyświetlania, takich jakRenderNodei Picture. - Zaktualizowano
rememberGraphicsLayer, aby korzystać zrememberObserver. (I312c1, b/288494724, b/330758155) - Metoda
UrlAnnotationzostała wycofana. Zamiast niej używaj metodyLinkAnnotation.Url. Jeśli używasz motywu Material Design, użyj obiektuTextDefaults, aby utworzyć adnotację z zastosowanym motywem Material Design (I8d180, b/323346545). - Oprócz normalnego stylu, stylu po najechaniu kursorem i stylu po zaznaczeniu linki tekstowe mają teraz styl po kliknięciu (I5f864, b/139312671).
- Nazwa
String.parseAsHtmlzostała zmieniona naAnnotatedString.Companion.fromHtml. (I43dcd) - Dodano argumenty stylu (
linkStyle,focusedLinkStyle,hoveredLinkStyle) i funkcję nasłuchiwania interakcji z linkiem do metodyparseAsHtml. Podczas analizowania ciągu znaków z tagami HTML z tagami<a>metoda utworzy obiektLinkAnnotation.Urldla każdego takiego tagu i przekaże obiekty stylu oraz odbiornik interakcji z linkiem do każdej adnotacji. (I7c977) LinkAnnotationprzyjmuje teraz argumenty stylizacji opartej na stanie i wartośćLinkInteractionListener. Dodaj tę adnotację doAnnotatedString, aby uzyskać hiperlink. PrzekazującfocusedStatelubhoveredState, możesz zdefiniować wizualnyconfigurationlinków, gdy są zaznaczone lub nad nimi znajduje się kursor. (I81ce4, b/139312671)ImeOptions.hintLocalesnie może już przyjmować wartości null. Jeśli chcesz przekazać pustą listę ustawień regionalnych, użyjLocaleList.Empty. (Ic5bc4)
Poprawki błędów
- Prawidłowo obsługuje nieprawidłowe lub uszkodzone dane historyczne zdarzeń wejściowych (ignoruje nieprawidłowe dane przesunięcia).
- Rozwiązuje problem z nieoczekiwanymi zdarzeniami 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 zdarzeniami hoverenter i hoverexit [mysz/rysik]).
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha06 Wersja 1.7.0-alpha06 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy metodę
parseAsHtmldla ciągów ze stylami: umożliwia ona przekształcenie ciągu oznaczonego tagami HTML wAnnotatedString. Pamiętaj, że nie wszystkie tagi są obsługiwane. Na przykład nie możesz jeszcze wyświetlać list punktowanych. (I84d3d, I30626, b/139326648) - Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania Compose przy użyciu oficjalnego interfejsu Android API (
ScrollCaptureCallback). Ta funkcja jest eksperymentalna i może obecnie nie obsługiwać wszystkich przypadków prawidłowo. Z tego powodu jest ona obecnie domyślnie wyłączona. Aby włączyć tę funkcję, ustaw flagęComposeFeatureFlag_LongScreenshotsEnabledna wartość true. (I2b055, b/329296471)
Zmiany w interfejsie API
- Wartość
fun ClipEntry.getMetadata()została zmieniona naval ClipEntry.clipMetadata. (I50155) - Usunięto funkcje
ClipboardManager.getClipMetadataiClipboardManager.hasClip. Aby odczytać metadane bieżącego wpisu klipu, użyjclipEntry.getMetadata(). Sprawdź też wynikClipboardManager.getClip, aby dowiedzieć się, czy schowek zawiera bieżący klip. (I50498) - Teraz możesz przekazywać obiekty
GraphicsLayerdo funkcjiplaceable.placeWithLayer()(I1b22f) ClipboardManager.setClipakceptuje teraz 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 do kompilacji (I99531).
- Dodaliśmy metodę zawieszania
GraphicsLayer#toImageBitmap, która umożliwia renderowanie zawartości mapy bitowej w obiekcieGraphicsLayer. Jest to operacja renderowania przyspieszanego sprzętowo na poziomie interfejsu API 22 lub nowszym (włącznie), która jest obsługiwana na ponad 99% urządzeń z Androidem. Na Androidzie na poziomie interfejsu API 21 jest to zastępowane renderowaniem programowym. (I9e114) - Metoda pomocnicza do konwertowania Androida
RectFnaComposeRect(I39925, b/325660505) - Wszystkie parametry
KeyboardOptionsmają teraz domyślnie wartość nieokreśloną. Dodaliśmy metodęKeyboardOptions.merge. - Zmieniliśmy nazwę atrybutu
KeyboardOptions.autoCorrectnaautoCorrectEnabledi umożliwiliśmy przypisywanie mu wartości null, która oznacza, że nie określono żadnej wartości. (Ia8ba0, b/295951492) - Warianty
BasicTextField(state)iBasicSecureTextFieldużywają terazKeyboardActionHandlerzamiastKeyboardActionsdo przetwarzania działań wykonywanych przez klawiaturę ekranową. (I58dda)
Wersja 1.7.0-alpha05
20 marca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha05 Wersja 1.7.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Wprowadzamy nowy interfejs
GraphicsLayerAPI do rejestrowania poleceń rysowania na liście wyświetlania oraz dodatkowe właściwości, które wpływają na renderowanie listy wyświetlania. Zapewnia to granicę izolacji, która dzieli złożoną scenę na mniejsze części, które można aktualizować niezależnie od siebie bez ponownego tworzenia całej sceny. PrzekształceniaGraphicsLayermożna przeprowadzać bez ponownego nagrywania listy wyświetlania. W przeciwieństwie doModifier.graphicsLayerfunkcjaGraphicsLayerumożliwia renderowanie treści elementu kompozycyjnego w innych miejscach i jest przydatna w animowanych przypadkach użycia, w których oczekuje się renderowania treści w różnych scenach.
Zmiany w interfejsie API
GraphicsLayer.draw(Canvas)nie jest już publicznym interfejsem API. Aby narysować warstwę, użyj funkcji rozszerzeniaDrawScope.drawLayer(GraphicsLayer). (I7a7c0)- Podzielenie funkcji
restrictedConstraints()na 2 metody:fitPrioritizingWidth()ifitPrioritizingHeight()(I6d7fd) - Wprowadzono
HardwareCanvasstub do używania w Androidzie L (I1c3b5, b/288494724) - Zaktualizuj platformę Compose, aby udostępniała lokalną kompozycję
GraphicsContextwraz z aktualizacją implementacji elementów Owner,DelegateableNodeidrawWithCacheModifier, aby udostępniać dostęp do elementuGraphicsContextw zakresie, który automatycznie czyści instancjeGraphicsLayerpo usunięciu elementów Modifier. (I64a2f, b/288494724) - Wprowadziliśmy
InterceptPlatformTextInput, aby ułatwić pisanie testów niskiego poziomu związanych z IME i innych przypadków użycia IME niskiego poziomu. Środowisko wykonawczePlatformTextInputTestOverridezostało wycofane. (I862ed, b/322680547) - Dodano funkcję rozszerzenia
GraphicsLayer.setOutline(Outline). (Ib81f4) - Wprowadzenie konstruktora funkcji
GraphicsContextdo tworzenia fabryki instancjiGraphicsLayer(Ib98d6, b/288494724) - Udostępniliśmy interfejs
GraphicsLayerAPI, który zapewnia programistom elastyczność w zakresie przechwytywania poleceń rysowania. Można ich używać do rysowania w innych miejscach, a także do stosowania różnych efektów wizualnych do wyniku końcowego. (I80245, b/288494724) - Wprowadzamy funkcję
Paragraph#getRangeForRect, która zwraca zakres tekstu objęty danym obszarem prostokątnym. (Iee516, b/325660505) - Usunięto eksperymentalne zastąpienie
BasicTextz argumentemonLinkClicked. W przyszłości udostępnimy interfejs API zastępujący obsługę hiperlinków. (I107d5)
Poprawki błędów
- Dodano definicję interfejsu API
GraphicsLayerexpect/actual, aby obsługiwać rejestrowanie i odtwarzanie poleceń rysowania z opcjonalnymi efektami wizualnymi i transformacjami kompozycji. Wprowadzenie interfejsuGraphicsContextdo przechowywania zależności graficznych, w tym tworzenia instancjiGraphicsLayeri zarządzania nimi. (I4a8d6, b/288494724) - Rozwiązaliśmy problem z współdziałaniem z wyszukiwaniem fokusu 1D, który powodował, że fokus blokował się w
ComposeViewosadzonym wśród innych widoków. (I08fd4)
Wkład zewnętrzny
LocalLifecycleOwnerzostał przeniesiony z Compose UI dolifecycle-runtime-compose, aby jego interfejsy API pomocnicze oparte na Compose można było używać poza Compose UI. Dziękujemy Jake’owi Whartonowi za pomoc. (I6c41b, b/328263448)- Spójne udostępnianie właściwości zmiennoprzecinkowych odchylenia we wszystkich podtypach wyrównania opartych na odchyleniu. (I69f0f, b/328088992)
Wersja 1.7.0-alpha04
6 marca 2024 roku
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha04 Wersja 1.7.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Obsługa funkcji pisma odręcznego rysikiem w przypadku komponentu BasicTextField2 na urządzeniach z Androidem U i nowszym. (I002e4)
- W tym CL dodajemy
GetScrollViewportLengthdziałanie semantyczne, abyśmy mogli przekazywać do systemu ułatwień dostępu informacje o komponentach przewijanych w kompozycji. Ta zmiana dotyczy też użycia tej właściwości w listach przewijanych Foundation. (Ic5fa2) FocusRequester.createRefsjest teraz stabilna (I4d92c, b/261436820)- Wprowadzono
DelegatableNode.requireView(), aby umożliwić węzłom modyfikatorów uzyskiwanie bieżącegoViewAndroida bez odczytywania lokalnej kompozycji. (I40768) - Nowy interfejs API
Path.reverse()do odwracania kierunku ścieżki (I36348) - Dodano
hintLocalesdoKeyboardOptions, aby umożliwićTextFieldspodpowiadanie edytorom IME konkretnych ustawień regionalnych w celu wstępnego ustawienia preferowanego języka. - Udostępnij właściwość
platformLocalezLocale, która zwraca obiekt platformy bazowej, np.java.util.Locale. (I921c6)
Wersja 1.7.0-alpha03
21 lutego 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha03 Wersja 1.7.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Przedstawiamy
ContextualFlowRowi ulepszoneFlowRow/Columnz funkcjami MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnych funkcjiFlowRowiFlowColumn, które teraz obsługują maxLines i overflow, oraz o wprowadzeniu funkcjiContextualFlowRowiContextualFlowColumn. Ta aktualizacja ma na celu udostępnienie komponentów o optymalnej wydajności. KomponentContextualFlow*doskonale sprawdza się w przypadku dużej liczby produktów korzystających z małej konfiguracjimaxLinesoraz dynamicznych przycisków „+N więcej”, a komponentyFlowRowiFlowColumnsą idealne w przypadku małej liczby produktów, czyli mniej niż 100. Ważne: aby zachować dotychczasowe działanie w przypadkuFlowRowlubFlowColumn, gdzie wszystkie elementy są tworzone niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw wartośćoverflownaFlowRowOverflow.VisiblelubFlowColumnOverflow.Visible. Przykłady działania tych nowych funkcji znajdziesz w sekcjachContextualFlowRowSampleiFlowRowSample. (Ib9135, b/293577082) - Dodaj właściwość semantyczną
maxTextLength, która powinna być ustawiona w polach tekstowych filtrujących maksymalną dozwoloną liczbę znaków. (I24d9f, b/170648072) - Moduł
Modifier.inspectablezostał wycofany. Ten interfejs API będzie tworzyć więcej unieważnień modyfikatora niż jest to konieczne, dlatego jego używanie jest obecnie odradzane. Deweloperzy, którzy chcą udostępniać narzędziom właściwości modyfikatora, powinni zaimplementować metodęinspectableProperties()wModifierNodeElement. (Ib3236) - Nowy konstruktor dla
PopupProperties, który umożliwia pełną kontrolę nad flagamiWindowManager.LayoutParams. (Ibb33e, b/312485503) - Wprowadziliśmy
DelegatableNode.requireLayoutCoordinates()jako sposób na uzyskanie bieżącegoLayoutCoordinatesModifier.Nodebez konieczności zastępowaniaonPlacedi samodzielnego przechowywania współrzędnych we właściwości. (Ia8657) - Wprowadziliśmy
DelegatableNode.currentLayoutCoordinatesjako sposób na uzyskanie bieżącegoModifier.NodeLayoutCoordinatesbez konieczności zastępowaniaonPlacedi samodzielnego przechowywania współrzędnych we właściwości. (Iaebaa) - Interfejs API
BasicTextField2i powiązane interfejsy API w pakiecieandroidx.compose.foundation.text2zostaną przeniesione do pakietuandroidx.compose.foundation.text. (I9f635) - Dodano nowy interfejs API
ApproachLayoutModifierNode, który umożliwia tworzenie niestandardowej logiki podejścia w węźle modyfikatora. Dodano też nowy eksperymentalny interfejs APIDeferredTargetAnimationdo animacji, których cel jest nieznany w momencie tworzenia instancji. (I60745) - Nowe interfejsy API
Pathdo wysyłania zapytań o kierunek ścieżki i wyodrębniania konturów zPath. (I63d04) - Dodano funkcje
PathHitTestiPath.contains(Offset), aby sprawdzić, czyPathzawiera określony punkt. (I3b218) - Interfejs
TextLayoutResultudostępnia teraz metodęgetLineBaseline(lineIndex). Umożliwia to odczytanie linii bazowej dowolnego wiersza tekstu oprócz istniejących właściwościfirstBaselineilastBaseline. (Ide4e8, b/237428541) - Dodano metodę porównywania tylko adnotacji dwóch
AnnotatedStrings. (I32659)
Poprawki błędów
- Rozwiązano problem ze zgodnością wsteczną z przeglądarkami
SemanticsPropertyReceiver.performImeActioniSemanticsActions.PerformImeAction. (Id0528, b/322269946)
Wersja 1.7.0-alpha02
7 lutego 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha02 Wersja 1.7.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozwiązaliśmy 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óre przyjmuje opis warunku w postaci ciągu znaków do uwzględnienia w komunikacie o przekroczeniu limitu czasu. (I9413e) - Nowy interfejs API semantyki
unset()umożliwiający usuwanie właściwości semantycznych dodanych w tym samym łańcuchu modyfikatorów. Nowa właściwość semantycznaisOpaque. (I8c583, b/317966058, b/246056649) - Usunęliśmy metodę kopiowania
originalEventPositionz publicznego interfejsu API usługiPointerInputChange. (I7bead)
Poprawki błędów
- Rozwiązaliśmy problem z ułatwieniami dostępu, który umożliwiał klikanie elementów innych niż karty i przyciski opcji po ich wybraniu. (I2181c)
VelocityTrackerbędzie teraz domyślnie zawierać poprawkę umożliwiającą dodawanie punktów. Jeśli wystąpią jakiekolwiek problemy, poprawkę można wyłączyć, ustawiając wartośćVelocityTrackerAddPointsFixna false. (Ib3877, b/269487059)- Naprawiono brak zgodności wstecznej w
TextStyleiParagraphStyle. (I179f0, b/320819734)
Wkład zewnętrzny
- Dodano nowy konstruktor
DialogPropertiesbez parametrów specyficznych dla platformy. (I45829) - Dodano nowy konstruktor
PopupPropertiesbez parametrów specyficznych dla platformy. (I9a038)
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha01 Wersja 1.7.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozszerzyliśmy atrybut
ClipboardManager, dodając do niego atrybutyClipEntryiClipMetadata, aby obsługiwać dowolne treści, takie jak obrazy. - Dodaje interfejs
DeviceConfigurationOverrideAPI doui-test, aby umożliwić lokalne zastępowanie zachowania testowanych treści, np. określanie dostępnego rozmiaru, regionu, kierunku układu, skali czcionki lub motywu.
Wersja 1.6
Wersja 1.6.8
12 czerwca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.6.8 Wersja 1.6.8 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy niespójności w skalowaniu czcionki, gdy skala czcionki jest mniejsza niż najniższa zdefiniowana tabela. W takim przypadku interpolujemy teraz między liniową skalą 1x a najniższą zdefiniowaną tabelą, aby rozmiar czcionki monotonicznie wzrastał wraz ze wzrostem skali. (Icbae3)
Wersja 1.6.7
1 maja 2024 r.
Publikacja androidx.compose.ui:ui-*:1.6.7 Wersja 1.6.7 zawiera te zmiany.
Wersja 1.6.6
17 kwietnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.6.6 Wersja 1.6.6 zawiera te zmiany.
Poprawki błędów
- Rozwiązuje rzadki problem z awarią
BasicTextField.
Wersja 1.6.5
3 kwietnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.6.5 Wersja 1.6.5 zawiera te zmiany.
Wersja 1.6.4
20 marca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.6.4 Wersja 1.6.4 zawiera te zmiany.
Wersja 1.6.3
6 marca 2024 roku
Publikacja androidx.compose.ui:ui-*:1.6.3 Wersja 1.6.3 zawiera te zmiany.
Wersja 1.6.2
21 lutego 2024 r.
Publikacja androidx.compose.ui:ui-*:1.6.2 Wersja 1.6.2 zawiera te zatwierdzenia.
Wersja 1.6.1
7 lutego 2024 r.
Publikacja androidx.compose.ui:ui-*:1.6.1 Wersja 1.6.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem ze zgodnością wsteczną z przeglądarkami
SemanticsPropertyReceiver.performImeActioniSemanticsActions.PerformImeAction. (Ie0bb2, b/322269946) - Układy zgłaszają teraz błąd podczas pomiaru, gdy jeden z nich zwraca nienormalnie duży rozmiar. Ten rodzaj błędu zwykle występuje, gdy pomiar bezpośrednio wykorzystuje maksymalne ograniczenia bez sprawdzania
Constraints.Infinity. Sprawdzanie pomoże deweloperom znaleźć problemy z nieprawidłowym rozmiarem układu, a nie z układem, który go zawiera. (I339a9)
Wersja 1.6.0
24 stycznia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.6.0 Wersja 1.6.0 zawiera te zatwierdzenia.
Wersja 1.6.0-rc01
10 stycznia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-rc01 Wersja 1.6.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Zoptymalizowana implementacja grafiki wektorowej, która poprawia wydajność przez zminimalizowanie dodatkowych przekształceń.
Wersja 1.6.0-beta03
13 grudnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-beta03 Wersja 1.6.0-beta03 zawiera te zatwierdzenia.
Nowe funkcje
- Teraz można odłączyć
LayoutCoordinatesbez odłączania węzła. Zapobiegaj temu w narzędziu Layout Inspector w Compose (If693)
Poprawki błędów
PlatformImeOptionsjest teraz klasą konkretną zamiast interfejsu. (If40a4)- Naprawiono dodatkowe ponowne kompozycje podrzędne spowodowane przez
LocalSoftwareKeyboardControlleriLocalTextInputService, które otrzymywały nowe wartości za każdym razem, gdy ponownie komponowany był element główny. (I42190, b/310510985)
Wersja 1.6.0-beta02
29 listopada 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-beta02 Wersja 1.6.0-beta02 zawiera te zatwierdzenia.
Wersja 1.6.0-beta01
15 listopada 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-beta01 Wersja 1.6.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Modyfikator
DragAndDropTargetprzyjmuje teraz jawnie odbierającyDragAndDropTargeti ma funkcję lambda, która umożliwia rozpoczęcie sesji przeciągania i upuszczania. Obecnie dostępne są 2 funkcje fabryczne dlaDragAndDropModifierNode. jeden do odbierania przelewów i jeden do przesyłania danych (I69481); - Zaktualizowano wartość
maximumFlingVelocity, aby była reprezentowana jako liczba zmiennoprzecinkowa. Zaktualizowaliśmy dokumentację, aby była bardziej przejrzysta w kwestiimaximumFlingVelocity. (I8adc7) onDragAndDropStartw fabryceDragAndDropModifierNodenosi teraz nazwęacceptDragAndDropTransfer.AdresacceptsDragAndDropTransferzostał dodany dodragAndDropTargetModyfikator, aby zaakceptować go w sesji przeciągania i upuszczania. Ta funkcja lambda zwraca odpowiedźDragAndDropTarget, jeśli użytkownik jest zainteresowany sesją przeciągania i upuszczania. Inne funkcje lambda do przetwarzania zdarzeń przeciągania zostały zastąpione przez tę funkcję. Dodano funkcję fabrycznąDragAndDropTargetdo odbierania danych z sesji przeciągania i upuszczania (Iebf3a).Usunięto
DragAndDropInfojako typ. FunkcjaDragAndDropModifierNode.dragprzyjmuje teraz parametry dla funkcjitransferData, rozmiaru dekoracji i funkcji lambdaDrawScopedekoracji przeciągania.DragAndDropTargetma metody dla poszczególnych zdarzeń przeciągania i upuszczania, a nie jedną metodę abstrakcyjną.onDragAndDropEventw funkcji fabrycznej dlaDragAndDropModifierNodezostała zmieniona naonDragAndDropStart, aby lepiej informować, że podanyDragAndDropTargetjest ważny tylko w przypadku danej sesji przeciągania i upuszczania.Element
DragAndDropEventTypezostał usunięty (I645b1)Zmieniono nazwę
PlatformTextInputModifierNode.runTextInputSessionnaestablishTextInputSession. (I03cd0)Ulepsza nazwy interfejsów API węzłów, które można przechodzić, aby były bardziej zrozumiałe. (Ia4474)
Zastąp
OriginalTexttekstemTextSubstitution. (Ifa5a8)Zmieniono nazwę
PlatformTextInputModifierNode.textInputSessionnarunTextInputSession. (Ie9c6b)Elementy podrzędne
SubcomposeLayout(i układy takie jakLazyColumn, które są na nim oparte), które są zachowywane do ponownego użycia w przyszłości, są uważane za wyłączone. Wprowadziliśmy nowy interfejs APIassertIsDeactivated()do testowania takich węzłów. Pozostałe interfejsy API testu będą domyślnie odfiltrowywać zdezaktywowane węzły. (I2ef84, b/187188981)Usunięto polecenia
FocusDirection.IniFocusDirection.Out, zamiast nich używaj poleceńFocusDirection.EnteriFocusDirection.Exit(I2f660)Interfejsy API Material
SwipeToReveal(w przypadku kart i elementów) korzystają teraz z interfejsu API opartego na slotach (zgodnie z zaleceniami Compose) zamiast z instancji opartych na klasach danych, aby tworzyć te sloty. Jest to zmiana powodująca niezgodność wsteczną. Przykłady użycia nowego interfejsu API znajdziesz w wersji demonstracyjnej i przykładowym kodzie. (Ia8943)Konstruktor
FontStyle(int)został wycofany. Zamiast niego używajFontStyle.NormallubFontStyle.Italic. (I66610)Zmieniono nazwę interfejsu
FontScalablenaFontScaling(Ie804a)
Poprawki błędów
SoftwareKeyboardController.show()nie będzie już wyświetlać klawiatury ekranowej, jeśli nie jest aktywny żaden edytor tekstu. (I2165a, b/301477279)- Zdarzenia naciśnięcia klawisza sprzętowego, które nie otrzymały zdarzenia naciśnięcia w tym samym widoku kompozycji, będą teraz ignorowane. (Ib37b4, b/305518328)
- Dodaliśmy obsługę renderowania gradientu kołowego w
ArcLine. (I4d5bb) - Zaimplementuj metody equals i hashcode dla klasy
PageSize.Fixed. (Ie3ede, b/300134276) - Rozwiązanie problemu ze zgodnością binarną ze zmianą wstawki okna (Iee695)
- Usuń warstwę podstawową materiału w przypadku komponentu lub przycisku Material3, ponieważ testy porównawcze pokazują, że bez niej wydajność jest lepsza. (I55555)
TestDispatcherprzekazywane jakoeffectContextdo testów Compose będą teraz używane do tworzenia testów i zegarów klatek. (Ia7178)
Wersja 1.6.0-alpha08
18 października 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha08 Wersja 1.6.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- W funkcji
Modifier.dragAndDrawSourcezmieniliśmy nazwę funkcji lambdaonDrawDragShadownadrawDragDecoration, a w funkcjiDragAndDropInfozmieniliśmy nazwę parametru rozmiaru nadragDecorationSize. (Id0e30, b/303904810) - Wprowadzamy funkcje
SemanticsNodeInteraction.isDisplayed()iSemanticsNodeInteraction.isNotDisplayed(), aby sprawdzać, czy pasujący węzeł jest widoczny, bez potwierdzania tego. (I2c196, b/302100809) - Wprowadziliśmy specjalną wartość
Unspecifiedw polachTextAlign,TextDirection,HyphensiLineBreakwParagraphTextStyle, aby zastąpićnull. Ponieważ są to klasy wbudowane, zastępując typ dopuszczający wartość null typem Unspecified, unikamy pakowania typu prostego. Konstruktory, metody pobierające i inne metody w stylachTextStylei Paragraph zostały zaktualizowane, aby akceptować wymienione parametry jako typy inne niż null. (I4197e, b/299490814) - Dodaj przeciążenie
GoogleFontdo odczytywania wartościGoogleFontz pliku XML. (If8f59) LoremIpsumPreviewParameterProviderzostały przekształcone w zajęcia otwarte. (I41bf5, b/266918816, b/300116360)
Poprawki błędów
FontFamilyResolverużywa terazDispatchers.Maindo procedur współbieżnych zarządzania pamięcią podręczną. (Ie8dd9)AndroidViewBindingsynchronicznie usuwa teraz instancjeFragmentrozszerzone przez uwzględnienie elementuFragmentContainerVieww układzie w ramach jegoonReleaseza pomocącommitNow(zamiast używanego wcześniejcommit), co rozwiązuje problemy z metodą Live Edit polegającą na zastępowaniu kompozycji po zmianach. (I58fbf)
Wersja 1.6.0-alpha07
4 października 2023 roku
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha07 Wersja 1.6.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy
PlatformTextInputMethodTestOverridedo testów pisania w niestandardowych edytorach tekstu. (Id159b) - Dodaje
dragAndDropSourceModifier do rozpoczynania sesji przeciągania i upuszczania orazdragAndDropTargetModifier do odbierania danych z sesji przeciągania i upuszczania. (Ib7828, b/286038936) - Dodano kolekcje
ColorListiColorSet, które unikają przydzielania. (I744bd) - Dodaliśmy
DisableNonLinearFontScalingInComposetymczasową flagę, która wyłącza nieliniowe skalowanie czcionki. W testach ustaw wartośćDisableNonLinearFontScalingInCompose = true, jeśli potrzebujesz czasu na ich uporządkowanie. Ten atrybut zostanie usunięty w Compose 1.6.0-beta01. (Ic9486)
Poprawki błędów
- Zoptymalizowano analizowanie wektorowych plików XML. (Ibb015)
Wersja 1.6.0-alpha06
20 września 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha06 Wersja 1.6.0-alpha06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodatkowe optymalizacje ikon Material. (I3e08d)
- Dodaje możliwość przechodzenia 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,Sizei inne. (Id65c8, b/290950582) - Dodaj
showSystemUi=truedo definicjiPreviewScreenSizes(Ib61d3)
Zmiany w zachowaniu
- Komponowanie korzysta teraz z nieliniowego skalowania czcionek, co zwiększa czytelność i dostępność. Gdy skala czcionki w ustawieniach systemu jest większa niż 100%, mały tekst zwiększa się normalnie, ale już duży tekst powiększa się tylko nieznacznie. Wysokości wierszy zdefiniowane w SP będą też automatycznie dostosowywane, aby zachować proporcje do wysokości przy skali 100%. Więcej informacji znajdziesz w sprawdzonych metodach dotyczących skalowania czcionek. (I11518)
Wersja 1.6.0-alpha05
6 września 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha05 Wersja 1.6.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Włącz przechwytywanie treści w
AndroidComposeViewAccessibilityDelegateCompat. (Ib2969) - Prędkości przesunięcia w komponentach widoku, takich jak
ScrollViewiRecyclerView, są ograniczone doViewConfiguration.ScaledMaximumFlingVelocity. Funkcja Pisanie zawiera teraz własną wersjęmaximumFlingVelocity, która obowiązuje w przypadkuDraggable. (Ibf974) - Dodaje początkową strukturę obsługującą interfejsy API platformy do przeciągania i upuszczania. (If84ce)
- Dodaj
deviceIddoRotaryScrollEvent(Iba3bf) - Zaktualizowaliśmy interfejs
ui-toolingDevices API, aby uwzględniał nowsze urządzenia (Ib25b4).
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha04 Wersja 1.6.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy 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
ReusableCompositiondo zarządzania cyklem życia i ponownym wykorzystywaniem podkompozycji. (I812d1, b/252846775) Modifier.focusGroupzostał przeniesiony do stabilnych interfejsów API. (I7ffa3)- Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić
ColorInt,FloatRange,IntRange,Sizei inne. (I70487, b/290950582) - Zaktualizowano interfejs
ColorFilterAPI, aby zawierał konkretne typy podklas, co ułatwia sprawdzanie parametrów. (I5fe29) - Wprowadzenie biblioteki wear-tooling-preview, która zawiera listę prawidłowych urządzeń z Wear OS, których można używać do podglądu interfejsu (Ib036e).
- Utworzono interfejs
FontScalabledo obsługi skalowania czcionek w ramach interfejsu Gęstość. (I2cf3f)
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha03 Wersja 1.6.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nowy typ przejścia wejścia/wyjścia, który skaluje treść na podstawie rozmiaru animowanego kontenera podczas animacji wejścia i wyjścia.
LookaheadScopeFunkcje i interfejs kompozycyjny są teraz stabilne. (Ifb2ce) - Dodano obsługę konfigurowania
privateImeOptions(Idb772)
Poprawki błędów
PopupPositionProvider.calculatePositionbędzie teraz automatycznie aktualizować pozycję wyskakującego okienka, gdy zmieni się stan odczytany w obliczeniach. (I676a1, b/292257547)- Naprawiliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość
readOnlywynosiła „true”. Rozwiązaliśmy też problem z niewyświetlaniem klawiatury, gdy wartośćreadOnlyzmienia się z prawda na fałsz, gdy element jest aktywny. (I34a19, b/246909589) - Rozszerzyliśmy zastosowanie globalnych asercji w testach interfejsu. (I1f90d)
Wersja 1.6.0-alpha02
26 lipca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha02 Wersja 1.6.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano interfejs lokalizatora usług, który może być implementowany przez osoby implementujące kompozycję. Umożliwia on implementację kompozycji, która przekazuje wyszukiwania usług delegowanych do innej kompozycji do oryginalnej kompozycji. Nie należy wywoływać tej funkcji bezpośrednio. Służy ona do tworzenia eksperymentalnych interfejsów API w środowisku wykonawczym, które można znaleźć w wersjach opakowanych kompozytora, takich jak moduł interfejsu. (I296b9)
- Całkowicie przeprojektowany interfejs API
PlatformTextInput*. (I6c93a, b/274661182, b/267235947, b/277380808) - Atrybuty
SoftwareKeyboardControlleriLocalSoftwareKeyboardControllernie są już eksperymentalne.LocalSoftwareKeyboardControllerjest teraz też prawidłowymCompositionLocal. (I4c364) - Interfejsy
LookaheadLayoutiLookaheadLayoutScopezostały wycofane w kilku wersjach i zostały teraz usunięte. Zastępujące je interfejsy APILookaheadScopemogą współpracować z dowolnym układem. (I12ac3) - Dodano
SemanticsNodeInteraction.requestFocusjako wygodniejszy i łatwiejszy do znalezienia sposób na proszenie o skupienie uwagi w testach. (Ie8722) - Dodano eksperymentalne interfejsy API do rejestrowania globalnych asercji, które w przyszłości będą używane przez platformy testowe. (I12d77)
Poprawki błędów
AndroidViewPierwsze wywołanie funkcji zwrotnejupdatebędzie teraz odroczone do momentu dołączenia widoku, zamiast uruchamiać się po zastosowaniu kompozycji, która wprowadzaAndroidView. Rozwiązaliśmy problem, który powodował, że wywołanie zwrotneupdatenie było unieważniane, jeśli stan, z którego odczytywało dane, został natychmiast zmieniony przez efekt. (Ie9438, b/291094055)
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha01 Wersja 1.6.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa wyprzedzenia w przypadku
LazyList. Dzięki temuLazyListw przepuszczaniu z wyprzedzeniem może pominąć dowolną animację (np.animację umieszczania elementu,AnimatedVisibilityitp.) i obliczyć rozmiar i pozycję wyprzedzenia dla wszystkich elementów podrzędnych. Po przejściu do przodu dzieci w wiekuLazyListmogą animować niezależnie od rzeczywistości, jak widać w przejściu do przodu.
Zmiana działania: w Compose domyślnie ustawiono wartość false dla parametru includeFontPadding
W Compose wartość domyślna parametru includeFontPadding to teraz false (21d806).
includeFontPadding to starszy atrybut, który określa, czy dodać dodatkowe dopełnienie nad pierwszym i pod ostatnim wierszem tekstu, aby uwzględnić znaki, które mogą wystawać ponad lub poniżej linii bazowych tekstu.
Zaktualizowanie tej wersji Compose zmieni sposób renderowania wszystkich tekstów w interfejsie, ponieważ usunie dodatkowe dopełnienie nad pierwszym i pod ostatnim wierszem każdego wyświetlanego tekstu.
W zależności od wymagań interfejsu i używanych przez Ciebie danych czcionki zmiany powinny być minimalne. Możesz jednak napotkać przeszkody, takie jak: - nieudane testy zrzutów ekranu; W razie potrzeby popraw interfejs i wygeneruj ponownie wzorcowe obrazy. – Tekst jest lekko przesunięty. Usuń niestandardowe ujemne dopełnienie lub w razie potrzeby dodaj dopełnienie.
Możesz włączyć includeFontPadding, używając PlatformTextStyle w przypadku 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 Compose includeFontPadding znajdziesz w dokumentacji dla deweloperów i w tym poście na blogu.
Jeśli napotkasz problemy lub błędy związane z tą zmianą, zgłoś je w narzędziu do śledzenia problemów.
Zmiany w interfejsie API
- Wesprzyj kanał
InputConnection#requestCursorUpdates(I0c69b) - Dodano
FocusRequester.saveFocusedChildiFocusRequester.restoreFocusedChild(Ic557e, b/272302679, b/275157318) - Dodaj typ
ResourceResolutionException, aby opakować wyjątki zgłaszane podczas próby wczytania komponentów bitmapowych z opisem ścieżki komponentu, którego nie udało się wczytać. (I19f44, b/230166331, b/278424788) - Zoptymalizowana dostępność pod kątem wydajności i alokacji pamięci. (Iede48)
- Dodaliśmy właściwości i działania semantyczne, aby obsługiwać tłumaczenie tekstu. (I4a6bc)
- Nowa właściwość w
IntrinsincMeasureScopei jej implementacje (np.MeasureScope) wskazujące, czy bieżące przejście pomiaru jest przejściem wyprzedzającym. (I7a812) - Zaktualizowaliśmy interfejs
DrawScopeAPI, aby umożliwić ponowne kierowanie renderowania na inne miejsce docelowe o innej gęstości, kierunku układu i rozmiarze. - Zaktualizowano
DrawContext, aby obsługiwać konfigurację gęstości i kierunku układu, a także umożliwić konfigurowanie obszaru roboczego. (Ie1f9b, b/225408150) - Dodano
Paragraph#fillBoundingBoxesdo obliczania ramek ograniczających znaków. (If30ee) - Dodano zestaw typowych
MultiPreviews(Ia5a27)
Poprawki błędów
- Dodano interfejs
FocusTargetModifierNode, którego można użyć do utworzenia niestandardowegoFocusTarget. (I9790e) - Zmieniono nazwy parametrów
fallback*w konstruktorzeTextMeasurernadefault*. (I940a5) - Zmieniono nazwę
SemanticsPropertyReceiver.performImeActionnaonImeActioniSemanticsActions.PerformImeActionnaOnImeAction. (I8e841) - Dodaje Wheel, aby odróżnić przewijanie myszą od przeciągania w przewijaniu zagnieżdżonym (w szczególności w
NestedScrollConnection). (Ie57e4) - Dodano interfejs API
asComposePaint, który zastępuje interfejstoComposePaint, ponieważ zwracany obiekt otacza oryginalny interfejsandroid.graphics.Paint(I22b4c). - Wycofaj parametr
SemanticsProperties.imeActioni zastąp go nowym parametremSemanticsActions.performImeAction. (I4a587) - Dodaliśmy obsługę zaznaczania za pomocą myszy. Zaznaczanie dotykowe będzie rozszerzane o słowo i zmniejszane o znak. (Ic0c6c, b/180639271)
- Metody
Paragraph, które wcześniej zgłaszały wyjątekAssertionErrorw przypadku indeksów wykraczających poza zakres, zgłaszają teraz wyjątekIllegalArgumentException, tak jak robi toMultiParagraph. (I549d3, b/243338896)
Wersja 1.5
Wersja 1.5.4
18 października 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.4 Wersja 1.5.4 zawiera te zatwierdzenia.
Wersja 1.5.3
4 października 2023 roku
Publikacja androidx.compose.ui:ui-*:1.5.3 Wersja 1.5.3 zawiera te zatwierdzenia.
Poprawki błędów
- (b/301209788)
TextFieldczasami nieprawidłowo stosował poprzednie polecenia podczas ustawiania ostrości i wpisywania tekstu w języku koreańskim, co powodowało utratę znaków.
Wersja 1.5.2
27 września 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.2 Wersja 1.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano obejście problemu z awariami, które występowały, gdy do interfejsu API przewijania ułatwień dostępu uzyskiwano dostęp z wątku w tle.
- Naprawiono dodawanie nieprzyłączonych węzłów do drzewa semantycznego.
Wersja 1.5.1
6 września 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.1 Wersja 1.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość
readOnlywynosiła „true”. Rozwiązaliśmy też problem z niewyświetlaniem klawiatury, gdy wartośćreadOnlyzmienia się z prawda na fałsz, gdy element jest aktywny. (I34a19, b/246909589)
Wersja 1.5.0
9 sierpnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0 Wersja 1.5.0 zawiera te zatwierdzenia.
Wersja 1.5.0-rc01
26 lipca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-rc01 Wersja 1.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto awarię występującą, gdy element
SubcomposeLayoutjest używany w elemenciemovableContentOf().
Wersja 1.5.0-beta03
28 czerwca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-beta03 Wersja 1.5.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano interfejs FocusTargetModifierNode, którego można używać do tworzenia niestandardowego elementu FocusTarget. (Ifb1d6)
- Rozwiązaliśmy problem z komponentami Dialog i Popup, który mógł powodować nieprawidłową zmianę rozmiaru okna podrzędnego po użyciu
usePlatformDefaultWidth=true. (I112ee)
Wersja 1.5.0-beta02
7 czerwca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-beta02 Wersja 1.5.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano interfejs
asComposePaintAPI, aby umożliwić korzystanie z instancjiandroid.graphics.Paintw Compose.
Poprawki błędów
- Dodano interfejs API
asComposePaint, który zastępuje interfejstoComposePaint, ponieważ zwracany obiekt otacza oryginalny interfejsandroid.graphics.Paint(I22b4c).
Wersja 1.5.0-beta01
24 maja 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-beta01 Wersja 1.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięto alokacje w przypadku rekompozycji, animacji kolorów i
AndroidComposeView(Ib2bfa) - Dodanie funkcji pomocniczej
CacheDrawModifierNode()umożliwiającej delegowanie (Icf8f9) - Wprowadziliśmy właściwość
isLookingAhead, dostępną zMeasureScope, która umożliwia obserwowanie wyników wyprzedzających i w razie potrzeby wpływanie na główny przebieg. (Ibf4c3) - Nowa właściwość semantyczna
traversalIndex, liczba zmiennoprzecinkowa używana do zmiany kolejności węzłów podczas przechodzenia po drzewieTalkBack(niższe wartości są przed wyższymi). (I9a81b, b/186443263) - Zmiana nazwy usługi Semantyka z
isContainernaisTraversalGroup(I121f6) ColorProducerma terazoperator fun invokezamiastproduce(I4a9a2)- Dodaj interfejs
Pathtransform API, aby zastosować do obiektów ścieżki przekształcenia związane z tłumaczeniem, skalowaniem i obracaniem. (I23434, b/233772232) - Metoda
ColorProducernazywa sięproduce. (I78bde) - Zmiana nazwy
toFrameworkColorSpacenatoAndroidColorSpace(I4f547) - Zmień nazwę
ColorLambdanaColorProducer. (I73b1a) - Wprowadzenie interfejsów API do konwersji między typami przestrzeni kolorów Androida i Compose. (Ie7db4, b/279979665)
- Dodano parametr koloru do
BasicText, aby umożliwić wydajne animowanie lub ustawianie koloru tekstu. (Iffd88, b/246961787) - Zmieniono nazwę
TextRange.constrainnaTextRange.coerceIn. (I31be2) - Dodano zoptymalizowany element
TextStyle.merge(...)z pełną listą parametrów. (Iad234, b/246961787) - Ustabilizowaliśmy wiele interfejsów API do obsługi tekstu, w tym
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush)iMultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245) - Środowisko wykonawcze
PlatformTextStyle.includeFontPaddingnie jest już wycofane. Pierwotnie zamierzaliśmy usunąć to pole, ale opinie deweloperów pokazują, że potrzebują oni tej opcji konfiguracji. Dlatego wycofujemy wycofanie tego pola (I98e96, b/277703184). - Dodaliśmy publiczną metodę
TextRange.constrain. (I97912) UrlAnnotationwAnnotatedStringmożna teraz otwierać za pomocą usług ułatwień dostępu, takich jakTalkBack. (If4d82, b/253292081)- Dodano działanie semantyczne
InsertTextAtCursorw przypadku pól tekstowych. (I11ed5) - Konstruktor
LineHeightStyle.Alignment(topRatio)został przeniesiony do stabilnego interfejsu API. (I79c32, b/261565383) TextMeasureri powiązane interfejsy API nie są już eksperymentalne. (I74647, b/261581753)- Dodano działanie semantyczne
PerformImeAction, które umożliwia wywoływanie działania IME w węzłach edytora tekstu. (Ic606f, b/269633506) PlatformTextInputInterfejsy API nie są już eksperymentalne w przypadku Androida. (I668eb)- Nazwa parametru wartości dla
Enum.valueOfzostała zmieniona (Ia9b89) - więcej wyjątków zgłaszanych przez enum valueOf (I818fe)
- Wprowadziliśmy nowy interfejs API niskiego poziomu
PlatformTextInputAdapterdo tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4) - Dodano parametr
BlendModedo metodDrawScope.drawText,Paragraph.paintiMultiParagraph.paint, aby obsługiwać różne algorytmy mieszania podczas rysowania tekstu na obiekcie Canvas. (I57508) - Zmień nazwę
Font.MaximumAsyncTimeoutnaFont.MaximumAsyncTimeoutMillis. Tylko zmiana nazwy. (I07af5) - Zaktualizowane wartości DPI urządzeń referencyjnych
@Preview(Id6151, b/254528382) - Dodaj parametry
brushialphadoBasicText, aby umożliwić wydajne animowanie lub ustawianie pędzla tekstowego. - Zdefiniuj typy lambda bez opakowania dla typów Float, Double, Long, Int i Short w :ui:ui-unit (I6f18d, b/246961787)
Poprawki błędów
- Usunięto wiele alokacji w śledzeniu prędkości wskaźnika (I26bae)
- Zmniejszone przydziały w zarządzaniu układem i danymi wejściowymi wskaźnika (I5333a)
- Optymalizacja wykorzystania pamięci przez Vector i renderowania pierwszych klatek (I2f3c6)
- Usunięto przydziały podczas rysowania linii i punktów za pomocą Canvas (I9f535)
- Dodaj dokumenty dla
AndroidFont.fontVariationSettings(I7d9e2)
Wkład zewnętrzny
- Zwiększenie wydajności i zmniejszenie przydziałów w interfejsach Vector API (I906cb)
Wersja 1.5.0-alpha04
10 maja 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-alpha04 Wersja 1.5.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
Modifier.NodeUlepszenia delegowania Dodano ulepszoną możliwość delegowania do innych instancjiModifier.Nodez instancjiDelegatingNode. Możesz to zrobić za pomocą interfejsówdelegateiundelegateAPI. Przed tą zmianą każdy interfejs API z węzła delegującego musiał być jawnie delegowany do węzła delegowanego. Po tej zmianie interfejsy węzłów będą delegowane niejawnie, chyba żeDelegatingNodewyraźnie je zastąpi. (67352bc)
Zmiany w interfejsie API
- Przedstaw
NestedScrollModifierNode, czyliNestedScroll Modifier.Node, do którego można delegować uprawnienia. (I69513) - Dodaliśmy parametry
onResetionReleasedo komponentuAndroidViewBinding, odzwierciedlając komponentAndroidViewi umożliwiając ponowne użycie widoku za pomocąViewBinding. (I00b1e, b/276802519) - Zaktualizowaliśmy interfejs Compose Path API, aby obsługiwał operacje przewijania, co ułatwia częste manipulowanie ścieżką i szybsze ponowne wykorzystywanie. (I7b797)
- Dodano zoptymalizowany element
TextStyle.merge(...)z pełną listą parametrów. (Iad234, b/246961787) - Ustabilizowaliśmy wiele interfejsów API do obsługi tekstu, w tym
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush)iMultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245) - Środowisko wykonawcze
PlatformTextStyle.includeFontPaddingnie jest już wycofane. Pierwotnie zamierzaliśmy usunąć to pole, ale opinie deweloperów pokazują, że potrzebują oni tej opcji konfiguracji. Dlatego wycofujemy wycofanie tego pola (I98e96, b/277703184).
Poprawki błędów
- Naprawiono regresję, która powodowała, że klawiatura nie była wyświetlana w polach tekstowych w oknach dialogowych, które nie zostały utworzone za pomocą funkcji
Dialog. (I82551, b/262140644)
Wersja 1.5.0-alpha03
19 kwietnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-alpha03 Wersja 1.5.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Nowe domyślne działanie w przypadku
SubcomposeLayoutwLookaheadScope:SubcomposeLayouts, które nie mają boksów warunkowych (np.TabRow,Scaffold,BoxWithConstraintsitp.), działają teraz prawidłowo z animacjami wyprzedzającymi.
Zmiany w interfejsie API
- Nowa domyślna wartość
intermediateMeasurePolicy, która ponownie wykorzystuje zasadę pomiaru z wyprzedzającego przejścia, umożliwia domyślne działanie z wyprzedzającym przejściem podtypówSubcomposeLayoutbez warunkowych miejsc docelowych, takich jakScaffold,TabRowiBoxWithConstraints. (Id84c8) - Kompozytor utworzony dla okna Androida będzie teraz blokować tylko wywołania
withFrameNanoszamiast całej kompozycji, gdy otrzyma powiadomienieON_STOP. Oznacza to, że okna powiązane z zatrzymanymi aktywnościami będą nadal ponownie komponowane w przypadku zmian danych, ale animacje lub inne wywołania funkcjiwithFrameNanosbędą blokowane. (Id9e7f, b/240975572) - Zmienia
motionEventSpyna wersję stabilną. (Ic5ec4, b/261560988) - Dodaliśmy publiczną metodę
TextRange.constrain. (I97912) PlatformTextStyle.includeFontPaddingnie jest już wycofany, aby zachęcić deweloperów do używania tego interfejsu API zgodności do przełączania i testowania ustawieniaincludeFontPaddingna wartość false. (I98e96, b/277703184)
Wersja 1.5.0-alpha02
5 kwietnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-alpha02 Wersja 1.5.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nowy interfejs
SubcomposeLayoutAPI, który przyjmuje dodatkowe zasady dotyczące pomiarów pośrednich na potrzeby obsługi logiki pomiarów/układu podczas animacji opartych na wyprzedzaniu. (I017d3) - Funkcja PointerInput jest teraz leniwa i korzysta z Modifier.Node, co zapewnia lepszą wydajność (więcej informacji o niewielkiej zmianie w działaniu). (15dab9)
- Przekształca eksperymentalne interfejsy API w stabilne interfejsy API z kluczowymi zdarzeniami. (I9c7d8, b/261566839, b/261567368)
- Zmienia eksperymentalne interfejsy API na stabilne w
PointerInputChange. (I1b543, b/261560988, b/261565762, b/261565749) - Dodaje sposób tworzenia instancji
SuspendingPointerInputModifierNodew przypadku bardziej złożonych wdrożeńModifier.Node. (Ic4933) UrlAnnotationwAnnotatedStringmożna teraz otwierać za pomocą usług ułatwień dostępu, takich jakTalkBack. (If4d82, b/253292081)- Dodano interfejs API do przechwytywania klawiszy sprzętowych, zanim zostaną one wysłane do klawiatury ekranowej (I4f4c6, b/186800395).
- Dodano działanie semantyczne
InsertTextAtCursordla pól tekstowych. (I11ed5) - Działania testowe związane z tekstem (np.
performTextInput) będą teraz bezpośrednio żądać fokusu za pomocą działania semantycznego zamiast klikania pola. (I6ed05)
Poprawki błędów
- Działania testowe dotyczące tekstu wymagają teraz włączenia pól tekstowych. (Iab328)
Wersja 1.5.0-alpha01
22 marca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-alpha01 Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Modifier.intermediateLayout nie wymaga już jawnego LookaheadScope. Blok pomiaru w elemencie intermediateLayout ma jako odbiorcę element IntermediateMeasureScope, który zapewnia wygodne elementy CoroutineScope, LookaheadScope i MeasureScope.(Ibe2e5)
- LookaheadLayout został zastąpiony przez LookaheadScope, który nie jest już układem. Dzięki temu treści podrzędne w obszarze LookaheadScope mogą być bezpośrednio kontrolowane przez element MeasurePolicy elementu nadrzędnego. (Ibe2e5)
- Dodaje
Modifier.Node#coroutineScope, aby umożliwić Modifier.Nodes uruchamianie korutyn. (I76ef9) - Umożliwia odczytywanie elementów CompositionLocals przez węzły Modifier.Nodes poprzez zaimplementowanie interfejsu CompositionLocalConsumerModifierNode. (Ib44df)
- Przenoszenie klasy @Deprecated na właściwość. (I882d1)
Wersja 1.4
Wersja 1.4.3
3 maja 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.3 Wersja 1.4.3 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że znak
AndroidViewmógł być nieprawidłowo rozmieszczony w przypadku użycia z niektórymi modyfikatorami. (I4dc77, b/274797771) - Naprawiono błąd w wyszukiwaniu 2D, który wpływał na
DropDownmenu (b/276811828). - Naprawiliśmy błąd we właściwościach niestandardowego fokusu wejścia/wyjścia, który powodował, że blok wejścia/wyjścia był uruchamiany tylko przy pierwszym wywołaniu funkcji lambda (b/277234245).
- Naprawiliśmy regresję w systemie ostrości, która powodowała awarię podczas odczytywania
focusProperties. (b/271324781, b/274897776)
Wersja 1.4.2
19 kwietnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.2 Wersja 1.4.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że funkcja
AndroidViewnieprawidłowo ponownie wykorzystywała modyfikatory, co mogło prowadzić do nieoczekiwanych zachowań i awarii. (Ib67ee, b/275919849) - Usunęliśmy regresję, która powodowała, że klawiatura nie wyświetlała się w polach tekstowych w oknach, które nie zostały utworzone przez funkcję kompozycyjną
Dialog(I82551, b/262140644).
Wersja 1.4.1
5 kwietnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.1 Wersja 1.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązuje problem z tym, że
ParentDataModifiernie wpływa naAndroidView(b/274797771)
Wersja 1.4.0
22 marca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.0 Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
- Dodano nowy interfejs
PinnableContainerAPI, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane po przewinięciu poza granice. Na przykładModifier.focusable()używa tego mechanizmu do przypinania aktualnie zaznaczonego elementu. (Ib8881, b/259274257, b/195049010) - System ostrości został przepisany przy użyciu nowych eksperymentalnych
Modifier.Nodeinterfejsów API. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Dodano właściwość semantyki
IsContainerna powierzchniach. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie znaczenia semantycznego elementów, takich jak powierzchnie. (I63379) - Dodaliśmy nową rolę ułatwień dostępu
DropdownList. Można go użyć do odtworzenia zachowaniaTalkBackpodczas ustawiania ostrościandroid.widget.Spinner. (I177e5, b/236159001) - Możesz teraz użyć
PlatformTextStyle(emojiSupportMatch), aby opcjonalnie wyłączyć przetwarzanie obsługi emoji w przypadku pojedynczego akapitu. (Ia7100, b/139326806) - Testy interfejsu Android Compose będą teraz uruchamiać przebiegi układu dla każdej klatki podczas wykonywania klatek, aby przejść do stanu bezczynności (np. za pomocą
waitForIdle). Może to mieć wpływ na testy, które sprawdzają poszczególne klatki animacji układu. (I8ea08, b/222093277) - Dodano eksperymentalny parametr
TextMotiondoTextStyle, aby określić, czy tekst ma byćStatic(default)czy animowany. UżyjTextMotion.Animated, jeśli tekst ma być skalowany, tłumaczony lub obracany za pomocą animacji. (I24dd7)
Wersja 1.4.0-rc01
8 marca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-rc01 Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano przeciążenie funkcji typu „composable”
AndroidView, która akceptuje parametronReset. Umożliwia ponowne użycie instancji View, gdy ich węzeł w kompozycji zostanie odrzucony i ponownie użyty w zgodny sposób. Jest to szczególnie przydatne w przypadkuLazyRowsiLazyColumnswidoków. (I3f10d, b/230099236) - Wprowadziliśmy nowy interfejs API niskiego poziomu
PlatformTextInputAdapterdo tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)
Poprawki błędów
- Działanie semantyczne
BasicTextFieldSetTextbędzie teraz aktualizować bufor tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (np.performTextReplacement). - Funkcje testowania tekstu
performTextClearance,performTextReplacementiperformTextSelectionużywają teraz funkcjiSemanticsActions. (I0807d, b/269633168, b/269624358)
Wersja 1.4.0-beta02
22 lutego 2023 roku
Publikacja androidx.compose.ui:ui-*:1.4.0-beta02 Wersja 1.4.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięto interfejs API
modifierElementOf(). Zamiast tego rozszerzaj bezpośrednio zModifierNodeElement. (I2256b) - Dodano nowe wywołanie zwrotne
Modifier.Node.onReset(), które umożliwia zresetowanie stanu lokalnego, aby prawidłowo obsługiwać sytuację, w której komponentLayoutjest ponownie używany (np. jako elementLazyColumn). PoprawionoFocusTargetModifierNode, aby prawidłowo resetować stan zaznaczenia. (I65495, b/265201972) - Dodano parametr
BlendModedo metodDrawScope.drawText,Paragraph.paintiMultiParagraph.paint, aby obsługiwać różne algorytmy mieszania podczas rysowania tekstu na obiekcie Canvas. (I57508)
Poprawki błędów
- Ulepszono algorytm kolejności elementów dostępnych dla osób z niepełnosprawnościami. Na przykład paski u góry i u dołu są częściej odczytywane odpowiednio jako pierwsze i ostatnie (74e9c5).
Wersja 1.4.0-beta01
8 lutego 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-beta01 Wersja 1.4.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
PinnableContainer.PinnedHandle.unpin()zmienił(a) nazwę narelease()(I4667a)- Dodano
waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExistsiwaitUntilDoesNotExistjako eksperymentalny interfejs API doComposeTestRule, rozszerzając interfejs APIwaitUntil, aby akceptował dowolny rodzaj dopasowania i dowolną liczbę węzłów. Więcej informacji znajdziesz wComposeTestRule. (Ifa1b9, b/226934294) - Zmień nazwę
Font.MaximumAsyncTimeoutnaFont.MaximumAsyncTimeoutMillis. (I07af5) - Usunięto
GoogleFont.Provider.AllFontsListUrii zamiast tego dodano do niego link w ktdoc. (I16f29)
Poprawki błędów
- Dodaj dokumenty dla
AndroidFont.fontVariationSettings(I7d9e2)
Wersja 1.4.0-alpha05
25 stycznia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-alpha05 Wersja 1.4.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTesticreate*ComposeRule, które akceptują parametryCoroutineContext. Kontekst będzie używany w kompozycji testu oraz w wywołaniachLaunchedEffectirememberCoroutineScope()w tej kompozycji. (I10614, b/265177763) - Dodanie nowego interfejsu API do śledzenia prędkości 1-wymiarowej (If5a82)
FocusRequesterjest teraz oznaczony jako@Stable. (I580ee)- Usuń eksperymentalną adnotację z konstruktora
DialogProperties, który przyjmuje parametrusePlatformDefaultWidth. (Ic4048) - Dodano funkcję obliczania pozycji i stycznej w określonej odległości na ścieżce – z
PathMeasure.getPosition()iPathMeasure.getTangent()(I3b47c) - Usunięto przypadkowo udostępniony publiczny setter w
PlatformParagraphStyle. (I07f47) - Więcej typów i dopuszczalności wartości null dla funkcji wbudowanych i ukrytych (I24f91)
- Dodaj znak
AnnotatedString.hasStringAnnotations, aby wyszukać adnotacje z zerowymi przydziałami. (I94dfe, b/246960758) - Dodaliśmy nowy przeciążony wariant funkcji
TextMeasurer.measure, który przyjmuje wartośćStringjako tekst. (I47b2d, b/242705342) - Interfejsy API
LineBreakiHyphensw TextStyle zostały przeniesione do wersji stabilnej. (Ic1e1d)
Wkład zewnętrzny
- Metody
notifyFocusedRectwTextInputSessioniTextInputServicenie są ponownie wycofywane. (I23a04, b/262648050)
Wersja 1.4.0-alpha04
11 stycznia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-alpha04 Wersja 1.4.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nowy interfejs
PinnableContainerAPI, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane po przewinięciu poza granice. Na przykładModifier.focusable()używa tego mechanizmu do przypinania aktualnie zaznaczonego elementu. (Ib8881, b/259274257, b/195049010) - System ostrości został przepisany przy użyciu nowych eksperymentalnych
Modifier.Nodeinterfejsów API. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Dodano właściwość semantyki
IsContainerna powierzchniach. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie znaczenia semantycznego elementów, takich jak powierzchnie. (I63379) - Dodano nową rolę ułatwień dostępu
DropdownList. Można to wykorzystać do odtworzenia działaniaTalkBack'spodczas ustawiania ostrościandroid.widget.Spinner. (I177e5, b/236159001) - Możesz teraz użyć
PlatformTextStyle(emojiSupportMatch), aby opcjonalnie wyłączyć przetwarzanie obsługi emoji w przypadku pojedynczego akapitu. (Ia7100, b/139326806) - Testy interfejsu Android Compose będą teraz uruchamiać przebiegi układu dla każdej klatki podczas wykonywania klatek, aby przejść do stanu bezczynności (np. za pomocą
waitForIdle). Może to mieć wpływ na testy, które sprawdzają poszczególne klatki animacji układu. (I8ea08, b/222093277) - Dodano eksperymentalny parametr
TextMotiondo parametruTextStyle, aby określić, czy tekst ma byćStatic(default)czy animowany. UżyjTextMotion.Animated, jeśli tekst ma być skalowany, tłumaczony lub obracany za pomocą animacji. (I24dd7)
Zmiany w interfejsie API
- Zastąpiliśmy argument
maxSize: IntSizew funkcjidrawTextargumentemsize: Size, aby był zgodny z innymi funkcjamiDrawScope.sizejest domyślnie ustawione naSize.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
Groupma teraz poleisInline, które wskazuje, czy grupa jest przeznaczona do wywołania wbudowanej funkcji typu „composable”. JeśliisInlinema wartośćtrue, połączenie dotyczy wbudowanej funkcji typu „composable”. Wartość może być jednak fałszywa w przypadku wywołań funkcji kompozycyjnych wbudowanych pochodzących z modułów skompilowanych za pomocą wersji wtyczki kompilatora Compose, która nie generuje informacji o funkcji wbudowanej. (Idb846) - Przekształcenie kilku eksperymentalnych interfejsów API w stabilne
- Interfejs Rotary Scroll Event API jest już stabilny (I42ad3, b/261561229)
FontVariationInterfejs API jest już stabilny (I8779f, b/241016309)- Wszystkie konstruktory
Font()są teraz stabilnym interfejsem API (I5948b, b/261435386). DeviceFontFamilyNamejest teraz stabilny (I8b640, b/261435386)- Konstruktor
AndroidFontz parametremvariationSettingsjest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807) - Interfejs
createFontFamilyResolverAPI jest już stabilny. Można go używać do przechwytywania nieobsłużonych wyjątków podczas asynchronicznego wczytywania czcionek. (Ibb481, b/261435386) - Interfejs
Font.loadingStrategyAPI jest już stabilny. (I5937c, b/261435386) - Interfejs
GoogleFontAPI jest już stabilny. (Ic90b0, b/261435386) - Interfejs
TextUnit(float, TextUnitType)jest teraz stabilnym interfejsem API. (I90c84, b/261561612) pluralStringResourceto teraz stabilny interfejs API. (I09849, b/261439703)
Wersja 1.4.0-alpha03
7 grudnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-alpha03 Wersja 1.4.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usuwam instancję
ExperimentalComposeUiApiz instancjiPointerIcon(I23af8) - Wprowadzenie działań związanych z ułatwieniami dostępu na stronie:
PageUp,PageDown,PageLeft,PageRight. Pamiętaj, że są one dostępne tylko od interfejsu API w wersji 29. (Ida4ab) - Zaktualizowano widok parametru
rememberNestedScrollConnectionz widoku głównego na widok hosta. (Ia5200) - Dodano interfejs Modifier API do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych. (I2ba9d, b/203141462)
- Używany w
Clickabledo prawidłowego opóźniania interakcji naciśnięcia, gdy gesty mogą stać się zdarzeniami przewijania. - Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów falowania przez element
Clickables, gdy był używany w elemencieScrollable ViewGroup. - Zaktualizowano panele i arkusze, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
- Zmiana nazwy
CompositingStrategy.AlwaysnaOffscreen, aby wskazać, że elementgraphicsLayerbędzie zawsze renderowany w buforze pośrednim (I47dc1). - Przeciążenie układu wieloma miejscami na treści jest już stabilne (I10566, b/248294649).
- Dodaliśmy eksperymentalne nowe interfejsy API
PerfettoTrace.record {}iPerfettoTraceRule, które umożliwiają rejestrowanie śladów Perfetto (znanych też jako ślady systemowe) w ramach testu, aby sprawdzać zachowanie i wydajność testu. (I3ba16) - W testach interfejsu przeprowadzanych za pomocą reguły Compose wznowienia w wywołaniach zwrotnych
withFrameNanosnie będą wysyłane, dopóki nie zostaną wykonane wszystkie wywołania zwrotne klatek. Odpowiada to zachowaniu funkcji tworzenia wiadomości podczas normalnego działania. Jednak testy, które opierają się na starym działaniu, mogą się nie powieść. Powinno to mieć wpływ tylko na kod, który bezpośrednio wywołuje funkcjewithFrameNanoslubwithFrameMillis, oraz na logikę poza wywołaniem zwrotnym przekazywaną do tych funkcji, która może wymagać przeniesienia do wywołań zwrotnych. Przykłady zmian w teście animacji znajdziesz w tym CL. - Dodano opcjonalny parametr
onPerformTraversals: (Long) -> Unitdo konstruktoraTestMonotonicFrameClocki funkcji fabrycznej, aby uruchamiać kod po wywołaniach zwrotnychwithFrameNanos, ale przed wznowieniem korutyn rozmówców. (Idb413, b/254115946, b/222093277, b/255802670) - Dodano EmojiCompat do Compose (Ibf6f9, b/139326806)
- Dodano nowy parametr tapety do
@Previewna potrzeby obsługi dynamicznych kolorów (I9f512)
Poprawki błędów
- Powiadomienia o zastosowaniu migawki są teraz wysyłane po zakończeniu wprowadzania zmian przez
Recomposer. (Iad6c0, b/222093277) - Wprowadzono zmiany w
captureToImage, aby umożliwić przechwytywanie zrzutów ekranu w trybie wielu okien. Jest to przydatne w przypadku testów zrzutów ekranu, które korzystają z komponentów PopUp. (I169c5)
Aktualizacje zależności
- Biblioteki Compose UI i Compose Material zależą teraz od biblioteki Lifecycle w wersji 2.5.1. (I05ab0, b/258038814)
Wersja 1.4.0-alpha02
9 listopada 2022 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-alpha02 Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zaktualizowano
GraphicsLayerScope, aby wyświetlać bieżący rozmiargraphicsLayer. Jest to przydatne do obliczania przekształceńgraphicsLayerjako funkcji rozmiaru elementu kompozycyjnego. (If8c43,b/181387080) - Wprowadziliśmy
CompositingStrategy, aby określać, kiedy używać warstwy kompozycji poza ekranem do renderowania treścigraphicsLayer. Automatycznie zachowuje domyślne działanie, które wewnętrznie wykorzystuje warstwę, jeśli zastosowano wartość alfa, lubRenderEffect/Overscroll. Zawsze będzie wprowadzać bufor poza ekranem, w którymModulateAlphabędzie unikać korzystania z bufora poza ekranem i zamiast tego będzie modyfikować każdą z zarejestrowanych instrukcji rysowania w ramachgraphicsLayer.ModulateAlphanadal będzie korzystać z bufora poza ekranem w przypadku użyciaRenderEffect/Overscroll(I25e82, b/256382834). - Do
Modifier.NodedodanoinvalidateSubtree(), aby umożliwić unieważnianie całych hierarchii na potrzeby układu i rysowania. (I4bd90) - Promuj
rememberNestedScrollInteropConnectiondo wersji stabilnej. Wprowadziliśmy możliwość przekazywania widoku głównego dorememberNestedScrollInteropConnection. Może to pomóc niestandardowemu widokowi lepiej reagować na ograniczenia przewijania, zwłaszcza w niestandardowych widokach (np.ModalBottomSheetDialog). (I9e107) - Dodano interfejs
ObserverNode, który może być używany przez implementacjeModifier.Nodewymagające powiadomienia o zmianie wartości, którą wcześniej odczytały (I5728b, b/247716483). - Dodaliśmy nowy konstruktor do klasy
Paint, który akceptuje natywny obiektandroid.graphics.Paint. Dodaliśmy też funkcję rozszerzeniatoComposePaint(), która przekształca istniejący natywny obiekt Paint w obiekt Paint Compose. (Ica91b) - Dodaj nowe
FontFamily.Resolver.resolveAsTypefacedo używania na Androidzie. (I8950b) - Dodanie
ToolingState, aby umożliwić narzędziom zmianę wewnętrznych stanów funkcji Composable (Ie6614) - Przebudowa narzędzi w celu lepszej obsługi nowych animacji (I8677b)
- Dodano parametr
minLinesdo komponentów tekstowych material i material3,TextFieldiOutlinedTextField, który umożliwia ustawienie minimalnej wysokości komponentu w liczbie wierszy (I4af1d).
Wersja 1.4.0-alpha01
24 października 2022 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-alpha01 Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy nową metodę
awaitEachGesture()dla detektorów gestów. Działa podobnie doforEachGesture(), ale pętla gestów działa w całości w ramachAwaitPointerEventScope, więc zdarzenia nie mogą zostać utracone między iteracjami. - Element
forEachGesture()został wycofany na rzecz elementuawaitEachGesture(), ponieważ umożliwia on utratę zdarzeń między gestami. (Iffc3f, b/251260206) - Wycofywanie recyklingu obiektów ułatwień dostępu w androidx. Nawet w najstarszych obsługiwanych wersjach zmiany wydajności są znikome. (I0a961)
- Dodano
DrawStylejako atrybut eksperymentalny doTextStyleiSpanStyle, aby umożliwić rysowanie tekstu z obrysem. (If24b8, b/155421273) AnnotatedString.Builderkorzysta teraz zkotlin.text.Appendable. (I1a061, b/231030444)AnnotatedString.Builderma teraz metodęappend(AnnotatedString, start: Int, end: Int)dołączania podciąguAnnotatedStringi przecinających się stylów.- Dodano parametr
DrawStyledo funkcji rysowaniaParagraphiMultiParagraph, który umożliwia rysowanie tekstu z obrysem. (Ic8102, b/155421273)
Wkład zewnętrzny
- Dziękujemy za
vighneshdodanie urządzeń TV do wersji przedpremierowych (Ie15cd)
Wersja 1.3
Wersja 1.3.3
11 stycznia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.3.3 Wersja 1.3.3 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawka błędu, który czasami występował na Androidzie 9, gdy aktywność zapisywała stan widoku Compose. (I0b755, b/260322832)
Wersja 1.3.2
7 grudnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.2 Wersja 1.3.2 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano do wersji Profobuf 3.21.8, która zapobiega alertowi bezpieczeństwa w
protobuf-javalite:3.19.4(CVE-2022-3171) (b/255545055)
Wersja 1.3.1
9 listopada 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.1 Wersja 1.3.1 zawiera te zatwierdzenia.
Wersja 1.3.0
24 października 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0 Wersja 1.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.2.0
- Nowy eksperymentalny pakiet interfejsów API
LookaheadLayout(umożliwiający zachowania animacji, które wcześniej były niemożliwe) - Nowy eksperymentalny pakiet interfejsów API
Modifier.Node(wydajniejsza alternatywa dlaModifier.composed) - Ulepszona obsługa wcięć w oknie.
- Skupienie na obsłudze padów kierunkowych i klawiatury sprzętowej w LazyList.
- Maksymalna obsługiwana wysokość w oknach i wyskakujących okienkach została zmniejszona do 8 dp (zmiana powodująca niezgodność w przypadku niektórych dostosowanych systemów projektowania – uzasadnienie w informacjach o wersji beta01).
- Wiele drobnych, niepowodujących przerw w działaniu interfejsu API ulepszeń
- Liczne poprawki błędów i usprawnienia w zakresie wydajności
Wersja 1.3.0-rc01
5 października 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0-rc01 Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano nowy eksperymentalny interfejs API Hyphens, który obsługuje automatyczne dzielenie wyrazów w tekście (Iaa869).
Poprawki błędów
DeviceFontFamilyNamenie konfiguruje domyślnie ustawień wariantówwghtiital, tylko używa ustawień platformy dla załadowanychTypeface. (Ia7a6d, b/246989332)- Naprawiono
LazyColumnwyciek pamięcionModifierLocalsUpdated– w przypadku ponownego użycia modyfikatorów funkcja nie była wywoływana z wartością domyślną (b/230168389).
Wersja 1.3.0-beta03
21 września 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0-beta03 Wersja 1.3.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj opcje dostosowywania podziału wierszy w Tekście. (I86907)
- Zmieniono argument
size:IntSizenaconstraints: Constraintsw metodzieTextMeasurer.measure, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)
Poprawki błędów
- Interfejs API
BackHandlerAndroidX Activity działa teraz w funkcjiDialog. (I35342)
Wersja 1.3.0-beta02
7 września 2022 roku
Publikacja androidx.compose.ui:ui-*:1.3.0-beta02 Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano eksperymentalne przeciążenie funkcji Layout, które akceptuje listę wielu funkcji kompozycyjnych treści lambda, co pozwala na różne traktowanie elementów mierzalnych umieszczonych w różnych funkcjach kompozycyjnych treści lambda (Ic1b4e).
Zmiany w eksperymentalnych interfejsach API Focus:
FocusDirection.IniFocusDirection.Outzostały wycofane i zastąpione przezFocusDirection.EnteriFocusDirection.Exit. (Ia4262, b/183746982)- Dodaliśmy 2 nowe właściwości focus: enter i exit, aby określić niestandardowe zachowanie w przypadku elementów
FocusManager.moveFocus(Enter)iFocusManager.moveFocus(Exit). (I5f3f9, b/183746982) - Możesz teraz użyć
FocusRequester.Cancel, aby anulować zmianę ostrości.FocusRequester.Cancelmożna używać w dowolnej z tych właściwości fokusu: up, down, left, right, next, previous, start, end, enter i exit. (Ib300f)
Wersja 1.3.0-beta01
24 sierpnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0-beta01 Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Refaktoryzacja węzła modyfikatora
Warstwa, która obsługuje instancje Modifier/Modifier.Element i koordynuje ich działanie na LayoutNodes, została w znacznym stopniu zmodyfikowana. 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 dotycząca tylko 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 utrzymywanie stanu w instancji, która będzie zachowywana przez cały cykl życia węzła układu i będzie przydzielana na węzeł układu i na użycie odpowiedniego interfejsu Modifier.Element, który go wygenerował.
Ogólnie rzecz biorąc, ta abstrakcja zapewnia alternatywny mechanizm tworzenia modyfikatorów stanu bez polegania na mechanizmach interfejsu Modifier.composed API.
Ryzyko
Ta zmiana jest ściśle zgodna binarnie z poprzednimi wersjami i ma być zgodna wstecznie pod względem obserwowalnego zachowania w największym możliwym i rozsądnym zakresie. W przypadku Compose jest jednak kilka podsystemów, których ta zmiana nie dotyczy, i prawdopodobnie zachowanie zmieniło się w sposób, który nie został uwzględniony w naszych testach i nie został jeszcze wykryty ani naprawiony.
Zachowaj ostrożność podczas aktualizowania do tej wersji. Jeśli uważasz, że coś się przez to zepsuło, daj nam znać.
Eksperymentalne interfejsy API
Dodaliśmy różne eksperymentalne interfejsy API, które są związane z nową koncepcją „węzła modyfikatora”. Obiekty Modifier.Node są tworzone w wyniku
fun modifierElementOf(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface IntermediateLayoutModifierNode
Zmiana powodująca niezgodność w zachowaniu
Maksymalna obsługiwana wysokość w oknach i wyskakujących okienkach została zmniejszona do 8 dp.
Maksymalna obsługiwana wysokość dla okien dialogowych i wyskakujących w Compose została zmniejszona z 30 dp do 8 dp. Ta zmiana dotyczy zarówno niestandardowych okien dialogowych, jak i wyskakujących okien interfejsu. Ta zmiana została wprowadzona, aby wyeliminować błąd ułatwień dostępu w wersjach Androida starszych niż S i zapewnić, że usługi ułatwień dostępu w tych oknach będą mogły wchodzić w interakcje z zawartością okna lub wyskakującego okienka.
Ta zmiana będzie miała wpływ tylko na użytkowników, którzy tworzą niestandardowe okno dialogowe lub wyskakujące z ustawionym poziomem podniesienia powyżej 8 dp. Rozważ zmniejszenie wysokości okna dialogowego lub wyskakującego. Jeśli chcesz zrezygnować z tego nowego zachowania, rozważ utworzenie własnego okna lub wyskakującego okienka z ustawionym odpowiednim poziomem. Nie jest to zalecane, ponieważ może negatywnie wpłynąć na dostępność. Deweloper musi zadbać o to, aby dolna część okna lub wyskakującego okienka była interaktywna i czytelna dla usług ułatwień dostępu.
Zmiany w interfejsie API
- Rozwiązaliśmy problem, który powodował, że
painterResourcenie aktualizował się po zmianach konfiguracji (I58e73, b/228862715). rememberTextMeasurernie przyjmuje już parametrówFontFamily.Resolver,DensityaniLayoutDirection. Aby podać niestandardowe wartości tych parametrów, użyj konstruktoraTextMeasurer. (Ia1da3)- Dodaliśmy właściwość
DialogProperties.decorFitsSystemWindows, aby okna dialogowe mogły obsługiwaćWindowInsets. (I57742, b/229378542) - Przeniesiono konstruktory czcionek z powrotem do oryginalnego pliku Kotlin, aby zachować zgodność binarną. Brak zmian w porównaniu z ostatnią wersją stabilną. (Ieb2f3)
- Usunięto niepotrzebny operator z kilku definicji równości – nie ma to żadnego wpływu. (I6c309)
FontVariation.Settingto zamknięty interfejs, który umożliwia korzystanie z przyszłych interfejsów API ograniczających. (I11021, b/143703328)- Dodano
CompositionGroup.findParametersdoSlotTree.kt. Dzięki temu narzędzia mogą pobierać parametry dlaCompositionGroupbez konieczności analizowania całej tabeli slotów. (I124fe)
Wersja 1.3.0-alpha03
10 sierpnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0-alpha03 Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
LayoutCoordinates.findRootCoordinates()jest teraz publiczny (I7fa37, b/204723384)- Dodano eksperymentalny interfejs API, który pobiera
LayoutCoordinateszPlacementScope. Dzięki temu deweloperzy wiedzą, gdzie znajduje się bieżący układ, aby umieścić elementy podrzędne względem jego pozycji. (I5482b, b/238632578) - Dodano
LayoutCoordinates.transformFrom, aby uzyskać przekształcenie macierzy z jednegoLayoutCoordinatesna drugi. (Ic5ab1, b/238632578) - Wycofano
SemanticsModifier.idi przeniesiono identyfikator semantyczny doLayoutInfo.semanticsId. (Iac808, b/203559524) - Czcionki zasobów obsługują teraz ustawianie ustawień wariantu czcionki (API 26 i nowsze). (I900dd, b/143703328)
- Obsługa czcionek zmiennych w
DeviceFontFamilyNameFont(Ic1279, b/143703328) - Konstruktory czcionek akceptują teraz listę
FontVariation.Settingdo konfigurowania czcionek zmiennych na urządzeniach z Androidem O i nowszym. (I11a9d, b/143703328) - Dodano
FontVariationinterfejs API do definiowania i używania czcionek zmiennych. (I3c40c, b/143703328) - Konstruktor
LineHeightStyle.Alignmentjest teraz publiczny (eksperymentalny) (I4bbbe, b/235876330) - W przypadku Androida i komputerów zdefiniowano teraz akapit jako oczekiwany|rzeczywisty. (Id387e, b/239962983)
- Interfejs Paragraph jest teraz interfejsem sealed interface Paragarph. Nie ma zastosowania w przypadku podklas paragrafu, więc jeśli ta zmiana ma na Ciebie wpływ, skontaktuj się z nami. (If5247, b/239962983)
- Usunięto eksperymentalną adnotację z
PlatformTextStyleiLineHeightStyle. (I64bef) - Wycofaj:
TextInputService.show|hideSoftwareKeyboardZamiast niej użyjSoftwareKeyboardControllerw kodzie aplikacji iTextInputSessionw kodzie zarządzania IME. (I14e4c, b/183448615) - Dodano nowy interfejs API dla istniejących typów animacji (I26179)
Poprawki błędów
- Dodaliśmy
@RequiresPermissiondo interfejsów API, które wymagają przyznania uprawnieniaPOST_NOTIFICATIONSw przypadku pakietu SDK w wersji 33 lub nowszej. (Ie542e, b/238790278)
Wersja 1.3.0-alpha02
27 lipca 2022 roku
Publikacja androidx.compose.ui:ui-*:1.3.0-alpha02 Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy nową właściwość
PointerInputChange#pressure, która umożliwia pobieranie ciśnienia. (I45a5e, b/205164819) - Dodano
rememberTextMeasurer, aby ułatwić tworzenie i zapamiętywanie instancjiTextMeasurerw kompozycji. (I8d66e) - Usługi
Rect,RoundRectiMutableRectobsługują teraz składnię Kotlinindo wywoływania funkcjicontains. (Ie42b0, b/238642990) - Usuń z
KeyInjectionScopeniepotrzebne funkcje, ponieważ można je łatwo zaimplementować za pomocą prostszych części interfejsu API. Usunięte funkcje to m.in.pressKeys,keysDownikeysUp. (I81d77) - Zmieniliśmy nazwy stałych i parametrów w
KeyInjectionScope, aby zawierały sufiks „Millis”, jeśli jednostką tych stałych i parametrów są milisekundy. (Iabef5) - Dodaliśmy metodę
toStringForLog()do klasyEditCommand, aby ułatwić rozwiązywanie problemów z edycją tekstu. (I53354, b/228862731) - Dodaliśmy funkcję rozszerzenia
drawTextwDrawScope, aby umożliwić rysowanie tekstu w wielu stylach w komponentach i modyfikatorach, które działają naDrawScope, takich jakCanvasidrawBehind. (I16a62, b/190787898) - Wprowadzamy nowy eksperymentalny interfejs API o nazwie
TextMeasurer, który umożliwia obliczanie dowolnego układu tekstu i daje identyczne wyniki jakBasicText, niezależnie od środowiska wykonawczego Compose. (I17101) - Dodano
mapTreedoSlotTree.kt. Dzięki temu narzędzia mogą sprawdzaćSlotTreebez tworzenia najpierw kopii w pamięci, jak to robi asTree. W przypadku narzędzia Layout Inspector daje to wzrost wydajności o około 10 razy. (I5e113) - Zmieniliśmy sposób przechowywania podglądu Compose na binarne pliki wyjściowe, aby umożliwić deweloperom pisanie i ponowne wykorzystywanie adnotacji
MultiPreviewz bibliotek. (I85699, b/233511976)
Poprawki błędów
- Podczas dodawania zdarzeń
InputEventChangedo modułu śledzącegoVelocitybędziemy teraz uwzględniać różnice zamiast pozycji. Dzięki temu prędkość będzie prawidłowo obliczana we wszystkich przypadkach, nawet jeśli element docelowy się porusza (Icea9d, b/216582726, b/223440806, b/227709803). - Naprawiono błąd NPE spowodowany przez
AnnotatedString.toUpperCase, gdy występują adnotacje. (I0aca2, b/210899140)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0-alpha01 Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nowy interfejs
LookaheadLayout, który obsługuje przekazywanie z wyprzedzeniem przed rzeczywistym pomiarem lub układem. Umożliwia to wstępne obliczenie układu, gdy się on zmienia, a jednocześnie pozwala na użycie obliczonych z wyprzedzeniem rozmiaru i położenia do animowania rozmiaru i położenia w kierunku wartości docelowej.SubcomposeLayoutsnie są jeszcze obsługiwane, ale dodamy je w przyszłej wersji. (I477f5) - Dodaj opcjonalny parametr alfa do wariantu pędzla
TextStyleiSpanStyle, aby zmodyfikować krycie całegoText. (Ic2fac, b/234117635) - Wprowadziliśmy typ adnotacji
UrlAnnotationi powiązane z nim metody, aby obsługiwać linkiTalkBackwAnnotatedString. (I1c754, b/231495122) - Przeniesienie funkcji narzędziowych do środowiska wykonawczego (I4f729)
Poprawki błędów
TextLayoutResult.getLineForOffsetnie zgłasza. (Idc5d6, b/235876324)
Wkład zewnętrzny
- Dodano nowy interfejs API
WindowInfo.keyboardModifiersdo obserwowania jego stanu w funkcjach kompozycyjnych lub za pomocą snapshotFlow (Icdb8a).
Wersja 1.2
Wersja 1.2.1
10 sierpnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.1 Wersja 1.2.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd wskaźnika null w inspektorze (b/237987764)
- Rozwiązanie problemu z wyjątkiem rzutowania klasy podczas zapamiętywania w inspektorze (b/235526153).
Wersja 1.2.0
27 lipca 2022 roku
Publikacja androidx.compose.ui:ui-*:1.2.0 Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
Ulepszenia dotyczące przechodzenia między elementami:
- Przewijanie list leniwych za pomocą fokusu działa teraz dzięki nowemu
BeyondBoundsLayoutinterfejsowi API. - Nowe interfejsy API do dostosowywania zachowań w
FocusOrderiFocusProperties - Ulepszone działanie w przypadku klawiatury fizycznej lub pilota do telewizora
- Przewijanie list leniwych za pomocą fokusu działa teraz dzięki nowemu
Nowe interfejsy API:
- Wstawki okienne
- Podstawowe elementy sterowanych gestami animacji nieskończonych i animacji układu
GraphicsLayer, w tymRenderEffect
Liczne poprawki błędów i usprawnienia w zakresie wydajności
Wersja 1.2.0-rc03
29 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-rc03 Wersja 1.2.0-rc03 zawiera te zatwierdzenia.
- Brak zmian od wersji 1.2.0-rc02.
Wersja 1.2.0-rc02
22 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-rc02 Wersja 1.2.0-rc02 zawiera te zatwierdzenia.
Wersja 1.2.0-rc01
15 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-rc01 Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejsy w bibliotekach Compose są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1).
- Dodano funkcje wyższego rzędu do
KeyInjectionScope, aby wstrzykiwać naciśnięcia klawiszy, gdy inne klawisze są przytrzymywane lub włączone. Do tych funkcji należąwithKeysDown,withKeysToggleditp. Dodaliśmy też właściwości sprawdzające, czy dany klawisz meta jest wciśnięty, np.isCtrlDown, aby sprawdzić, czy któryś z klawiszy Control jest wciśnięty. Dokumentację każdej funkcji znajdziesz na stronieKeyInjectionScope. (I9f6cd, b/229831515) - Wprowadzono eksperymentalny interfejs
OverscrollEffect, który umożliwia stosowanie niestandardowych efektów przewijania poza zakres, a także przeciążeniaModifier.scrollable, które go akceptują. - Eksperymentalny interfejs
LocalOverScrollConfigurationzostał przeniesiony zfoundation.gesturedo pakietu podstawowego i zmieniono jego nazwę naLocalOverscrollConfiguration(If19fb, b/204650733). - Zmień nazwę
runComposeUiTestWithoutActivity {}narunEmptyComposeUiTest {}, aby była zgodna zcreateEmptyComposeRule()(I6fed7).
Wersja 1.2.0-beta03
1 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-beta03 Wersja 1.2.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano użytkownika
pressKeyTimesoraz użytkownikówisCapsLockOni znajomych do albumuKeyInjectionScope. Interfejs API obsługuje teraz też wzorce wstrzykiwania łączące mysz i klawiaturę, np. kliknięcie przycisku myszy z przytrzymanym klawiszem meta. (I4c8da, b/229831515) - Dodaliśmy eksperymentalną obsługę wstrzykiwania kluczowych zdarzeń. Użyj
performKeyInput, aby wysyłać kluczowe zdarzenia, lub wysyłaj je za pomocą właściwościkeyobiektuMultiModalInjectionScopepodczas gestu wprowadzania multimodalnego z użyciemperformMultiModalInput. Dokumentację interfejsu API znajdziesz wKeyInjectionScope. (Ic5000, b/229831515) - Dodaj nowy
GoogleFont.Provider.AllFontsListUrido pobierania kanonicznego źródła internetowego czcionek Google Fonts obsługiwanych przez Androida. - Ulepszono komunikaty o błędach, które są ponownie zgłaszane, gdy nie uda się wczytać GoogleFonts w kompozycji. (I0416c)
Poprawki błędów
- Podczas dodawania zdarzeń
InputEventChangedo narzędzia Velocity Tracker będziemy teraz uwzględniać różnice zamiast pozycji. Dzięki temu prędkość będzie prawidłowo obliczana we wszystkich przypadkach, nawet jeśli element docelowy się porusza (I51ec3, b/216582726, b/223440806, b/227709803). - Ustawienie
Show Layout Boundszostanie zastosowane w przypadku komponentów natychmiast po przełączeniu go w kafelku szybkich ustawień, bez konieczności opuszczania i ponownego wchodzenia do aktywności. (I843d5, b/225937688) - Wyszukiwanie ciągów znaków ułatwień dostępu nie powoduje wczytywania czcionki. Wcześniej próbowano wczytać czcionki dla
StyleSpans, co powodowało awarie, jeśliFontFamily.Resolverzostało zastąpione. (I4609d) - Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
DeleteSurroundingTextCommandiDeleteSurroundingTextInCodePointsCommandwymagają teraz, aby argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)
Wersja 1.2.0-beta02
18 maja 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-beta02 Wersja 1.2.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Ponowne wykorzystywanie funkcji w innych typach podglądu (I19f39)
Poprawki błędów
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerzostała zmieniona naDisposeOnDetachedFromWindowOrReleasedFromPool, aby lepiej odzwierciedlać, że dotyczy ona sytuacji, w których następuje utylizacja, a nie tylko sytuacji, w których nie następuje. (If15ca)
Wersja 1.2.0-beta01
11 maja 2022 roku
Publikacja androidx.compose.ui:ui-*:1.2.0-beta01 Wersja 1.2.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- To pierwsza wersja beta 1.2.
Zmiany w interfejsie API
- Dodano eksperymentalny interfejs
BeyondBoundsInterval, który może być używany przez niestandardowe implementacje interfejsuLazyListpodczas rozmieszczania elementów poza widocznymi granicami (Ifabfb, b/184670295). - Wersje
Modifier.composedz kluczem są teraz stabilnym interfejsem API (Ie65e4, b/229988420). - Uproszczono interfejs
rememberNestedScrollConnectionAPI, aby używać lokalnych kompozycji do uzyskiwania informacji o bieżącym widoku (I67ca7). - Adnotacji
@ComposableTargeti adnotacji oznaczonych symbolem@ComposableTargetMarkermożna teraz używać w zakresie pliku za pomocą prefiksu@file. Użycie adnotacji docelowej w zakresie pliku spowoduje, że kompilator założy, że wszystkie funkcje z możliwością komponowania w pliku są przeznaczone do powiązanego narzędzia do stosowania. Na przykład użycie@file:UiComposabledeklaruje, że wszystkie funkcje@Composablesą kierowane na aplikator interfejsu Compose. Funkcja, która ma być kierowana na innego aplikatora, musi jawnie podać adnotację znacznika docelowego dla wybranego aplikatora. (I40804) Wprowadziliśmy nowy eksperymentalny interfejs API do testowania niezależny od platformy:
interface ComposeUiTestifun runComposeUiTest(block: ComposeUiTest.() -> Unit), których można używać do uruchamiania testów interfejsu Compose bez konieczności korzystania zTestRule. Aby przeprowadzić test bezComposeTestRule, przekaż go jako funkcję lambda dorunComposeUiTesti użyj metod i elementów w zakresie odbiornikaComposeUiTest, które są takie same jak wComposeContentTestRule.Do pakietu dodano specyficzne dla Androida adnotacje
interface AndroidComposeUiTestifun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit), aby zapewnić dostęp do bazowej aktywności, podobnie jak w przypadku adnotacjiAndroidComposeTestRule. Aby mieć jeszcze większą kontrolę, możesz samodzielnie utworzyć instancjęclass AndroidComposeUiTestEnvironment.Implementacja na komputery to
class DesktopComposeUiTest, ale obecnie nie są oferowane żadne funkcje uruchamiania specyficzne dla komputerów.Test można przenieść z
ComposeTestRuledoComposeUiTestw ten sposób (przykład na Androidzie). Od:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }Do:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }Obecnie
ComposeContentTestRuleiComposeTestRulenie są rozszerzeniamiComposeUiTest, co oznacza, że funkcji rozszerzających wComposeUiTestnie można jeszcze wywoływać w interfejsieTestRule. Gdy interfejsComposeUiTeststanie się stabilnym interfejsem API, interfejsyComposeContentTestRuleiComposeTestRulezostaną zmienione tak, aby rozszerzały interfejsComposeUiTest. (Ib4e90)Nazwa
LineHeightBehaviorzostała zmieniona naLineHeightStyleNazwa
LineVerticalAlignmentzostała zmieniona naLineHeightStyle.AlignmentZmienianie nazwy:
LineHeightTrimzmieniono naLineHeightStyle.TrimUsunięto wartości konstruktora domyślnego z
LineHeightStyle(I582bf, b/181155707)Dodano
BrushdoTextStyleiSpanStyle, aby umożliwić rysowanie tekstu z kolorowaniem gradientowym. (I53869, b/187839528)Atrybuty
trimFirstLineTopitrimLastLineBottomelementuLineHeightBehaviorzostały przekształcone w jeden typ wyliczeniowy:LineHeightTrim.LineHeightTrimmają 4 stany zdefiniowane przez 2 wartości logiczne:FirstLineTop,LastLineBottom, Both i None (Ifc6a5, b/181155707).Dodano
LineHeightBehaviordoTextStyleiParagraphStyle.LineHeightBehaviorokreśla, czy wysokość wiersza jest stosowana do góry pierwszego wiersza i do dołu ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni podanej przezTextStyle(lineHeight).Na przykład zachowanie podobne do tego, które definiuje usługa porównywania cen, można uzyskać za pomocą parametru
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).Konfiguracje
trimFirstLineTopitrimLastLineBottomdziałają prawidłowo tylko wtedy, gdy wartośćincludeFontPaddingto „false”. (I97332, b/181155707)Funkcje
PlatformParagraphStyle.lerpiPlatformSpanStyle.lerpzostały zmienione na funkcje najwyższego poziomu (I9a268).
Poprawki błędów
- Dokumentacja
PointerInputChange::copyzawiera teraz prawidłową informację, że jest to kopia płytka. (I182f5) - Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
- Domyślnie włączone
includeFontPadding. Możesz wyłączyćincludeFontPaddingza pomocą atrybutuTextStyle.platformTextStyle. W najbliższej przyszłości zmienimy domyślne działanie, ale do tego czasu pozwoli nam to lepiej zintegrować ulepszenia wysokości wiersza (aosp/2058653) i rozwiązać problemy zTextFieldprzycinaniem. (I01423, b/171394808)
Wkład zewnętrzny
MouseInjectionScope.scroll(delta = someDelta)jest teraz odwrócony na Androidzie, jeśli przewijamy w pionie (jeśli someDelta jest dodatni, przewijanie będzie w dół) (Ifb697, b/224992993)
Wersja 1.2.0-alpha08
20 kwietnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha08 Wersja 1.2.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Funkcje
pluralStringResourcezostały oznaczone jako eksperymentalne, aby umożliwić ich rozwój i lepsze dostosowanie do potrzeb użytkowników z różnych krajów. (If24e4) - Elementy Paragraph i MultiParagraph akceptują teraz parametr Constraints. Przekazywanie wartości
Constraints.maxHeightnie ma obecnie żadnego efektu, ale w przyszłości umożliwi wykonywanie pewnych obliczeń, np. skracanie tekstu na podstawie wysokości. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()akceptuje teraz niestandardową klasę podobną do MutableSet, która nie zezwala na dodawanie do niej nowych elementów. (Icd314)- PointerIcon jest teraz interfejsem
@Stable(I9dafe) - Częściowe wykorzystanie (w dół LUB pozycja) zostało wycofane w
PointerInputChange. Aby w pełni wykorzystać zmianę, możesz użyćconsume(). Możesz użyćisConsumed, aby sprawdzić, czy ktoś inny wcześniej wykorzystał zmianę. PointerInputChange::copy()zawsze tworzy teraz płytką kopię. Oznacza to, że kopiePointerInputChangezostaną wykorzystane, gdy jedna z nich zostanie wykorzystana. Jeśli chcesz utworzyć niepowiązany elementPointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)- Włączanie współdziałania zagnieżdżonego przewijania między Compose i View w kierunku Compose > View. Oznacza to, że element nadrzędny kompozycji będzie mógł otrzymywać delty zagnieżdżonego przewijania z zagnieżdżonego widoku przewijania. (If7949, b/174348612)
- Nowa funkcja
SemanticsProperty testTagsAsResourceId, która umożliwia dostosowanie Compose do testów UIAutomator zaprojektowanych dla systemu View. (I39c20) - Wyświetl wszystkie dostępne grubości czcionek systemowych na Androidzie, gdy używasz
FontFamily.SansSerif. W przypadku interfejsów API w wersjach 21–28 wewnętrznie będą używane nazwy czcionek zastępczych, np. sans-serif-medium. Jest to zmiana w stosunku do poprzedniego działania, ponieważ w przypadku interfejsu API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992) - Instruktorzy akapitów i wielu akapitów zmienili kolejność argumentów pozycyjnych, umieszczając je przed argumentami opcjonalnymi. (Idafaa)
AndroidFontprzyjmuje teraz typefaceLoader jako parametr konstruktora. (I2c971)
Wersja 1.2.0-alpha07
6 kwietnia 2022 roku
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha07 Wersja 1.2.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano nową funkcję
Snapshot.withoutReadObservation { ... }. Umożliwia użytkownikom uruchamianie przekazanej funkcji lambda bez subskrybowania zmian wartości stanu odczytanych w tym bloku. Może się to przydać w przypadkach, gdy chcesz korzystać z bezpiecznych dla wątków odczytów i zapisów opartych na zrzutach, ale chcesz mieć możliwość odczytania wartości bez powodowania niepotrzebnego ponownego komponowania lub ponownego pomiaru. (I9f365, b/214054486) - Właściwość rozszerzenia
consumeWindowInsetselementuComposeViewumożliwia deweloperom wyłączenie wykorzystywaniaWindowInsetsna Androidzie. Dzięki temu poszczególneComposeViewsw hierarchii mogą stosowaćWindowInsetsbez wzajemnego zakłócania się. (I0ef08, b/220943142) - Dodano
KeyboardType.Decimaljako alternatywę dlaKeyboard.Number, aby uwzględnić separator dziesiętny w edytorze IME. (Iec4c8, b/209835363) PointerEventType.ScrolliPointerEvent.scrollDeltato teraz stabilne interfejsy API (I574c5, b/225669674)- Włączanie współdziałania zagnieżdżonego przewijania między widokiem a Compose w przypadku współpracujących klas widoków. Oznacza to, że funkcja Compose może teraz wysyłać różnice przewijania do współpracującego elementu nadrzędnego View. (I5d1ac, b/174348612)
- Zaktualizowano
FontFamily.Resolver, aby zintegrować ustawienie ułatwień dostępu „Pogrubienie tekstu w całym systemie” (I6c1e7) - Środowisko wykonawcze
Font(AssetManager, String, ...)zostało wycofane i zastąpione środowiskiemFont(String, AssetManager, ...). To eksperymentalny interfejs API. (I1c7a4) - Dodaj nowy deskryptor czcionki
Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane w systemie w łańcuchach zastępczych czcionek. (I30468, b/219754572) - Dodano tymczasową konfigurację zgodności dla
includeFontPaddingw TextStyle/ParagraphStyle. WartośćincludeFontPaddingmożna zmienić wTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Jest to tymczasowa opcja konfiguracji, która umożliwia migrację i zostanie usunięta. (If47be, b/171394808) - Dodaj rozszerzenie
GoogleFont.Provider.isAvailableOnDevice, aby ułatwić debugowanie. (I64e31) - Dodaj konstruktor
GoogleFont.Providerdo użycia z@ArrayRes(Ic5ee1, b/225984280). Compose GoogleFontnosi teraz nazwęFont(GoogleFont), a interfejs API pozostaje stabilny. (I125f2)
Poprawki błędów
- Dodano kontrolę lint do komponentu material/Scaffold, aby upewnić się, że używane jest wewnętrzne dopełnienie (Ifb111).
Wersja 1.2.0-alpha06
23 marca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha06 Wersja 1.2.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano działanie semantyczne
RequestFocus, aby poprosić o skupienie się na elemencie, na którym można ustawić fokus. (I17b71) - Zaktualizowano analizowanie wektorowych elementów rysunkowych, aby obsługiwać automatyczne dublowanie, które odwraca zawartość elementu
VectorPainter, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237) Zaktualizowano kolory cienia/otoczenia, aby były parametrami końcowymi
Modifier.graphicsLayerw celu zapewnienia zgodności z interfejsem API (I3f864, b/160665122).Dodano domyślne implementacje koloru cienia/otoczenia w
GraphicsLayerScope, aby zapewnić brak zmian powodujących błędy w interfejsie API.Dodano czas zdarzenia do zdarzeń RSB (Ief8ae)
Usługa
FocusOrderzostała połączona z usługąFocusProperties, a usługafocusProperties()ma teraz wszystkie funkcje usługifocusOrder(). InterfejsyFocusOrderifocusOrder()zostały wycofane.focusOrder(), które akceptujefocusRequester, należy zastąpić modyfikatoremfocusRequester()w połączeniu zfocusProperties(). Dzięki temu modyfikatory mogą mieć bardziej wyraźny podział obowiązków. (I601b7)Uaktualnienie obu tych elementów
RecyclerViewiComposeznacznie poprawi wydajność przewijania w przypadku widoków RecyclerView, których elementami podrzędnymi są widoki Compose.Dodaj
ViewCompositionStrategy.Defaultjako sposób pobierania wbudowanej strategii domyślnej.Dodaj
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer, która jest nową domyślną strategią i prawidłowo obsługuje kontenery puli, takie jak RecyclerView. (If7282)Dodano obsługę adnotacji do klas adnotacji za pomocą adnotacji @Preview jako pierwszego kroku w procesie dodawania funkcji Multipreview. Takie adnotacje mogą być używane do adnotowania metod Composable lub innych klas adnotacji, które mogą być następnie traktowane jako pośrednio adnotowane za pomocą danej adnotacji @Preview. (I12eff)
Urządzenia referencyjne dodane do listy Urządzenia w przypadku wersji @Preview (I071c9)
Poprawki błędów
- Zaktualizowano interfejsy API grafiki wektorowej, aby używały odpowiedniej adnotacji funkcji kompozycyjnej @VectorComposable zamiast @UiComposable (I942bc).
- Usuń crossinline z
AnnotatedString.Builder.withStyle(If84d5)
Wkład zewnętrzny
- compose-ui: dodaj właściwości
ambientShadowColorispotShadowColordoGraphicsLayerScope(I1ba1a, b/160665122) - Zasoby w liczbie mnogiej są teraz obsługiwane przez funkcje
pluralStringResource. (Ib2f23, b/191375123)
Wersja 1.2.0-alpha05
9 marca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha05 Wersja 1.2.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Funkcja
TextToolbarprzyjmuje teraz argumenty lambda zamiastActionCallback. (Ib2eb9, b/197950089) - Zaktualizowano dopuszczalność wartości null w bibliotekach core i appcompat, aby była zgodna z wersją DP2 Tiramisu (I0cbb7).
- Interfejs pomiarowy udostępnia teraz właściwość parentData (I3313f)
Modifier.onPlacedi interfejsOnPlacedModifiersą teraz stabilne. (Ib5482)- Hurra! Animacja kompozycji obsługuje teraz ustawienie „Skala czasu trwania animatora” w opcjach programisty. (I5a4fc, b/161675988)
- Dodano modyfikator
BeyondBoundsLayoutlokalny (If8b51, b/184670295) - Tekst: includeFontPadding jest teraz domyślnie wyłączony. Problemy z przycinaniem wynikające z
includeFontPadding=falsezostały rozwiązane i nie powinno już dochodzić do przycinania w przypadku wysokich skryptów. (I31c84, b/171394808)
Poprawki błędów
ComposeContentTestRule.setContentbędzie teraz zgłaszać błądIllegalStateException, jeśli spróbujesz ustawić treść, gdy już istnieje inna treść. (I888a5, b/199631334)- Rozwiązaliśmy problem z awarią spowodowaną przez zawartość schowka podczas odczytu ze schowka na urządzeniu z Androidem. (I06020, b/197769306)
- Ulepszanie przykładowych przewijanych reklam z elementami do kupienia. (I6a596)
Wkład zewnętrzny
- Zaktualizowano do korzystania ze współprogramów Kotlinx w wersji 1.6.0 (I3366d)
Wersja 1.2.0-alpha04
23 lutego 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha04 Wersja 1.2.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
Dodano adnotacje
ComposableTarget,ComposableTargetMarkeriComposableOpenTarget, które umożliwiają zgłaszanie w czasie kompilowania sytuacji, w których funkcja typu „composable” jest wywoływana z kierowaniem na applier, do którego nie została zaprojektowana.W większości przypadków adnotacje te mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Nie można wywnioskować przypadków, w których tworzone i używane są niestandardowe aplikatory, abstrakcyjne funkcje kompozycyjne (np. metody interfejsu), pola lub zmienne globalne, które są kompozycyjnymi wyrażeniami lambda (zmienne lokalne i parametry są wywnioskowane), lub gdy używane są funkcje kompozycyjne
ComposeNodelub powiązane.W przypadku niestandardowych funkcji stosujących funkcje kompozycyjne, które wywołują
ComposeNodelubReusableComposeNode, należy dodać adnotacjęComposableTargetdo funkcji i wszystkich typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji oznaczonej symbolemComposableTargetMarker, a następnie użycie tej adnotacji zamiast symboluComposableTarget. Adnotacja kompozycyjna oznaczona symbolemComposableTargetMarkerjest równoważna adnotacjiComposbleTargetz pełną i jednoznaczną nazwą klasy atrybutu jako parametrem stosującym. Przykład użycia elementuComposableTargetMarkerznajdziesz w sekcjianroidx.compose.ui.UiComposable. (I38f11)Font(resId, ...)przyjmuje teraz loadingStrategy w stabilnym interfejsie API. (Ief3d2)Interfejs
FontLoadingStrategyjest teraz stabilnym interfejsem API. (I1ee35, b/174162090)Obsługa asynchronicznego wczytywania czcionek w komponencie Text (I77057, b/214587005)
Dodaj interfejs Bridge API do konwertowania niestandardowych wartości
Font.ResourceLoadernaFontFamily.Resolver. (Ia0060)
Poprawki błędów
- Podane
FontFamily.Resolversą przekazywane do podkompozycji, takich jak wyskakujące okienko. - Podane
Font.ResourceLoadersą przekazywane do podkompozycji, takich jak wyskakujące okienko. (I48fa5)
Wersja 1.2.0-alpha03
9 lutego 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha03 Wersja 1.2.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Metody
notifyFocusedRectwTextInputSessioniTextInputServicezostały wycofane i nie będą wywoływane. Zamiast niej używaj zasadyBringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874) - Wprowadzono metodę
destroyDisplayListDataw klasieRenderNode(I1e659, b/216660268) - Dodaliśmy nowy interfejs API, który umożliwia wstępne pomiary elementów podrzędnych
SubcomposeLayout, które zostały wcześniej skomponowane. (I857ea) Dodano funkcję
movableContentOf, która przekształca funkcję lambda z elementami kompozycyjnymi w funkcję lambda przenoszącą jej stan i odpowiednie węzły do nowej lokalizacji, w której jest wywoływana. Gdy poprzednie połączenie opuści kompozycję, stan jest tymczasowo zachowywany, a jeśli do kompozycji dołączy nowe połączenie z funkcją Lambda, stan i powiązane węzły zostaną przeniesione do lokalizacji nowego połączenia. Jeśli nie zostanie dodane nowe połączenie, stan zostanie trwale usunięty, a obserwatorzy zostaną powiadomieni.Jeśli funkcja lambda
movableContentOfjest wywoływana wiele razy w tej samej kompozycji, dla każdego wywołania tworzony jest nowy stan i węzły. Gdy wywołania opuszczają kompozycję, a nowe wywołania do niej wchodzą, stan jest przenoszony z pierwszych wywołań, które opuszczają kompozycję, do wywołań, które do niej wchodzą, w kolejności, w jakiej są wywoływane. Wszystkie stany nieużywane przez nowe połączenia są trwale usuwane. (Ib4850)FontFamilyResolverjest teraz dostępny w ramachLocalFontFamilyResolver.currentDodano
createFontFamilyResolver(context)icreateFontFamilyResolver(context, coroutineScope), aby tworzyć nowe moduły rozpoznawania FontFamily poza użyciem funkcji Compose.Komponenty Paragraph i MultiParagraph przyjmują teraz wartość
FontFamily.ResolverTextLayoutResult.layoutInput.fontFamilyResolverzawiera teraz resolver używany w tym układzie, wycofanyTextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)Obsługa asynchronicznego i opcjonalnego wczytywania czcionek z zachowaniem domyślnego działania. Ta ścieżka jest używana przez komponenty Text i TextField i udostępniana przez interfejs FontFamilyResolver.
Obsługa wstępnego wczytywania czcionek za pomocą
FontFamilyResolver.preloadFontFamilyResolver.setAsyncLoadContextumożliwia ustawienie globalnego kontekstu współprogramu używanego do wczytywania czcionek asynchronicznych. (I87fe8, b/174162090)Dodaliśmy
AndroidFont, nowy interfejs API niskiego poziomu do udostępniania nowych typów deskryptorów zasobów czcionek na Androidzie. Na przykład wczytywanie czcionek z backendu aplikacji, opcjonalne lokalizowanie wstępnie zainstalowanych czcionek na urządzeniu lub wczytywanie czcionki z zasobu, który nie jest udostępniany przez bieżące fabryki czcionek.Rozszerzony interfejs
Font.ResourceLoadedAPI obsługujący opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy deweloperom aplikacji bezpośredniego korzystania z tego interfejsu API. Aby dodać nowe typy czcionek, zobaczAndroidFont.Funkcja rozszerzenia
Font.AndroidResourceLoaderumożliwia tworzenieFont.ResourceLoaderpoza kompozycją.Dodano parametr
loadingStrategydo czcionek opartych na zasobach, aby umożliwić asynchroniczne wczytywanie, gdy czcionka zasobu odwołuje się do pliku XML czcionek do pobrania. (Ie5aea, b/174162090)Konstruktor
Typeface(FontFamily)został wycofany. Wcześniej służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku czcionek do pobrania to wywołanie może blokować działanie przez 10 sekund. Zamiast niej używaj zasadyFontFamilyResolver.preload.Interfejs
fontResource(FontFamily): Typefacezostał wycofany. Wcześniej służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast tego użyjFontFamilyResolver.preload(If8e7c, b/174162090).Konstruktor
SubcomposeLayoutStateakceptującymaxSlotsToRetainForReusezostał wycofany. Zamiast tego jest nowy konstruktor akceptującySubcomposeSlotReusePolicy– nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które sloty powinny zostać zachowane do ponownego użycia w przyszłości. (I52c4d)Udostępnia funkcje HSV i HSL w
Colorjako nieeksperymentalne interfejsy API. Przestrzeń kolorów Oklab jest teraz publicznym interfejsem API. (I08fb6, b/180731008)Usunęliśmy interfejs
AndroidComposeTestRule.AndroidComposeStatement, który nie miał być częścią publicznego interfejsu API i nie miał żadnego wpływu na działanie aplikacji. (Ibc46b)Zmiana nazwy wewnętrznie wygenerowanej klasy kt (Ia0b9e, b/174162090)
Usunięto
FontLoadingStrategy.values(I42a9d, b/174162090)Globalny moduł wczytywania czcionek to teraz
FontFamilyResolver. (I4f773, b/174162090)Użyj nowego systemu wczytywania czcionek na komputerach. (I9ce5c, b/174162090)
FontFamily.Resolver.resolvezwracaState<Any>(I4406c, b/174162090)
Poprawki błędów
- Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są aktywne i klawiatura jest widoczna, a tryb wprowadzania programowego to
ADJUST_PAN. (I8eaeb, b/190539358, b/192043120) - Desktop używa lokalnej kompozycji dla
FontFamily.Resolver - Wycofanie wersji
FontLoaderna komputery - Nowa fabryka
createFontFamilyResolverna komputerze (I6bbbb, b/174162090) - Klawiatura ekranowa nie miga już podczas przełączania zaznaczenia między polami tekstowymi. (I1bf50, b/187746439)
Wersja 1.2.0-alpha02
26 stycznia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano
Modifier.onRotaryScrollEvent()iModifier.onPreRotaryScrollEvent()w przypadku urządzeń do noszenia z obrotowym przyciskiem bocznym (I18bf5, b/210748686) - Dodaj eksperymentalne rozszerzenie
View.createLifecycleAwareRecomposer(I0cde6)
Wkład zewnętrzny
PointerEvent.scrollDelta.yjest teraz odwrócony na Androidzie (zwraca 1 zamiast -1, jeśli przechylimy kółko myszy w prawo) (Ia9811).
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Wycofano
FontFamily.canLoadSynchronously. Ta właściwość nie ma znaczenia semantycznego. (Ica5ef) - Dodano pole tożsamości do
CompositionDatana potrzeby generowania niezmiennych identyfikatorów w narzędziu Layout Inspector. (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 Kotlin
1.6.10.
Wersja 1.1
Wersja 1.1.1
23 lutego 2022 r.
Publikacja androidx.compose.ui:ui-*:1.1.1 Wersja 1.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem
NullPointerExceptionwandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059, b/206677462) - Rozwiązaliśmy problem z awarią spowodowaną przez zawartość schowka podczas odczytu ze schowka na urządzeniu z Androidem. (I06020, b/197769306)
- Poprawiono RTL w
LazyVerticalGrid(aosp/1931080, b/207510535)
Wersja 1.1.0
9 lutego 2022 r.
Publikacja androidx.compose.ui:ui-*:1.1.0 Wersja 1.1.0 zawiera te zmiany.
Ważne zmiany od wersji 1.0.0
- Stabilna obsługa efektu przewijania w Androidzie 12
- Ulepszenia rozmiaru docelowego elementu dotykowego
- Pamiętaj, że w przypadku Compose 1.0 komponenty Material rozszerzą swój obszar układu, aby spełnić wytyczne dotyczące ułatwień dostępu w interfejsie Material w zakresie rozmiaru obszaru klikalnego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu biblioteka Compose Material zachowuje się tak samo jak komponenty Material Design, co zapewnia spójne działanie w przypadku łączenia widoków i elementów Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu za pomocą komponentów Compose Material spełnione zostaną minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
- Stabilna obsługa kolumny nawigacji
- Przekształcenie kilku eksperymentalnych interfejsów API w stabilne
- Obsługa nowszych wersji języka Kotlin
Wersja 1.1.0-rc03
26 stycznia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-rc03 Wersja 1.1.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano, aby obsługiwać Compose Material w wersji 1.1.0-rc03
Wersja 1.1.0-rc01
15 grudnia 2021 roku
Publikacja androidx.compose.ui:ui-*:1.1.0-rc01 Wersja 1.1.0-rc01 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy błąd, który powodował brak działań przewijania ułatwień dostępu (I7cbfb).
SemanticsNodeInteraction.captureToImage()będzie teraz działać również wtedy, gdyHardwareRenderer.isDrawingEnabled()ma wartośćfalse, poprzez włączenie tej funkcji na czas trwania połączenia (Idf3d0).
Wersja 1.1.0-beta04
1 grudnia 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-beta04 Wersja 1.1.0-beta04 zawiera te zmiany.
Nowe funkcje
- Zaktualizowano, aby była zgodna z Kotlinem w wersji
1.6.0
Zmiany w interfejsie API
- Usunięto możliwość wartości null w
androidx.core.view(I7078a, b/204917439) - Dodano eksperymentalne interfejsy API, które umożliwiają użytkownikom korzystanie z interfejsu PointerInputchange jako całości lub sprawdzanie, czy został on użyty. (I2e59d)
- Dodaje obsługę zdarzeń kółka myszy w warstwie interfejsu. (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) ComposeNotIdleExceptionjest teraz przedłużony zExceptionzamiast bezpośrednio zThrowable. Pamiętaj, że oznacza to, że klauzule wyłapujące, które wyłapywałyException, mogą teraz wyłapywaćComposeNotIdleException, czego wcześniej nie robiły. (I9c217)
Poprawki błędów
- Naprawiono problem z nieprzesuwaniem się uchwytów tekstu po zmianie widoczności edytora IME. (I25f2e)
Wersja 1.1.0-beta03
17 listopada 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-beta03 Wersja 1.1.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano nowy modyfikator Modifier.onPlaced, który umożliwia obserwowanie zmiany miejsca. Na podstawie zaobserwowanej zmiany miejsca docelowego można więc wprowadzić dodatkowe zmiany w przesunięciu modyfikatora podrzędnego. (I558fd)
- Usunięto
InjectionScope.flush()iInjectionScope.dispose(). Opróżnianie wszystkich zdarzeń i usuwanie zakresu odbywa się teraz na końcu wywołanej metody perform*Input(), tak jak wcześniej. (I2bed8) - Usunięto
MultiModalInjectionScope.TouchiMultiModalInjectionScope.Mouse. Aby wstrzykiwać zdarzenia dotyku i myszy w przypadku gestów wielomodowych, możesz teraz używać funkcjiMultiModalInjectionScope.touch()iMultiModalInjectionScope.mouse(). Obie przyjmują lambdę, która ma zakres odbiorcy tej modalności. (Idde18)
Poprawki błędów
- Wartość domyślna parametru
durationMillisw przypadku parametruTouchInjectionScope.swipeWithVelocityjest teraz obliczana tak, aby przesunięcie było możliwe. (I19deb)
Wersja 1.1.0-beta02
3 listopada 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-beta02 Wersja 1.1.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie do rodziców próśb o przewinięcie ekranu, aby wyświetlić dany element (Ib918d, b/195353459).
- Nowe interfejsy API animacji do obsługi narzędzi. Umożliwiają one narzędziom sprawdzanie animacji i ich konfiguracji w przejściach. (I4116e)
Wkład zewnętrzny
- Dodano Modifier.pointerHoverIcon (I95f01)
Wersja 1.1.0-beta01
27 października 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano eksperymentalny interfejs
BringIntoViewAPI, który umożliwia wysyłanie do rodziców prośby o przewinięcie ekranu, aby wyświetlić dany element (Ib918d, b/195353459). - Nowe interfejsy API animacji do obsługi narzędzi. Umożliwiają one narzędziom sprawdzanie animacji i ich konfiguracji w sekcji Przejścia. (I4116e)
Wersja 1.1.0-alpha06
13 października 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-alpha06 Wersja 1.1.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Usuń
ExperimentalComposeUiApizViewRootForInspectoriLayoutInfo.ownerViewId(I5c2e3) - Dodano przeciążenie bez elementów podrzędnych dla układu, co zwiększa wydajność (Ib0d9a).
- Usunięto
InternalCompilerApiz metod Composer, które muszą być wywoływane w różnych modułach (I1aa0b). - Funkcja
SemanticsNodeInteraction.performSemanticsActionzwraca terazSemanticsNodeInteraction, na którym została wywołana. (I9e5db) - Dodano LocalInputModeManager CompositionLocal, aby wykrywać tryb dotykowy i niedotykowy. (I6a83c, b/175899786)
- Dodano
viewConfiguration: ViewConfigurationdoLayoutInfo, aby umożliwić konsumentom uzyskanie prawidłowej wartości w przypadku takich działań jak długie naciśnięcie czy przekroczenie limitu czasu. (I76ca6)- Dodaliśmy
viewConfiguration: ViewConfigurationdoInjectionScope, aby umożliwić testom dostosowywanie wstrzykiwania danych wejściowych na podstawie takich czynników jak limit czasu długiego naciśnięcia czy tolerancja dotyku. - Zmieniono domyślny czas trwania długiego naciśnięcia i dwukrotnego kliknięcia w przypadku dotyku i sygnału myszy, aby był oparty na wartościach w
InjectionScope.viewConfiguration.
- Dodaliśmy
- Implementacja komponentu ExposedDropdownMenu na podstawie komponentu ExposedDropdownMenuBox z komponentami TextField i DropdownMenu wewnątrz (If60b2)
- Do klasy PopupProperties dodano właściwość dismissOnOutsideClick, która zastąpiła wycofaną właściwość dismissOnClickOutside. Nowa usługa otrzymuje pozycję kliknięcia i granice elementu zakotwiczonego, co zapewnia większą kontrolę nad tym, czy należy wywołać funkcję onDismissRequest. Może to być przydatne np. w przypadku zapobiegania zamykaniu kotwicy po dotknięciu jej.
- Do klasy PopupProperties dodano funkcję updateAndroidWindowManagerFlags, która zapewnia niskopoziomową kontrolę nad flagami przekazywanymi przez wyskakujące okienko do menedżera okien Androida. Parametrem funkcji lambda będą flagi obliczone na podstawie wartości PopupProperties, które powodują powstanie flag WindowManager, np. focusable. Wynikiem funkcji lambda będą ostateczne flagi, które zostaną przekazane do menedżera okien Androida. Domyślnie funkcja updateAndroidWindowManagerFlags pozostawia flagi obliczone na podstawie parametrów bez zmian. Tego interfejsu API należy używać ostrożnie, tylko w przypadkach, gdy wyskakujące okienko ma bardzo specyficzne wymagania dotyczące działania. (I6e9f9)
Recomposer.statezostało wycofane i zastąpione przezRecomposer.currentState, aby zmienić jego typ na StateFlow (Ic2ab3, b/197773820).- Dodano użytkowników
flush()idispose()do albumuInjectionScope. Używaj ich, gdy chcesz natychmiast opróżnić wszystkie zdarzenia w kolejce i gdy chcesz odpowiednio usunąć zakres. (Ifb73a) - Dodano
performScrollToNode(matcher: SemanticsMatcher), które przewija kontener z możliwością przewijania do treści pasujących do danego dopasowania. (Ic1cb8) InjectionScopeobsługuje terazDensity, co umożliwia łatwe konwertowanie jednostek px i dp wperformTouchInputi podobnych narzędziach. (I8fe1f)
Poprawki błędów
- Komponent AndroidView przekazuje teraz do widoku elementy LocalLifecycleOwner i LocalSavedStateRegistryOwner za pomocą elementów ViewTreeLifecycleOwner i ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Rozwiązanie problemu polegającego na tym, że funkcja SwipeToDismissBox w WearOS czasami nie obsługiwała przesunięć. (I9387e)
- Domyślny czas między wstrzykiwanymi zdarzeniami wejściowymi został zmieniony z 10 ms na 16 ms. Może to zmienić wynik testów, które wykonują gesty wejściowe, np. określone przesunięcie. (I829fd)
Wersja 1.1.0-alpha05
29 września 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-alpha05 Wersja 1.1.0-alpha05 zawiera te zmiany.
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 użytkowników
density: DensityilayoutDirection: LayoutDirectiondo albumuLayoutInfo. Dzięki temu użytkownicyLayoutInfobędą mogli prawidłowo interpretować wymiary i pozycję ujawnione wLayoutInfo. (I002f1) - Dodaliśmy eksperymentalną obsługę wstrzykiwania zdarzeń myszy. Użyj
performMouseInput, aby zacząć wysyłać zdarzenia myszy, lub wysyłaj zdarzenia myszy za pomocą właściwościMouseobiektuMultiModalInjectionScopepodczas gestu wprowadzania danych w wielu trybach za pomocąperformMultiModalInput. Dokumentację dostępnego interfejsu API znajdziesz wMouseInjectionScope. (Iaa4a8, b/190493367)
Poprawki błędów
- Poprawiona obsługa ułatwień dostępu w przypadku elementów z możliwością przewijania (zarówno ładowanych leniwie, jak i nie) w odniesieniu do przewijania (I6cdb0).
- Ulepszone
TouchInjectionScope.swipeWithVelocityObecnie akceptuje szerszy zakres zmiennych wejściowych i sugeruje zmiany w danych wejściowych, jeśli nie można utworzyć przesunięcia (I40fbe, b/182477143).
Wersja 1.1.0-alpha04
15 września 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-alpha04 Wersja 1.1.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
PointerEventma terazPointerEventTypedo obsługi zdarzeń najechania kursorem. (I091fa)- Zezwalaj dzieciom na akceptowanie danych wejściowych wskaźnika poza granicami danych wejściowych wskaźnika elementu nadrzędnego. Rodzice mogą przechwytywać te wywołania za pomocą właściwości PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655).
- Wycofano
performGestureiGestureScope, które zostały zastąpione przezperformTouchInputiTouchInjectionScope. (Ia5f3f, b/190493367) - Dodaliśmy
touchBoundsInRootdoSemanticsNode, 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) - Ponowne wdrożenie funkcji inspectable (I927bc, b/191017532)
- Zmiana nazwy parametru inspectable, aby pasowała do nazwy parametru złożonego (I3a482, b/191017532)
Wprowadziliśmy
performTouchInputiTouchInjectionScopejako zamiennikiperformTouchInputiTouchInjectionScope, co utorowało drogę innym metodom (np. myszy).TouchInjectionScopema te same metody coGestureScope, z wyjątkiemmovePointerToimovePointerBy, które zostały zmienione naupdatePointerToiupdatePointerBy. Wszystkie inne metody są takie same.Działanie funkcji
TouchInjectionScopejest niemal identyczne z działaniem funkcjiGestureScope, z dwoma drobnymi różnicami:- Gdy wysyłane jest zdarzenie down, a wskaźniki zostały przesunięte bez wysłania zdarzenia move (czyli użyto metody
updatePointerTo(), 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. - Gdy wysyłane jest zdarzenie up, a wskaźniki zostały przesunięte bez wysłania zdarzenia move (podobnie jak powyżej), poprzednia implementacja przesuwała czas zdarzenia i wysyłała zdarzenie move przed wysłaniem zdarzenia up. Nowa implementacja nie robi tego: nowe położenie wskaźników będzie odzwierciedlone tylko w zdarzeniu up.
Na koniec
TouchInjectionScopewprowadza nową metodęcurrentPosition(pointerId: Int)uzyskiwania bieżącej pozycji danego wskaźnika. (If1191, b/190493367)- Gdy wysyłane jest zdarzenie down, a wskaźniki zostały przesunięte bez wysłania zdarzenia move (czyli użyto metody
Poprawki błędów
- Zezwalaj na rozszerzanie granic docelowego elementu dotykowego poza obszar przycinania na potrzeby minimalnego docelowego elementu dotykowego. (I43e10, b/171509422)
- Na urządzeniach z Androidem 12 dodano obsługę rozciągania przewijania. (Iccf3c, b/171682480)
Wersja 1.1.0-alpha03
1 września 2021 roku
Publikacja androidx.compose.ui:ui-*:1.1.0-alpha03 Wersja 1.1.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Zaktualizowano
1.1.0-alpha03Compose, aby zależał od Kotlin1.5.30. (I74545)
Zmiany w interfejsie API
- Dodano
Modifier.inspectabledo opakowywania innych modyfikatorów. (I1909b, b/191017532) - Dodano
BlurredEdgeTreatmentinterfejs API, aby uprościć przypadki użycia rozmycia do bardziej powszechnych kombinacji flag klipu i trybów kafelków. Większość przypadków użycia polega na renderowaniu rozmytych treści poza pierwotnymi granicami treści i rozmywaniu obszarów poza tymi granicami za pomocą przezroczystej czerni lub przycinaniu treści do granic treści z próbkowaniem najbliższej krawędzi w przypadku jąder rozmycia, które wykraczają poza granice treści. (I6b4b7, b/166927547) - Dodaliśmy obsługę RenderEffect w Compose Desktop. Wprowadziliśmy efekt OffsetEffect oraz modyfikator rozmycia jako prosty sposób na dodanie efektów wizualnych rozmycia do części hierarchii kompozycji. (I0f6aa, b/166927547)
- Wprowadziliśmy interfejs RenderEffect API, który można opcjonalnie skonfigurować w
Modifier.graphicsLayer, aby zmieniać zawartość samej warstwy. Można go używać do rozmywania treści elementu kompozycyjnego i elementów kompozycyjnych podrzędnych w hierarchii kompozycji. (I47c4d, b/166927547) - Interfejs AwaitPointerEventScope ma teraz funkcje withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
- Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (Ie861c)
- Dodano obsługę TileMode.Decal, która jest przydatna do definiowania zachowania krawędzi w przypadku efektów renderowania opartych na rozmyciu. (I7e8ed, b/166927547)
performScrollToIndex,performScrollToKey,hasScrollToIndexActionihasScrollToKeyActionto teraz stabilne interfejsy API (I142ae, b/178483889).- Dodano metodę testową, aby uzyskać przycięte granice. (I6b28e)
Poprawki błędów
- Usunięto metodę isBounded z klasy BlurredEdgeTreatment i zastąpiono ją jawnym sprawdzaniem, czy parametr kształtu ma wartość null. (I85d68)
Wersja 1.1.0-alpha02
18 sierpnia 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Interfejs PointerEvent obsługuje teraz odczytywanie stanu przycisku myszy i stanu modyfikatora klawiatury. (I6310c, b/180075467)
- Wstrzykiwane gesty używają teraz czasu MainTestClock jako źródła informacji o czasie. Bieżący czas wstrzykiwanych zdarzeń w
performGesturezostanie zainicjowany bieżącym czasem obiektu MainTestClock. (Ifb364, b/192064452) - Dodano konstruktor
DpRect(DpOffset, DpSize)(I2cf16, b/194219828) - Dodano klasę DpSize (I7abb1, b/194219828)
Poprawki błędów
- Zaktualizowano analizowanie plików XML grafiki wektorowej, aby obsługiwać listy stanów kolorów jako właściwości odcienia koloru głównego w przypadku obiektów rysowalnych wektorowo. (I86915, b/195668138)
Wersja 1.1.0-alpha01
4 sierpnia 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
RelocationRequester.bringIntoViewakceptuje teraz prostokąt jako parametr, co umożliwia wyświetlanie części komponentu (Ice2c5, b/194330245).AnimatedImageVectori powiązane interfejsy API znajdują się teraz w nowym moduleandroidx.compose.animation:animation-graphics. (I60873)- Dodano eksperymentalny modyfikator do obsługi próśb o przeniesienie. (I65a97, b/178211874)
Wprowadziliśmy interfejs BrushPainter API, który umożliwia rysowanie dowolnego pędzla w obiekcie Painter, podobnie jak w przypadku interfejsu ColorPainter.
Zaktualizowano interfejs Brush API, aby zawierał parametr rozmiaru wewnętrznego, który jest sprawdzany w klasie BrushPainter (Ia2752, b/189466433).
Zaktualizowana metoda DrawScope#drawImage, która pobiera źródłowe i docelowe prostokąty, aby pobierać opcjonalny parametr FilterQuality. Jest to przydatne w przypadku grafiki pikselowej, która ma być pikselowana po powiększeniu. Zaktualizowano funkcję BitmapPainter i funkcję kompozycyjną Image, aby korzystały też z opcjonalnego parametru FilterQuality (Ie4fb0, b/180311607)
Dodano metodę
GestureScope.advanceEventTime, która zapewnia większą kontrolę nad czasem trwania zdarzeń w geście (Ibf3e2).
Poprawki błędów
- Aby lepiej obsługiwać łączenie modyfikatorów rysowania, upewnij się, że implementacja Modifier.paint wywołuje drawsContent.
Wcześniej funkcja Modifier.paint miała być węzłem liścia w łańcuchu modyfikatorów, ale uniemożliwiało to jej skonfigurowanie w komponowalnym kontenerze (np. w ramce) lub dodanie do niej dodatkowych dekoracji, takich jak
Modifier.paint().border(). Wywołując funkcję Modifier.paint drawContent po narysowaniu zawartości danego obiektu painter, uzyskujemy większą spójność zachowania z wzorcem modyfikatora. (Ibb2a7, b/178201337, b/186213275) - Okna dialogowe są teraz dostosowywane do rozmiaru platformy. Aby zastąpić to działanie, ustaw wartość
usePlatformDefaultWidthna „false”. (Iffaed, b/192682388) - Przeniesiono
InfiniteAnimationPolicydo :compose:ui (I5eb09, b/160602714) - Przewijanie za pomocą działań semantycznych w przypadku list leniwych i zwykłych komponentów przewijania jest teraz animowane (Id9066, b/190742024).
Wersja 1.0
Wersja 1.0.5
3 listopada 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.5 Wersja 1.0.5 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z awarią śledzenia instancji derivedStateOf. (aosp/1792247)
Wersja 1.0.4
13 października 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.4 Wersja 1.0.4 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależał od wersji
1.5.31języka Kotlin
Wersja 1.0.3
29 września 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.3 Wersja 1.0.3 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależał od wersji
1.5.30języka Kotlin
Wersja 1.0.2
1 września 2021 roku
Publikacja androidx.compose.ui:ui-*:1.0.2 Wersja 1.0.2 zawiera te zatwierdzenia.
Zaktualizowano, aby obsługiwać wersję Compose 1.0.2. Compose 1.0.2 jest nadal zgodny z Kotlinem 1.5.21.
Wersja 1.0.1
4 sierpnia 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.1 Wersja 1.0.1 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano zależność od Kotlina
1.5.21.
Wersja 1.0.0
28 lipca 2021 roku
Publikacja androidx.compose.ui:ui-*:1.0.0 Wersja 1.0.0 zawiera te zatwierdzenia.
Główne funkcje wersji 1.0.0
To pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu o wersjach Compose.
Znane problemy
Jeśli używasz Androida Studio Bumblebee Canary 4 lub wtyczki Androida do obsługi Gradle w wersji
7.1.0-alpha04/7.1.0-alpha05, może wystąpić ten błąd:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"Aby rozwiązać ten problem, tymczasowo zwiększ wartość parametru minSdkVersion do 24 lub wyższej w pliku
build.gradle. Ten problem zostanie rozwiązany w kolejnej wersji Androida Studio Bumblebee i wtyczki Androida do obsługi Gradle7.1. (b/194289155)
Wersja 1.0.0-rc02
14 lipca 2021 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-rc02 Wersja 1.0.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Okna dialogowe są teraz dopasowywane do rozmiaru platformy. Aby zastąpić to działanie, ustaw wartość
usePlatformDefaultWidthna „false”. (Iffaed, b/192682388)
Wersja 1.0.0-rc01
1 lipca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-rc01 Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Podziel moduł ui-tooling na
ui-toolingiui-tooling-preview(Iefa28, b/190649014)
Zmiany w interfejsie API
- Usunięto eksperymentalne interfejsy
FocusManager#moveFocusIniFocusManager#moveFocusOut, które zostały wycofane (I227d7, b/170154986, b/186567354, b/168510304) - Canvas obsługuje teraz parametr contentDescription na potrzeby ułatwień dostępu. (Ib547c)
- Nazwa
useDefaultMaxWidthwPopupPropertieszostała zmieniona nausePlatformDefaultWidth. (I05710) - Okna mogą teraz zajmować całą szerokość ekranu. (I83929, b/190810877)
- Dodano eksperymentalną obsługę reprezentacji kolorów HSV i HSL. (Id7cf8, b/180731008)
Zmiany w zachowaniu
- Compose
@Previewudostępnia terazLocalActivityResultRegistryOwner, który umożliwia wyświetlanie podglądu funkcji kompozycyjnych korzystających z interfejsów API, takich jakrememberLauncherForActivityResult(), które zależą od istnienia tego właściciela. (Ib13d1, b/185693006) - Compose
@Previewudostępnia terazLocalOnBackPressedDispatcherOwner, który umożliwia wyświetlanie podglądu funkcji kompozycyjnych korzystających z interfejsów API, takich jakBackHandler, które wymagają istnienia tego właściciela. (Ia1c05, b/185693006)
Poprawki błędów
- Przeniesiono
InfiniteAnimationPolicydoandroidx.compose.ui:ui(I5eb09, b/160602714) - Klasa AnimatedImageVector została tymczasowo usunięta w celu zmiany struktury modułu. (I41906, b/160602714)
Wersja 1.0.0-beta09
16 czerwca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta09 Wersja 1.0.0-beta09 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmiana typów wyliczeniowych Role i LiveRegionMode na klasy wbudowane z prywatnym konstruktorem (Id1890)
- KeyboardCapitalization jest przekształcane w klasę wbudowaną. (Id5a1c)
- Zmiana HapticFeedbackType na klasę wbudowaną. (I255ec)
- Modifier.pointerInteropFilter ma adnotację @ExperimentalComposeUiApi. (Iede6c)
- Klasy TextAlign, FontSynthesis i TextDirection są teraz klasami wbudowanymi. (I212fe)
- TextOverflow jest zmieniany na klasę wbudowaną. (I433af)
- FontStyle jest teraz klasą wbudowaną. (I9e48b)
Poprawki błędów
- Kluczowe stałe to obecnie @ExperimentalComposeUiApi. Kod korzystający z interfejsu API może deklarować stałe prywatne przed stabilizacją. (Ia5d48)
- Testy Compose można teraz przeprowadzać w Robolectric. Do tej pory zidentyfikowano te ograniczenia:
- Nie ma natywnej mapy bitowej, więc
ImageBitmap()powoduje wyjątek NullPointerException. - Nie ma rysowania, więc
captureToImage()będzie w nieskończoność czekać na następną turę rysowania (czyli nastąpi zakleszczenie). - Nie ma załadowanej czcionki, więc każdy tekst będzie mierzony nieprawidłowo. Wszystkie znaki mają stałą wysokość około 20 pikseli i szerokość 1 piksela.
ComposeTestRule.waitUntil {}nie uruchamia wątku głównego podczas oczekiwania, co sprawia, że jest on w zasadzie taki sam jakComposeTestRule.mainClock.advanceTimeUntil {}W przyszłości mogą zostać zidentyfikowane kolejne ograniczenia. (I284fa)
- Nie ma natywnej mapy bitowej, więc
Dodane reguły profilu
W tej wersji dodaliśmy reguły profilu do tych modułów kompozycji (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Czym są reguły profilu?
Reguły profilu dla biblioteki są określone w pliku tekstowym
baseline-prof.txtznajdującym się w katalogusrc/mainlub w odpowiednim katalogu. Plik zawiera regułę w każdym wierszu. Reguła jest w tym przypadku wzorcem dopasowywanym do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART czytelnego dla człowieka, który jest używany podczas korzystania zadb shell profman --dump-classes-and-methods .... Reguły te przyjmują jedną z 2 form, aby kierować reklamy na metody lub klasy.Reguła metody będzie mieć ten wzorzec:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>Reguła klasy będzie miała następujący wzorzec:
<CLASS_DESCRIPTOR>W tym przypadku
<FLAGS>to co najmniej jeden z tych znaków:H,SiP. Wskazuje on, czy ta metoda powinna być oznaczona jako „Hot”, „Startup” lub „Post Startup”.Symbol
<CLASS_DESCRIPTOR>to deskryptor klasy, do której należy kierowana metoda. Na przykład klasaandroidx.compose.runtime.SlotTablebędzie miała deskryptorLandroidx/compose/runtime/SlotTable;.<METHOD_SIGNATURE>to sygnatura metody, która zawiera jej nazwę, typy parametrów i typy zwracanych wartości. Na przykład metodafun isPlaced(): BooleanwLayoutNodema sygnaturęisPlaced()Z.Wzorce mogą zawierać symbole wieloznaczne (
**,*i?), dzięki czemu jedna reguła może obejmować wiele metod lub klas.
Do czego służą reguły?
Metoda oznaczona flagą
Hjest „gorącą” metodą i powinna być skompilowana z wyprzedzeniem.Metoda oznaczona flagą
Sjest wywoływana podczas uruchamiania i powinna być skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretacji w momencie uruchamiania.Metoda oznaczona flagą
Pjest wywoływana po uruchomieniu.Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona w stercie, aby uniknąć kosztów ładowania klasy.
Jak to działa?
- Biblioteki mogą definiować te reguły, które będą pakowane w artefakty AAR. Gdy aplikacja zawierająca te artefakty zostanie skompilowana, reguły zostaną połączone, a połączone reguły zostaną użyte do utworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie użyć tego profilu, gdy aplikacja jest instalowana na urządzeniach, aby skompilować z wyprzedzeniem określony podzbiór aplikacji i poprawić jej wydajność, zwłaszcza podczas pierwszego uruchomienia. Pamiętaj, że nie będzie to miało wpływu na aplikacje, które można debugować.
Wersja 1.0.0-beta08
2 czerwca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta08 Wersja 1.0.0-beta08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
NestedScrollSourceenum jest zastępowany przez klasę wbudowaną. (Ie321b, b/187055290)- Nazwa
FocusManager.clearFocus(forcedClear = true)została zmieniona naFocusManager.clearFocus(force = true)(Ia0c41) - Zmieniliśmy sposób używania wyliczeń, aby uniknąć problemów z wyczerpującymi instrukcjami „when” po dodaniu nowych wartości wyliczenia. (I2b5eb)
- Usuń urządzenie
@ExperimentalComposeUiApiz kontaPopupProperties. (I01fa6) - Typ kolumny
PointerTypezostał zmieniony z wyliczenia na klasę wbudowaną (If5058) - Właściwości semantyczne ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je łączyć w takiej postaci, w jakiej są, zamiast je ze sobą sklejać. Udostępniliśmy też lepsze interfejsy API do testowania, które umożliwiają korzystanie z tych zmian (Ica6bf, b/184825850).
- Środowisko wykonawcze
Modifier.focusModifier()zostało wycofane i zastąpione środowiskiemModifier.focusTarget()(I6c860) - Funkcje
Modifier.onSizeChanged()iModifier.onGloballyPositioned()nie są już funkcjami wstawianymi (I727f6, b/186109675). KeyboardTypeenum jest zastępowany przez klasę wbudowaną. (I73045, b/187055290)- Zastąpiono wyliczenie
FocusStateinterfejsemFocusState(Iccc1a, b/187055290). - Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
PlaceholderVerticalAlignzostanie przekonwertowany na klasę w tekście. (If6290)- TextUnitType jest teraz klasą wbudowaną. (I4cba9)
- funkcje
AnnotatedString.withAnnotationsą teraz częścią interfejsu ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a)- Konstruktor TextUnit z TextUnitType jest teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
Poprawki błędów
- Naprawiliśmy błąd wprowadzony w wersji beta07, który powodował, że elementy LazyColumn/Row były wyświetlane częściowo po przewinięciu (I8c9ac, b/188566058).
- Teraz
detectDragGesures,detectVerticalGesturesidetectHorizontalGesturesbędą automatycznie wykorzystywać zmianę pozycji, więc nie trzeba wywoływać funkcji change.consumePositionChange w wywołaniach zwrotnych onDrag (I42fc4, b/185096350, b/187320697). - Poprawiono LayoutModifiers, które udostępniały linie wyrównania. Naprawiono błąd powodujący, że element nadrzędny nie był ponownie mierzony, gdy zmieniały się linie wyrównania elementów podrzędnych. (I4401f, b/174315652)
Modifier.onGloballyPositioned()zmieniono tak, aby raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że kolejność modyfikatorów wpływa teraz na raportowane współrzędne. (Ieb67d, b/177926591)
Wersja 1.0.0-beta07
18 maja 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta07 Wersja 1.0.0-beta07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano interfejs
ViewRootForInspectordo użycia w inspektorze (Ib70df) SubcomposeLayoutStateobsługuje teraz ustawianie liczby gniazd wielokrotnego użytku. Układ będzie utrzymywać aktywność maksymalnie tylu miejsc, zamiast je usuwać, aby można było ich użyć ponownie, gdy będziemy potrzebować nowego miejsca (Ieb981).- Wyliczenie KeyEventType zostało zastąpione klasą wbudowaną. (Id670a, b/187055290)
FocusDirectionenum jest zastępowany przez klasę wbudowaną. (Ib6d03, b/187055290, b/184086802)- Wprowadza możliwość przeniesienia stanu SubcomposeLayout, co pozwala wstępnie komponować treści w wymaganym slocie slotId, co przyspiesza następny pomiar, ponieważ gdy następnym razem spróbujemy skomponować podrzędnie z danym slotId, nie będzie już potrzebna kompozycja. (I42580, b/184940225)
- Dodano uchwyt wyboru klipu (Iff80d, b/183408447)
- Usunięto nieużywane interfejsy API związane z obsługą narzędzia LayoutInspector. (I2ac78)
Poprawki błędów
- Kompozycja LazyColumn/Row będzie teraz utrzymywać aktywność (nie będzie usuwać) maksymalnie 2 wcześniej widocznych elementów, nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie wykorzystywać aktywne podkompozycje, gdy będziemy musieli utworzyć nowy element, co poprawia wydajność przewijania. (Ie5555)
TextGeomerticTransformiTextDecorationwAnnotatedStringzostaną zastosowane zgodnie z podanymi wartościami. (I61900, b/184760917)
Wersja 1.0.0-beta06
5 maja 2021 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-beta06 Wersja 1.0.0-beta06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozwiązywanie konfliktów z gestem nawigacji (I1145e)
@ComposeCompilerApinie 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
SemanticsActions.ScrollToIndexdo przewijania listy z elementami indeksowanymi do elementu o określonym indeksie orazSemanticsProperties.IndexForKeydo uzyskiwania indeksu elementu na liście z elementami kluczowymi. Obie te czynności są wykonywane przez element LazyList.- Dodano funkcję
SemanticsNodeInteraction.performScrollToIndex, która przewija listę do podanego indeksu, oraz funkcjęSemanticsNodeInteraction.performScrollToKey, która przewija listę do elementu o podanym kluczu. (I4fe63, b/178483889, b/161584524)
- Dodano funkcję
- Dodano element ownerViewId do elementu GraphicLayerInfo (I19f62)
- Dodano przeciążenia Font(), aby wczytywać czcionki z zasobów, plików i deskryptorów plików (I5d382).
- Dodano interfejs API ułatwień dostępu
error, który umożliwia oznaczanie węzła zawierającego nieprawidłowe dane wejściowe (I12997, b/180584804, b/182142737). - Dodano
Font()przeciążeń do wczytywania czcionek z zasobów, plików i deskryptorów plików (I43007). - Dodaliśmy obsługę zapisywania obiektu AnnotatedString w
TextFieldValue.Saver. Dodano funkcje narzędzioweaddTtsAnnotationi withAnnotation doAnnotatedString.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.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta05 Wersja 1.0.0-beta05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano eksperymentalne interfejsy
FocusManager.moveFocus(In)iFocusManager.moveFocus(Out)(Ic5534, b/183746743) - Dodano eksperymentalny interfejs
performTextInputSelectionAPI (I2dcbb, b/178510628) - Interfejs
InputEventCallbackzostał wycofany. Nie można było używać interfejsu w żadnym publicznym interfejsie API ani w kodzie. (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 działań, które można by wykorzystać w przypadku interfejsów API do tworzenia tekstu. Ta funkcja została wycofana i zostanie później usunięta. (I80413)
Poprawki błędów
- Naprawiono działania przewijania związane z ułatwieniami dostępu w przypadku elementów
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRightiaccessibilityActionScrollDown. Zamiast przewijać do końca przewijanego elementu, będzie teraz przewijać 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.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta04 Wersja 1.0.0-beta04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmień nazwy
hideSoftwareKeyboardishowSoftwareKeyboardwSoftwareKeyboardControllernahide()ishow().- Udostępnia pełny interfejs CompositionLocal dla LocalSoftwareKeyboardController, co umożliwia jego ustawienie (szczególnie przydatne w testach) (I579a6).
- Dodano interfejs LiveRegion Accessibility API. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadomią użytkownika o jego zmianach (Idcf6f, b/172590946).
- Wprowadzono TextOverflow.Visible. (Ic8f89)
Poprawki błędów
- Rozwiązaliśmy problem z nieprawidłowym pozycjonowaniem elementów
LazyColumn/LazyRowznajdujących się na krawędziach po szybkim przesunięciu (Ie4d13, b/183877420). AndroidViewBindingteraz prawidłowo usuwa fragmenty rozszerzone za pomocąFragmentContainerView, gdyAndroidViewBindingjest usuwany z hierarchii kompozycji. (Ib0248, b/179915946)AndroidViewBindingprawidłowo zagnieżdża fragmenty rozszerzone za pomocąFragmentContainerView, gdyComposeViewznajduje się wFragment, co rozwiązuje problemy z zapisywaniem i przywracaniem stanu tych fragmentów. (I70eb0, b/179915946)- Komponent Compose ViewBinding zależy teraz od Fragment
1.3.2i po zmianach konfiguracji konsekwentnie wyświetla fragmenty rozszerzone za pomocąFragmentContainerView. (I0743d, b/179915946)
Wersja 1.0.0-beta03
24 marca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta03 Wersja 1.0.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Odroczone sprawdzanie zależności ViewTree w przypadku ComposeView (I8dbbf, b/182466548)
- Dodaliśmy opcjonalne parametry
startX/endXistartY/endYdo funkcjiswipeUp/swipeDown/swipeLeft/swipeRightwGestureScope. (I49e2d, b/182063305)
Wersja 1.0.0-beta02
10 marca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano nowy interfejs API
LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I5951e, b/168778053) - Dodano nowy interfejs API
LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I84472, b/168778053) - Usunięto te elementy:
SemanticsMatcherhasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(If16bd)
- Oznaczono te elementy
SemanticsMatchersjako @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
- Wymuszanie ograniczeń dotyczących publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
androidx.compose.ui:uinie zależy już od bibliotek AppCompat ani Fragment. Jeśli w aplikacji używasz ComposeView oraz Fragment lub AppCompat, upewnij się, że używasz AppCompat w wersji 1.3 lub nowszej albo Fragment w wersji 1.3 lub nowszej. Te wersje są potrzebne do prawidłowego ustawienia właścicieli cyklu życia i zapisanego stanu wymaganych przez ComposeView. (I1d6fa, b/161814404)- Poprawka dotycząca uszkodzonego elementu
rememberSaveable { mutableStateOf(0) }, gdy jest używany w miejscu docelowym w bibliotece Navigation Compose. (I1312b, b/180042685, b/180701630) - Dodano nowy interfejs API
LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I658b6, b/168778053) - Rozwiązano rzadki problem NoSuchElementException w
ComposeRootRegistrytearDownRegistry()(Iddce1)
Wersja 1.0.0-beta01
24 lutego 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zatwierdzenia.
To pierwsza wersja Compose 1.0.0 w wersji beta.
Zmiany w interfejsie API
- Dodano wywołanie zwrotne onStart do
detectDragGestures(I67269, b/179995594) - Modyfikatory rozmiaru do wartości wewnętrznych nie są już eksperymentalne. (I15744)
- Usługa MeasureBlocks została przekształcona w MeasurePolicy, która stała się zabawnym interfejsem. Interfejsy API układu zostały zaktualizowane i uproszczone, aby korzystać z funkcji MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionStatezostało zastąpione przez[Mutable]InteractionSource- Interfejsy odpowiadają za wysyłanie i zbieranie zdarzeń interakcji.
- Zamiast przekazywać
interactionState = remember { InteractionState() }do komponentów takich jakButtoniModifier.clickable(), używajinteractionSource = remember { MutableInteractionSource() }. - Zamiast:
Interaction.Pressed in interactionStateużyj funkcji rozszerzających w obiekcie InteractionSource, np. InteractionSource.collectIsPressedAsState(). - W przypadku złożonych przypadków użycia możesz użyć InteractionSource.interactions, aby obserwować strumień interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Dodanie interfejsu AccessibilityMananger i LocalAccessibilityMananger do CompositionLocals (I53520)
- Usunięto przestarzałe metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent używaj funkcji (I580ed, b/169874631, b/175142755)
- Alias typu zastąpiony typami bazowymi:
ColorStopto terazPair<Float, Color>SpanStyleRangeto teraz `AnnotatedString.RangeParagraphStyleRangeto terazAnnotatedString.Range<ParagraphStyle>StringAnnotationto terazAnnotatedString.Range<String>- (I8dd1a)
- Utworzono nową klasę TextInputSession dla sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, takich jak CoreTextField. (I8817f, b/177662148)
- Interfejs Placeable udostępnia teraz właściwość measuredSize, która reprezentuje rozmiar, do którego został faktycznie zmierzony układ podrzędny. Ten rozmiar może nie spełniać ograniczeń pomiarowych. (Ib2729, b/172560206, b/172338608)
- Dodanie modyfikatora selectionGroup, który umożliwia oznaczanie kolekcji kart lub przycisków opcji na potrzeby ułatwień dostępu (Ie5c29)
defaultFactoryw przypadkucompositionLocalOfistaticCompositionLocalOfjest teraz wymagany zamiast opcjonalnego.Ta zmiana usuwa potencjalny błąd typu w przypadku typów, które nie mogą mieć wartości null, a dla których nie podano domyślnej funkcji fabrycznej. Wcześniej w przypadku typu, który nie dopuszcza wartości null, zwracana była wartość null.
W przypadku typów dopuszczających wartość null rozważ podanie wartości
{ null }jako domyślnej funkcji fabrycznej.Nie zalecamy używania ustawień regionalnych z typami, które nie dopuszczają wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie ma sensownej wartości domyślnej, funkcja lambda
defaultFactorypowinna zgłosić wyjątek. Jednak zgłoszenie wyjątku oznacza, że konsumenci lokalnego będą mieli niejawną zależność od jego dostarczenia, która nie jest wymuszana przez system typów. (Ifbd2a)Usunięto wycofane metody z modułów interfejsu (I646f6)
Zmieniono nazwy modyfikatorów rozmiaru. Modyfikatory Modifier.width/height/size zostały zmienione na requiredWidth/requiredHeight/requiredSize. Zmienne Modifier.preferredWidth/preferredHeight/preferredSize zostały zmienione na width/height/size. (I5b414)
Usunięto
Modifier.tapGestureFilter. Użyj w zamian zasadyModifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)częściowe wykorzystanie zostało usunięte z systemu wprowadzania za pomocą wskaźnika. Zalecanym sposobem koordynowania częściowego zużycia jest Modifier.nestedScroll. (Ie9c9b)
Orientacja została przeniesiona do pakietu podstawowego. VelocirtTracker został przeniesiony z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)
imageResource i vectorResource są teraz funkcjami rozszerzającymi odpowiednio elementy ImageBitmap i ImageVector. Usunięto
load{Image,Vector,Font}Resourcefunkcji. (I89130)Klasy AnimationClockObservable i ich podklasy zostały usunięte. Usunięto AnimatedFloat. (Icde52, b/177457083)
Element Providers został zmieniony na CompositionLocalProvider
- Konstruktor Composition nie akceptuje już parametru key i został wycofany.
- currentCompositeKeyHash został przekształcony w funkcję najwyższego poziomu typu „composable” zamiast w funkcję najwyższego poziomu typu „composable”.
- Klasy CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- ComposableLambda jest teraz interfejsem, a nie klasą konkretną, i nie ma już parametrów typu.
- ComposableLambdaN stał się interfejsem zamiast klasy konkretnej i nie ma już parametrów typu.
- Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
- metoda scalania SnapshotMutationPolicy nie jest już eksperymentalna;
- Usunięto funkcję clearRoots najwyższego poziomu @TestOnly. 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.
- Usunęliśmy metody isJoinedKey, joinedKeyLeft i joinedKeyRight. Nie są już potrzebne.
- Różne interfejsy API najwyższego poziomu zostały przeniesione i zreorganizowane w różnych plikach. Ze względu na semantykę klasy plików w języku Kotlin spowoduje to 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)
Usunięto
ComponentActivity.setContent()z biblioteki compose:ui. Użyj tego zandroidx.activity:activity-compose:1.3.0-alpha01. FunkcjeviewModel()iLocalViewModelStoreOwnerzostały usunięte z biblioteki compose:ui. Użyj tych zandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01(I6f36b).Zmodyfikowano element Modifier.scrollable. Teraz używa interfejsu Scrollable zamiast klasy ScrollableController (I4f5a5, b/174485541, b/175294473).
Usunięto obsługę CustomEvents z PointerInputModifier (I02707, b/175294473)
SnapshotStateObserver nie jest już eksperymentalny (Id2e6a)
Usunięto niektóre wcześniej wycofane interfejsy API (Ice5da, b/178633932)
Usunięto funkcje longPressGestureFilter i doubleClickGestureFilter. Używaj Modifier.pointerInput z funkcjami pomocniczymi, np. detectTapGestures (I2fedf, b/175294473).
Usunięto interfejs API String.format. Zmieniono sposób użycia w różnych metodach toString, aby wewnętrznie nie korzystać z String.format. (Id1290)
Usunięto potwierdzenia dp (I798d2)
Usunięto androidx.compose.runtime:runtime-dispatch (I55feb)
Działania związane z tekstem automatycznie sprawdzają teraz fokus (I13777, b/179648629)
Usunięto
runBlockingWithManualClock(I15cdc, b/179664814)Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana przez liczby całkowite (I81298).
Klasa FlingConfig została zmieniona na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych zanikań. (I02b86, b/175294473)
Dodano funkcję pomocniczą, która ułatwia ustawianie tego samego działania dla wszystkich wywołań zwrotnych ImeAction (I63447, b/179226323).
Usunięto wywołanie zwrotne SoftwareKeyboardController ze wszystkich pól tekstowych, które wkrótce zostaną zastąpione nowym interfejsem API. (Iae869, b/168778053)
Klasy FontSpan i FontWeigthStyleSpan nie są już używane i zostały usunięte. (Ie5b56, b/177423444)
Wprowadziliśmy te zmiany w interfejsie Material API:
- Dodano parametr contentPadding do komponentów TopAppBar i BottomAppBar, aby umożliwić dostosowywanie domyślnego dopełnienia.
- Zmieniono kolejność parametrów w komponencie BackdropScaffold, aby była zgodna z wytycznymi interfejsu API, zgodnie z którymi parametry wymagane powinny występować przed parametrami opcjonalnymi.
- Parametr
iconw elemencie BottomNavigationItem został przeniesiony za parametryselectedionClick. - Zmieniono nazwę parametru
alwaysShowLabelsw elemencie BottomNavigationItem naalwaysShowLabel. - Zmieniliśmy nazwy parametrów
bodyContentw kilku komponentach nacontent. - Zmieniono kolejność parametrów w
ButtonDefaults.buttonColors(). Pamiętaj, że ponieważ typ parametrów nie uległ zmianie, nie spowoduje to błędu w kodzie. Upewnij się, że używasz parametrów nazwanych lub ręcznie aktualizujesz kolejność, w przeciwnym razie kod nie będzie działać tak jak wcześniej. - Dodano parametr
secondaryVariantdodarkColors(). Ten kolor jest zwykle taki sam jaksecondaryw ciemnym motywie, ale dodajemy go, aby zapewnić spójność i umożliwić dalsze dostosowywanie. - Usunięto ElevationDefaults i animateElevation() z publicznego interfejsu API, ponieważ nie były one powszechnie używane ani przydatne.
- Zmieniono nazwę
onValueChangeEndwSlidernaonValueChangeFinishedi ustawiono wartość null. - Zmieniono nazwę parametru
textwSnackbarnacontent, aby zachować spójność. - Dodano parametr
contentPaddingdoDropdownMenuItem, aby umożliwić dostosowywanie domyślnego dopełnienia, acontentstał się rozszerzeniemRowScope. - Zmieniono nazwę
ModalDrawerLayoutnaModalDrawer. - Zmieniono nazwę
BottomDrawerLayoutnaBottomDrawer. - (I1cc66)
Poprawki błędów
- Dodano interfejs API do używania zasobów AnimatedVectorDrawable w Compose. Użyj
animatedVectorResource, aby wczytać plik
<animated-vector>XML jako AnimatedImageVector i animować go za pomocą painterFor (I8ea91). - Dodano nowy lokalny interfejs API LocalSoftwareKeyboardController do zastąpienia poprzedniego interfejsu SoftwareKeyboardController w polu TextField. (I658b6, b/168778053)
Wersja 1.0.0-alpha12
10 lutego 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięto obsługę ViewGroups z UiApplier. Usunęliśmy wycofane funkcje emitView. (Ifb214)
- Funkcja Modifier.pointerInput wymaga teraz kluczy pamięci, aby wskazywać, kiedy współprogram wykrywania danych wejściowych wskaźnika powinien zostać ponownie uruchomiony w przypadku nowych zależności. (I849cd)
- Zmiana nazwy CompositionReference na CompositionContext (I53fcb)
- Bounds został zmieniony na DpRect (I4b32a)
- Aktualizacja testowania: funkcja hasText() będzie sprawdzać zarówno tekst wprowadzony, jak i tekst etykiety, podpowiedzi lub symbolu zastępczego w polu tekstowym (Iab803)
- Funkcja kompozycyjna viewModel() i LocalViewModelStoreOwner zostały przeniesione do androidx.lifecycle.viewmodel.compose. Aby z niej korzystać, musisz teraz dodać osobną zależność androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
- Zezwól na działanie z wartością null w AccessibilityAction, zmień etykietę działania w AccessibilityAction i CustomAccessibilityAction z CharSequence na String (I0dc82)
- Aby lepiej dopasować konwencje nazewnictwa do ImageBitmap i ImageVector, zmieniliśmy nazwę ImagePainter na BitmapPainter, aby była podobna do VectorPainter. (Iba381, b/174565889)
- Ulepszone interfejsy API testowania podciągów z podciągiem jako argumentem (Icbe78)
- Dodano
Modifier.focusOrder(), który akceptuje FocusRequester bez określania niestandardowej kolejności fokusu ani funkcji lambda. Jest to przydatne, gdy musimy tylko określić odniesienie, ale nie niestandardową kolejność fokusu dla komponentu (I4f52a, b/179180978). - Metoda ComponentActivity.setContent została przeniesiona do pakietu androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
- Metody destrukcji i copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
- Przeniesiono wyskakujące okienko, aby było specyficzne dla platformy. Nazwa AndroidPopupProperties została zmieniona na PopupProperties, a
isFocusablezostało przeniesione do parametrufocusablewPopupProperties(Ieeea5). - Przeniesiono okno dialogowe, aby było specyficzne dla platformy. Zmiana nazwy AndroidDialogProperties na DialogProperties. (I4ef69, b/179138130)
- Udostępniono wewnętrznie klasę LayoutNode (I8a7b1, b/175103944)
- Funkcja Constraints.enforce została zastąpiona funkcją Constraints.constrain. (I8b8ea)
- Metoda loadFontResource została wycofana. Zamiast nich używaj fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj painterResource. (I6b809)
- Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambdy zwracające wartości zmiennoprzecinkowe zamiast bezpośrednich wartości zmiennoprzecinkowych. (If4a35, b/178657186)
- Dodano semantykę EditableText, aby oznaczyć edytowalny tekst wejściowy pola tekstowego na potrzeby ułatwień dostępu, oraz odpowiednie metody testowania, aby sprawdzić semantykę (I8e07a).
- Ustawienie wewnętrznych elementów OwnerLayer/OwnerScope/OwnerSnapshotObserver (I4ffaf, b/175103944)
- Funkcja toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)
- Zmieniliśmy nazwę IntBounds na IntRect i ulepszyliśmy interfejs API. (I1f6ff)
- Interfejs Snapshot API został zaktualizowany, aby był bardziej zgodny z wytycznymi dotyczącymi interfejsów API, a także aby ukryć klasy implementacji wewnętrznej przed publicznym interfejsem API. (Id9e32)
- Dodano działania semantyczne rozwijania i zwijania. Dodano funkcje expand i halfExpand w ModalBottomSheetState (Ib5064)
- Funkcja Modifier.dragGestureFilter została wycofana. Użyj w zamian zasady
Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć Modifier.draggable do przeciągania w jednej osi (I0ba93, b/175294473). - Zmieniono nazwy elementów Ambients, aby pasowały do zmiany nazwy Ambient -> CompositionLocal. Obiekty AmbientFoo nazywają się teraz CompositionLocals, a obiekty LocalFoo – LocalFoo. (I2d55d)
- Wycofane pole BaseTextField zostało usunięte. Zamiast tego użyj BasicTextField. (I71368)
- Zaznaczenie zostało przeniesione do fundamentu. (I7892b)
- Podobnie jak wcześniej usunęliśmy funkcję
state { 0 }i teraz promujemy używanie funkcjiremember { mutableStateOf(0) }, usuniemy funkcjęsavedInstanceState { 0 }. Zamiast tego używajrememberSaveable { mutableStateOf(0) }, które automatycznie zapisuje i przywraca stan, jeśli typ użyty w MutableState można zapisać w obiekcie Bundle. Jeśli wcześniej przekazywano niestandardowy obiekt zapisujący, teraz trzeba użyć nowego przeciążenia funkcji rememberSaveable, które ma parametrstateSaver. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004) - Dodano semantykę haseł na potrzeby ułatwień dostępu (I231ce)
- Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczać 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ż pozytywnego wpływu na skuteczność ani wartość (I0484d). snapshotFlowiwithMutableSnapshotnie są już eksperymentalne (I6a45f)- Recomposery można teraz zamknąć. Zamknięte kompozytory będą kontynuować kompozycję, dopóki nie zostaną ukończone podrzędne korutyny kompozycji. Funkcja Recomposer.shutDown została zmieniona na cancel, aby odróżnić ją od funkcji close. (Ib6d76)
- Nazwa UiSavedStateRegistry została zmieniona na SaveableStateRegistry, a AmbientUiSavedStateRegistry na AmbientSaveableStateRegistry. Oba interfejsy zostały przeniesione do pakietu androidx.compose.runtime.saveable. (I30224)
- Artefakt androidx:compose:runtime:runtime-saved-instance-state został zmieniony na androidx:compose:runtime:runtime-saveable (I6dcac)
- Wiele wycofanych interfejsów API z pakietu ui zostało usuniętych. (I2f2dc)
- Artefakt compose:runtime-dispatch został wycofany. Klasa MonotonicFrameClock znajduje się teraz w pakiecie compose:runtime, a klasa AndroidUiDispatcher – w pakiecie compose:ui. (Ib5c36)
- Klasy Outline.* nie są już klasami danych (I4879e, b/178001427).
- Usunięto
view.captureToImage()bez zastąpienia. (I7fcd2) - Wprowadzono interfejs ColorMatrix API, który służy do modyfikowania wartości RGB treści źródłowych. Zrefaktoryzowano interfejs ColorFilter API, aby był interfejsem i pasował do implementacji PathEffect. (Ica1e8)
- Dodaj parametr layoutDirection do funkcji createOutline w klasie Shape. Umożliwia to tworzenie kształtów uwzględniających kierunek układu. (I57c20, b/152756983)
- Metoda onImeActionPerformed jest wycofana. Zamiast niej używaj KeyboardActions (If0bbd, b/179071523)
- Wprowadzono element
InfiniteAnimationPolicykontekstu współprogramu , który będzie stosowany w animacjach nieskończonych. Domyślnie nie jest instalowana żadna zasada, z wyjątkiem testów przeprowadzanych w ramachComposeTestRule. (I50ec4, b/151940543) - Właściwość canDrag została usunięta z modyfikatora scrollable. (Id66e7, b/175294473)
- Zmieniono nazwę LayoutCoordinates.parentCoordinates na LayoutCoordinates.parentLayoutCoordinates, aby umożliwić dodanie nowej właściwości parentCoordinates. Właściwość parentCoordinates zawiera teraz LayoutCoordintes modyfikatora elementu nadrzędnego. Umożliwi to pełniejsze wykorzystanie funkcji onSizeChanged() i onGloballyPositioned() (Idfbfd, b/177926591).
- Funkcje tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj funkcji Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)
- Usunięto metodę unregisterProvider z klasy SaveableStateRegistry. Zamiast tego funkcja registerProvider() zwraca teraz obiekt SaveableStateRegistry.Entry, którego można użyć do wyrejestrowania (Ic4274, b/178583739).
- Funkcja rememberSavedInstanceState() została zmieniona na rememberSaveable() i przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)
- Usunięto CoreText i CoreTextField z publicznego interfejsu API.
- Usunięto nieużywane przeciążenie SelectionContainer
- (I99c19)
- Testy, w których interfejs Compose jest używany w hierarchiach dodawanych lub usuwanych bezpośrednio z WindowManager, są teraz bardziej stabilne. (Ie81ed, b/175765614)
- Usunięto Recomposer.current(). [Abstract]ComposeView domyślnie tworzy leniwie Recomposery o zakresie okna, które są sterowane przez ViewTreeLifecycleOwner dla okna. Rekompozycja i tiki animacji oparte na withFrameNanos są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (I38e11)
- Recomposer.runningRecomposers udostępnia teraz globalny StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwowanie stanu bieżącej kompozycji w procesie. Zalecamy używanie tego interfejsu API zamiast interfejsu Recomposer.current(), który został wycofany. (If8ebe)
- Funkcje Saver, listSaver(), mapSaver() i autoSaver zostały przeniesione z pakietu androidx.compose.runtime.savedinstancestate do pakietu androidx.compose.runtime.saveable (I77fe6).
- EditCommands akceptuje AnnotatedString. Jest to jednak zmiana tylko w interfejsie API, a edycja tekstu w wielu stylach nie została jeszcze wdrożona. (I4c3ea)
- Czas działania i czas trwania zostały usunięte. (Ib9bf4, b/177420019)
- Funkcje CompositionData.asTree() i powiązane interfejsy API zostały przeniesione do osobnego modułu ui-tooling-data i oznaczone jako eksperymentalne (Ic95b8).
- Parametry w klasach RounderCornerShape, CutCornerShape i CornerBasedShape zostały zmienione z left/right na start/end, aby umożliwić automatyczne odzwierciedlanie kształtu w kierunku od prawej do lewej. Kształty AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone w przypadkach, gdy automatyczne odbicie lustrzane nie jest pożądane. (I61040, b/152756983)
Interfejs API, na którym działa wtyczka kompilatora Compose, został przekształcony tak, aby używać interfejsu zamiast konkretnej klasy. Interfejs nie używa już też parametru typu.
Jest to zmiana wewnętrzna, która nie powinna wpływać na zgodność kodu źródłowego, ale jest zmianą powodującą niezgodność binarną. (I3b922, b/169406779)
Usunięto przypadkowo publiczną funkcję StringBuilder.deleteAt (Id6ed9)
Poprawki błędów
- Elementy ComposeView umieszczone w hierarchiach widoków, które są elementami podrzędnymi innej kompozycji, zawierają teraz kompozycje podrzędne swoich elementów nadrzędnych (I92883).
- Zaktualizowaliśmy interfejs API compose's imageFromResource, aby ponownie wykorzystywać pamięć podręczną zasobów rysowalnych podczas wczytywania obiektów ImageBitmap. (If3627, b/178751994)
Wersja 1.0.0-alpha11
28 stycznia 2021 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Funkcja WithConstraints została przekształcona w BoxWithConstraints i przeniesiona do pakietu foundation.layout. (I9420b, b/173387208)
- Key.DPadUp został wycofany. Zamiast tego użyj Key.DirectionUp. (Iab335, b/177954892)
- Interfejs właściciela będzie od teraz wewnętrzny. (If8e35)
- Dodano interfejs API FocusManager.moveFocus() do programowego przenoszenia fokusu. (I045cb, b/177681839)
- Zmiana PopupPositionProvider na używanie współrzędnych względnych okna, a nie współrzędnych globalnych. Zmiana nazwy parentGlobalBounds na anchorBounds i windowGlobalBounds na windowSize: IntSize (I2994a)
- Wartości Duration i Uptime zostaną zastąpione wartościami Long milliseconds, a ten krok usuwa zależność danych wejściowych wskaźnika od tych klas. (Ia33b2, b/175142755, b/177420019)
- Klasa AmbientSavedStateRegistryOwner została dodana podobnie jak istniejące już klasy AmbientLifecycleOwner i AmbientViewModelStoreOwner (I9a3e8, b/176756365).
- Zaktualizowano interfejs Vector Graphics API, aby obsługiwał analizowanie odcieni zastosowanych do głównego elementu grafiki wektorowej. (Id9d53, b/177210509)
- Dodano toolType do PointerInputChange, aby odróżniać urządzenia (Iac787, b/175142755)
- Zmiana nazwy AmbientWindowManager na AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- Wycofaliśmy metody globalnych współrzędnych i wprowadziliśmy nowe metody współrzędnych oparte na oknach. (Iee284)
- Dodano Modifier.toolingGraphicsLayer, który dodaje modyfikator warstwy graficznej, gdy włączone jest sprawdzanie. (I315df)
- Metoda FocusRequester.createRefs jest teraz oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)
- Właściwość SemanticsPropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona adnotacją @ExperimentalComposeUiApi. Zmiana nazwy AccessibilityRangeInfo na ProgressBarRangeInfo. stateDescriptionRange na progressBarRangeInfo. Zmieniono nazwę AccessibilityScrollState na ScrollAxisRange. Zmieniono nazwę horizontalAccessibilityScrollState na horizontalScrollAxisRange. Zmieniono nazwę verticalAccessibilityScrollState na verticalScrollAxisRange. (Id3148)
- Usunięto PointerInputData i zmodyfikowano PointerInputChange, aby zawierał wszystkie pola PointerInputData. Uczyniono klasy PointerInputEvent i PointerInputEventData wewnętrznymi, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
- Zaktualizowano implementację GraphicsLayerScope density, aby obsługiwała konwersje jednostek dp na piksele. (Ied528, b/176819695)
- Zaktualizowano interfejs API macierzy, aby stosować kolejność wierszową i udostępniać stałe indeksu, które ułatwiają konwersję między różnymi reprezentacjami macierzy w celu dopasowania logiki konwersji platformy między SkMatrix a Matrix4 wewnętrznie. (I432e6)
- Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374)
- Przeniesienie funkcji String.fintPrecedingBreak i String.fingFollowingBreak do InternalTextApi. (I657c4)
- Funkcja androidx.compose.ui.util.isSurrogatePair została usunięta z publicznego interfejsu API. (Ia9494)
- Zmiana nazwy TransformedText.transformedText na TransformedText.text
- TransformedText nie jest już klasą danych (Ie672a)
- Usunięto
data classz tych zajęć:- InlineTextContent
- LocaleList (I605c7)
- Te klasy nie są już klasami danych:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- Zmiana interfejsu VisualTransformation na interfejs funkcyjny (I3bba4)
- Dodano typ parametru odwołania do funkcji (I5e1bd).
- Dodaj przekształcone granice do InspectorNode (Ice42f)
Poprawki błędów
- Funkcje onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect API (If760e).
Zmiany w funkcjach fabrycznych dla Font/FontFamily/Typeface
- Dodano funkcje fabryczne rozpoczynające się wielką literą
- Wycofanie poprzednich funkcji fabrycznych z małymi literami na początku
- Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
- Ukryto konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
- Zmiana nazwy funkcji Font.asFontFamily na Font.toFontFamily (I42aa7)
Wprowadzono
ComposeContentTestRule, która rozszerzaComposeTestRulei definiujesetContent, która została usunięta zComposeTestRule. Dodano metodę fabrycznącreateEmptyComposeRule(), która zwraca obiektComposeTestRulei nie uruchamia aktywności. Użyj tej opcji, gdy chcesz uruchomić aktywność podczas testu, np.za pomocąActivityScenario.launch(I9d782, b/174472899).Funkcja animateAsState została zmieniona na animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)
Do obrazu i ikony dodano parametr opisu treści. Służy do przekazywania opisu usługom ułatwień dostępu (I2ac4c).
Usuń displaySize, ponieważ należy go unikać. Zwykle lepiej jest używać co najmniej rozmiaru onRoot() lub rozmiaru okna. (I62db4)
Funkcja OnSizeChanged zgłaszała rozmiar zawartości układu. Teraz raportuje rozmiar na pozycji w łańcuchu modyfikatorów. (I36b78, b/177562900)
Interfejs API emit() i wszystkie jego przeciążenia zostały wycofane i zmieniono ich nazwę na ComposeNode. Interfejsy API są identyczne, tylko mają inną nazwę, aby zachować zgodność z konwencjami nazewnictwa Compose (I4137b).
TextFieldValue akceptuje AnnotatedString. Jest to jednak zmiana tylko w interfejsie API, a edycja tekstu w wielu stylach nie została jeszcze wdrożona.
- Usunięto parametr
initialz parametrów konstruktora EditingBuffer. (I326d5)
- Usunięto parametr
Funkcje invalidate i compositionReference() zostały wycofane na rzecz funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)
Klasa AnnotatedString została zmieniona tak, aby rozszerzać klasę kotlin.CharSequence. Dlatego length i subSequence są teraz funkcjami instancji, a funkcje rozszerzające zostały usunięte. (Iaf429)
RememberObserver zastępuje CompositionLifecycleObserver, który jest obecnie wycofany.
RememberObserverzastępujeCompositionLifecycleObserver, ale ma zmodyfikowaną semantykę i zmienione nazwy metod. Przejście na nowy interfejs API można przeprowadzić mechanicznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to zalecana praktyka. Jeśli jednak odwołanie zostało zapamiętane w kompozycji więcej niż raz, funkcjaonRememberedjest wywoływana dla każdego odwołania, a funkcjaonEnterjest wywoływana tylko raz.onEnterbyło wywoływane wielokrotnie, jeśli obiekt był używany w kompozycjach podrzędnych, np.WithConstraintsiScaffold, co sprawiało, że pojedyncze wywołanieonEnterbyło niewiarygodne i zostało usunięte w przypadkuRememberObserver.RememberObserverdodajeonAbandoned, które jest wywoływane, jeśli instancjaRememberObserverjest zwracana z wywołania zwrotnego przekazanego doremember, ale nie została zapamiętana w stanie kompozycji, a więc nigdy nie zostanie wywołana funkcjaonRemembered. Może to nastąpić, jeśli wyjątek zakończy kompozycję przed jej ukończeniem lub kompozycja zostanie odrzucona, ponieważ stan, dla którego była tworzona, nie jest już aktualny lub nie jest już potrzebny. Jeśli instancjaRememberObserverpo pojedynczej rekomendacji referencyjnej powyżej śledzi zasób zewnętrzny, zarównoonForgotten, jak ionAbandonedwskazują, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęcie pracy lub zasoby przydzielone wonRemembered, można zignorowaćonAbandoned, ponieważ nie zostanie on wywołany, jeśli zostanie wywołanyonRemembered. (I02c36)Wycofane operacje arytmetyczne na co najmniej 2 obiektach TextUnit. Funkcje TextUnit.Sp i TextUnit.Em są wycofane na rzecz funkcji rozszerzeń, takich jak Int.sp i Int.em. (I48369)
Zasoby w bibliotekach, które nie mają jawnie zadeklarowanych zasobów publicznych (np. za pomocą pliku public.xml), są teraz domyślnie prywatne. (Ia1dcc, b/170882230)
Komponenty ScrollableColumn i ScrollableRow zostały wycofane. Używanie komponentu ScrollableColumn jest mniej wydajne niż LazyColumn w przypadku dużych treści przewijanych, ponieważ w przypadku komponentu LazyColumn możemy tylko komponować, mierzyć i rysować widoczne elementy. Aby zapobiec nieefektywnemu korzystaniu z tych funkcji, postanowiliśmy wycofać ScrollableColumn i ScrollableRow oraz promować zamiast nich LazyColumn i LazyRow. Użytkownicy mogą nadal decydować, że nie potrzebują leniwego działania, i używać modyfikatorów bezpośrednio, np. Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).
Nowa metoda fabryczna
items(count: Int)dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. Funkcjeitems(items: List)iitemsIndexed(items: List)są teraz funkcjami rozszerzającymi, więc musisz je ręcznie importować, gdy ich używasz. Nowe przeciążenia rozszerzeń dla tablic:items(items: Array)iitemsIndexed(Array)(I803fc, b/175562574)Zamiast ImeAction.NoAction użyj ImeAction.None.
- Zamiast ImeAction.Unspecified (Ie1bcc) używaj ImeAction.Default.
Używanie TestCoroutineDispatcher w testach (I532b6)
Zmiana nazwy TextInputService.onStateUpdated na updateState (Id4853)
Przejście oparte na TransitionDefinition zostało wycofane (I0ac57)
Usunięto TextUnitType.Inherit. Zamiast tego użyj TextUnitType.Unspecified. (I9ff64)
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.
Zmiana powodująca niezgodność
Przebudowa wewnętrznego interfejsu API kompilatora umożliwia grupowanie zmian w węzłach wygenerowanych w wyniku kompozycji w fazie „zastosuj zmiany” kompozycji po zakończeniu wszystkich funkcji
@Composable.Jest to zmiana powodująca niezgodność, która może wpłynąć na kod aplikacji, ponieważ węzły nie są już dostępne w przypadku wewnętrznych i eksperymentalnych interfejsów API, dopóki zmiany nie zostaną zastosowane. Zwykle można to obejść, otaczając kod z takimi zależnościami funkcją kompozycyjną
SideEffect, aby odłożyć wykonanie kodu do czasu utworzenia i zainicjowania węzłów. (I018da)
Zmiany w interfejsie API
- Dodano Modifier.focusOrder(), którego można użyć do określenia niestandardowej kolejności przechodzenia fokusu (I90cf5, b/175899543, b/170155556, b/170155429).
- Usunięto przestarzałe użycie focusObserver. Zamiast tego użyj onFocusChanged lub onFocusEvent (I3ecb9, b/175156387)
- Zmiany w interfejsie EditOperations API
- Zmiana nazwy EditOperation na EditCommand
- Dodano sufiks Command do konkretnych implementacji EditOperation
- EditCommand nie są już klasami danych
- Zmiana nazwy funkcji EditOperation.process na applyTo
- Zmiana nazwy InputEventListener na InputEventCallback
- (I0a366)
- Usunięto nieużywane funkcje PxSquared, PxCubed i PxInverse. Zmieniono Size.center() na właściwość. (I973f7)
- Moduł ui-test będzie teraz mógł konfigurować tworzenie funkcji Recomposer dla testowanych interfejsów (Ibebd8).
- Zmodyfikowano prędkość, aby zawierała składowe i operacje matematyczne. (Ib0447)
- Zmieniono nazwę
@ExperimentalTestingna@ExperimentalTestApi, aby była zgodna z podobnymi adnotacjami interfejsu API w wersji eksperymentalnej (Ia4502, b/171464963) - Zmiana nazwy funkcji Color.useOrElse() na Color.takeOrElse() (Ifdcf5)
- Usunięto nieużywane klasy DpInverse, DpSquared i DpCubed. (I4d62b)
- Właściwość Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
- Dodaj wywołanie zwrotne, aby powiadomić właściciela o zmianie granic węzła układu. (I72fd1)
- Dodano funkcje isSpecified, isUnspecified i useOrElse dla klas wbudowanych ze stałą Unspecified. (I93f7b, b/174310811)
Rozszerzenie interfejsów API [Abstract]ComposeView, aby umożliwić ponowne wykorzystanie widoków opartych na Compose, usuwanie ich kompozycji i ponowne tworzenie w późniejszym czasie. Dodaj interfejsy API do instalowania i wykrywania Recomposers i CompositionReferences w zakresie okna, aby tworzyć kompozycje podrzędne.
Dodaj ViewCompositionStrategy, aby skonfigurować strategię usuwania kompozycji [Abstract]ComposeViews; domyślne działanie to usuwanie po odłączeniu od okna. (I860ab)
Usunięto publiczny interfejs API Any.identityHashCode() (I025d7)
Usunięto interfejs toStringAsFixed API i zastąpiono go bezpośrednim użyciem String.format. (Iaba6b)
Dodaj przełącznik do pliku Strings.kt (I4a5b7, b/172366489)
Przeniesiono klasę nativeClass do modułu ui i ustawiono ją jako wewnętrzną. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast niego używać „is MyClass”. (I4f734)
Metody Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj funkcji Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
Wprowadzono SelectionRegistrar.notifySelectableChange, aby powiadamiać SelectionManager o aktualizacjach Selectable. (I6ff30, b/173215242)
Wprowadzono właściwość Outline.bounds, aby uzyskać prostokąt ograniczający dla różnych implementacji konturu. (I16e74, b/175093504)
Wycofano TestUiDispatcher. Zamiast niego używaj Dispatchers.Main (Ic171f, b/175385255)
ImeOptions i KeyboardOptions nie są już klasą danych (I3c898, b/168684531).
Zmiany w interfejsie VisualTransformation API
- Zmiana nazwy OffsetMap na OffsetMapping
- Zmiana nazwy OffsetMapping.identityOffsetMap na OffsetMapping.Identity
- PasswordTransformation nie jest już klasą danych
- Przeniesiono OffsetMapping do osobnego pliku
- (I0bdf3)
Zmiana nazwy pozycji na DpOffset i usunięcie funkcji getDistance() (Ib2dfd)
Zmieniono funkcję Dp.isFinite() na wartość Dp.isFinite (I50e00)
Poprawki błędów
- Recomposer udostępnia teraz Flow swojego bieżącego stanu, co umożliwia monitorowanie jego aktywności i aktywności powiązanych efektów. (Ifb2b9)
- Do zdarzenia keyEvent można teraz uzyskać dostęp za pomocą keyEvent.nativeKeyEvent (I87c57, b/173086397).
animate()zastąpiono funkcjąanimateAsState(), która zwraca wartośćState<T>zamiastT. Umożliwia to lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczytywana jest wartość State. (Ib179e)- Dodaj interfejs API roli Semantics i dodaj rolę jako parametr do klikalnego, wybieralnego i przełączalnego elementu SemanticsModifier. Zmiana funkcji Modifier.progressSemantics, aby można było jej używać również w przypadku suwaka. (I216cd)
- Nowy interfejs API oparty na korutynach
Animatable, który zapewnia wzajemną wyłączność animacji.- Nowy element DecayAnimationSpec do obsługi wielowymiarowej animacji zaniku
- (I820f2, b/168014930)
Wersja 1.0.0-alpha09
16 grudnia 2020 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wycofane pole KeyEvent.Alt zostało usunięte. Zamiast tego użyj KeyEvent.isAltPressed. (Idd695)
- Funkcje Modifier.keyInputFilter i Modifier.previewKeyInputFilter zostały wycofane. Zamiast nich używaj funkcji Modifier.onKeyEvent i Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
- Modifier.focusObserver został wycofany. Zamiast tego użyj Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- W przypadku interfejsów API zawieszających dane wejściowe wskaźnika zmieniono nazwy funkcji HandlePointerInputScope na AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)
- Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga zgody użytkownika (I0a1ec).
- Dodawanie deklaracji destrukcyjnych w celu tworzenia instancji FocuSRequester (I35d84, b/174817008)
- accessibilityLabel zmieniło nazwę na contentDescription. accessibilityValue zmieniło nazwę na stateDescription. (I250f2)
- Usunięto zdarzenia niestandardowe z interfejsu API zawieszania danych wejściowych wskaźnika (Ia54d5, b/175142755)
- Wprowadziliśmy kilka nowych funkcji w klasie SelectionRegistrar, a także zmieniliśmy nazwę funkcji onPositionChange na notifyPositionChange. (Ifbaf7)
- Więcej elementów LayoutNode oznaczonych jako wewnętrzne (I443c6)
- Wprowadziliśmy LayoutInfo, aby można było go używać w narzędziach i testach (I9b190).
- AndroidOwner made internal (Ibcad0, b/170296980)
- Usunięto adnotację ExperimentalPointerInput (Ia7a24)
- Dodano zagnieżdżony system przewijania. Więcej informacji znajdziesz w sekcji Modifier.nestedScroll (I36e15, b/162408885).
- Funkcja subcomposeInto(LayoutNode) została oznaczona jako wewnętrzna (Id724a)
Interfejs
Applierzostał zmieniony, aby uprościć tworzenie drzew od dołu do góry, a nie od góry do dołu.Metoda
insert()została zmieniona nainsertTopDown().Dodaliśmy nową metodę:
insertBottomUp().Aplikator wstawia węzły do edytowanego drzewa za pomocą funkcji
insertTopDown()lubinsertBottomUp()w zależności od tego, która z nich jest skuteczniejsza.Niektóre drzewa, np.
LayoutNodeiView, znacznie łatwiej jest budować od dołu niż od góry. Przed wprowadzeniem tej zmiany do implementacji metody od dołu do góry wymagany był stos wstawek, który należało skopiować do każdego narzędzia, które potrzebowało konstrukcji od dołu do góry, aby zapewnić wydajność. Po tej zmianieApplierzastępujeinsertBottomUp(), aby budować drzewo od dołu do góry, ainsertTopDown()– aby budować drzewo od góry do dołu. (Icbdc2)Dodano właściwości dismissOnBackPress i dismissOnClickOutside do AndroidDialogProperties. Umożliwiają one skonfigurowanie momentu wywołania lambdy onDismissRequest okna dialogowego. (If5e17)
Dodano interfejs API painterResource, który umożliwia nieprzezroczyste wczytywanie obiektów Painter z formatów zasobów rastrowych (np. PNG) lub obiektów VectorDrawable. Konsumenci nie muszą już z wyprzedzeniem określać typu komponentu. Mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponentach kompozycyjnych Image lub modyfikatorach malowania. (I2c703, b/173818471)
Dodano Modifier.clearAndSetSemantics, aby wyczyścić semantykę elementów podrzędnych i ustawić nową. (I277ca)
Przeniesiono ContentDrawScope do modułu ui-graphics, aby był razem z DrawScope. (Iee043, b/173832789)
Wprowadziliśmy interfejs graficzny PathEffect, który umożliwia stosowanie różnych wzorów do kształtów obrysowanych linią. Wycofano użycie NativePathEffect na rzecz implementacji PathEffect w oczekiwany/rzeczywisty sposób. (I5e976, b/171072166)
Dodano interfejsy IdlingResource do Compose jako wariant zasobów bezczynności Espresso obsługiwany przez Compose. Można je rejestrować i wyrejestrowywać za pomocą elementu ComposeTestRule (I433f3).
Usunięto globalną rejestrację i wyrejestrowanie ComposeIdlingResource oraz globalną rejestrację i wyrejestrowanie zegarów w ComposeIdlingResource (I32660)
Poprawki błędów
- Funkcje lambda w modyfikatorach przesunięcia zwracają teraz wartość IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
Usunęliśmy z publicznego interfejsu API klasy SlotTable, SlotReader i SlotWriter. Wcześniej były one oznaczane jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia.
Dodano CompositionData i CompositionGroup jako zamienniki interfejsu API ui-tooling, które służą do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ dostarczają surowych informacji, które interpretuje ten interfejs (I31a9c).
Zmodyfikowano klasę ShaderBrush, aby leniwie tworzyć instancję shadera, gdy dostępne są informacje o rozmiarze środowiska rysowania. Jest to przydatne do definiowania gradientów, które w momencie kompozycji zajmują pełne granice rysowania elementu kompozycyjnego, bez konieczności implementowania niestandardowych implementacji DrawModifier.
Wycofano interfejsy API konstruktora funkcji gradientu na rzecz metod fabrykujących w obiekcie Gradient. (I511fc, b/173066799)
Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego używaj elementów LazyColumn i LazyRow (I5b48c)
Wycofana funkcja BuildCompat.isAtLeastR (Idb37e)
Dodano funkcję fabryczną buildAnnotatedString, która służy do tworzenia obiektu AnnotatedString. Wycofana funkcja konstruktora annotatedString. (Idfe0b)
Usunięto metody rozszerzające w przypadku typów Float i Double, które służyły do przeliczania wartości na radiany. Przeniesiono 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.
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj działanie semantyczne Odrzuć (I2b706)
- Przeniesiono interfejsy DrawModifier API z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, który zawiera aliasy typów i metody pomocnicze ułatwiające migrację z przestarzałych interfejsów API na obecne. (Id6044, b/173834241)
- Zmiana nazwy Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowano też powiązane klasy do GraphicsLayer zgodnie z opiniami na temat interfejsu API. (I0bd29, b/173834241)
- Dodano nowe metody placeable.placeWithLayer() i placeable.placeRelativeWithLayer(), które umożliwiają niestandardowym układom i modyfikatorom układu umieszczanie elementu podrzędnego z wprowadzeniem warstwy graficznej do rysowania. Dzięki temu możemy najpierw zoptymalizować ponowne rysowanie, aby w przypadku przeniesienia elementu podrzędnego nie trzeba było ponownie rysować jego zawartości. Po drugie, możemy zastosować do elementu podrzędnego przekształcenia rysowania (Ibd8f6, b/170296989, b/171493718, b/173030831).
- Element
<T>został usunięty z deklaracji SubcomposeLayout. Możesz teraz używać tego atrybutu bez określania typu. (Ib60c8) - Dodano interfejsy API Modifier.scale/rotate
jako ułatwienia dla drawLayer.
- Zmieniono nazwę
Modifier.drawOpacitynaModifier.alpha - Zmieniono nazwę
Modifier.drawShadownaModifier.shadow(I264ca, b/173208140)
- Zmieniono nazwę
- Pola uptime i position w klasie PointerInputData nie mogą mieć wartości null. (Id468a)
- Motyw MaterialTheme ustawia teraz prawidłowe kolory uchwytów zaznaczenia i tła zaznaczenia. Aplikacje inne niż Material mogą ręcznie używać AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
- Dodano WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywne, oraz WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
- Zaktualizowano interfejs TransformOrigin API, aby miał składnię destrukcyjną zwracającą
pivotFractionXipivotFractionYjakocomponent1icomponent2(If43c4, b/173586560). - Dodano sprawdzanie lint dla nazw i pozycji parametrów funkcji kompozycyjnej lambda, aby zapewnić spójność ze wskazówkami dotyczącymi Compose.
Zgodnie z kontrolą i wskazówkami dotyczącymi lintowania niektóre interfejsy API zostały przeniesione z użyciem nazwy
childrendla lambdy końcowej nacontent. (Iec48e) - Dodano interfejs API, który sprawdza, czy podczas wysyłania zdarzenia klawisza naciśnięto klawisze modyfikujące Alt, Ctrl, Meta lub Shift. (I50ed9)
- Dodano nowe przeciążenie
Modifier.drawLayer(). Przyjmuje blok lambda w nowym zakresie GraphicsLayerScope, w którym definiujesz parametry warstwy w sposób umożliwiający pominięcie rekompozycji i ponownego układu, gdy nastąpi zmiana stanu. DrawLayerModifier jest teraz wewnętrzny w ramach przygotowań do przeniesienia jego logiki do metody placeable.placeWithLayer() interfejsu LayoutModifier (I15e9f, b/173030831). - Wycofaliśmy Ambients z sufiksem
Ambienti zastąpiliśmy je nowymi właściwościami z prefiksem Ambient, zgodnie z innymi Ambients i wytycznymi interfejsu Compose API. (I33440) - Przeniesiono
androidx.compose.ui.text.Typefacedoandroidx.compose.ui.text.font.Typeface(Ic2b81) - Argument semantyczny mergeAllDescendants został zmieniony na mergeDescendants. (Ib6250)
- Nowy detektor gestów przeciągania zawieszający interfejs API danych wejściowych wskaźnika, w tym blokowanie orientacji. (Icef25)
- Zmiana nazwy VectorAsset na ImageVector. Przeniesienie i zmiana nazwy VectorAsset na Builder, aby była klasą wewnętrzną ImageVector zgodnie z wytycznymi API. Dodano alias typu VectorAssetBuilder, aby zapewnić zgodność z ImageVector.Builder. (Icfdc8)
- Zmieniliśmy nazwy ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
- Dodano parametr zIndex do funkcji place() w PlacementScope, dzięki czemu Modifier.zIndex() działa teraz jako LayoutModifier, a każdy układ niestandardowy może ustawiać wartości zIndex dla swoich elementów podrzędnych bezpośrednio w bloku umieszczania (I711f7, b/171493718).
- Przeniesiono właściwości semantyczne podstaw do interfejsu (I6f05c)
- Wycofanie funkcji place(Offset) i placeRelative(Offset). Zamiast tego używaj przeciążeń z przesunięciami int (I4c5e7)
- Usunięto wcześniej wycofane interfejsy API: usunięto Modifier.onPositioned, użyj Modifier.onGloballyPositioned. Usunięto Modifier.onDraw. Użyj Modifier.onDrawBehind. Usunięto Modifier.plus, użyj Modifier.then. Usunięto Color.Unset. Użyj Color.Unspecified. Klasa PxBounds została usunięta. Zamiast niej używaj klasy Rect. (Ie9d02, b/172562222)
- Interfejs wyrównania został zaktualizowany i jest już funkcjonalny. (I46a07, b/172311734)
- Detektor gestów do kliknięcia, dwukrotnego kliknięcia, długiego naciśnięcia i wskazania naciśnięcia został dodany przy użyciu nowego wskaźnika zawieszania. Dodaliśmy też kilka narzędzi, które ułatwiają deweloperom pisanie własnych detektorów gestów. (I00807)
- Nazwa
idzostała zmieniona nalayoutIdw przypadkuLayoutIdParentData. NazwaMeasurable.idzostała zmieniona naMeasurable.layoutId. (Iadbcb, b/172449643) - Nowy detektor gestów wielodotykowych, w tym funkcje pomocnicze do wykrywania obracania, powiększania i przesuwania. (Ic459d)
- Wprowadzono interfejsy SweepGradientShader i SweepGradientBrush API. (Ia22c1)
- Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest teraz eksperymentalna (I6ef86, b/171378521).
Dodaj interfejsy API przewijania oparte na korutynach:
Dodaje LazyListState.snapToItem i LazyListState.smoothScrollBy, a także interfejsy API niższego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania do sterowania przewijaniem, który czeka na zakończenie przewijania przed zwróceniem wartości. (Ie5642)
W bibliotece Foundation dodano właściwość Modifier.focusable. Użyj tego, aby dodać do komponentu możliwość uzyskania fokusu z prawidłową semantyką i dostępnością. (I41eb9, b/152525426, b/162865824)
Zapewnij domyślne implementacje metod i właściwości w klasie AnimationClockTestRule, które można przekazać do jej
clock(I7ea3d, b/173399709).AndroidComposeTestRule może teraz akceptować niestandardowe programy uruchamiające aktywności (Ib8288, b/153623653, b/154135019)
Metoda TextLayoutResult.getLineVisibleEnd została wycofana. Zamiast tego TextLayoutResult.getLineEnd ma teraz nowy parametr visibleEnd. (I73282)
Zaktualizowany interfejs TextFieldValue API
- pole TextFieldValue.composition zostało ustawione jako tylko do odczytu.
- usunięto wyjątek zgłaszany w przypadku nieprawidłowego zakresu wyboru (I4a675, b/172239032);
Obsługa TtsAnnotation w przypadku mechanizmu zamiany tekstu na mowę. (I54cc6)
Nowe interfejsy API do uruchamiania animacji w korutynach (Ied662)
Poprawki błędów
- Parametr wyrównania elementu Box został zmieniony na contentAlignment. (I2c957)
- Modyfikatory offsetPx zostały zmienione na offset. Zamiast parametru State przyjmują teraz parametry lambda. (Ic3021, b/173594846)
- Dodano parametr resetInput do TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Dodaliśmy sprawdzanie parametrów modyfikatora w funkcjach kompozycyjnych. Ta kontrola linter sprawdza nazewnictwo, zwracany typ, wartość domyślną i kolejność parametru pod kątem spójności z wytycznymi dotyczącymi Compose. (If493b)
- Tymczasowo dodano opcję umożliwiającą sterowanie zegarem TestAnimationClock za pomocą zegara MonotonicFrameClock (I1403b, b/173402197)
- Dodano kod Android Typeface. Czcionkę Androida możesz wczytać za pomocą funkcji
typeface, np.typeface(Typeface.DEFAULT). Zmieniono też nazwętypefaceFromFontFamily()natypeface()(I52ab7) - Dodano sprawdzanie kodu, aby upewnić się, że funkcje fabryczne modyfikatorów są zdefiniowane jako rozszerzenia modyfikatora, dzięki czemu można je płynnie łączyć w łańcuchy. (I07981)
- Usuwanie starego modułu ui-test i jego stubów (I3a7cb)
- Recomposer nie akceptuje już elementu EmbeddingContext; wymagane zależności harmonogramowania są pobierane z elementu effectCoroutineContext. Interfejs FrameManager został wycofany. Integracje platform powinny inicjować własną obsługę globalnych migawek. (I02369)
- Przekazywanie informacji o stylu do węzła ułatwień dostępu. (If5e8d)
- W celu zachowania spójności z innymi jednostkami nazwa TextUnit.Inherit została zmieniona na TextUnit.Unspecified. (Ifce19)
Compose UI w wersji 1.0.0-alpha07
11 listopada 2020 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy klasę wbudowaną ScaleFactor, aby reprezentować współczynniki skali dla osi poziomej i pionowej niezależnie od siebie, co umożliwia obsługę przypadków użycia skalowania nierównomiernego.
- Dodano metodę computeScaleFactor do ContentScale
- Dodano ContentScale.FillBounds, aby wykonać nierównomierne skalowanie i rozciągnąć granice src tak, aby w pełni zajmowały miejsce docelowe.
- Dodano metody operatora do obliczania parametrów ScaleFactor za pomocą parametrów Size.
- (Ic96a6, b/172291582)
- Dodano fabryki BiasAlignment i BiasAbsoluteAlignment do tworzenia obiektów Alignment. (Iac836, b/169406772)
- Umożliwia deweloperowi wymuszenie usunięcia zaznaczenia. (I90372)
- Naprawiono błąd powodujący, że w przypadku widoków w Compose nie była rysowana wysokość. (If7782)
- Utworzono interfejs API onDrawBehind w ContentDrawScope, aby dopasować konwencję nazewnictwa do Modifier.drawBehind. (I4fc3a, b/171955269)
- Dodaliśmy obsługę odległości kamery, aby uzupełnić przekształcenia 3D rotationX/rotationY w interfejsach API warstw. (I40213, b/171492100)
- Dodano SelectionContainer bez wywołania zwrotnego (Ibfadb)
- Usunięto adnotację ExperimentalSubcomposeLayoutApi. Funkcja SubcomposeLayout może być teraz używana bez dodawania @OptIn (I708ad)
- FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
- Usunięto krycie z modyfikatora drawShadow(), ponieważ było mylące. (I82c62, b/171624638)
- Element MeasureResult został przeniesiony poza element MeasureScope. (Ibf96d, b/171184002)
- Kilka symboli związanych z układem zostało przeniesionych z pakietu androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
- Usunięto wycofany stan FocusState2 (I686cb, b/168686446)
- ZIndexModifier jest teraz wewnętrzny (I1808b, b/171493718)
- Zaktualizowano typ zwracany metody lerp w parametrach Size, aby zwracała niepusty rozmiar, co pozwala uniknąć niepotrzebnego opakowywania. (Ib0044)
- Dodano TestMonotonicFrameClock do testowania kodu, który korzysta z MonotonicFrameClock w Compose do oczekiwania na zdarzenia klatek kompozycji za pomocą funkcji runBlockingTest z biblioteki 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 pakiet androidx.compose.ui.test i androidx.compose.ui.test.junit4 (I452e8)
Poprawki błędów
- Funkcja captureToBitmap została przeniesiona do funkcji captureToImage. (I86385)
- foundation.Text został wycofany i zastąpiony przez material.Text. Podstawowy interfejs API tekstu, który nie korzysta z wartości z motywu, znajdziesz w artykule androidx.compose.foundation.BasicText. (If64cb)
- Aktualizacja pól tekstowych, aby akceptowały KeyboardOptions (Ida7f3)
- Zmiana nazwy KeyboardOptions na ImeOptions (I82f36)
- Przeniesiono KeyboardType i ImeAction do KeyboardOptions (I910ce)
- Funkcja provideDefault została dodana jako alternatywa dla podawania wartości otoczenia i może być używana do określania wartości otoczenia, które będą ustawiane tylko wtedy, gdy nie ma już podanej wartości otoczenia. (Id6635, b/171024925)
- Komponent BaseTextField został wycofany. Zamiast tego użyj BasicTextField. (I896eb)
- Wprowadzenie modułu ui-test-junit4 (Ib91f8)
- Nazwa
relativePaddingFromzostała zmieniona napaddingFrom. Dodano modyfikatorpaddingFromBaseline, aby ułatwić określanie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813) - Aby zachować spójność z interfejsami SideEffect i DisposableEffect API, zmieniliśmy nazwę LaunchedTask na LaunchedEffect. Aby zachęcać do stosowania sprawdzonych metod, nie zezwalamy na używanie funkcji LaunchedEffect bez parametrów subject. (Ifd3d4)
- Wprowadzono zasoby z możliwością komponowania, które są ponownie komponowane po aktualizacji konfiguracji. (I6387c, b/167352819)
- Recomposer wymaga teraz elementu CoroutineContext podczas tworzenia (Ic4610)
- Sumuj wartości
zIndex, gdy zastosowano wiele wartościModifier.zIndex(). Wcześniej wygrywał pierwszy z nich. (Ic514c, b/170623936) - Zmiany w wewnętrznej implementacji SlotTable, które nie powinny mieć wpływu na publiczny interfejs API. (If9828)
- Dodano opcję autokorekty klawiatury IME (I57b8d)
- Pakiet androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb).
- Usunięto KeyboardOptions.toImeOptions z publicznego interfejsu API. (Ic2e45)
Wkład zewnętrzny
- Wyłączono publikację wewnętrznego artefaktu androidx.compose.ui:ui-text-android (Ib93fa)
Wersja 1.0.0-alpha06
28 października 2020 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Recomposer jest teraz elementem CompositionReference i prawidłowym elementem nadrzędnym kompozycji. Jawny Recomposer jest teraz wymagany w mniejszej liczbie miejsc. (I4036f)
- Wycofanie funkcji VectorPainter na rzecz funkcji rememberVectorPainter, aby lepiej wskazywać, że interfejs API funkcji kompozycyjnych wewnętrznie wykorzystuje funkcję „remember” do utrwalania danych w kompozycjach. (Ifda43)
- Zaktualizowano interfejs Modifier.drawWithCache API, aby udostępniać ContentDrawScope jako zakres odbiorcy zamiast DrawScope, co umożliwia implementacjom zmianę kolejności poleceń rysowania. Jest to przydatne w przypadku mieszania lub cieniowania, w których piksele treści muszą być najpierw renderowane, aby można było prawidłowo zastosować odpowiedni algorytm trybu mieszania. (Ie7ec8)
- Przeniesienie SimpleContainer do PopupTestUtils.kt (I78c57)
- Klasa ConsumedData nie jest już klasą danych. Szczegóły znajdziesz na stronie https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
- Popraw pozycję uchwytu w przypadku języków pisanych od prawej do lewej. (I6e1e0)
- Zmieniliśmy DrawScope i ContentDrawScope na interfejsy zamiast klas abstrakcyjnych.
- Utworzono implementację CanvasDrawScope interfejsu DrawScope
- Zmiana implementacji DrawScope na CanvasScope
- Utworzono DrawContext do opakowywania zależności dla DrawScope
- Usunięto wycofane metody w klasie DrawScope (I56f5e)
- Zmiana powodująca niezgodność: usunięto wartość zwracaną z
PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w przypadku zdarzeń wskaźnika, są dane o użyciu. Zamiast zwracać dane zPointerInputFilter.onPointerEvent(...), możesz teraz po prostu zmieniać dane o użyciu przekazywanych zdarzeń PointerEvents. (I6acd0) - Z klas MeasureScope i IntrinsicMeasureScope utworzono interfejsy. (I1a087, b/170461665)
- Funkcja scalania w przypadku elementu AlignmentLine została ukryta. (I9da1a, b/170612900, b/170611568)
- Dodanie możliwości określania informacji o inspektorze w złożonym modyfikatorze (Idee08, b/163494569)
- Dodano opcję Zaznacz wszystko do menu wyboru (Ief02b)
- Zaktualizowano funkcję DrawTransform.rotate, aby przyjmowała domyślny parametr punktu obrotu center, zgodnie z dokumentacją.
- Zaktualizowano funkcję DrawScope.rotateRad, aby używała przesunięcia dla punktu obrotu, co pozwoliło dopasować ją do innych metod przekształcania.
- Wycofana funkcja DrawScope.rotateRad, która pobierała wartości zmiennoprzecinkowe dla współrzędnych x i y punktu obrotu.
- (Iffcbb, b/170434992)
Poprawki błędów
- Sprawdzanie API pod kątem brakującego elementu MissingGetterMatchingBuilder jest włączone w przypadku androidx (I4bbea, b/138602561).
- Dodaj test. (I6b8ae)
- Włącz przejścia w ComposeTestRule; usuń opcję włączania migającego kursora z ComposeTestRule. (If0de3)
- Dodano opcję IME KeyboardCapitalization (I8ac38)
- Dodano opcję klawiatury jednoliniowej do komponentu CoreTextField (I72e6d)
- Przeniesienie SimpleContainer do PopupTestUtils.kt (I65c3e)
- Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w Compose. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie zaokrąglenia są przycinane do zera. (I130c7, b/168762961)
- Ulepszona współpraca z Androidem dzięki dalszemu wysyłaniu zdarzeń MotionEvent do podrzędnych widoków Androida, które zwracają wartość false w przypadku zdarzenia onTouchEvent dla wszystkich działań z wyjątkiem
ACTION_DOWN(I94c5a, b/170320973). - Pole zostało przekształcone w funkcję wbudowaną. (Ibce0c, b/155056091)
Wkład zewnętrzny
- Obsługa różnych języków na urządzeniach
AnnotatedString.capitalizeiAnnotatedString.decapitalize(I4aa7f)
Wersja 1.0.0-alpha05
14 października 2020 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodanie języka DSL do określania informacji o inspektorze (Ic9a22)
- Przenieś LongPress do tekstu. (Iff2bc)
- Experimental Modifier.pointerInput suspending input modifier (Ia77d2)
- Dodano działania ułatwień dostępu Kopiuj/Wklej/Wytnij (I6db4f)
- Usunięto publiczny konstruktor AndroidOwner (Iacaef)
- Wyskakujące okienka i okna dialogowe dziedziczą teraz FLAG_SECURE z okna nadrzędnego. Dodano też opcję wyraźnej konfiguracji (I64966, b/143778148, b/143778149).
Dane o zużyciu można teraz zmieniać. Wywołania funkcji rozszerzeń, które powodują zużycie, nie zwracają już nowego obiektu PointerInputChange, ale modyfikują podany obiekt PointerInputChange.
Jest to pierwszy krok w 2-etapowym procesie, który ma na celu umożliwienie modyfikowania danych PointerEvent w taki sposób, aby kod użytkownika nie mógł edytować innych danych wskaźnika. Drugim krokiem będzie usunięcie typu zwracanego
List<PointerInputChange>zPointerInputFilter.onPointerEvent(...). (Id067e)Wyłącz zaznaczanie tekstu i obejrzyj wersję demonstracyjną. (Ie7e97)
Funkcja wbudowana Made onGloballyPositioned (I15830)
Zmiana nazwy OnPositionedModifier na OnGloballyPositionedModifier i onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
Do interfejsu Owner dodano właściwość hasPendingMeasureOrLayout, która informuje, czy w przypadku danego obiektu Owner jest wykonywana jakaś praca związana z układem. (I3d9f8, b/169038599)
Dodano interfejs API do programowego czyszczenia fokusu (Ie1dc2, b/161487952)
Kontakt
PointerInputFilter.onPointerInput(...)został usunięty.PointerInputFilter.onPointerEvent(...). (I6f04a)Zmiany rozmiaru
- Usunięto Size.getFlipped
- Usunięto Size.rem
- Usunięto Size.truncDiv (Ief44d, b/169790720)
W ramach standaryzacji wartości wartowniczych w przypadku klas wbudowanych zmień nazwę Color.Unset na Color.Unspecified, aby zachować spójność z innymi klasami wbudowanymi (I97611, b/169797763).
Wprowadzono TextOverflow.None. Gdy wartość parametru overflow to None, komponent Text nie będzie już obsługiwać przepełnienia i będzie zgłaszać do komponentu LayoutNode swój rzeczywisty rozmiar. (I175c9, b/158830170)
Parametr scope w metodzie AnnotatedString.Builder.addStringAnnotation został zmieniony na tag, aby zachować spójność interfejsu API. (I7c8cb)
Poprawki błędów
- Wydajność przewijania w przypadku LazyColumn/Row jest większa, ponieważ podczas każdego przewijania wykonuje się mniej pracy w kompozycji podrzędnej. Dodano nową metodę hasInvalidations() dla klasy Composition. Metoda hasPendingChanges() z klasy Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371).
- Zaktualizowano parametry Size.Unspecified na Float.NaN zamiast Float.POSITIVE_INFINITY. Zaktualizowano implementacje Painter, aby sprawdzać zarówno Size.Unspecified, jak i rozmiary nieokreślone. (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)
- Dodaliśmy klasy zastępcze dla klas Androida, które są dostępne na starszych platformach, aby w miarę możliwości uniknąć używania odbicia. (Ia1790)
- Naprawiony błąd: jeśli wyświetlenie klawiatury ekranowej powodowało tłumaczenie w aplikacji, współrzędne wejścia wskaźnika stawały się nieprawidłowe. (Ic4cec, b/163077821)
Wersja 1.0.0-alpha04
1 października 2020 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano OwnerScope, aby umożliwić zbieranie zakresów obserwacji układu i rysowania, gdy nie są już one ważne. (Ic4cf8)
- Dodano OnRemeasuredModifier i onSizeChanged(), aby otrzymywać wywołanie zwrotne, gdy układ treści zostanie ponownie zmierzony i gdy zmieni się rozmiar. (I657cf, b/154108792)
- Dodawanie działania semantycznego długiego kliknięcia (I6281b, b/156468846)
- Ustawiono FocusManager jako prywatny. (I7872f)
Zaktualizowaliśmy implementację, aby tworzyć dedykowaną implementację DrawCacheModifier zamiast dodawać opcjonalne właściwości do DrawModifier.
Zaktualizowana dokumentacja różnych metod (Ibd166)
Ustaw TextRange jako wbudowany, aby uniknąć tworzenia obiektu. (Id034b)
Nie można już odczytywać wartości PlacementScope#parentWidth i PlacementScope#parentLayoutDirection z bloku miejsca docelowego w układzie niestandardowym. (Icc1ae, b/168295623)
dodaj AccessibilityScrollState do właściwości semantycznych; (Ifeda9)
Wprowadzono Modifier.drawWithCache, aby umożliwić tworzenie obiektu rysowania, który warunkowo odtwarza zależności, które zależą od informacji o rozmiarze lub stanie (I376dc).
Usunięto element ParagraphConstraints. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712)
Poprawki błędów
- Zaktualizowano wiele interfejsów API grafiki.
- Zaktualizowano interfejsy API przekształceń skalowania i obracania, aby używały jednego parametru Offset do reprezentowania współrzędnych punktu obrotu zamiast oddzielnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform.
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowana dokumentacja dotycząca promienia, w której oprócz kształtu eliptycznego podano też owalny.
- Dodano dokumentację, aby wskazać, że publiczny konstruktor wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale obiekty Radius powinny być tworzone za pomocą konstruktorów funkcji.
- Usunięto interfejsy API RoundRect do wysyłania zapytań o wartości topRight, bottomRight, bottomCenter itp.
- Wycofanie Rect.shift na rzecz Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmiana nazwy RoundRect.outerRect na Rect.boundingRect
- Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
- Zmiana nazwy RoundRect.longestSide na RoundRect.maxDimension
- Zmiana nazwy RoundRect.shortestSide na RoundRect.minDimension
- Zmiana RoundRect.center na właściwość zamiast funkcji
- Zaktualizowano konstruktor RoundRect, aby korzystał z właściwości Radius zamiast z poszczególnych parametrów wartości promienia x/y
- Usunięto interfejsy API rozmiaru, które zakładały, że jest to prostokąt o początku w punkcie 0,0
- Dodano interfejs API niszczenia do Radius
- Przeniesiono różne funkcje rozszerzenia RoundRect, aby były właściwościami.
- (I8f5c7, b/168762961)
- Klasa foundation.Box została wycofana. Zamiast niego użyj foundation.layout.Box. (Ie5950, b/167680279)
- Grupa została zmieniona na Box. Wcześniej istniejący komponent Box zostanie wycofany na rzecz nowego komponentu Box w pakiecie compose.foundation.layout. Nowy element Box układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Różni się to od poprzedniego elementu Box, który działał podobnie do elementu Column. (I94893, b/167680279)
- Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać dekoracje lub wypełnienie do pola, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
- Zaktualizowano wiele interfejsów API grafiki.
- Zaktualizowano interfejsy DrawScope API o metody przekształcania w określonym zakresie, aby wskazać, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po jego wywołaniu.
- Zaktualizowaliśmy dokumentację clipPath, aby odwoływała się do ścieżki zamiast do zaokrąglonego prostokąta
- Poprawiono odstępy w dokumentacji parametru right w elemencie clipPath
- Zmieniono nazwę funkcji DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr rozmiaru
- Zmieniono nazwy parametrów dx/dy w metodzie inset na horizontal i vertical
- Dodano przeciążenie wstawki, które zapewnia tę samą wartość wstawki dla wszystkich 4 obszarów.
- Usunięto dokumentację dotyczącą metody wstawiania, która wskazywała, że wstawianie będzie stosowane do wszystkich 4 stron.
- Zaktualizowana dokumentacja klasy Rect
- Zaktualizowano komentarze dotyczące parametrów Rect, aby były zgodne ze stylem kdoc.
- Usunięto Rect.join i Rect.expandToInclude
- Utworzono przeciążenie funkcji Rect.translate(offset) i wycofano funkcję Rect.shift
- (If086a, b/167737376)
- Oznaczanie adnotacjami rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled i textInputServiceFactory za pomocą @VisibleForTesting, przekształcanie ich w wewnętrzne interfejsy API i ukrywanie ich dokumentacji w KDoc (I554eb, b/168308412)
- Usuń element SelectionContainer z góry, aby wyłączyć domyślne zaznaczenie i uniknąć nieoczekiwanego działania. Zamiast tego można użyć elementu SelectionContainer do opakowania treści, które mają być możliwe do zaznaczenia. (I8dfe0, b/158459594)
Wersja 1.0.0-alpha03
16 września 2020 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usuń działania semantyczne przewijania do przodu i do tyłu. Dodano kroki w AccessibilityRangeInfo. (Ia47b0)
- Usunięto element
onInvalidate()z listyOwner–OwnedLayerobsługuje unieważnienie. (Ica72b, b/162061312) Usunięto metody operatora w interfejsie Size API, które wykorzystują parametry Offset. Wynik tych operacji jest niejasny, a typ wyniku jest nieoczekiwany. Czy np. rozmiar – przesunięcie powinno zwrócić przesunięcie lub wynik rozmiaru z różnicą?
Usunięto też wycofane metody w klasie Size. (Iec902, b/166514214)
Poprawki błędów
- Naprawiono błąd, który powodował, że elementy LazyColumn były czasami nieprawidłowo rysowane. W niektórych przypadkach powodowało to też awarie. (Ibcf17, b/163066980, b/165921895)
- Interfejs DpConstraints i interfejsy API, które go używają, zostały wycofane. (I90cdb, b/167389835)
- Przeniesiono elementy
createAndroidComposeRuleiAndroidInputDispatcherzandroidx.ui.test.androidnaandroidx.ui.test(Idef08, b/164060572) - W interfejsach API układu nazwy używanych wcześniej stałych związanych z grawitacją zostały zmienione na align lub alignment. (I2421a, b/164077038)
- Dodano metody onNode i inne metody globalne w klasie ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
Wersja 1.0.0-alpha02
2 września 2020 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- usuń wywołanie zwrotne, aby powiadamiać właściciela o zmianach granic węzła układu. (If654e, b/166106882)
- Dodaliśmy obsługę parametrów filltype w ścieżkach grafiki wektorowej do obsługi wycinania kształtów zgodnie z regułami wypełniania ścieżek evenOdd lub NonZero. (I43dd2)
- Dostępność i szybkość to teraz klasy wbudowane (I48f4a)
- Czas trwania jest teraz klasą wbudowaną (I565eb)
- Dodaj wywołanie zwrotne, aby powiadomić właściciela o zmianie granic węzła układu. (Ic40b3)
Rozwiązaliśmy problem polegający na tym, że konstruktor funkcji Rect z parametrami Offset i radius tworzył obiekt Rect w kolejności lewa, prawa, góra, dół zamiast lewa, góra, prawa, dół.
Usunięto wycofane metody towarzyszące w klasie 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 inne części pakietu vectormath zostały usunięte. (Ibd665, b/160140398)
Konwencja wywoływania funkcji kompozycyjnych uległa zmianie. Jest to zmiana binarna powodująca niezgodność. Aby biblioteki działały z tą wersją wtyczki kompilatora Compose, należy je ponownie skompilować.
Ta zmiana nie powoduje zmiany na poziomie źródła, ponieważ jedyne interfejsy API, które uległy zmianie, to interfejsy API kompilatora, które wymagają wyraźnej zgody użytkownika. (I7afd2, b/158123185)
Naprawiliśmy awarię, która mogła wystąpić, gdy wysłanie do elementu PointerInputFilter mogło spowodować jego synchroniczne usunięcie. (I58f25)
Wersja 1.0.0-alpha01
26 sierpnia 2020 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.
Wersja 0.1.0-dev
Wersja 0.1.0-dev17
19 sierpnia 2020 r.
Publikacja androidx.compose.ui:ui-*:0.1.0-dev17 Wersja 0.1.0-dev17 zawiera te zatwierdzenia.
Zmiany w interfejsie API
emitViewzostał wycofany. Jeśli to możliwe, używajAndroidViewdo emitowania widoków w Compose. Pamiętaj, że bezpośrednie tworzenie widoków i grup widoków nie będzie w przyszłości obsługiwane, chyba że będą to węzły końcowe w drzewie kompozycji. W takim przypadku można to osiągnąć za pomocą elementu AndroidView. (I29b1e, b/163871221)FocusState2zostało wycofane i zastąpione przezFocusState(Ia8b79, b/160822876, b/160923332)- Usunięto przestarzałe przeciążenia AndroidView. (I946b9, b/163802393)
- Niestandardowe funkcje emitujące mogą teraz deklarować, że co najmniej 1 z ich setterów można pominąć i ponownie skomponować niezależnie od funkcji emitującej. (Ibbd13)
Zmieniono klasy Vector, aby nie były już klasami danych, ponieważ do kompozycji używana jest ta sama instancja obiektu.
Dodano flagę mutableStateOf dla VectorPainter, aby warunkowo ponownie rysować, jeśli zmieni się zawartość wektora.
Przebudowano instancję VectorComponent, aby była częścią VectorPainter, ponieważ jest ona ponownie używana w kompozycjach.
Zaktualizowano komponenty GroupComponent i PathComponent, aby ich pola nazwy były modyfikowalne (Ieae45, b/151378808).
Usunięto
onChildPositionediOnChildPositionedModifier. Zamiast tego programiści powinni używaćonPositionediOnPositionedModifierw układzie podrzędnym. (I4522e, b/162109766)Przesunięcie stało się klasą wbudowaną (Iaec70)
Dodano parametr modyfikatora do SelectionContainer (I4aada, b/161487952)
Usunięto wycofany modyfikator FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Dodano funkcję lambda
mergePolicydoSemanticsPropertyKey. Można jej użyć do zdefiniowania niestandardowych zasad scalania wszystkich elementów podrzędnych. Domyślna zasada polega na używaniu wartości nadrzędnej, jeśli jest już obecna, w przeciwnym razie używana jest wartość podrzędna. (Iaf6c4, b/161979921)Ograniczenia są teraz klasą wbudowaną (I88736)
Dodano klasę FocusManager, która przenosi wspólną logikę dotyczącą fokusu z klasy AndroidComposeView (I528ef, b/161487952, b/162206799)
Zaktualizowane 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 kontekstach pisanych od prawej do lewej. Jeśli chcesz to zrobić, użyj zasadyPlacementScope.placeRelative(). (I873ac, b/162916675)AlertDialog używa teraz FlowRow w przypadku przycisków (I00ec1, b/161809319, b/143682374)
Niektóre narzędzia testowe zostały ustawione jako niepubliczne, ponieważ nie znajdują się w odpowiednim miejscu. zostanie w przyszłości upubliczniona. (I32ab1)
Zmieniono organizację kodu wejścia wskaźnika. (Ie3f45)
Wycofano PxBounds na rzecz Rect. Zaktualizowano wszystkie użycia PxBounds za pomocą funkcji rect i dodano odpowiednie adnotacje dotyczące wycofania/zastąpienia w celu ułatwienia migracji. (I37038, b/162627058)
Usunięto wycofany element KeyEvent2. Zamiast tego użyj KeyEvent. (Ied2d0, b/162097587)
Obiekt KeyEvent ma właściwość unicode, której można użyć do uzyskania znaku Unicode wygenerowanego przez określoną kombinację klawisza i klawisza meta (If3afc).
Zdarzenie niestandardowe DelayUp i powiązane z nim klasy zostały przekształcone w interfejs API, który wymaga zgody użytkownika, ponieważ prawdopodobnie ulegnie zmianie. (I56d6f)
Usunięto 2 obiekty PointerEventPass, które nie są już potrzebne. (I3dd9d)
Dodaj kolor parametru, cień i TextDecoration do Paragraph.paint. Ta funkcja jest przydatna, aby uniknąć niepotrzebnego ponownego tworzenia akapitu. (I81689)
Poprawki błędów
- Usunięto wywołania zwrotne onFocusChanged z pola tekstowego. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
- Funkcja Modifier.drawBorder została wycofana. Zamiast tego użyj Modifier.border. Klasa danych Border została zastąpiona klasą BorderStroke (I4257d, b/158160576)
Usunięto wycofane wywołania FrameManager.
Wewnętrzne interfejsy API do tworzenia zostały zmienione, aby zmniejszyć obciążenie związane ze śledzeniem obiektów stanu, takich jak
mutableStateof()(I80ba6).Komponenty VerticalScroller i HorizontalScroller zostały usunięte. Zamiast tego użyj elementu ScrollableColumn/Row. Usunięto Modifier.drawBackground. Użyj Modifier.background (I73b0d, b/163019183)
Naprawiono awarię, która występowała, gdy w pętli for użyto czegoś, co zapisuje stan. Teraz w metodzie savedInstanceState() można używać tego samego klucza. Interfejs API UiSavedStateRegistry został dostosowany do tego nowego wymagania (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
Funkcja
state { ... }została wycofana na rzecz jawnych wywołań funkcjiremember { mutableStateOf(...) }w celu uniknięcia wątpliwości. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji zarządzania stanem oraz pasuje do wzorcaby mutableStateOf()delegowania właściwości klasy. (Ia5727)Zmiana nazwy RRect na RoundRect w celu lepszego dopasowania do wzorców nazewnictwa w Compose Utworzenie podobnych konstruktorów funkcji do RRect i wycofanie konstruktorów funkcji RRect (I5d325)
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
Publikacja androidx.compose.ui:ui-*:0.1.0-dev16 Wersja 0.1.0-dev16 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Metoda OnChildPositioned została wycofana. Zamiast tego użyj OnPositioned w przypadku elementu podrzędnego. (I87f95, b/162109766)
- Metoda setViewContent została wycofana. Zamiast niej należy używać metody setContent. (I7e497, b/160335130)
- Dodano interfejs AndroidViewBinding API do tworzenia i komponowania zasobów układu na podstawie ViewBinding. (I081c6)
- KeyEvent2 został zastąpiony przez KeyEvent (I2d770, b/162097585)
- Dodano obsługę klawisza sprzętowego Alt (I9036b).
- Interfejs FocusManager został wycofany. Zamiast tego użyj Modifier.focus(), Modifier.focusObserver() i Modifier.focusRequester(). (I74ae4, b/162211322)
- Funkcja loadVectorResource obsługuje atrybuty trimPath (I808fe)
- Przeniesienie okna do interfejsu (I47fa6)
- Usunięto 2 obiekty PointerEventPass, które nie są już potrzebne. (I33ca7)
- Zaimplementowano PointerInteropModifier, który umożliwia odbieranie MotionEvent i interakcję z Compose tak, jakby była to implementacja widoku Androida. (Ieb08c)
- Usunięto wycofany modyfikator tagu. Zamiast niego użyj parametru layoutId. (Idaa05, b/162023919)
- Interfejsy API obsługujące pisanie od prawej do lewej zostały zaktualizowane. Dodano LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Usunięto Modifier.rtl i Modifier.ltr. (I080b3)
- Obsługa przycinania ścieżek w grafice wektorowej (Ie16c9, b/158188351)
- Dodano Modifier.layout(), który umożliwia wygodne tworzenie niestandardowego modyfikatora układu (I73b69, b/161355194).
- Dodaliśmy nowy interfejs AndroidView API i oznaczyliśmy dotychczasowe jako wycofane. (I5bcfd)
- Metoda Modifier.plus została wycofana. Zamiast niej używaj metody Modifier.then. Słowo „wtedy” silniej sygnalizuje kolejność, a także uniemożliwia wpisanie znaku
Modifier.padding().background() + anotherModifier, który przerywa łańcuch i utrudnia czytanie (Iedd58, b/161529964). - Dodaj podklasy widoku [Abstract]ComposeView do hostowania treści Compose w hierarchii widoków. (I46357)
RowiColumnto teraz funkcje wbudowane, które znacznie zmniejszają obciążenie związane z ich używaniem. (I75c10)- Dodano SubcomposeLayout. Jest to element podstawowy niskiego poziomu, który umożliwia komponowanie elementów podrzędnych podczas pomiaru, jeśli chcemy użyć wartości dostępnych dopiero później podczas pomiaru do kompozycji poddrzewa. Na przykład WithConstraints nie jest zaimplementowany przy użyciu SubcomposeLayout. (I25cc8)
- Dodano
SemanticsNode.positionInRoot, aby uzyskać pozycję elementu SemanticsNode względem korzenia hierarchii Compose (Icdf26, b/161336532) - Obiekty MotionEvent są przekazywane z Androida do Compose i z powrotem do Androida. (I14be8, b/158034713)
- Usunięto menu. (I00430)
- Stała pozycja wyskakującego okienka na wyświetlaczach z wycięciem. (Idd7dd)
- Dodawanie działania związanego z ułatwieniami dostępu w celu uzyskania obiektu TextLayoutResult (I9d6e6)
- Dodano RemeasurementModifier. Umożliwia on synchroniczne ponowne pomiary układu. Zwykle nie jest to potrzebne, ponieważ ponowny pomiar i ponowny układ są wykonywane automatycznie, ale używamy go w LazyColumnItems podczas przewijania. (I5f331, b/160791058)
- Usunięto funkcje getLineEllipsisOffset i getLineEllipsisCount. Zamiast tego użyj getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- Dodaj kilka oznaczeń lub adnotacji, aby zastosować sprawdzone metody. (I66b20)
- udostępniać więcej interfejsów API w klasie 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 problemów z interfejsem API (I077bc)
- Usuwanie nieużywanego interfejsu OffsetBase
- Ujednolicenie klas Offset i IntOffset w celu zapewnienia spójności interfejsu API
- Zmiana nazwy IntOffset.Origin na IntOffset.Zero w celu zachowania spójności z interfejsem Offset API
- Przeniesiono metodę nativeCanvas z interfejsu Canvas, aby umożliwić użytkownikom tworzenie własnych instancji Canvas.
- Utworzono klasę EmptyCanvas, aby refaktoryzować DrawScope i zamiast lateinit używać parametru niepustego, a także zapewnić, że pole nie będzie miało wartości null.
- Zmiana nazw wyliczeń ClipOp na Pascal Case
- Zmiana nazwy wyliczeń FilterQuality na Pascal Case
- Zmieniono nazwy wyliczeń StrokeJoin na Pascal Case
- Zmiana nazw wyliczeń PointMode na Pascal Case
- Zmiana nazwy wyliczeń PaintingStyle na Pascal Case
- Zmiana nazwy wyliczeń PathFillType na Pascal Case
- Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
- Zaktualizowano implementację DrawCache, aby nie używać już parametrów lateinit.
- Zaktualizowano DrawScope, aby nie używać już leniwego delegowania w przypadku wewnętrznych parametrów fillPaint i strokePaint
- Zaktualizowano funkcję kompozycyjną Image, aby uniknąć używania Boxa i zmniejszyć obciążenie.
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano klasę PathNode, aby zawierała adnotacje @Immutable dla każdej instrukcji ścieżki.
- Zaktualizowano podkompozycję wektora, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje.
- Wycofanie metod konstruktora towarzyszącego Rect na rzecz konstruktorów funkcji
- Zaktualizowano klasy Brush i konstruktory funkcji za pomocą interfejsów API @Immutable i @Stable
- Zaktualizowano wyliczenie VertexMode, aby używać notacji PascalCase
- Zaktualizowano metodę selectPaint w klasie DrawScope, aby warunkowo zastępować parametry pędzla w obiekcie Paint, jeśli uległy zmianie.
- Zaktualizowano klasę Size, aby dodać interfejs API destructuring, zmienić nazwę UnspecifiedSize na Unspecified i usunąć nieużywane metody.
- Zaktualizowano wykorzystanie interfejsu BlendMode API w Compose, aby prawidłowo mapować tryby BlendMode platformy Android na tryby PorterDuff w zależności od poziomu interfejsu API. Wprowadzono interfejs BlendMode#isSupported API, który działa jako zapytanie o możliwości, aby przed użyciem określić, czy tryb BlendMode jest obsługiwany na urządzeniu. (I0ef42)
- Dodano LazyItemScope dla parametru itemContent list leniwych. Zawiera modyfikatory, które wypełniają maksymalny rozmiar elementu nadrzędnego. Rozwiązuje to problem, gdy element powinien wypełniać obszar widoczny, a zwykły modyfikator Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
- Kontakt
SemanticsNodeInteraction.performPartialGesturezostał usunięty. Zamiast niej używaj zasadySemanticsNodeInteraction.performGesture. (Id9b62) - Nazwa
LazyColumnItemszostała zmieniona naLazyColumnFor. NazwaLazyRowItemszostała zmieniona naLazyRowFor(I84f84) - Pakiet
foundation.shape.cornerzostał spłaszczony dofoundation.share(I46491, b/161887429) - Zmieniono nazwę
AndroidComposeTestRulenacreateAndroidComposeRule. (I70aaf) - Dodano więcej interfejsów API do
TextLayoutResult. (Id7e04) - Nazwa materiału
FilledTextFieldzostała zmieniona naTextField, a nazwa podstawowego materiałuTextFieldzostała zmieniona naBaseTextField, aby ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676). - Funkcja Modifier.drawBackground została zmieniona na Modifier.background (I13677)
Wersja 0.1.0-dev15
22 lipca 2020 r.
Publikacja androidx.compose.ui:ui-*:0.1.0-dev15 Wersja 0.1.0-dev15 zawiera te zatwierdzenia.
Aktualizacja zależności
- Aby używać wersji
0.1.0-dev15biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany w interfejsie API
- FocusModifier został wycofany na rzecz Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. FocusState i FocusDetailedState zostały wycofane na rzecz FocusState2 (I46919, b/160822875, b/160922136).
- Dodano modyfikator do obserwowania zmiany stanu ostrości. (I05866, b/160924455, b/160923326)
- Dodano modyfikator do prośby o zmianę fokusu (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 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)
- Dodanie pływającego paska narzędzi do zaznaczenia pola tekstowego. (Ie8b07)
- Dodano eksperymentalną adnotację interfejsu API dla interfejsu API związanego z wprowadzaniem kluczy (I53c0a)
- Dodano eksperymentalną adnotację interfejsu API do wszystkich interfejsów API związanych z funkcją 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 granice pikseli w układzie. Interfejs API PopupPositionProvider został zaktualizowany, aby z niego korzystać. (I0d8d0, b/159596546)
- Klasa Applier wymaga teraz metody clear() do usuwania kompozycji (Ibe697)
- Klasa KeyEvent została wycofana i zastąpiona klasą KeyEvent2 (I68730).
- Do narzędzi do wyszukiwania testów dodaliśmy nowy opcjonalny flag useUnmergedTree. (I2ce48)
- Oznaczono interfejs API LayoutNode jako eksperymentalny (I4f2e9)
Dodano metody kopiowania do różnych typów klas wbudowanych, m.in.:
- Przesunięcie
- Rozmiar
- Promień
- Ruch
TransformOrigin
Metoda obiektu towarzyszącego Size.copy została wycofana na rzecz metody kopiowania instancji (Ife290, b/159905651).
Wyskakujące okienka, okna dialogowe i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
Zmiana nazwy TextDirection na ResolvedTextDirection (I3ff38).
Usunięto parametr kierunku układu z bloku miary funkcji Layout(). Kierunek układu jest jednak dostępny w wywołaniu zwrotnym w obiekcie zakresu pomiaru (Ic7d9d).
Refaktoryzacja SelectionHandles w celu ponownego użycia. (I420e0)
Element klikalny został usunięty. Użyj Modifier.clickable (I84bdf)
Tag testowy i semantyka zostały usunięte. Zamiast tego używaj Modifier.testTag i Modifier.semantics (I15ff0, b/158841414)
Przed tą zmianą wtyczka kompilatora Compose w nietrywialny sposób przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli istniał (I5205a, b/158123804).
Aby uniknąć pomyłki z Modifier.testTag, zmieniliśmy nazwę Modifier.tag na Modifier.layoutId. (I995f0)
Pozycje liczb całkowitych w liniach wyrównania zwracane przez Placeable#get(AlignmentLine) nie są już wartościami null. Jeśli wyszukiwana linia wyrównania nie istnieje, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)
Do komponentu AndroidView dodano parametr modyfikatora. (I48a88, b/158746303)
Funkcja Semantics() została wycofana. Zamiast niego użyj Modifier.semantics(). (I72407, b/158841414)
Dodanie funkcji viewModel(), która umożliwia tworzenie lub pobieranie utworzonego już obiektu ViewModel w sposób podobny do tego, jak działa to w przypadku aktywności lub fragmentu (I5fdd1).
Zastąpiono użycie IntPx wartością Int. Zastąpiono IntPxPosition wartością IntOffset. Zastąpiono IntPxSize wartością IntSize. (Ib7b44)
Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o rozmiarach, ujednolić użycie klasy Size zamiast PxSize. Daje to korzyści klasy wbudowanej, która wykorzystuje typ long do spakowania 2 wartości zmiennoprzecinkowych reprezentujących szerokość i wysokość. (Ic0191)
Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, zamiast klasy PxPosition używaj klasy Offset. Daje to korzyści klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących przesunięcia x i y. (I3ad98)
Zastąpiono użycie klasy Px w różnych klasach kompozycji w ramach dużego refaktoryzacji, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych. Usunięto w całości klasę Px (I3ff33)
W ramach dużych zmian w kodzie zastąpiono użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (I086f4).
W ramach dużych zmian w kodzie zastąpiono użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (Id3434).
W ramach dużych zmian w kodzie zastąpiono użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I97a5a).
TestTag został wycofany. Zamiast tego użyj Modifier.testTag. (If5110, b/157173105)
Domyślna implementacja ParentDataModifier#modifyParentData, która nic nie robiła, została usunięta – była ona równoznaczna z nieimplementowaniem interfejsu. (I0deaa)
Wycofana wcześniej funkcja ScaleFit została usunięta. Zamiast niej użyj ContentScale. (Ifbc5b)
Zastąpiono użycie klasy Px w różnych klasach Compose w ramach dużego refaktoryzacji, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (I19d02).
Dodano komponent DropdownMenu w ui-material, czyli implementację menu Material Design. (I9bb3d)
Usunięto wycofaną funkcję LayoutTag(). Zamiast niej używaj funkcji Modifier.tag(). Usunięto wycofany modyfikator Modifier.matchParent(). Zamiast niego używaj modyfikatora Modifier.matchParentSize(). (If8044)
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (I57bff).
Wycofanie funkcji Modifier.semantics zostało cofnięte, aby umożliwić używanie jej w komponentach wyższego poziomu. (I4cfdc)
Ujednoliciliśmy implementacje CanvasScope, więc teraz są tylko DrawScope i ContentDrawScope. Zmieniliśmy nazwę CanvasScope na DrawScope. Zaktualizowano DrawScope, aby implementować interfejs Density i udostępniać LayoutDirection. Usunięto podklasę DrawScope w ContentDrawScope. Zaktualizowano Painter i PainterModifier, aby nie utrzymywały już właściwości RTL, ponieważ DrawScope już ją udostępnia bez ręcznego podawania (I1798e).
DoubleTapGestureFilter odróżnia teraz SingleTapGestureFilter w całym drzewie. (If92b1)
Zaktualizowano interfejs Alignment API i dodano obsługę wyrównania bezwzględnego (które nie jest automatycznie odzwierciedlane w kontekście RTL) (I38cd3).
Zmieniono interfejs API modyfikatorów DrawLayer: outlineShape zmieniono na shape i ma on teraz domyślną wartość RectangleShape oraz nie może mieć wartości null; clipToOutline zmieniono na clip; usunięto clipToBounds, ponieważ jest to to samo co clip == true z RectangleShape (I7ef11, b/155075735).
Zaktualizowane interfejsy API Compose wyższego poziomu, które udostępniają Canvas, aby zamiast tego udostępniać CanvasScope. Dzięki temu konsumenci nie muszą utrzymywać własnych obiektów Paint. Użytkownicy, którzy nadal potrzebują dostępu do elementu Canvas, mogą użyć metody drawCanvas rozszerzenia, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania za pomocą bazowego elementu Canvas. (I80afd)
Zmieniono interfejs API lambda końcowego WithConstraints. Zamiast 2 parametrów ma teraz zakres odbiorcy, który oprócz ograniczeń i kierunku układu zapewnia właściwości minWidth, maxWidth, minHeight i maxHeight w dp (I91b9a, b/149979702).
Zmieniono nazwę LayoutModifier2 na LayoutModifier. (Id29f3)
Usunięto wycofany interfejs LayoutModifier. (I2a9d6)
Funkcje pomiarów wewnętrznych w kompozycjach i modyfikatorach kompozycji 2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia interfejs API zapytań o wartości wewnętrzne z niejawnym kierunkiem kompozycji. (Id9945)
Elementy podrzędne Layout i LayoutModifier można mierzyć w innym kierunku układu. (Ibd731)
Dodano nowy modyfikator Modifier.zIndex(), który umożliwia kontrolowanie kolejności rysowania elementów podrzędnych w tym samym układzie nadrzędnym. Właściwość elevation w DrawLayerModifier została zmieniona na shadowElevation i nie kontroluje już kolejności rysowania. Zmieniono kolejność parametrów funkcji DrawShadow: pierwszy to teraz elevation, a drugi to shape z domyślnym RectangleShape. (I20150, b/152417501)
Usunięto funkcje onSizeChange i onPositionChange w komponencie Owner. (I5c718)
Dodano Constraints2, kopię Constraints, która obsługuje tylko wartości Int connstraints, a nie IntPx. IntPx zostanie usunięty, a wszystkie ograniczenia dotyczące liczb całkowitych będą traktowane jako piksele, tak jak w przypadku Androida.
- Dodaliśmy też IntSize, który ostatecznie zastąpi IntPxSize. (I4b43a)
Umożliwiono tworzenie instancji klasy Alignment z dowolnymi wartościami. Dodano wyrównania 1D. (Ia0c05)
Funkcja alignToSiblings akceptuje teraz obiekt Measured zamiast Placeable. (I5788d)
-
- Zmiana nazwy ScaleFit na ContentScale
- Przeniesiono ContentScale z modułu ui-graphics do modułu ui-core, aby znajdował się w tym samym module co interfejs API Alignment.
- Zmieniono nazwę FillMaxDimension na Crop
- Zmieniono nazwę FillMinDimension na Fit
- Zmiana nazwy z Fit na Inside, aby lepiej pasowała do funkcji
- Odpowiedniki ImageView.ScaleType
- Dodano dokumentację wskazującą, że połączenie opcji Przytnij i Wyrównanie.Środek daje taki sam efekt jak ImageView.ScaleType.CENTER_CROP, a opcja Dopasuj używana z opcją Wyrównanie.Środek daje taki sam efekt jak ImageView.ScaleType.FIT_CENTER. Opcja Wewnątrz używana z opcją Wyrównanie.Środek daje taki sam efekt jak ImageView.ScaleType.CENTER_INSIDE.
Obsługa kierunku pisania od prawej do lewej w przypadku modyfikatorów rysowania. (I0aaf9)
Udostępniliśmy interfejs API do tworzenia widoków Androida z kodu XML. Więcej informacji znajdziesz w demonstracji ViewInCompose. (I42916)
Ulepszenie interfejsu DrawModifier API:
- Zmieniono zakres odbiornika funkcji draw() na ContentDrawScope
- Usunięto wszystkie parametry funkcji draw()
- DrawScope ma taki sam interfejs jak poprzednia aplikacja CanvasScope.
- ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067)
Dodano positionInParent i boundsInParent dla LayoutCoordinates. (Icacdd, b/152735784)
W przypadku funkcji DrawLayerModifier i drawLayer() domyślne wartości clipToBounds i clipToOutline to teraz false. (I0eb8b, b/152810850)
Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)
Dodano LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac).
Zastąpienie operatora modyfikatora plus funkcjami rozszerzenia fabryki (I225e4)
Dodano właściwości translationX/Y, aby obsługiwać przesunięcie listy wyświetlania poleceń rysowania dla danej warstwy. Jest to przydatne do przenoszenia treści w odpowiedzi na animacje lub zdarzenia dotknięcia. (I8641c)
Dodano parametry pivotX i pivotY do interfejsów API warstwy, aby obsługiwać obracanie i skalowanie wokół określonego punktu na warstwie (Icf7c3).
Dodaj modyfikatory OnPositionedModifier i OnChildPositionedModifier, aby zastąpić funkcje kompozycyjne OnPositioned i OnChildPositioned. (I2ec8f)
Dodano LayerModifier, modyfikator, który umożliwia dodanie RenderNode do Layout. Umożliwia ustawianie przycinania, krycia, obrotu, skalowania i cieni. Zastąpi to RepaintBoundary. (I7100d, b/150774014)
Umożliwiliśmy propagowanie kierunku układu z węzła układu nadrzędnego do węzłów podrzędnych. Dodano modyfikator kierunku układu. (I3d955)
Komponent stosu obsługuje kierunek od prawej do lewej (Ic9e00)
Początkowa obsługa układu od prawej do lewej w układzie Compose (Ia5519)
Parametry Density i DensityScope zostały połączone w jeden interfejs. Zamiast ambientDensity() możesz teraz używać DensityAmbient.current. Zamiast withDensity(density) używaj tylko with(density) (I11cb1).
Zmieniono LayoutCoordinates, aby providedAlignmentLines było zbiorem zamiast mapy, a LayoutCoordinates implementowało operatora get() zamiast pobierania wartości. Ułatwia to modyfikatorom modyfikowanie co najmniej jednej wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
W przypadku elementu LayoutCoordinates nie ma już właściwości position. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obrotu ani skalowania. Zamiast tego deweloperzy powinni używać parentCoordinates i childToLocal() do obliczania przekształcenia z jednego LayoutCoordinate na inny.
W przypadku właściwości size w klasie LayoutCoordinates używany jest typ IntPxSize zamiast PxSize. Układy korzystają z rozmiarów w pikselach, więc wszystkie rozmiary układów powinny być liczbami całkowitymi, a nie wartościami zmiennoprzecinkowymi. (I9367b)
Ulepszenia interfejsu API ograniczeń (I0fd15)
Utworzono interfejs CanvasScope API, który otacza obiekt Canvas, aby udostępnić bezstanowy, deklaratywny interfejs API do rysowania. Przekształcenia są zawarte w odpowiednim zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wstawki. Nie wymaga to od użytkownika utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.
- Dodaliśmy CanvasScopeSample, a także zaktualizowaliśmy aplikację w wersji demonstracyjnej, aby zawierała demonstrację grafiki deklaratywnej (Ifd86d).
Usunięto nieużywany interfejs MaskFilter API, ponieważ jest on rzadko używany i w większości przypadków nie jest zoptymalizowany pod kątem akceleracji sprzętowej (I54f76).
RectangleShape przeniesiono z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Zastąpiono wszystkie użycia koloru dopuszczającego wartość null w interfejsie API kolorem niedopuszczającym wartości null i zamiast wartości null użyto Color.Unset (Iabaa7).
Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter, aby obsługiwać rysowanie podsekcji bazowego elementu ImageAsset (I0ea9e)
Dodano kolor „Unset Color” (Nieskonfigurowany kolor), aby reprezentować nieskonfigurowaną wartość bez obramowania kolorów. (If901a)
Dodano metody rozszerzenia Canvas.rotate i Canvas.scale, aby korzystać z opcjonalnych współrzędnych punktu obrotu w przypadku przekształceń. Domyślnie są one umieszczane w lewym górnym rogu bieżącego tłumaczenia obszaru roboczego.
Przeniesiono też Canvas.rotateRad, aby był metodą rozszerzającą dla zachowania spójności (Ibaca6).
Utworzono interfejs PixelMap API, który umożliwia wysyłanie zapytań o informacje o pikselach z obiektu ImageAsset. (I69ad6)
Zmieniono nazwy funkcji toFrameworkRect/toFrameworkRectF na toAndroidRect/toAndroidRectF, aby były zgodne z konwencją nazewnictwa konwersji obiektów między interfejsami API Compose i platformy Androida, na których są oparte. Zaktualizowano też dokumentację tych interfejsów API (I86337).
Dodano interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API w przypadku grafiki wektorowej. Wynikiem subkompozycji jest obiekt VectorPainter zamiast DrawModifier. Wycofano poprzednie funkcje kompozycyjne DrawVector na rzecz VectorPainter.
Zmiana nazwy interfejsu Image(Painter) API na PaintBox(Painter). Utworzenie komponentu Vector, który działa jak komponent Image, ale zamiast ImageAsset używa VectorAsset (I9af9a, b/149030271).
Zmieniliśmy nazwę Image na ImageAsset, aby lepiej odróżnić dane Image od nadchodzącego komponentu Image, który będzie używany do tworzenia układu i rysowania treści. _Body:Utworzono metodę rozszerzającą w klasie android.graphics.Bitmap, Bitmap.asImageAsset(), aby utworzyć instancję klasy ImageAsset przydatną do łączenia tradycyjnego tworzenia aplikacji na Androida z platformą Compose (Id5bbd).
Dodano TextDirection.Content (I48f36)
Dodano operator TextDecoration.plus (I0ad1a)
Usunięto
Forcez wartości wyliczeniowych TextDirectionAlgorithm (Icc944)Zmiana nazwy TextDirectionAlgorithm na TextDirection (I75ce8)
Implementuje LongPressAndDrag na potrzeby zaznaczania w polu tekstowym. (I17919)
Dodano funkcję AnnotatedString.getStringAnnotations, która zwraca wszystkie adnotacje w zakresie. (I1fa00)
Zmieniono nazwę pakietu dla Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c)
Kursor w polu tekstowym ma animację migania (Id10a7)
Zmiana w interfejsie API: zmiana nazwy AnnotatedString(builder: Builder) na annotatedString(builder: Builder). (Ia6377)
Zmiana w interfejsie API: element AnnotatedString.Item został zmieniony na AnnotatedString.Range. (I2d44d)
Zmień nazwę funkcji AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)
Teraz można ukrywać i wyświetlać klawiaturę ekranową za pomocą elementu SoftwareKeyboardController, który jest dostarczany przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).
Dodaliśmy operator plusa do (Text/Paragraph/Span)Style, który przekazuje wywołanie do funkcji merge(). (Ia1add)
Funkcja FontWeight.lerp nie przyciąga już wartości. Nadal jest to klasa danych. (I521c2)
Konstruktor FontWeight jest teraz publiczny i nie jest już klasą danych. (Id6b1f)
Dodanie funkcji getLineStart, getLineEnd, getEllipsisOffset i getEllipsisCount do TextLayoutResult (Ibc801)
Moduł ui-text został zmieniony na ui-text-core (I57dec)
Usunięto nieużywaną klasę Size, ponieważ w module ui-geometry znajduje się zduplikowana klasa Size, która jest używana. (I1b602)
Dodano AdapterList, komponent listy przewijanej, który tworzy i układa tylko widoczne elementy. Obecnie znane problemy obejmują to, że jest on tylko pionowy i nie obsługuje w pełni wszystkich przypadków zmian w jego elementach podrzędnych. (Ib351b)
Dodaj parametry dopełnienia, obramowania, kształtu i tła do komponentu Box (I05027, b/148147281)
Poprawki błędów
- Wywołanie zwrotne onFocusChange w polach tekstowych zostało zmienione na onFocusChanged (Ida4a1)
- Komponenty VerticalScroller i HoriziontalScroller zostały wycofane. Użyj komponentów ScrollableColumn i ScrollableRow, aby wbudować funkcje z zachowaniem i parametrami Column/Row, lub użyj modyfikatorów Modifier.verticalScroll i Modifier.horizontalScroll we własnym elemencie. Podobnie ScrollerPosition został wycofany na rzecz ScrollState' (I400ce, b/157225838, b/149460415, b/154105299).
runOnIdleComposeNazwa została zmieniona narunOnIdle(I83607)- Zmieniliśmy nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie interfejsy API findXYZ zostały zmienione na onNodeXYZ. Wszystkie interfejsy API doXYZ zostały zmienione na performXYZ. (I7f164)
- Interfejs Compose można teraz tworzyć w elementach ViewGroup bez konieczności tworzenia nowej kompozycji. Przykład znajdziesz w sekcji ViewInteropDemo. (I9ab0b, b/160455080)
- Dodano funkcje sortWith i removeRange do klasy MutableVector (Icccf7)
- Zaimplementuj uchwyty przeciągania zaznaczenia, aby zmienić zaznaczenie w przypadku elementu TextField. (I27032)
- Usunięto klasę wbudowaną Shader, która opakowywała klasę oczekiwaną NativeShader. Zmieniono nazwę klasy NativeShader na Shader. Klasa wbudowana Shader nie wnosiła niczego wartościowego do interfejsu API i była klasą wbudowaną, więc używaj bezpośrednio klasy NativeShader. (I25e4d)
Zmodyfikowano klasę PainterModifier, aby nie zapewniała już skalowania na podstawie podanych ograniczeń i parametru ContentScale. Implementacje Painter muszą samodzielnie skalować rysowaną zawartość na podstawie podanego rozmiaru DrawScope, w którym rysują.
Rozwiązaliśmy problem polegający na tym, że pamięć podręczna VectorPaintera bitmap miała domyślny rozmiar zamiast rozmiaru podanego do rysowania.
Zaktualizowano ImagePainter, aby skalował zawartość zamiast polegać na PainterModifier. (I6ba90)
dodanie funkcji najwyższego poziomu withFrameNanos do określania czasu animacji (Ie34c5);
Adnotacja @Untracked została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e)
Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Funkcje kompozycyjne TextField, FilledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Zamiast tego używaj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
Rozwiązaliśmy problem, który powodował awarię podczas wysyłania danych wejściowych wskaźnika, jeśli filtry PointerInputFilters zostały usunięte za pomocą subkompozycji podczas wysyłania. Zostało to już rozwiązane. (I1f48b, b/157998762)
Rozwiązaliśmy problem, który powodował awarię podczas wysyłania danych wejściowych wskaźnika, jeśli filtry PointerInputFilters zostały usunięte za pomocą podkompozycji podczas wysyłania. Zostało to już rozwiązane. (Iab398, b/157998762)
Zmieniliśmy klasę Radius, aby była klasą wbudowaną. Usunięto metody tworzenia komponentu towarzyszącego na rzecz konstruktora funkcji z parametrem domyślnym, aby promień wzdłuż osi Y był zgodny z obowiązkowym parametrem promienia wzdłuż osi X.
Zaktualizowano DrawScope.drawRoundRect, aby używać jednego parametru Radius zamiast 2 oddzielnych wartości zmiennoprzecinkowych dla promienia wzdłuż osi X i Y (I46d1b).
Funkcja kompozycyjna Recompose nie jest już przydatną abstrakcją. Większość rekompozycji powinna następować w wyniku przypisań MutableState. W innych przypadkach zalecamy użycie funkcji
invalidate, aby wywołać ponowne skomponowanie bieżącego zakresu. (Ifc992)W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (Iede0b).
Zmienia strategię generowania kodu kompilatora Compose. Przed zmianą kompilator funkcji kompozycyjnych przekształcał wywołania funkcji kompozycyjnych. W związku z tą zmianą przekształcamy treść funkcji typu „composable”, a miejsce wywołania pozostawiamy w większości przypadków bez zmian.
Oznacza to, że większość logiki komunikującej się z środowiskiem wykonawczym funkcji kompozycji jest wykonywana na początku treści funkcji, a nie w miejscu wywołania.
Powinna to być zmiana zgodna ze źródłem we wszystkich zastosowaniach funkcji Compose. Większość użytkowników Compose nie będzie musiała aktualizować żadnego kodu w wyniku tej zmiany.
Aby to umożliwić, zmieniliśmy sygnaturę JVM wszystkich funkcji kompozycyjnych. Funkcja typu „composable” przyjmująca 1 parametr jest przekształcana w funkcję przyjmującą 3 parametry. Dodatkowe parametry to kompozytor, liczba całkowita „key” i liczba całkowita maski bitowej używana do propagowania metadanych przez wywołania.
Compose przekształca teraz argumenty domyślne w funkcję typu „composable”. Nie wprowadza to dodatkowego syntetycznego przeciążenia domyślnego samej funkcji, więc ta zmiana spowoduje zdefiniowanie mniejszej liczby funkcji.
Znane, celowe zmiany w działaniu wynikające z tej aktualizacji:
- Niektóre połączenia będą pomijane w miejscach, w których wcześniej nie były pomijane.
- Wyrażenia kompozycyjne w wyrażeniach argumentów domyślnych są teraz prawidłowo subskrybowane i obsługiwane.
W ramach tych prac wprowadziliśmy kilka optymalizacji: 1. Wyniki porównań parametrów są propagowane w grafie wywołań do innych funkcji kompozycyjnych. Dzięki temu w czasie działania będzie wykonywanych mniej porównań, zmniejszy się rozmiar tabeli slotów, a także będzie można pomijać więcej funkcji kompozycyjnych, które wcześniej nie były pomijane. Parametry, które w czasie kompilowania są uznawane za „statyczne”, nie są już porównywane ani przechowywane w środowisku wykonawczym. Zmniejsza to liczbę porównań i rozmiar tabeli slotów. 3. Struktura przepływu sterowania w treści funkcji jest używana do minimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli przedziałów i wymaga mniej pracy od środowiska wykonawczego. Nieużywane parametry wysyłania i odbioru funkcji nie są uwzględniane przy określaniu, czy funkcję można pominąć, jeśli nie są używane w treści funkcji.
Większość zmian powodujących niezgodność dotyczyła interfejsów API, które są bezpośrednio używane przez kompilator. Typowe użycie funkcji Compose nie będzie miało na nie wpływu: 1. Usunięto Composer::startExpr 2. Usunięto Composer::endExpr 3. Composer::call został wycofany 4. Usunięto przeciążenia funkcji
key, które nie przyjmują argumentów o zmiennej liczbie. Od teraz używaj wersjivararg. 5. Adnotacja Pivotal została wycofana. Użyjkeyjako zamiennika. 6. Funkcja ScopeUpdateScope::updateScope została zmieniona tak, aby oczekiwała funkcji Function3 zamiast Function1. 7. Funkcje restartableFunction i restartableFunctionN zostały zaktualizowane, aby zawierały dodatkowe parametry czasu kompilacji (I60756, b/143464846).Usunięto wycofane modyfikatory LayoutAlign. (I10877)
Usunięto RepaintBoundary na rzecz DrawLayerModifier (I00aa4)
Komponenty Button, FloatingActionButton i Clickable mają teraz osobny parametr
enabled. Niektóre parametry w elemencie Button zmieniły nazwę lub kolejność. (I54b5a)Zastąpiono ButtonStyle odrębnymi funkcjami i usunięto przeciążenie tekstu (ciągu znaków). Informacje o użyciu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)
Zmiany powodujące niezgodność w interfejsie API ambients. Szczegółowe informacje znajdziesz w logu i dokumentacji
Ambient<T>(I4c7ee, b/143769776).Zmieniono działanie domyślnego parametru TextDirection, aby było określane przez parametr LayoutDirection. Jeśli np. parametr LayoutDirection ma wartość RTL, domyślny parametr TextDirection będzie miał wartość RTL. Wcześniej: TextDirection.ContentOrLtr/Rtl (I4e803)
Poprawka błędu: gdy w obiekcie AnnotatedString zagnieżdżone są waga i styl czcionki, 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ć parametry bezpośrednio: Text(textAlign = TextAlign.Center) (I82768).
Moduł ui-android-text został zmieniony na ui-text-android (I68cbe).