Interfejs tworzenia

Podstawowe komponenty interfejsu Compose potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i dane wejściowe.
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.

GrupaOpis
compose.animationtworzyć animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników;
compose.compilerPrzekształcanie funkcji z adnotacją @Composable i włączanie optymalizacji za pomocą wtyczki kompilatora Kotlin.
compose.foundationTwórz aplikacje w Jetpack Compose za pomocą gotowych elementów składowych i rozszerzaj podstawy, aby tworzyć własne elementy systemu projektowania.
compose.materialTwó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.material3Twó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.runtimePodstawowe elementy modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, do którego kierowany jest wtyczka kompilatora Compose.
compose.uiPodstawowe 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.

Tworzenie nowego problemu

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żywa TextFieldState do przenoszenia stanu. (I6b841, b/556234973)
  • Dodano wspólny interfejs API, aby wyłączyć WindowInsetsRulers globalnie przed utworzeniem pierwszego elementu głównego Compose. Wycofaj parametr Android only ComposeView.disableWindowInsetsRulers() na rzecz parametru common WindowInsetsRulers.disable() (Iadc8f).
  • Dodaje funkcje rozszerzeń PolygonShape.transformed i PolygonShape.scaledToFit w Compose Foundation do przekształcania i dopasowywania kształtów wielokątów. (I3f327)
  • Zmiana nazwy funkcji modyfikatora z LineHeight.Trim.isTrimLastLineBottom() na LineHeight.Trim.trimsLastLineBottom i z LineHeight.Trim.isTrimFirstLineTop na LineHeight.Trim.trimsFirstLineTop (I02211)
  • Dodaliśmy boundsAssertionTolerance do PlatformTestConfig w sekcji ComposeUiTestConfig.platform, co umożliwia testom konfigurowanie domyślnej tolerancji asercji granic na poziomie środowiska lub reguły. (I7819d, b/545673912)
  • BasicTextField przeciążenia, które akceptują parametry value, onValueChange, zostały wycofane. Zamiast niej użyj BasicTextField overload that uses TextFieldState do przenoszenia stanu. (I636bf, b/552879150)
  • Podobnie jak BasicTextField(value, onValueChange), interfejs VisualTransformation został wycofany, ponieważ jest udostępniany tylko w tej wersji TextField. Dotychczasowe przekształcenia powinny zostać przeniesione do OutputTransformation. (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 LazyLayoutCacheWindow i LazyListPrefetchStrategy za pomocą LazyListState zostało wycofane na rzecz przekazywania wartości LazyLayoutCacheWindow do 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 isCrossWindowBlurEnabled w obiekcie WindowInfo, 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 obiektu android.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).
  • compileSdk bibliotek Compose zaktualizowanych do wersji 37.1. Wymaga to przechodniego zaktualizowania compileSdk we wszystkich aplikacjach i bibliotekach korzystających z Compose. (I05b0f)
  • Rozwiązaliśmy problem polegający na tym, że WindowInsetsRulers wstawki IME nie były oznaczane jako animowane podczas przewidywanego przejścia wstecz, oraz problem z imePadding, 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 ComposeView był hostowany w standardowym elemencie ViewGroup na Androidzie. (I80f79)

Wkład zewnętrzny

  • Naprawiono wyciek aktywności, gdy element ComposeView został odłączony i ponownie dołączony w ramach jednej klatki, na przykład gdy zmieniono jego kolejność za pomocą removeView i addView. (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ą BackgroundColor dla Modifier.background (I7eec3, b/518049030)
  • Możesz teraz tworzyć Vertices z istniejących tablic typów prostych. (Ifaba8, b/496412761)
  • VectorPainter będzie teraz udostępniać wewnętrzne zasoby graficzne (ImageBitmap) podczas renderowania tego samego elementu ImageVector w 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ć w ComposeUiFlags.isVectorDrawCacheSharingEnabled. (I35639, b/331283180)
  • Dodaj requestFocusForChildInLocalBounds helper (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)
  • TextFieldState zapisuje i przywraca teraz informacje o stylu tekstu. AnnotatedString.Annotation.Saver jest teraz publiczna, co umożliwia zapisywanie i przywracanie obiektów AnnotatedString.Annotation. (I8b533, b/135556699)
  • Wprowadzono adnotacje TestFailurePolicy i TestFailureHandler w ComposeTestConfig, 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, createAndroidComposeRule i createEmptyComposeRule w pakiecie ui-test-junit4 w wersji 2, które przyjmują poszczególne parametry. Użyj przeciążeń akceptujących ComposeUiTestConfig lub przeciążeń bez parametrów, które używają domyślnego ComposeUiTestConfig. Pamiętaj, że domyślny znak ComposeUiTestConfig ustawia początkowy tryb wprowadzania na InputMode.Touch na 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 createComposeRule i createAndroidComposeRule bez argumentów (np.createComposeRule() lub createAndroidComposeRule<MyActivity>()) używają teraz domyślnego parametru ComposeUiTestConfig, który ustawia początkowy tryb wprowadzania na InputMode.Touch na 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)
  • ExposedDropdownMenu jest teraz funkcją rozszerzenia w ExposedDropdownMenuBoxScope, 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, scrimAlpha i windowShape do elementu DialogProperties, a także właściwości blurBehindRadius i scrimAlpha do elementu PopupProperties. Deweloperzy mogą teraz konfigurować rozmycie tła, rozmycie okna i krycie zasłony bezpośrednio w przypadku okien dialogowych i wyskakujących. Ustawienie windowShape umoż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ść variationSettings w interfejsie Font, która domyślnie przyjmuje nową wartość FontVariation.Empty. Zoptymalizowano konstruktor FontVariation.Settings vararg, 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, runAndroidComposeUiTest i AndroidComposeUiTestEnvironment, które przyjmują poszczególne parametry effectContext, runTestContext i testTimeout. Użyj przeciążeń akceptujących ComposeUiTestConfig lub przeciążeń bez parametrów, które używają domyślnego ComposeUiTestConfig. Pamiętaj, że domyślny znak ComposeUiTestConfig ustawia początkowy tryb wprowadzania na InputMode.Touch na 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, runAndroidComposeUiTest i AndroidComposeUiTestEnvironment z samą tylko lambdą końcową używają teraz domyślnej funkcji ComposeUiTestConfig, która ustawia początkowy tryb wprowadzania na InputMode.Touch na 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 @CheckResult do funkcji SemanticsNodeInteraction.isDisplayed() i isNotDisplayed(), 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.isDelayAndroidViewsHandlerCreationEnabled spowoduje, że ViewGroup zawierający AndroidView zostanie utworzony tylko wtedy, gdy zostanie dodany AndroidView, aby zwiększyć skuteczność ComposeView, które nie mają AndroidView. Gdy flaga jest wyłączona, zawierający element ViewGroup jest tworzony i dołączany, gdy element ComposeView jest dołączany do okna. (I306a3, b/524283041)
  • Wprowadzenie coroutineScopeOrNull() w NestedScrollDispatcher, alternatywnego interfejsu API do uzyskiwania dostępu do zakresu nadrzędnej współprogramu wysyłającego. (I18c0f)
  • Zmień clearCallbacks na runAndClearCallbacks, aby mieć pewność, że działania czyszczące są zawsze wykonywane. (If4720, b/526700075)
  • Nazwa ComposeTestConfig została zmieniona na ComposeUiTestConfig, a sam element został przeniesiony z pakietu v2 do pakietu nadrzędnego androidx.compose.ui.test. (I1d2a1, b/504195741)
  • Dodano parametr timeoutMillis (domyślnie 2000 ms) do funkcji SemanticsNodeInteraction.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 na AccessibilityNodeInfo.hintText (Ib65da, b/448376876)
  • Zoptymalizowana rozdzielczość CompositionLocal dzięki dynamicznemu rozwiązywaniu problemów z LocalOwner i LocalAndroidComposeView na żądanie, co można przełączać za pomocą ComposeUiFlags.isMinimalistLocalsEnabled. (I2bf6d)
  • androidx.benchmark ma teraz minSdk na poziomie 24. (Ic2a85)
  • Dodano eksperymentalną flagę isPropagateHideFromAccessibilityToMergingChildrenEnabled do AndroidComposeUiFlags, aby kontrolować propagację hideFromAccessibility do scalania elementów podrzędnych. (Ie41ff, b/483506400)
  • Promowanie interfejsów API ComposeUiTest i powiązanych interfejsów API do testowania (w tym wariantów ComposeTestRule i waitUntil) z wersji eksperymentalnej do stabilnej. (Iaec77, b/471148519, b/485124363)
  • Naprawiono kolejność nawigacji TalkBack w scalonych grupach przechodzenia. W razie potrzeby tę zmianę można cofnąć, wyłączając AndroidComposeUiFlags.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, waitUntilExactlyOneExists i waitUntilDoesNotExist, które nie akceptują wartości useUnmergedTree. 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 tolerance do asercji rozmiaru i pozycji SemanticsNodeInteraction (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() i runOnIdle()) 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 funkcji run*ComposeUiTest i create*ComposeRule, które akceptują obiekt ComposeTestConfig. (Ia3da9, b/267253920, b/504195741)
  • Naprawiono błąd w podglądzie Compose podczas używania PreviewParameterProvider z właściwościami zapytania o media (Posture, PointerPrecision itp.) poprzez zmianę ich podstawowej reprezentacji z String na Int. (Ic8f92, b/489939558)
  • Dodano parametr includeInputText do hasTextExactly i assertTextEquals, 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ć HashMap alokacjom. Wewnętrznie korzysta z funkcji ScatterMap. (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.coroutineScopeOrNull podczas odłączania węzła układu powodował zgłoszenie IllegalStateException zamiast zwrócenia null. (I55634, b/533444810)
  • Zoptymalizowana inicjalizacja na poziomie pliku właściwości klasy wartości najwyższego poziomu compose:ui za 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-graphics w klasach (BlendMode, Color itp.) przez użycie dynamicznych funkcji pobierających. (Iaa86a)
  • Zoptymalizowana inicjalizacja obiektu towarzyszącego klas wartości compose:ui:ui (Key, CompositingStrategy itp.) za pomocą dynamicznych getterów. (I1a340)
  • Zoptymalizowana inicjalizacja obiektu towarzyszącego klas wartości tekstowych compose:ui (TextAlign, TextOverflow, ImeAction itp.) za pomocą dynamicznych getterów. (I776e0)
  • Zoptymalizowano inicjowanie obiektu towarzyszącego compose:ui klas 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, TextUnitType itp.) 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, PointerEventType itp.) za pomocą dynamicznych funkcji pobierających. (Ie35dd)
  • Prawidłowo obsługuj elementy BaselineShift.None i BaselineShift.Unspecified oraz BaselineShift(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() i Trim.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 BasicText i BasicTextField, 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.isTrackpadPinchReinterpretationEnabled domyś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 AndroidComposeTestRule przez 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 AndroidClipboard na potrzeby testowania, aby umożliwić symulowanie implementacji schowka (Ie4d72, b/512924975)
  • Dodaj zgodność wsteczną dla TextAttributewariantówcommitText() i setComposingText(). 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 i CredentialRequestDatapomocnika 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. argument softWrap. 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 zajmuje variationSettings. (I183f2)
  • Stabilizacja właściwości ResourceFont loadingStrategy i metody copy. (I40d84)
  • Stabilne interfejsy API InterceptPlatformTextInput i PlatformTextInputInterceptor. (Id2784)
  • Aby poprawić rozdzielenie platform, funkcje registerIdlingResource i unregisterIdlingResource zostały przeniesione do funkcji rozszerzeń. Może być konieczne zaktualizowanie importów. (I21d3d, b/471148519)
  • Wprowadzono runWithoutImplicitWait do ComposeTestRule i ComposeUiTest, 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ę @PreviewWrapper można teraz stosować do klas adnotacji MultiPreview, co umożliwia deweloperom tworzenie wielokrotnego użytku wstępnie przygotowanych konfiguracji podglądu. (I8ae66, b/511170361)
  • Wprowadza MeshGradientPainter do renderowania gradientów siatkowych. Usunięto Modifier.meshGradient. Zamiast niego używaj MeshGradientPainter z Modifier.paint. MeshGradientRenderer jest 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 isRulerProvided nie jest obserwowana i powinna być optymistyczna w kwestii możliwości podania wartości. Obserwujemy funkcję lambda rulerProvider, 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 komponowalnym MediaPlayer). 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 w StyleScope do 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)
  • DeferredTargetAnimation nie jest już eksperymentalne, usuń zgodę na korzystanie z tej funkcji”.
  • Dodano flagę isClearNestedScrollCoroutineScopeFixEnabled, aby kontrolować poprawkę. (Ibd394, b/505343254)
  • DeferredTargetAnimation nie jest już eksperymentalną funkcją. Zrezygnuj z niej. (I1e4ae, b/500030165)
  • Nowy typ wyliczeniowy do obsługi wyzwalaczy w narzędziach interfejsu (I6e198, b/478807872)
  • ComposeViewContext można utworzyć bez dołączonego widoku referencyjnego. Nadal wymaga to dołączenia widoku odniesienia przed wywołaniem funkcji setContent(). (Id0952)

Poprawki błędów

  • Rozwiązuje problem z nieprawidłowym przywracaniem fokusufocusRestorer, 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 ComposeViewContext zmianie, aby zapewnić szybszy dostęp do ComposeViewContext. (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.NativeClipboard typealias został wycofany. Zamiast niego używaj bezpośrednio android.content.ClipboardManager (Ibc611)
  • Zastąp właściwość Clipboard.nativeClipboard rozszerzeniem Clipboard.nativeClipboardManager, aby uniknąć ujawniania typu platformy w commonMain sourceset 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 MeshGradient Modifier. (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 mediaQuery i derivedMediaQuery, aby zwracały typ ogólny zamiast Boolean, 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 mediaQuery została przekształcona w funkcję wbudowaną (Ie9457, b/498698350)
  • ComposeViewContext wyszedł 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 KeyboardType opcje, 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ę runWhenIdle i jej wariant zawieszający awaitAndRunWhenIdle w przypadku funkcji ComposeTestRule i ComposeUiTest, 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 LayerOutsets do GraphicsLayer i Modifier.graphicsLayer, co może zwiększyć wizualne granice warstwy poza jej zmierzony rozmiar. Można tego użyć, aby uniknąć domyślnego zachowania clipToBounds, 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.isForceChildLayoutAfterMeasurementEnabled to „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 isVirtual do LayoutInfo (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 jak RecyclerViews, 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 compileSdk do interfejsu API 37. Oznacza to, że podczas korzystania z Compose wymagana jest minimalna wersja AGP 9.2.0. (Id45cd, b/413674743)
  • Ustawienie ContentDataType.None w 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 PreviewWrapper w celu zachowania spójności (I62659, b/490085948)
  • ComposeViewContext umożliwia tworzenie ComposeView bez dołączania do hierarchii widoków. Użyj AbstractComposeView.createComposition(composeViewContext), aby rozpocząć pisanie bez dołączania ComposeView. (I46e6f)
  • Dodano delayMillis do interfejsów API testowania trackpada na potrzeby panEnd i scaleEnd (If80fe).

Poprawki błędów

  • Clipboard i ClipboardManager wysył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 = false prawidł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 windowToken w oknie Jetpack Compose Dialog (Ic7728)
  • Dodaliśmy obsługę niestandardowych elementów windowToken i windowType w wyskakujących okienkach Jetpack Compose. (I0a04f)
  • Przedstaw interfejs PreviewWrapper i dostawcę adnotacji. Dzięki temu deweloperzy będą mogli bezproblemowo dodawać do podglądów niestandardowe zachowania. (I29f54, b/484306729)
  • Gdy wartość AndroidComposeUiFlags.isSharedFontEnabled to „true”, instancje obiektów związane z czcionką, takie jak FontLoader i FontFamilyResolver, mogą być udostępniane w instancjach ComposeView w ramach ComposeViewContext. (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 windowType w DialogProperties deweloperzy mogą teraz wyświetlać okna dialogowe w oknach nakładkowych. (I7c504, b/478214962)
  • Zmienia nazwy właściwości PointerInputChange i HistoricalChange, 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.Pan na PointerEventType.PanStart, PointerEventType.PanMove i PointerEventType.PanEnd. Podobnie PointerEventType.Scale jest podzielona na PointerEventType.ScaleStart, PointerEventType.ScaleChange i PointerEventType.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.isSharedHapticsEnabled ma wartość true, ComposeViewContext zawiera instancję kontrolera haptycznego. (Icd79a)
  • Wprowadziliśmy eksperymentalne interfejsy API mediaQuery,derivedMediaQuery i UiMediaScope (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.dropShadow i Modifier.innerShadow o 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 ComposeView w 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ż znak TextCompositionRange, 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.areWindowInsetsRulersEnabled została zastąpiona interfejsem ComposeView.disableWindowInsetsRulers() API. (Idcdb4, b/455590696)
  • Przeniesiono eksperymentalną flagę funkcji dostępną tylko na Androidzie isAccessibilityShowOnScreenNestedScrollingEnabled do (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.isSharedClipboardManagerEnabled ma wartość „prawda”, instancje związane ze schowkiem można udostępniać w ComposeViews za 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.isSharedWindowInfoEnabled przeniesie informacje WindowInfo do ComposeViewContext. Wyłączenie flagi pozostawia WindowInfo pod kontrolą AndroidComposeView (I3b364)
  • Typowe struktury w ComposeView zostaną przeniesione na dysk współdzielony ComposeViewContext. To pierwsza zmiana, która przenosi CoroutineContext do ComposeViewContext. Gdy AndroidComposeUiFlags.isSharedComposeViewContextEnabled ma 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

Wkład zewnętrzny

  • androidx.compose.ui.graphics.NativePaint typealias został wycofany. Zamiast niego używaj bezpośrednio android.graphics.Paint (I6303c, b/477394763)
  • Zastąp rozszerzenie Paint.asFrameworkPaint() rozszerzeniem Paint.nativePaint, aby uniknąć ujawnienia typu platformy w commonMain ź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 z runCurrent() 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.accessibilityActionShowOnScreen z 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 2 run*ComposeUiTest i create*ComposeRule domyślnie korzystają teraz z StandardTestDispatcher. Aby nadal korzystać z UnconfinedTestDispatcher, 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. Gdy ComposeUiFlags.isSharedComposeViewContextEnabled ma 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 ComposeView nie 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 do PopupPositionProvider, 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 MultiModalInjectionScope są już stabilne. Obejmuje to elementy performKeyInput i performRotaryScrollInput oraz 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.performTrackpadInput i MultiModalInjectionScope.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 findNearestAncestor wykrywa 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 TextEntryKey dla ANI#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 elementu LazyColumn, 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żywanie Modifier.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, aby onRemeasured() oddzwonił. Jeśli nie potrzebujesz innych wywołań zwrotnych, używaj bezpośrednio tego interfejsu zamiast bardziej ogólnego interfejsu LayoutAwareModifierNode. (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 do PopupPositionProvider, 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 visibilityChanged z wartością „fałsz”, gdy wartość minDurationMs jest 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, FontSynthesis i valueOf zwracają teraz błąd IllegalArgumentException, 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, createAndroidComposeRule i createEmptyComposeRule, które akceptują parametr effectContext, są stabilne, a wartość domyślna tego parametru to EmptyCoroutineContext. (If400c, b/450540702)
  • Nazwa UnplacedStateAwareModifierNode została zmieniona na UnplacedAwareModifierNode (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 jak LayoutCoordinates.positionInRoot(), korzystają z buforowanych przesunięć, które mamy już w RectManager, zamiast przechodzić przez całe drzewo przy każdym wywołaniu. (Ieaadc)

Poprawki błędów

  • PlaceholderSpan prawidł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

  • UiModes zmieniono 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ą onAutofillText jako 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.onRetained i dodaliśmy element RetainObserver.onUnused, który jest odpowiednikiem elementu RememberObserver.onAbandoned. (Ia6fc5)
  • Dodano onVisibilityChangedNode(), które generuje Modifier.Node używane przez Modifier.onVisibilityChanged() za pomocą delegowania, co pozwala rozszerzyć tę funkcję w niestandardowym Modifier.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.invalidateLayoutForSubtree na DelegatableNode.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.skipToLookaheadSize korzysta teraz z domyślnie włączonej funkcji lambda, która włącza pomijanie rozmiaru tylko wtedy, gdy aktywna jest wspólna zmiana, tak samo jak Modifier.skipToLookaheadPosition. (Ibe0f5, b/432485585)
  • ComposeUiFlags.isOutOfFrameDeactivationEnabled zostaje usunięta, a ta funkcja jest teraz zawsze włączona. (I421ed)
  • Przeniesienie funkcji fabrycznych do tworzenia instancji FillableData do 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ądarkami FocusRequester.requestFocus() i FocusRequesterModifierNode.requestFocus(). Jeśli nie potrzebujesz takiego działania, ustaw w aplikacji wartość ComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabled na 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 FillableData API. val dateMillisValue: Long dodano w celu pobierania informacji o dacie, a odpowiedni konstruktor FillableData(dateMillisValue: Long) dodano w celu tworzenia instancji FillableData na podstawie daty. (Id072a)

Wkład zewnętrzny

  • Wprowadzono obiekt UiModes, aby deklarować stałe używane do adnotacji UiMode (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 w FillableData oraz konstruktory fabryczne do tworzenia instancji logicznych i list FillableData, które są tłumaczone na AutofillValue platformy. 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() i isInHiddenAccessibilitySubtree(). (I9f5a1)
  • Dodano runCurrent() do MainTestClock, aby uruchamiać wszystkie zaległe zadania w harmonogramie bazowym. Ma to na celu umożliwienie przeprowadzania testów na StandardTestDispatcher, 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ąc ComposeTestRule i przekazując do niego StandardTestDispatcher. Domyślnie testy są uruchamiane na UnconfinedTestDispatcher, w którym to przypadku nigdy nie trzeba wywoływać funkcji runCurrent().
  • 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łasny StandardTestDispatcher i dodając go do effectContext podczas tworzenia ComposeTestRule (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 RetainScopes uwzględniające cykl życia. Domyślne działanie będzie teraz zachowywać wartości retain w przypadku zmian konfiguracji. (Id4a09, b/177562901)

Wkład zewnętrzny

  • Dodaje możliwość obliczania przez VelocityTracker prę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 ComposeView bę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 interfejsu AbstractComposeView.isClearFocusOnPointerDownEnabled API. (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 LayoutCoordinates LookaheadScope. (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() do DelegatableNode, 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ę @CheckResult do funkcji wyszukiwania i selektora SemanticsNode, 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 w MouseInjectionScope oraz flagę do kontrolowania nowego działania o nazwie isMouseWheel1DAxisLockingEnabled (I136df).
  • Dodaj DeviceConfigurationOverrides dla typu i stanu klawiatury, typu i stanu nawigacji, stanu ekranu dotykowego oraz typu trybu interfejsu (I282f0).
  • Dodano nowy LineHeightStyle.Mode o nazwie Tight. Ten tryb pomaga wymuszać mniejsze wysokości wierszy, nawet jeśli mogą one obcinać wyższe glify. (Id3849)
  • BaselineShift ma teraz wartość „Nieokreślony”, aby zapobiec boksowaniu. BaselineShift, Hyphens, LineBreak, TextAlign i TextDirection mają teraz isSpecified funkcje pomocnicze. Hyphens, TextAlign, TextDecoration i TextDirection mają teraz metody valueOf() 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 flagi ComposeUiUnitFlags.isDpCompareToChanged na wartość false przywróci poprzednie działanie funkcji Dp.compareTo(), w którym porównywanie wartości Unspecified z wartościami mniejszymi i większymi nie zawsze zwraca wartość false, a funkcja compareTo() z wartością Unspecified działa tak samo jak funkcja Float.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 AndroidComposeViews podczas przejścia. (I2e23e, b/340894487, b/287484338)
  • Naprawia błąd koloru podczas używania obiektu rysowalnego wektorowo, który używa jednego koloru, a fillColor nie jest ani całkowicie nieprzezroczysty, ani całkowicie przezroczysty. (I3b041, b/328677973)
  • Rozwiązuje problem polegający na tym, że ikony wczytywane za pomocą painterResource z kolorami specyficznymi dla motywu nie były aktualizowane po zmianie motywu. (I85ea0, b/424416571)
  • Wprowadzenie semantyki onFillData i fillableData (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 onLayoutRectChanged nie zawsze były wywoływane, gdy debounceMillis nie 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/onLayoutRectChanged nie 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() i onLayoutRectChanged() prawidłowo obsługują teraz układy nadrzędne, używając placeWithLayer() do umieszczania elementów podrzędnych. (Ia05ac9)
  • W przypadku Modifier.onVisibilityChanged() i onLayoutRectChanged() 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 fillColor nie 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.properties wersji android.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 graphicsLayer implementują teraz interfejs SemanticsModifierNode. Może to spowodować dodanie nowych SemanticsNodes do 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, onSibling i 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 dodanie testTag bezpoś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ą painterResource z 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 onLayoutRectChanged są 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 onLayoutRectChanged z 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 dragAndDropSource elementy w LazyList. 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 WindowInsets nie narusza treści ComposeView, wartości WindowInsetsRulers nie 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 graphicsLayer implementują teraz SemanticsModifierNode. Może to spowodować dodanie nowych elementów SemanticsNodes do 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, onSibling i 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 dodanie testTag bezpoś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 ShadowContext na interfejs zamknięty (I3ce40)
  • Dodaje sposób tworzenia zdarzenia dotyku pośredniego w różnych modułach (na potrzeby testowania) (I22e4c).
  • UstawiaIndirectTouchEvent.nativeEvent jako eksperymentalną. (I6fda5)
  • Wprowadza zmiany w zestawie interfejsów API na podstawie opinii rady ds. API. (Ibf378)
  • Usuń stałą FrameRateCategory.NoPreference. Zmień nazwę Modifier.requestedFrameRate na Modifier.preferredFrameRate. (I2f976)
  • WindowInsetsRulers: zmieniono wartość w kolumnie „rulersIgnoringVisibility” na maksymalną. Zmieniono funkcję getDisplayCutoutBounds(), aby była funkcją rozszerzenia funkcji PlacementScope. Wartość WindowInsetsAnimationProperties została zmieniona na WindowInsetsAnimation, a wartość getAnimationProperties() została zmieniona na getAnimation(). (I3816f)
  • Zmieniono klasę ShadowParams na Shadow (I11cca)
  • Zmiana pakietu interfejsu API liczby klatek z androidx.compose.ui.ui na androidx.compose.ui (I8994e)
  • Zmieniono InsetsRulers, aby był w kodzie wspólnym o nazwie WindowInsetsRulers. Uprościliśmy interfejs API, aby wszystkie wstawki miały wartość WindowInsetsRulers. Wyodrębniono właściwości animacji inne niż linijki do klasy AnimationProperties. Usługa WindowInsetsRulers.innermostOf() może służyć do łączenia wielu WindowInsetsRulers. (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 isGetFocusedRectReturnEmptyEnabled został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.isRemoveFocusedViewFixEnabled i wycofano flagę. (I50328)
  • Wprowadzamy nową platformę cieni, którą można dostosowywać. Obejmuje to DropShadowPainter i InnerShadowPainter, a także zależności DropShadow/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 CompositeShader i CompositeShaderBrush, 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 = false i usePlatformDefaultWidth = false mogą zajmować obszar wycięcia w ekranie. (I9e975)
  • Rozwiązaliśmy błąd, który powodował, że zielony wskaźnik ostrości TalkBack nie 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.isGetFocusedRectReturnEmptyEnabled powoduje, że jeśli w ComposeView nie 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 znakach ComposeView i requestFocus(). (Ibd0e2, b/369256395)
  • Wprowadź flagę isNestedScrollDispatcherNodeFixEnabled. (I0d24a)
  • Zmień nazwę DialogProperties' dialogContentTitle na windowTitle (Ibd27b)
  • Wprowadzono modyfikatory Modifier.onFirstVisible i Modifier.onVisibilityChanged, które są modyfikatorami wysokiego poziomu opartymi na modyfikatorze Modifier.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 API RelativeLayoutBounds, 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ń setDiagnosticStackTraceEnabled na eksperymentalne, aby uwzględnić przyszły rozwój tej funkcji. (I11db3)
  • Wprowadź interfejsy API Modifier.scrollable2D, Scrollable2DState i 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() i fromColorLong(). (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 dialogContentTitle do DialogProperties, 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 VelocityTracker w DragGestureNode. Można to kontrolować za pomocą nowej flagi isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled.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.properties wersji android.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 InnerRectRulers i OuterRectRules na metody. Usunęliśmy parametr name z publicznego interfejsu API RectRulers. DerivedRulers jest teraz opcją konstruktora w przypadku linijek pionowych i poziomych. Metody MergedHorizontalRulers i MergedVerticalRulers zostały zastąpione metodami minOf i maxOf do generowania instancji. (Iee89f, b/408192133)
  • Wycofaj androidx.compose.ui.LocalSavedStateRegistryOwner na rzecz androidx.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 AndroidViews i dodaliśmy flagę isPointerInteropFilterDispatchingFixEnabled, aby chronić zmiany. (I0e272, b/372055500, b/408002332)
  • FocusRestorer nie 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.OnScrollChanged przez funkcję Tworzenie. To działanie jest wprowadzane pod flagą isOnScrollChangedCallbackEnabled. Wprowadziliśmy też funkcję rozszerzenia DelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286)
  • Środowisko wykonawcze currentCompositeKeyHash zostało wycofane. Użyj w zamian zasady currentCompositeKeyHashCode. 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 MotionEvent na Androidzie. (I17286)
  • Dodaj getChecked() + setChecked(int), wycofaj isChecked + setChecked(boolean) (Iaac9d)
  • Modyfikator graphicsLayer akceptuje teraz blendMode i colorFilter (Iab0e6).
  • Dodano LocalResourceskompozycję lokalną do zasobów zapytania. Wywołanie funkcji LocalResources.current spowoduje ponowne skomponowanie, gdy zmieni się konfiguracja, więc wywołania interfejsów API, takich jak stringResource(), 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 z enableAccessibilityChecks(). (I50aa5)
  • SemanticsNodeInteraction.performTextInputSelection nie jest już eksperymentalny i obsługuje dodatkowy parametr relativeToOriginal, 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 runWithTimingDisabled wartością runWithMeasurementDisabled, która lepiej opisuje działanie – wszystkie dane są wstrzymane. Dodatkowo udostępnij superklasę MicrobenchmarkScope, ponieważ ponowne zadeklarowanie funkcji runWithMeasurementDisabled w 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:dialogTheme można teraz ustawić tak, aby kontrolować właściwości okna, gdy decorFitsSystemWindows ma 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.2 w pliku gradle.properties, aby uaktualnić wersję Lint bez wpływu na AGP. (I6f2a8)
  • Dodano nową właściwość semantyczną InputText, która rejestruje wartość textfield przed 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żywasz TestRule, i compose:ui:ui-test-junit4-accessibility podczas wywoływania TestRule (I3c318, b/391560768).
  • Dodaliśmy obsługę tworzenia śladów stosu w LaunchedEffect i rememberCoroutineScope (I705c0, b/354163858)

Wkład zewnętrzny

  • Zmiana eksperymentalnej funkcji runComposeUiTest, aby akceptowała blok zawieszenia. Dodano też wycofaną funkcję runComposeUiTest na 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 isGetFocusedRectReturnEmptyEnabled została usunięta, ponieważ funkcja została w pełni zweryfikowana. (Ife722)
  • Flaga ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled powoduje, że jeśli w ComposeView nie 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 ComposeViewi requestFocus(), 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 onLayoutRectChange zgodnie 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 onLayoutRectChanged i LazyLayout d791b11
  • 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ęciu LocalHapticFeedback. 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() i onEnter oraz onExit FocusProperties (I6e667). Teraz możesz podać FocusDirection, gdy dzwonisz pod numer requestFocus. Dodaliśmy interfejs API requestFocus(FocusDirection) zarówno do focusRequester, jak i FocusTargetModifierNode, 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

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 AndroidView został 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 LaunchedEffect do żą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, i compose:ui:ui-test-junit4-accessibility, gdy wywołujesz TestRule (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ć funkcji LocalWindowInfo.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

  • ContextualFlowRow i ContextualFlowColumn został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.
    • FlowRow i FlowColumn mają eksperymentalne przeciążenia wprowadzone w wersji 1.7, które zawierają parametr overflow. 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 ContextualFlowRow można zrealizować za pomocą FlowRow, ale zdajemy sobie sprawę, że nie zawsze jest to możliwe. ContextualFlowRow moż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 zasady SemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)
  • Stare interfejsy API autouzupełniania zostały wycofane. Zamiast tego użyj nowego interfejsu API opartego na semantyce. (I943ff)
  • Przepisz interfejs requestAutofill API, 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 parametrem previouslyFocusedRect (związanym z kierunkiem ogniskowania) pomijał element ComposeView. (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 nagrywasz drawContent() w ten sposób, użyj funkcji rozszerzenia GraphicsLayer#record wewnątrz DrawScope, a nie funkcji składowej w GraphicsLayer. (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 AutofillManager jako klasy abstrakcyjnej. (I0a3b0)
  • Naprawiono kilka problemów związanych z ogniskowaniem, w tym awarie, gdy edytor IME próbuje ustawić fokus na elemencie ComposeView bez elementów, na których można ustawić fokus, zmianę fokusu w elemencie podrzędnym AndroidViews oraz żądanie fokusu pozostawiające element AndroidView. (Ia03c3, b/369256395, b/378570682, b/376142752)
  • Zamień słowo FocusEnterExitScope.cancelFocus() na cancelFocusChange() (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.setContent używa teraz motywu Theme.Material.Light.NoActionBar, aby uniknąć nakładania się elementu ActionBar na treści testowe w przypadku pakietu SDK 35. Aby zrezygnować z tego działania, możesz usunąć zależność od ui-test-manifest i dodać wpis aktywności w pliku AndroidManifest.xml aplikacji testowej dla ComponentActivity z 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.fromHtml obsł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 LayoutNode w przypadku narzędzi. (I26f7f)
  • Właściwość LocalAutofillHighlightColor composition local musi mieć typ Color. (I0e05b)
  • Zachowaj oznaczenie wycofanej funkcji UrlAnnotation i jej metod jako eksperymentalnych. (Ic0021)

Poprawki błędów

  • Naprawiono awarię IndexOutOfBoundsException podczas używania LinkAnnotation w kompozycji BasicText lub 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 BringIntoViewResponderModifierNode do 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) do focusRequester i FocusTargetModifierNode, aby umożliwić ustawianie ostrości w określonym kierunku. (I5d9ec, b/245755256)
  • FocusProperties.enter i FocusProperties.exit zostały zastąpione przez onEnter i onExit, które używają zakresu odbiorcy zamiast parametru FocusDirection. (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 @Experimental z 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).
  • LocalHapticFeedback udostępnia teraz domyślną implementację HapticFeedback, gdy interfejs Vibrator API wskazuje, że haptyka jest obsługiwana. Do HapticFeedbackType dodano te elementy: Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. Komponenty Wear Compose, które można długo klikać, takie jak Button, IconButton, TextButton i Card, teraz wykonują LONG_PRESS wibracje, gdy podano procedurę obsługi długiego kliknięcia. (I5083d)
  • Usuwa OverscrollConfiguration i LocalOverscrollConfiguration oraz dodaje rememberPlatformOverscrollFactory, aby utworzyć instancję domyślnej implementacji przewijania poza krawędź lub dostosować jej parametry. Aby wyłączyć przewijanie poza krawędź, zamiast LocalOverscrollConfiguration provides null użyj LocalOverscrollFactory provides null. Aby zmienić kolor lub wypełnienie efektu poświaty, zamiast LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) użyj LocalOverscrollFactory 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żyj enableAccessibilityChecks(). (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.isSemanticAutofillEnabled na true w onCreate i 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.onRectChanged API, który umożliwia subskrybowanie pozycji i rozmiaru elementu LayoutNode względem elementu głównego, okna lub ekranu. Interfejs API rozwiązuje wiele przypadków użycia, które obsługuje istniejący modyfikator onGloballyPositioned, 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() i cancel(), 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.onRectChanged API, który umożliwia subskrybowanie pozycji i rozmiaru elementu LayoutNode względem elementu głównego, okna lub ekranu. Interfejs API rozwiązuje wiele przypadków użycia, które obsługuje istniejący modyfikator onGloballyPositioned, 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 AnnotatedString są 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 TextField podczas 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 decorFitsSystemWindows na 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#onDensityChange i DelegatableNode#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 onPostFling z 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ń readOnly z TextFields', aby przypiąć do stabilnej wersji podstawowej. (I3aaba)
  • Paragraph i ParagraphIntrinsics przyjmują teraz listę wszystkich adnotacji zastosowanych do AnnotatedString. 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. Teraz AnnotatedString umoż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 AnnotatedString za pomocą LinkAnnotation o 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() na hideFromAccessibility. 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łanie clearFocus() jest zgodne z działaniem widoku w przypadku interfejsu API w wersji starszej niż 28, w którym clearFocus() 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 TextField na EditText lub dowolny inny edytor oparty na widoku.
  • Węzły Nested Scroll będą teraz prawidłowo wysyłać zdarzenia onPostFling po 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.StartEllipsis i TextOverflow.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 AlignmentLines Map akceptuje teraz typy konkretne VerticalAlignmentLine lub HorizontalAlignmentLine. (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 IndexOutOfBoundsException podczas przekazywania AnnotatedString z LinkAnnotation do elementu kompozycyjnego Text. (Ic96d2)
  • Rozwiązaliśmy problem z przekroczeniem limitu czasu w testach w rzadkich przypadkach, gdy w AnnotatedString użyto znaku LinkAnnotation. (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 przez SemanticsPropertyReceiver.hideFromAccessibility(). (I448f0, b/376479686)
  • Rozwiązaliśmy problem, który uniemożliwiał prawidłowe działanie TextField podczas 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 przez TalkBack. (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 Talkback przycisku, 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łanie clearFocus() jest zgodne z działaniem widoku w przypadku interfejsu API w wersji starszej niż 28, w którym clearFocus() 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)
  • ComposeView nie 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 LiveRegion na przyciskach. (f66fa7, b/348590026)

Wersja 1.7.1

10 września 2024 r.

  • Brak zmian w artefaktach Androida. Usunięto -desktop artefaktów, a dodano -jvmStubs i -linuxx64Stubs artefakty. Żaden z tych celów nie jest przeznaczony do uż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, performTextInput i performTextClearance będą teraz zgłaszać błędy asercji, gdy zostaną wywołane w przypadku TextFields tylko 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 TextField nie 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 GraphicsLayer API. (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.Editable na IsEditable i zmieniliśmy wartość SemanticsPropertyReceiver.editable na isEditable. 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: TextLinkStyles jest teraz częścią konstruktora LinkAnnotation i metody AnnotatedString.fromHtml (I90b2b). Usunięto też TextDefaults z materiału (I5477b)

Poprawki błędów

  • Nazwa LayoutCoordinates.introducesFrameOfReference została zmieniona na LayoutCoordinates.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ę performCustomAccessibilityActionLabelled na performCustomAccessibilityActionWithLabel i performCustomAccessibilityActionWhere na performCustomAccessibilityActionWithLabelMatching. (I5387f)
  • AnnotatedString.hasEqualsAnnotations to teraz hasEqualAnnotations (I685c0)
  • Zaktualizowano interfejs API do pobierania linków w tekście w motywie Material. W szczególności usunęliśmy metody z TextDefaults do tworzenia tematycznych LinkAnnotations i 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#createOutline jest 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ę isPositionedByParentWithDirectManipulation na introducesFrameOfReference. Pamiętaj, że teraz ma odwrotny efekt, co oznacza, że domyślnie większość LayoutCoordinates wprowadza 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 znaku positionInLocalFrameOfReference(...). lub positionInLocalLookaheadFrameOfReference z LookaheadScope. (Ifc5f7)
  • LookaheadScope Interfejsy API zostały ustabilizowane (I21507)
  • Zmień funkcję lambda działania w przypadku getScrollViewportLength zgodnie 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 wartownicze UnsetOffset/UnsetSize IntSize na 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() i MouseInjectionScope.longClick() akceptują teraz parametr button: MouseButton, dzięki czemu są bardziej uniwersalne. Wartością domyślną wszystkich metod jest MouseButton.Primary. (I31a23, b/190493367, b/261439695)
  • Zmieniono nazwę onClicked na onClick w LinkInteractionListener. (Iaa35c)
  • Zmień nazwę TextInclusionStrategy.isInside na isIncluded. Ustaw zwracany typ Paragraph/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 komponencie LazyColumn, który renderuje zagnieżdżony komponent LazyRows). Oczekuje się, że ta zmiana zmniejszy liczbę pominiętych klatek podczas przewijania tych komponentów LazyLists. Domyślnie implementacja pobiera wstępnie pierwsze 2 zagnieżdżone elementy, ale to zachowanie można kontrolować za pomocą nowych interfejsów API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) i LazyListPrefetchStrategy#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

  • ClickableText jest oznaczony jako wycofany. Aby dodać linki do tekstu, utwórz AnnotatedString z LinkAnnotation odpowiadającym linkowi i przekaż ten element AnnotatedString do funkcji kompozycyjnej Text. (I34d4b, b/323346994)
  • Wprowadź ViewConfiguration.HandwritingGestureLineMargin dla gestów pisma odręcznego. Obsługa gestu JoinOrSplit w przypadku BasicTextField (Ie6e13, b/325660505)
  • Atrybuty FocusProperties.enter i FocusProperties.exit nie są już eksperymentalne. Atrybuty FocusDirection.Enter i FocusDirection.Exit nie są już eksperymentalne. FocusRequester.Cancel nie 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ą argumentu Placeable.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 na approachLayout są 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)
  • LazyColumn będzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)
  • Źródła NestedScroll Drag i Fling zostaną zastąpione źródłami UserInput i SideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz kółko myszy i klawiaturę (UserInput). (I40579)
  • ApproachLayoutModifierNode i Modifier.approachLayout są teraz stabilne, a nowe isMeasurementApproachInProgress() i isPlacementApproachInProgress() zastępują odpowiednio stare isMeasurementApproachComplete() i isPlacementApproachComplete().
  • Usunięto wycofany modyfikator intermediateLayout. (I3e91c)
  • Zmień nazwę GraphicsLayer#buildLayer na record, aby odzwierciedlić metody begin/endRecording interfejsów API opartych na liście wyświetlania, takich jak RenderNode i Picture.
  • Zaktualizowano rememberGraphicsLayer, aby korzystać z rememberObserver. (I312c1, b/288494724, b/330758155)
  • Metoda UrlAnnotation została wycofana. Zamiast niej używaj metody LinkAnnotation.Url. Jeśli używasz motywu Material Design, użyj obiektu TextDefaults, 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.parseAsHtml została zmieniona na AnnotatedString.Companion.fromHtml. (I43dcd)
  • Dodano argumenty stylu (linkStyle, focusedLinkStyle, hoveredLinkStyle) i funkcję nasłuchiwania interakcji z linkiem do metody parseAsHtml. Podczas analizowania ciągu znaków z tagami HTML z tagami <a> metoda utworzy obiekt LinkAnnotation.Url dla każdego takiego tagu i przekaże obiekty stylu oraz odbiornik interakcji z linkiem do każdej adnotacji. (I7c977)
  • LinkAnnotation przyjmuje teraz argumenty stylizacji opartej na stanie i wartość LinkInteractionListener. Dodaj tę adnotację do AnnotatedString, aby uzyskać hiperlink. Przekazując focusedState lub hoveredState, możesz zdefiniować wizualny configuration linków, gdy są zaznaczone lub nad nimi znajduje się kursor. (I81ce4, b/139312671)
  • ImeOptions.hintLocales nie może już przyjmować wartości null. Jeśli chcesz przekazać pustą listę ustawień regionalnych, użyj LocaleList.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ę parseAsHtml dla ciągów ze stylami: umożliwia ona przekształcenie ciągu oznaczonego tagami HTML w AnnotatedString. 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_LongScreenshotsEnabled na wartość true. (I2b055, b/329296471)

Zmiany w interfejsie API

  • Wartość fun ClipEntry.getMetadata() została zmieniona na val ClipEntry.clipMetadata. (I50155)
  • Usunięto funkcje ClipboardManager.getClipMetadata i ClipboardManager.hasClip. Aby odczytać metadane bieżącego wpisu klipu, użyj clipEntry.getMetadata(). Sprawdź też wynik ClipboardManager.getClip, aby dowiedzieć się, czy schowek zawiera bieżący klip. (I50498)
  • Teraz możesz przekazywać obiekty GraphicsLayer do funkcji placeable.placeWithLayer() (I1b22f)
  • ClipboardManager.setClip akceptuje 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 obiekcie GraphicsLayer. 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 RectF na ComposeRect (I39925, b/325660505)
  • Wszystkie parametry KeyboardOptions mają teraz domyślnie wartość nieokreśloną. Dodaliśmy metodę KeyboardOptions.merge.
  • Zmieniliśmy nazwę atrybutu KeyboardOptions.autoCorrect na autoCorrectEnabled i umożliwiliśmy przypisywanie mu wartości null, która oznacza, że nie określono żadnej wartości. (Ia8ba0, b/295951492)
  • Warianty BasicTextField(state) i BasicSecureTextField używają teraz KeyboardActionHandler zamiast KeyboardActions do 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 GraphicsLayer API 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łcenia GraphicsLayer można przeprowadzać bez ponownego nagrywania listy wyświetlania. W przeciwieństwie do Modifier.graphicsLayer funkcja GraphicsLayer umoż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 rozszerzenia DrawScope.drawLayer(GraphicsLayer). (I7a7c0)
  • Podzielenie funkcji restrictedConstraints() na 2 metody: fitPrioritizingWidth() i fitPrioritizingHeight() (I6d7fd)
  • Wprowadzono HardwareCanvas stub do używania w Androidzie L (I1c3b5, b/288494724)
  • Zaktualizuj platformę Compose, aby udostępniała lokalną kompozycję GraphicsContext wraz z aktualizacją implementacji elementów Owner, DelegateableNode i drawWithCache Modifier, aby udostępniać dostęp do elementu GraphicsContext w zakresie, który automatycznie czyści instancje GraphicsLayer po 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 wykonawcze PlatformTextInputTestOverride zostało wycofane. (I862ed, b/322680547)
  • Dodano funkcję rozszerzenia GraphicsLayer.setOutline(Outline). (Ib81f4)
  • Wprowadzenie konstruktora funkcji GraphicsContext do tworzenia fabryki instancji GraphicsLayer (Ib98d6, b/288494724)
  • Udostępniliśmy interfejs GraphicsLayer API, 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 BasicText z argumentem onLinkClicked. W przyszłości udostępnimy interfejs API zastępujący obsługę hiperlinków. (I107d5)

Poprawki błędów

  • Dodano definicję interfejsu API GraphicsLayer expect/actual, aby obsługiwać rejestrowanie i odtwarzanie poleceń rysowania z opcjonalnymi efektami wizualnymi i transformacjami kompozycji. Wprowadzenie interfejsu GraphicsContext do przechowywania zależności graficznych, w tym tworzenia instancji GraphicsLayer i 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 ComposeView osadzonym wśród innych widoków. (I08fd4)

Wkład zewnętrzny

  • LocalLifecycleOwner został przeniesiony z Compose UI do lifecycle-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 GetScrollViewportLength dział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.createRefs jest teraz stabilna (I4d92c, b/261436820)
  • Wprowadzono DelegatableNode.requireView(), aby umożliwić węzłom modyfikatorów uzyskiwanie bieżącego View Androida bez odczytywania lokalnej kompozycji. (I40768)
  • Nowy interfejs API Path.reverse() do odwracania kierunku ścieżki (I36348)
  • Dodano hintLocales do KeyboardOptions, aby umożliwić TextFields podpowiadanie edytorom IME konkretnych ustawień regionalnych w celu wstępnego ustawienia preferowanego języka.
  • Udostępnij właściwość platformLocale z Locale, 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 ContextualFlowRow i ulepszone FlowRow/Column z funkcjami MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnych funkcji FlowRow i FlowColumn, które teraz obsługują maxLines i overflow, oraz o wprowadzeniu funkcji ContextualFlowRow i ContextualFlowColumn. Ta aktualizacja ma na celu udostępnienie komponentów o optymalnej wydajności. Komponent ContextualFlow* doskonale sprawdza się w przypadku dużej liczby produktów korzystających z małej konfiguracji maxLines oraz dynamicznych przycisków „+N więcej”, a komponenty FlowRow i FlowColumn są idealne w przypadku małej liczby produktów, czyli mniej niż 100. Ważne: aby zachować dotychczasowe działanie w przypadku FlowRow lub FlowColumn, gdzie wszystkie elementy są tworzone niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw wartość overflow na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Przykłady działania tych nowych funkcji znajdziesz w sekcjach ContextualFlowRowSample i FlowRowSample. (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.inspectable został 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() w ModifierNodeElement. (Ib3236)
  • Nowy konstruktor dla PopupProperties, który umożliwia pełną kontrolę nad flagami WindowManager.LayoutParams. (Ibb33e, b/312485503)
  • Wprowadziliśmy DelegatableNode.requireLayoutCoordinates() jako sposób na uzyskanie bieżącego LayoutCoordinates Modifier.Node bez konieczności zastępowania onPlaced i samodzielnego przechowywania współrzędnych we właściwości. (Ia8657)
  • Wprowadziliśmy DelegatableNode.currentLayoutCoordinates jako sposób na uzyskanie bieżącego Modifier.Node LayoutCoordinates bez konieczności zastępowania onPlaced i samodzielnego przechowywania współrzędnych we właściwości. (Iaebaa)
  • Interfejs API BasicTextField2 i powiązane interfejsy API w pakiecie androidx.compose.foundation.text2 zostaną przeniesione do pakietu androidx.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 API DeferredTargetAnimation do animacji, których cel jest nieznany w momencie tworzenia instancji. (I60745)
  • Nowe interfejsy API Path do wysyłania zapytań o kierunek ścieżki i wyodrębniania konturów z Path. (I63d04)
  • Dodano funkcje PathHitTest i Path.contains(Offset), aby sprawdzić, czy Path zawiera określony punkt. (I3b218)
  • Interfejs TextLayoutResult udostępnia teraz metodę getLineBaseline(lineIndex). Umożliwia to odczytanie linii bazowej dowolnego wiersza tekstu oprócz istniejących właściwości firstBaseline i lastBaseline. (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.performImeAction i SemanticsActions.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 parametr usePlatformDefaultWidth, 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ść semantyczna isOpaque. (I8c583, b/317966058, b/246056649)
  • Usunęliśmy metodę kopiowania originalEventPosition z publicznego interfejsu API usługi PointerInputChange. (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)
  • VelocityTracker bę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ść VelocityTrackerAddPointsFix na false. (Ib3877, b/269487059)
  • Naprawiono brak zgodności wstecznej w TextStyle i ParagraphStyle. (I179f0, b/320819734)

Wkład zewnętrzny

  • Dodano nowy konstruktor DialogProperties bez parametrów specyficznych dla platformy. (I45829)
  • Dodano nowy konstruktor PopupProperties bez parametrów specyficznych dla platformy. (I9a038)

Wersja 1.7.0-alpha01

24 stycznia 2024 r.

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 atrybuty ClipEntry i ClipMetadata, aby obsługiwać dowolne treści, takie jak obrazy.
  • Dodaje interfejs DeviceConfigurationOverride API do ui-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.performImeAction i SemanticsActions.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ć LayoutCoordinates bez odłączania węzła. Zapobiegaj temu w narzędziu Layout Inspector w Compose (If693)

Poprawki błędów

  • PlatformImeOptions jest teraz klasą konkretną zamiast interfejsu. (If40a4)
  • Naprawiono dodatkowe ponowne kompozycje podrzędne spowodowane przez LocalSoftwareKeyboardController i LocalTextInputService, 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 DragAndDropTarget przyjmuje teraz jawnie odbierający DragAndDropTarget i ma funkcję lambda, która umożliwia rozpoczęcie sesji przeciągania i upuszczania. Obecnie dostępne są 2 funkcje fabryczne dla DragAndDropModifierNode. 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 kwestii maximumFlingVelocity. (I8adc7)
  • onDragAndDropStart w fabryce DragAndDropModifierNode nosi teraz nazwę acceptDragAndDropTransfer.Adres acceptsDragAndDropTransfer został dodany do dragAndDropTarget Modyfikator, 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ą DragAndDropTarget do odbierania danych z sesji przeciągania i upuszczania (Iebf3a).
  • Usunięto DragAndDropInfo jako typ. Funkcja DragAndDropModifierNode.drag przyjmuje teraz parametry dla funkcji transferData, rozmiaru dekoracji i funkcji lambda DrawScope dekoracji przeciągania.

    DragAndDropTarget ma metody dla poszczególnych zdarzeń przeciągania i upuszczania, a nie jedną metodę abstrakcyjną.

    onDragAndDropEvent w funkcji fabrycznej dla DragAndDropModifierNode została zmieniona na onDragAndDropStart, aby lepiej informować, że podany DragAndDropTarget jest ważny tylko w przypadku danej sesji przeciągania i upuszczania.

    Element DragAndDropEventType został usunięty (I645b1)

  • Zmieniono nazwę PlatformTextInputModifierNode.runTextInputSession na establishTextInputSession. (I03cd0)

  • Ulepsza nazwy interfejsów API węzłów, które można przechodzić, aby były bardziej zrozumiałe. (Ia4474)

  • Zastąp OriginalText tekstem TextSubstitution. (Ifa5a8)

  • Zmieniono nazwę PlatformTextInputModifierNode.textInputSession na runTextInputSession. (Ie9c6b)

  • Elementy podrzędne SubcomposeLayout (i układy takie jak LazyColumn, 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 API assertIsDeactivated() 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.In i FocusDirection.Out, zamiast nich używaj poleceń FocusDirection.Enter i FocusDirection.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żywaj FontStyle.Normal lub FontStyle.Italic. (I66610)

  • Zmieniono nazwę interfejsu FontScalable na FontScaling (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)
  • TestDispatcher przekazywane jako effectContext do 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.dragAndDrawSource zmieniliśmy nazwę funkcji lambda onDrawDragShadow na drawDragDecoration, a w funkcji DragAndDropInfo zmieniliśmy nazwę parametru rozmiaru na dragDecorationSize. (Id0e30, b/303904810)
  • Wprowadzamy funkcje SemanticsNodeInteraction.isDisplayed() i SemanticsNodeInteraction.isNotDisplayed(), aby sprawdzać, czy pasujący węzeł jest widoczny, bez potwierdzania tego. (I2c196, b/302100809)
  • Wprowadziliśmy specjalną wartość Unspecified w polach TextAlign, TextDirection, Hyphens i LineBreak w ParagraphTextStyle, 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 stylach TextStyle i Paragraph zostały zaktualizowane, aby akceptować wymienione parametry jako typy inne niż null. (I4197e, b/299490814)
  • Dodaj przeciążenie GoogleFont do odczytywania wartości GoogleFont z pliku XML. (If8f59)
  • LoremIpsum PreviewParameterProvider zostały przekształcone w zajęcia otwarte. (I41bf5, b/266918816, b/300116360)

Poprawki błędów

  • FontFamilyResolver używa teraz Dispatchers.Main do procedur współbieżnych zarządzania pamięcią podręczną. (Ie8dd9)
  • AndroidViewBinding synchronicznie usuwa teraz instancje Fragment rozszerzone przez uwzględnienie elementu FragmentContainerView w układzie w ramach jego onRelease za pomocą commitNow (zamiast używanego wcześniej commit), 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 PlatformTextInputMethodTestOverride do testów pisania w niestandardowych edytorach tekstu. (Id159b)
  • Dodaje dragAndDropSource Modifier do rozpoczynania sesji przeciągania i upuszczania oraz dragAndDropTarget Modifier do odbierania danych z sesji przeciągania i upuszczania. (Ib7828, b/286038936)
  • Dodano kolekcje ColorList i ColorSet, które unikają przydzielania. (I744bd)
  • Dodaliśmy DisableNonLinearFontScalingInCompose tymczasową 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 modyfikatora focusRestorer() (Ie1d43)
  • Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić ColorInt, FloatRange, IntRange, Size i inne. (Id65c8, b/290950582)
  • Dodaj showSystemUi=true do definicji PreviewScreenSizes (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 ScrollView i RecyclerView, są ograniczone do ViewConfiguration.ScaledMaximumFlingVelocity. Funkcja Pisanie zawiera teraz własną wersję maximumFlingVelocity, która obowiązuje w przypadku Draggable. (Ibf974)
  • Dodaje początkową strukturę obsługującą interfejsy API platformy do przeciągania i upuszczania. (If84ce)
  • Dodaj deviceId do RotaryScrollEvent (Iba3bf)
  • Zaktualizowaliśmy interfejs ui-tooling Devices 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 ReusableComposition do zarządzania cyklem życia i ponownym wykorzystywaniem podkompozycji. (I812d1, b/252846775)
  • Modifier.focusGroup został przeniesiony do stabilnych interfejsów API. (I7ffa3)
  • Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić ColorInt, FloatRange, IntRange, Size i inne. (I70487, b/290950582)
  • Zaktualizowano interfejs ColorFilter API, 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 FontScalable do 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. LookaheadScope Funkcje i interfejs kompozycyjny są teraz stabilne. (Ifb2ce)
  • Dodano obsługę konfigurowania privateImeOptions (Idb772)

Poprawki błędów

  • PopupPositionProvider.calculatePosition bę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ść readOnly wynosiła „true”. Rozwiązaliśmy też problem z niewyświetlaniem klawiatury, gdy wartość readOnly zmienia 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 SoftwareKeyboardController i LocalSoftwareKeyboardController nie są już eksperymentalne. LocalSoftwareKeyboardController jest teraz też prawidłowym CompositionLocal. (I4c364)
  • Interfejsy LookaheadLayout i LookaheadLayoutScope zostały wycofane w kilku wersjach i zostały teraz usunięte. Zastępujące je interfejsy API LookaheadScope mogą współpracować z dowolnym układem. (I12ac3)
  • Dodano SemanticsNodeInteraction.requestFocus jako 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 zwrotnej update będzie teraz odroczone do momentu dołączenia widoku, zamiast uruchamiać się po zastosowaniu kompozycji, która wprowadza AndroidView. Rozwiązaliśmy problem, który powodował, że wywołanie zwrotne update nie 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 temu LazyList w przepuszczaniu z wyprzedzeniem może pominąć dowolną animację (np.animację umieszczania elementu, AnimatedVisibility itp.) i obliczyć rozmiar i pozycję wyprzedzenia dla wszystkich elementów podrzędnych. Po przejściu do przodu dzieci w wieku LazyList mogą 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.saveFocusedChild i FocusRequester.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 IntrinsincMeasureScope i jej implementacje (np. MeasureScope) wskazujące, czy bieżące przejście pomiaru jest przejściem wyprzedzającym. (I7a812)
  • Zaktualizowaliśmy interfejs DrawScope API, 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#fillBoundingBoxes do 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 niestandardowego FocusTarget. (I9790e)
  • Zmieniono nazwy parametrów fallback* w konstruktorze TextMeasurer na default*. (I940a5)
  • Zmieniono nazwę SemanticsPropertyReceiver.performImeAction na onImeAction i SemanticsActions.PerformImeAction na OnImeAction. (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 interfejs toComposePaint, ponieważ zwracany obiekt otacza oryginalny interfejs android.graphics.Paint (I22b4c).
  • Wycofaj parametr SemanticsProperties.imeAction i zastąp go nowym parametrem SemanticsActions.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ątek AssertionError w przypadku indeksów wykraczających poza zakres, zgłaszają teraz wyjątek IllegalArgumentException, tak jak robi to MultiParagraph. (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) TextField czasami 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ść readOnly wynosiła „true”. Rozwiązaliśmy też problem z niewyświetlaniem klawiatury, gdy wartość readOnly zmienia 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 SubcomposeLayout jest używany w elemencie movableContentOf().

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 asComposePaint API, aby umożliwić korzystanie z instancji android.graphics.Paint w Compose.

Poprawki błędów

  • Dodano interfejs API asComposePaint, który zastępuje interfejs toComposePaint, ponieważ zwracany obiekt otacza oryginalny interfejs android.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ą z MeasureScope, 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 drzewie TalkBack (niższe wartości są przed wyższymi). (I9a81b, b/186443263)
  • Zmiana nazwy usługi Semantyka z isContainer na isTraversalGroup (I121f6)
  • ColorProducer ma teraz operator fun invoke zamiast produce (I4a9a2)
  • Dodaj interfejs Path transform API, aby zastosować do obiektów ścieżki przekształcenia związane z tłumaczeniem, skalowaniem i obracaniem. (I23434, b/233772232)
  • Metoda ColorProducer nazywa się produce. (I78bde)
  • Zmiana nazwy toFrameworkColorSpace na toAndroidColorSpace (I4f547)
  • Zmień nazwę ColorLambda na ColorProducer. (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.constrain na TextRange.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) i MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • Środowisko wykonawcze PlatformTextStyle.includeFontPadding nie 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)
  • UrlAnnotation w AnnotatedString można teraz otwierać za pomocą usług ułatwień dostępu, takich jak TalkBack. (If4d82, b/253292081)
  • Dodano działanie semantyczne InsertTextAtCursor w przypadku pól tekstowych. (I11ed5)
  • Konstruktor LineHeightStyle.Alignment(topRatio) został przeniesiony do stabilnego interfejsu API. (I79c32, b/261565383)
  • TextMeasurer i 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)
  • PlatformTextInput Interfejsy API nie są już eksperymentalne w przypadku Androida. (I668eb)
  • Nazwa parametru wartości dla Enum.valueOf została zmieniona (Ia9b89)
  • więcej wyjątków zgłaszanych przez enum valueOf (I818fe)
  • Wprowadziliśmy nowy interfejs API niskiego poziomu PlatformTextInputAdapter do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)
  • Dodano parametr BlendMode do metod DrawScope.drawText, Paragraph.paint i MultiParagraph.paint, aby obsługiwać różne algorytmy mieszania podczas rysowania tekstu na obiekcie Canvas. (I57508)
  • Zmień nazwę Font.MaximumAsyncTimeout na Font.MaximumAsyncTimeoutMillis. Tylko zmiana nazwy. (I07af5)
  • Zaktualizowane wartości DPI urządzeń referencyjnych @Preview (Id6151, b/254528382)
  • Dodaj parametry brush i alpha do BasicText, 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.Node Ulepszenia delegowania Dodano ulepszoną możliwość delegowania do innych instancji Modifier.Node z instancji DelegatingNode. Możesz to zrobić za pomocą interfejsów delegate i undelegate API. 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 że DelegatingNode wyraźnie je zastąpi. (67352bc)

Zmiany w interfejsie API

  • Przedstaw NestedScrollModifierNode, czyli NestedScroll Modifier.Node, do którego można delegować uprawnienia. (I69513)
  • Dodaliśmy parametry onReset i onRelease do komponentu AndroidViewBinding, odzwierciedlając komponent AndroidView i 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) i MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • Środowisko wykonawcze PlatformTextStyle.includeFontPadding nie 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 SubcomposeLayout w LookaheadScope: SubcomposeLayouts, które nie mają boksów warunkowych (np.TabRow, Scaffold, BoxWithConstraints itp.), 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ów SubcomposeLayout bez warunkowych miejsc docelowych, takich jak Scaffold, TabRow i BoxWithConstraints. (Id84c8)
  • Kompozytor utworzony dla okna Androida będzie teraz blokować tylko wywołania withFrameNanos zamiast całej kompozycji, gdy otrzyma powiadomienie ON_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 funkcji withFrameNanos będą blokowane. (Id9e7f, b/240975572)
  • Zmienia motionEventSpy na wersję stabilną. (Ic5ec4, b/261560988)
  • Dodaliśmy publiczną metodę TextRange.constrain. (I97912)
  • PlatformTextStyle.includeFontPadding nie jest już wycofany, aby zachęcić deweloperów do używania tego interfejsu API zgodności do przełączania i testowania ustawienia includeFontPadding na 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 SubcomposeLayout API, 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 SuspendingPointerInputModifierNode w przypadku bardziej złożonych wdrożeń Modifier.Node. (Ic4933)
  • UrlAnnotation w AnnotatedString można teraz otwierać za pomocą usług ułatwień dostępu, takich jak TalkBack. (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 InsertTextAtCursor dla 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 AndroidView mó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 DropDown menu (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 AndroidView nieprawidł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 ParentDataModifier nie wpływa na AndroidView (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 PinnableContainer API, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane po przewinięciu poza granice. Na przykład Modifier.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 IsContainer na 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 zachowania TalkBack podczas ustawiania ostrości android.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 TextMotion do TextStyle, aby określić, czy tekst ma być Static(default) czy animowany. Użyj TextMotion.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 parametr onReset. 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 przypadku LazyRows i LazyColumns widoków. (I3f10d, b/230099236)
  • Wprowadziliśmy nowy interfejs API niskiego poziomu PlatformTextInputAdapter do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)

Poprawki błędów

  • Działanie semantyczne BasicTextFieldSetText bę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, performTextReplacement i performTextSelection używają teraz funkcji SemanticsActions. (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 z ModifierNodeElement. (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 komponent Layout jest ponownie używany (np. jako element LazyColumn). Poprawiono FocusTargetModifierNode, aby prawidłowo resetować stan zaznaczenia. (I65495, b/265201972)
  • Dodano parametr BlendMode do metod DrawScope.drawText, Paragraph.paint i MultiParagraph.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ę na release() (I4667a)
  • Dodano waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists i waitUntilDoesNotExist jako eksperymentalny interfejs API do ComposeTestRule, rozszerzając interfejs API waitUntil, aby akceptował dowolny rodzaj dopasowania i dowolną liczbę węzłów. Więcej informacji znajdziesz w ComposeTestRule. (Ifa1b9, b/226934294)
  • Zmień nazwę Font.MaximumAsyncTimeout na Font.MaximumAsyncTimeoutMillis. (I07af5)
  • Usunięto GoogleFont.Provider.AllFontsListUri i 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 runComposeUiTest i create*ComposeRule, które akceptują parametry CoroutineContext. Kontekst będzie używany w kompozycji testu oraz w wywołaniach LaunchedEffect i rememberCoroutineScope() w tej kompozycji. (I10614, b/265177763)
  • Dodanie nowego interfejsu API do śledzenia prędkości 1-wymiarowej (If5a82)
  • FocusRequester jest teraz oznaczony jako @Stable. (I580ee)
  • Usuń eksperymentalną adnotację z konstruktora DialogProperties, który przyjmuje parametr usePlatformDefaultWidth. (Ic4048)
  • Dodano funkcję obliczania pozycji i stycznej w określonej odległości na ścieżce – z PathMeasure.getPosition() i PathMeasure.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ść String jako tekst. (I47b2d, b/242705342)
  • Interfejsy API LineBreak i Hyphens w TextStyle zostały przeniesione do wersji stabilnej. (Ic1e1d)

Wkład zewnętrzny

  • Metody notifyFocusedRect w TextInputSession i TextInputService nie 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 PinnableContainer API, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane po przewinięciu poza granice. Na przykład Modifier.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 IsContainer na 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łania TalkBack's podczas ustawiania ostrości android.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 TextMotion do parametru TextStyle, aby określić, czy tekst ma być Static(default) czy animowany. Użyj TextMotion.Animated, jeśli tekst ma być skalowany, tłumaczony lub obracany za pomocą animacji. (I24dd7)

Zmiany w interfejsie API

  • Zastąpiliśmy argument maxSize: IntSize w funkcji drawText argumentem size: Size, aby był zgodny z innymi funkcjami DrawScope. size jest domyślnie ustawione na Size.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 Group ma teraz pole isInline, które wskazuje, czy grupa jest przeznaczona do wywołania wbudowanej funkcji typu „composable”. Jeśli isInline ma 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)
  • FontVariation Interfejs API jest już stabilny (I8779f, b/241016309)
  • Wszystkie konstruktory Font() są teraz stabilnym interfejsem API (I5948b, b/261435386).
  • DeviceFontFamilyName jest teraz stabilny (I8b640, b/261435386)
  • Konstruktor AndroidFont z parametrem variationSettings jest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807)
  • Interfejs createFontFamilyResolver API 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.loadingStrategy API jest już stabilny. (I5937c, b/261435386)
  • Interfejs GoogleFont API jest już stabilny. (Ic90b0, b/261435386)
  • Interfejs TextUnit(float, TextUnitType) jest teraz stabilnym interfejsem API. (I90c84, b/261561612)
  • pluralStringResource to 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ę ExperimentalComposeUiApi z instancji PointerIcon (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 rememberNestedScrollConnection z 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 Clickable do 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 elemencie Scrollable 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.Always na Offscreen, aby wskazać, że element graphicsLayer bę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 {} i PerfettoTraceRule, 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 withFrameNanos nie 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 funkcje withFrameNanos lub withFrameMillis, 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) -> Unit do konstruktora TestMonotonicFrameClock i funkcji fabrycznej, aby uruchamiać kod po wywołaniach zwrotnych withFrameNanos, 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 @Preview na 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 rozmiar graphicsLayer. Jest to przydatne do obliczania przekształceń graphicsLayer jako funkcji rozmiaru elementu kompozycyjnego. (If8c43,b/181387080)
  • Wprowadziliśmy CompositingStrategy, aby określać, kiedy używać warstwy kompozycji poza ekranem do renderowania treści graphicsLayer. Automatycznie zachowuje domyślne działanie, które wewnętrznie wykorzystuje warstwę, jeśli zastosowano wartość alfa, lub RenderEffect/Overscroll. Zawsze będzie wprowadzać bufor poza ekranem, w którym ModulateAlpha będzie unikać korzystania z bufora poza ekranem i zamiast tego będzie modyfikować każdą z zarejestrowanych instrukcji rysowania w ramach graphicsLayer. ModulateAlpha nadal będzie korzystać z bufora poza ekranem w przypadku użycia RenderEffect/Overscroll (I25e82, b/256382834).
  • Do Modifier.Node dodano invalidateSubtree(), aby umożliwić unieważnianie całych hierarchii na potrzeby układu i rysowania. (I4bd90)
  • Promuj rememberNestedScrollInteropConnection do wersji stabilnej. Wprowadziliśmy możliwość przekazywania widoku głównego do rememberNestedScrollInteropConnection. 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 implementacje Modifier.Node wymagają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 obiekt android.graphics.Paint. Dodaliśmy też funkcję rozszerzenia toComposePaint(), która przekształca istniejący natywny obiekt Paint w obiekt Paint Compose. (Ica91b)
  • Dodaj nowe FontFamily.Resolver.resolveAsTypeface do 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 minLines do komponentów tekstowych material i material3, TextField i OutlinedTextField, 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 do forEachGesture(), ale pętla gestów działa w całości w ramach AwaitPointerEventScope, więc zdarzenia nie mogą zostać utracone między iteracjami.
  • Element forEachGesture() został wycofany na rzecz elementu awaitEachGesture(), 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 DrawStyle jako atrybut eksperymentalny do TextStyle i SpanStyle, aby umożliwić rysowanie tekstu z obrysem. (If24b8, b/155421273)
  • AnnotatedString.Builder korzysta teraz z kotlin.text.Appendable. (I1a061, b/231030444)
  • AnnotatedString.Builder ma teraz metodę append(AnnotatedString, start: Int, end: Int) dołączania podciągu AnnotatedString i przecinających się stylów.
  • Dodano parametr DrawStyle do funkcji rysowania Paragraph i MultiParagraph, który umożliwia rysowanie tekstu z obrysem. (Ic8102, b/155421273)

Wkład zewnętrzny

  • Dziękujemy za vighnesh dodanie 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 dla Modifier.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

  • DeviceFontFamilyName nie konfiguruje domyślnie ustawień wariantów wght i ital, tylko używa ustawień platformy dla załadowanych Typeface. (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:IntSize na constraints: Constraints w metodzie TextMeasurer.measure, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)

Poprawki błędów

  • Interfejs API BackHandler AndroidX Activity działa teraz w funkcji Dialog. (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.In i FocusDirection.Out zostały wycofane i zastąpione przez FocusDirection.Enter i FocusDirection.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) i FocusManager.moveFocus(Exit). (I5f3f9, b/183746982)
  • Możesz teraz użyć FocusRequester.Cancel, aby anulować zmianę ostrości. FocusRequester.Cancel moż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(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

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 painterResource nie aktualizował się po zmianach konfiguracji (I58e73, b/228862715).
  • rememberTextMeasurer nie przyjmuje już parametrów FontFamily.Resolver, Density ani LayoutDirection. Aby podać niestandardowe wartości tych parametrów, użyj konstruktora TextMeasurer. (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.Setting to zamknięty interfejs, który umożliwia korzystanie z przyszłych interfejsów API ograniczających. (I11021, b/143703328)
  • Dodano CompositionGroup.findParameters do SlotTree.kt. Dzięki temu narzędzia mogą pobierać parametry dla CompositionGroup bez 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 LayoutCoordinates z PlacementScope. 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 jednego LayoutCoordinates na drugi. (Ic5ab1, b/238632578)
  • Wycofano SemanticsModifier.id i przeniesiono identyfikator semantyczny do LayoutInfo.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.Setting do konfigurowania czcionek zmiennych na urządzeniach z Androidem O i nowszym. (I11a9d, b/143703328)
  • Dodano FontVariation interfejs API do definiowania i używania czcionek zmiennych. (I3c40c, b/143703328)
  • Konstruktor LineHeightStyle.Alignment jest 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 PlatformTextStyle i LineHeightStyle. (I64bef)
  • Wycofaj: TextInputService.show|hideSoftwareKeyboard Zamiast niej użyj SoftwareKeyboardController w kodzie aplikacji i TextInputSession w kodzie zarządzania IME. (I14e4c, b/183448615)
  • Dodano nowy interfejs API dla istniejących typów animacji (I26179)

Poprawki błędów

  • Dodaliśmy @RequiresPermission do interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w 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 instancji TextMeasurer w kompozycji. (I8d66e)
  • Usługi Rect, RoundRect i MutableRect obsługują teraz składnię Kotlin in do wywoływania funkcji contains. (Ie42b0, b/238642990)
  • Usuń z KeyInjectionScope niepotrzebne funkcje, ponieważ można je łatwo zaimplementować za pomocą prostszych części interfejsu API. Usunięte funkcje to m.in. pressKeys, keysDown i keysUp. (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 klasy EditCommand, aby ułatwić rozwiązywanie problemów z edycją tekstu. (I53354, b/228862731)
  • Dodaliśmy funkcję rozszerzenia drawText w DrawScope, aby umożliwić rysowanie tekstu w wielu stylach w komponentach i modyfikatorach, które działają na DrawScope, takich jak Canvas i drawBehind. (I16a62, b/190787898)
  • Wprowadzamy nowy eksperymentalny interfejs API o nazwie TextMeasurer, który umożliwia obliczanie dowolnego układu tekstu i daje identyczne wyniki jak BasicText, niezależnie od środowiska wykonawczego Compose. (I17101)
  • Dodano mapTree do SlotTree.kt. Dzięki temu narzędzia mogą sprawdzać SlotTree bez 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 MultiPreview z bibliotek. (I85699, b/233511976)

Poprawki błędów

  • Podczas dodawania zdarzeń InputEventChange do modułu śledzącego Velocity 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 (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. SubcomposeLayouts nie są jeszcze obsługiwane, ale dodamy je w przyszłej wersji. (I477f5)
  • Dodaj opcjonalny parametr alfa do wariantu pędzla TextStyle i SpanStyle, aby zmodyfikować krycie całego Text. (Ic2fac, b/234117635)
  • Wprowadziliśmy typ adnotacji UrlAnnotation i powiązane z nim metody, aby obsługiwać linki TalkBack w AnnotatedString. (I1c754, b/231495122)
  • Przeniesienie funkcji narzędziowych do środowiska wykonawczego (I4f729)

Poprawki błędów

Wkład zewnętrzny

  • Dodano nowy interfejs API WindowInfo.keyboardModifiers do 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 BeyondBoundsLayout interfejsowi API.
    • Nowe interfejsy API do dostosowywania zachowań w FocusOrder i FocusProperties
    • Ulepszone działanie w przypadku klawiatury fizycznej lub pilota do telewizora
  • Nowe interfejsy API:

    • Wstawki okienne
    • Podstawowe elementy sterowanych gestami animacji nieskończonych i animacji układu
    • GraphicsLayer, w tym RenderEffect
  • 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, withKeysToggled itp. 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 stronie KeyInjectionScope. (I9f6cd, b/229831515)
  • Wprowadzono eksperymentalny interfejs OverscrollEffect, który umożliwia stosowanie niestandardowych efektów przewijania poza zakres, a także przeciążenia Modifier.scrollable, które go akceptują.
  • Eksperymentalny interfejs LocalOverScrollConfiguration został przeniesiony z foundation.gesture do pakietu podstawowego i zmieniono jego nazwę na LocalOverscrollConfiguration (If19fb, b/204650733).
  • Zmień nazwę runComposeUiTestWithoutActivity {} na runEmptyComposeUiTest {}, aby była zgodna z createEmptyComposeRule() (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 pressKeyTimes oraz użytkowników isCapsLockOn i znajomych do albumu KeyInjectionScope. 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ści key obiektu MultiModalInjectionScope podczas gestu wprowadzania multimodalnego z użyciem performMultiModalInput. Dokumentację interfejsu API znajdziesz w KeyInjectionScope. (Ic5000, b/229831515)
  • Dodaj nowy GoogleFont.Provider.AllFontsListUri do 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ń InputEventChange do 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 Bounds zostanie 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śli FontFamily.Resolver zostało zastąpione. (I4609d)
  • Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
  • DeleteSurroundingTextCommand i DeleteSurroundingTextInCodePointsCommand wymagają 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.DisposeOnDetachedFromWindowIfNotInPoolingContainer została zmieniona na DisposeOnDetachedFromWindowOrReleasedFromPool, 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 interfejsu LazyList podczas rozmieszczania elementów poza widocznymi granicami (Ifabfb, b/184670295).
  • Wersje Modifier.composed z kluczem są teraz stabilnym interfejsem API (Ie65e4, b/229988420).
  • Uproszczono interfejs rememberNestedScrollConnection API, aby używać lokalnych kompozycji do uzyskiwania informacji o bieżącym widoku (I67ca7).
  • Adnotacji @ComposableTarget i adnotacji oznaczonych symbolem @ComposableTargetMarker moż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:UiComposable deklaruje, że wszystkie funkcje @Composable są 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 ComposeUiTest i fun runComposeUiTest(block: ComposeUiTest.() -> Unit), których można używać do uruchamiania testów interfejsu Compose bez konieczności korzystania z TestRule. Aby przeprowadzić test bez ComposeTestRule, przekaż go jako funkcję lambda do runComposeUiTest i użyj metod i elementów w zakresie odbiornika ComposeUiTest, które są takie same jak w ComposeContentTestRule.

    Do pakietu dodano specyficzne dla Androida adnotacje interface AndroidComposeUiTest i fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit), aby zapewnić dostęp do bazowej aktywności, podobnie jak w przypadku adnotacji AndroidComposeTestRule. 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 ComposeTestRule do ComposeUiTest w 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 ComposeContentTestRule i ComposeTestRule nie są rozszerzeniami ComposeUiTest, co oznacza, że funkcji rozszerzających w ComposeUiTest nie można jeszcze wywoływać w interfejsie TestRule. Gdy interfejs ComposeUiTest stanie się stabilnym interfejsem API, interfejsy ComposeContentTestRule i ComposeTestRule zostaną zmienione tak, aby rozszerzały interfejs ComposeUiTest. (Ib4e90)

  • Nazwa LineHeightBehavior została zmieniona na LineHeightStyle

  • Nazwa LineVerticalAlignment została zmieniona na LineHeightStyle.Alignment

  • Zmienianie nazwy: LineHeightTrim zmieniono na LineHeightStyle.Trim

  • Usunięto wartości konstruktora domyślnego z LineHeightStyle (I582bf, b/181155707)

  • Dodano Brush do TextStyle i SpanStyle, aby umożliwić rysowanie tekstu z kolorowaniem gradientowym. (I53869, b/187839528)

  • Atrybuty trimFirstLineTop i trimLastLineBottom elementu LineHeightBehavior zostały przekształcone w jeden typ wyliczeniowy: LineHeightTrim. LineHeightTrim mają 4 stany zdefiniowane przez 2 wartości logiczne:FirstLineTop, LastLineBottom, Both i None (Ifc6a5, b/181155707).

  • Dodano LineHeightBehavior do TextStyle i ParagraphStyle. LineHeightBehavior okreś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 przez TextStyle(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 trimFirstLineTop i trimLastLineBottom działają prawidłowo tylko wtedy, gdy wartość includeFontPadding to „false”. (I97332, b/181155707)

  • Funkcje PlatformParagraphStyle.lerp i PlatformSpanStyle.lerp zostały zmienione na funkcje najwyższego poziomu (I9a268).

Poprawki błędów

  • Dokumentacja PointerInputChange::copy zawiera teraz prawidłową informację, że jest to 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ć includeFontPadding za pomocą atrybutu TextStyle.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 z TextField przycinaniem. (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 pluralStringResource został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.maxHeight nie 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 kopie PointerInputChange zostaną wykorzystane, gdy jedna z nich zostanie wykorzystana. Jeśli chcesz utworzyć niepowiązany element PointerInputChange, 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)
  • AndroidFont przyjmuje 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 consumeWindowInsets elementu ComposeView umożliwia deweloperom wyłączenie wykorzystywania WindowInsets na Androidzie. Dzięki temu poszczególne ComposeViews w hierarchii mogą stosować WindowInsets bez wzajemnego zakłócania się. (I0ef08, b/220943142)
  • Dodano KeyboardType.Decimal jako alternatywę dla Keyboard.Number, aby uwzględnić separator dziesiętny w edytorze IME. (Iec4c8, b/209835363)
  • PointerEventType.Scroll i PointerEvent.scrollDelta to 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 środowiskiem Font(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 includeFontPadding w TextStyle/ParagraphStyle. Wartość includeFontPadding można zmienić w TextStyle(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.Provider do użycia z @ArrayRes (Ic5ee1, b/225984280).
  • Compose GoogleFont nosi 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.graphicsLayer w 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 FocusOrder została połączona z usługą FocusProperties, a usługa focusProperties() ma teraz wszystkie funkcje usługi focusOrder(). Interfejsy FocusOrder i focusOrder() zostały wycofane. focusOrder(), które akceptuje focusRequester, należy zastąpić modyfikatorem focusRequester() w połączeniu z focusProperties(). Dzięki temu modyfikatory mogą mieć bardziej wyraźny podział obowiązków. (I601b7)

  • Uaktualnienie obu tych elementów RecyclerView i Compose znacznie poprawi wydajność przewijania w przypadku widoków RecyclerView, których elementami podrzędnymi są widoki Compose.

  • Dodaj ViewCompositionStrategy.Default jako 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 ambientShadowColor i spotShadowColor do GraphicsLayerScope (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 TextToolbar przyjmuje teraz argumenty lambda zamiast ActionCallback. (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.onPlaced i interfejs OnPlacedModifier są teraz stabilne. (Ib5482)
  • Hurra! Animacja kompozycji obsługuje teraz ustawienie „Skala czasu trwania animatora” w opcjach programisty. (I5a4fc, b/161675988)
  • Dodano modyfikator BeyondBoundsLayout lokalny (If8b51, b/184670295)
  • Tekst: includeFontPadding jest teraz domyślnie wyłączony. Problemy z przycinaniem wynikające z includeFontPadding=false zostały rozwiązane i nie powinno już dochodzić do przycinania w przypadku wysokich skryptów. (I31c84, b/171394808)

Poprawki błędów

  • ComposeContentTestRule.setContent będzie teraz zgłaszać błąd IllegalStateException, 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, ComposableTargetMarker i ComposableOpenTarget, 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 ComposeNode lub powiązane.

    W przypadku niestandardowych funkcji stosujących funkcje kompozycyjne, które wywołują ComposeNode lub ReusableComposeNode, należy dodać adnotację ComposableTarget do funkcji i wszystkich typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji oznaczonej symbolem ComposableTargetMarker, a następnie użycie tej adnotacji zamiast symbolu ComposableTarget. Adnotacja kompozycyjna oznaczona symbolem ComposableTargetMarker jest równoważna adnotacji ComposbleTarget z pełną i jednoznaczną nazwą klasy atrybutu jako parametrem stosującym. Przykład użycia elementu ComposableTargetMarker znajdziesz w sekcji anroidx.compose.ui.UiComposable. (I38f11)

  • Font(resId, ...) przyjmuje teraz loadingStrategy w stabilnym interfejsie API. (Ief3d2)

  • Interfejs FontLoadingStrategy jest 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.ResourceLoader na FontFamily.Resolver. (Ia0060)

Poprawki błędów

  • Podane FontFamily.Resolver są przekazywane do podkompozycji, takich jak wyskakujące okienko.
  • Podane Font.ResourceLoader są 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 notifyFocusedRect w TextInputSession i TextInputService zostały wycofane i nie będą wywoływane. Zamiast niej używaj zasady BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Wprowadzono metodę destroyDisplayListData w klasie RenderNode (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 movableContentOf jest 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)

  • FontFamilyResolver jest teraz dostępny w ramach LocalFontFamilyResolver.current

  • Dodano createFontFamilyResolver(context) i createFontFamilyResolver(context, coroutineScope), aby tworzyć nowe moduły rozpoznawania FontFamily poza użyciem funkcji Compose.

  • Komponenty Paragraph i MultiParagraph przyjmują teraz wartość FontFamily.Resolver

  • TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolver używany w tym układzie, wycofany TextLayoutResult.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.preload

  • FontFamilyResolver.setAsyncLoadContext umoż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.ResourceLoaded API obsługujący opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy deweloperom aplikacji bezpośredniego korzystania z tego interfejsu API. Aby dodać nowe typy czcionek, zobacz AndroidFont.

  • Funkcja rozszerzenia Font.AndroidResourceLoader umożliwia tworzenie Font.ResourceLoader poza kompozycją.

  • Dodano parametr loadingStrategy do 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 zasady FontFamilyResolver.preload.

  • Interfejs fontResource(FontFamily): Typeface 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. Zamiast tego użyj FontFamilyResolver.preload (If8e7c, b/174162090).

  • Konstruktor SubcomposeLayoutState akceptujący maxSlotsToRetainForReuse został wycofany. Zamiast tego jest nowy konstruktor akceptujący SubcomposeSlotReusePolicy – 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 Color jako 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.resolve zwraca State<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 FontLoader na komputery
  • Nowa fabryka createFontFamilyResolver na 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() i Modifier.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.y jest 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 CompositionData na 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 NullPointerException w androidx.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, gdy HardwareRenderer.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)
  • ComposeNotIdleException jest teraz przedłużony z Exception zamiast bezpośrednio z Throwable. Pamiętaj, że oznacza to, że klauzule wyłapujące, które wyłapywały Exception, 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() i InjectionScope.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.Touch i MultiModalInjectionScope.Mouse. Aby wstrzykiwać zdarzenia dotyku i myszy w przypadku gestów wielomodowych, możesz teraz używać funkcji MultiModalInjectionScope.touch() i MultiModalInjectionScope.mouse(). Obie przyjmują lambdę, która ma zakres odbiorcy tej modalności. (Idde18)

Poprawki błędów

  • Wartość domyślna parametru durationMillis w przypadku parametru TouchInjectionScope.swipeWithVelocity jest 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 BringIntoView API, 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ń ExperimentalComposeUiApi z ViewRootForInspector i LayoutInfo.ownerViewId (I5c2e3)
  • Dodano przeciążenie bez elementów podrzędnych dla układu, co zwiększa wydajność (Ib0d9a).
  • Usunięto InternalCompilerApi z metod Composer, które muszą być wywoływane w różnych modułach (I1aa0b).
  • Funkcja SemanticsNodeInteraction.performSemanticsAction zwraca teraz SemanticsNodeInteraction, na którym została wywołana. (I9e5db)
  • Dodano LocalInputModeManager CompositionLocal, aby wykrywać tryb dotykowy i niedotykowy. (I6a83c, b/175899786)
  • Dodano viewConfiguration: ViewConfiguration do LayoutInfo, 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: ViewConfiguration do InjectionScope, 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.
  • 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.state zostało wycofane i zastąpione przez Recomposer.currentState, aby zmienić jego typ na StateFlow (Ic2ab3, b/197773820).
  • Dodano użytkowników flush() i dispose() do albumu InjectionScope. 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)
  • InjectionScope obsługuje teraz Density, co umożliwia łatwe konwertowanie jednostek px i dp w performTouchInput i 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: Density i layoutDirection: LayoutDirection do albumu LayoutInfo. Dzięki temu użytkownicy LayoutInfo będą mogli prawidłowo interpretować wymiary i pozycję ujawnione w LayoutInfo. (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ści Mouse obiektu MultiModalInjectionScope podczas gestu wprowadzania danych w wielu trybach za pomocą performMultiModalInput. Dokumentację dostępnego interfejsu API znajdziesz w MouseInjectionScope. (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.swipeWithVelocity Obecnie 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

  • PointerEvent ma teraz PointerEventType do 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 performGesture i GestureScope, które zostały zastąpione przez performTouchInput i TouchInjectionScope. (Ia5f3f, b/190493367)
  • Dodaliśmy touchBoundsInRoot do SemanticsNode, 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 performTouchInput i TouchInjectionScope jako zamienniki performTouchInput i TouchInjectionScope, co utorowało drogę innym metodom (np. myszy).

    TouchInjectionScope ma te same metody co GestureScope, z wyjątkiem movePointerTo i movePointerBy, które zostały zmienione na updatePointerTo i updatePointerBy. Wszystkie inne metody są takie same.

    Działanie funkcji TouchInjectionScope jest niemal identyczne z działaniem funkcji GestureScope, z dwoma drobnymi różnicami:

    1. Gdy wysyłane jest zdarzenie down, a wskaźniki zostały przesunięte bez wysłania zdarzenia move (czyli użyto metody updatePointerTo(), ale nie move(), a potem wywołano down()), 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.
    2. 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 TouchInjectionScope wprowadza nową metodęcurrentPosition(pointerId: Int) uzyskiwania bieżącej pozycji danego wskaźnika. (If1191, b/190493367)

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-alpha03 Compose, aby zależał od Kotlin 1.5.30. (I74545)

Zmiany w interfejsie API

  • Dodano Modifier.inspectable do opakowywania innych modyfikatorów. (I1909b, b/191017532)
  • Dodano BlurredEdgeTreatment interfejs 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, hasScrollToIndexAction i hasScrollToKeyAction to 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 performGesture zostanie 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.bringIntoView akceptuje teraz prostokąt jako parametr, co umożliwia wyświetlanie części komponentu (Ice2c5, b/194330245).
  • AnimatedImageVector i powiązane interfejsy API znajdują się teraz w nowym module androidx.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ść usePlatformDefaultWidth na „false”. (Iffaed, b/192682388)
  • Przeniesiono InfiniteAnimationPolicy do :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.31 ję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.30 ję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 Gradle 7.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ść usePlatformDefaultWidth na „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-tooling i ui-tooling-preview (Iefa28, b/190649014)

Zmiany w interfejsie API

  • Usunięto eksperymentalne interfejsy FocusManager#moveFocusIn i FocusManager#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 useDefaultMaxWidth w PopupProperties została zmieniona na usePlatformDefaultWidth. (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 @Preview udostępnia teraz LocalActivityResultRegistryOwner, który umożliwia wyświetlanie podglądu funkcji kompozycyjnych korzystających z interfejsów API, takich jak rememberLauncherForActivityResult(), które zależą od istnienia tego właściciela. (Ib13d1, b/185693006)
  • Compose @Preview udostępnia teraz LocalOnBackPressedDispatcherOwner, który umożliwia wyświetlanie podglądu funkcji kompozycyjnych korzystających z interfejsów API, takich jak BackHandler, które wymagają istnienia tego właściciela. (Ia1c05, b/185693006)

Poprawki błędów

  • Przeniesiono InfiniteAnimationPolicy do androidx.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 jak ComposeTestRule.mainClock.advanceTimeUntil {} W przyszłości mogą zostać zidentyfikowane kolejne ograniczenia. (I284fa)

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.txt znajdującym się w katalogu src/main lub w odpowiednim katalogu. Plik zawiera regułę w każdym wierszu. Reguła jest w tym przypadku wzorcem dopasowywanym do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART czytelnego dla człowieka, który jest używany podczas korzystania z adb shell profman --dump-classes-and-methods .... Reguły te przyjmują jedną z 2 form, aby kierować reklamy na metody lub klasy.

  • Reguła metody będzie mieć ten wzorzec:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Reguła klasy będzie miała następujący wzorzec:

    <CLASS_DESCRIPTOR>
    
  • W tym przypadku <FLAGS> to co najmniej jeden z tych znaków: H, S i P. 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 klasa androidx.compose.runtime.SlotTable będzie miała deskryptor Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> to sygnatura metody, która zawiera jej nazwę, typy parametrów i typy zwracanych wartości. Na przykład metoda fun isPlaced(): Boolean w LayoutNode ma sygnaturę isPlaced()Z.

  • Wzorce mogą zawierać symbole wieloznaczne (**, * i ?), dzięki czemu jedna reguła może obejmować wiele metod lub klas.

Do czego służą reguły?

  • Metoda oznaczona flagą H jest „gorącą” metodą i powinna być skompilowana z wyprzedzeniem.

  • Metoda oznaczona flagą S jest wywoływana podczas uruchamiania i powinna być skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretacji w momencie uruchamiania.

  • Metoda oznaczona flagą P jest wywoływana po uruchomieniu.

  • Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona w stercie, aby uniknąć kosztów ładowania klasy.

Jak to działa?

  • Biblioteki mogą definiować te reguły, które będą pakowane w artefakty AAR. Gdy 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

  • NestedScrollSource enum jest zastępowany przez klasę wbudowaną. (Ie321b, b/187055290)
  • Nazwa FocusManager.clearFocus(forcedClear = true) została zmieniona na FocusManager.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 @ExperimentalComposeUiApi z konta PopupProperties. (I01fa6)
  • Typ kolumny PointerType został 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 środowiskiem Modifier.focusTarget() (I6c860)
  • Funkcje Modifier.onSizeChanged() i Modifier.onGloballyPositioned() nie są już funkcjami wstawianymi (I727f6, b/186109675).
  • KeyboardType enum jest zastępowany przez klasę wbudowaną. (I73045, b/187055290)
  • Zastąpiono wyliczenie FocusState interfejsem FocusState (Iccc1a, b/187055290).
  • Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
  • PlaceholderVerticalAlign zostanie przekonwertowany na klasę w tekście. (If6290)
  • TextUnitType jest teraz klasą wbudowaną. (I4cba9)
  • funkcje AnnotatedString.withAnnotation są 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, detectVerticalGestures i detectHorizontalGestures bę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 ViewRootForInspector do użycia w inspektorze (Ib70df)
  • SubcomposeLayoutState obsł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)
  • FocusDirection enum 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)
  • TextGeomerticTransform i TextDecoration w AnnotatedString zostaną 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)
  • @ComposeCompilerApi nie jest już @RequiresOptIn (Iab690)
  • Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i jej elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
  • Dodano SemanticsActions.ScrollToIndex do przewijania listy z elementami indeksowanymi do elementu o określonym indeksie oraz SemanticsProperties.IndexForKey do 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 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ępuerror, 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ędziowe addTtsAnnotation i withAnnotation do AnnotatedString.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) i FocusManager.moveFocus(Out) (Ic5534, b/183746743)
  • Dodano eksperymentalny interfejs performTextInputSelection API (I2dcbb, b/178510628)
  • Interfejs InputEventCallback został 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,accessibilityActionScrollRight i accessibilityActionScrollDown. 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 hideSoftwareKeyboard i showSoftwareKeyboard w SoftwareKeyboardController na hide() i show().
    • 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/LazyRow znajdujących się na krawędziach po szybkim przesunięciu (Ie4d13, b/183877420).
  • AndroidViewBinding teraz prawidłowo usuwa fragmenty rozszerzone za pomocą FragmentContainerView, gdy AndroidViewBinding jest usuwany z hierarchii kompozycji. (Ib0248, b/179915946)
  • AndroidViewBinding prawidłowo zagnieżdża fragmenty rozszerzone za pomocą FragmentContainerView, gdy ComposeView znajduje się w Fragment, 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.2 i 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/endX i startY/endY do funkcji swipeUp/swipeDown/swipeLeft/swipeRight w GestureScope. (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 LocalSoftwareKeyboardController composition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I5951e, b/168778053)
  • Dodano nowy interfejs API LocalSoftwareKeyboardController composition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I84472, b/168778053)
  • Usunięto te elementy: SemanticsMatcher
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • Oznaczono te elementy SemanticsMatchers jako @ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • Dodaliśmy te SemanticsMatcher:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Poprawki błędów

  • Wymuszanie ograniczeń dotyczących publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
  • androidx.compose.ui:ui nie 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 LocalSoftwareKeyboardController composition 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)
  • InteractionState zostało zastąpione przez [Mutable]InteractionSource
    • Interfejsy odpowiadają za wysyłanie i zbieranie zdarzeń interakcji.
    • Zamiast przekazywać interactionState = remember { InteractionState() } do komponentów takich jak Button i Modifier.clickable(), używaj interactionSource = remember { MutableInteractionSource() }.
    • Zamiast: Interaction.Pressed in interactionState uż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:
    • ColorStop to teraz Pair<Float, Color>
    • SpanStyleRange to teraz `AnnotatedString.Range
    • ParagraphStyleRange to teraz AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation to teraz AnnotatedString.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)
  • defaultFactory w przypadku compositionLocalOf i staticCompositionLocalOf jest 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 defaultFactory powinna 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 zasady Modifier.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}Resource funkcji. (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 z androidx.activity:activity-compose:1.3.0-alpha01. Funkcje viewModel() i LocalViewModelStoreOwner zostały usunięte z biblioteki compose:ui. Użyj tych z androidx.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 icon w elemencie BottomNavigationItem został przeniesiony za parametry selected i onClick.
    • Zmieniono nazwę parametru alwaysShowLabels w elemencie BottomNavigationItem na alwaysShowLabel.
    • Zmieniliśmy nazwy parametrów bodyContent w kilku komponentach na content.
    • 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 secondaryVariant do darkColors(). Ten kolor jest zwykle taki sam jak secondary w 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ę onValueChangeEnd w Slider na onValueChangeFinished i ustawiono wartość null.
    • Zmieniono nazwę parametru text w Snackbar na content, aby zachować spójność.
    • Dodano parametr contentPadding do DropdownMenuItem, aby umożliwić dostosowywanie domyślnego dopełnienia, a content stał się rozszerzeniem RowScope.
    • Zmieniono nazwę ModalDrawerLayout na ModalDrawer.
    • Zmieniono nazwę BottomDrawerLayout na BottomDrawer.
    • (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 isFocusable zostało przeniesione do parametru focusable w PopupProperties (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 funkcji remember { mutableStateOf(0) }, usuniemy funkcję savedInstanceState { 0 }. Zamiast tego używaj rememberSaveable { 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 parametr stateSaver. 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).
  • snapshotFlow i withMutableSnapshot nie 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 ramach ComposeTestRule. (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 class z 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 rozszerza ComposeTestRule i definiuje setContent, która została usunięta z ComposeTestRule. Dodano metodę fabryczną createEmptyComposeRule(), która zwraca obiekt ComposeTestRule i 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 initial z parametrów konstruktora EditingBuffer. (I326d5)
  • 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.

    RememberObserver zastępuje CompositionLifecycleObserver, 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, funkcja onRemembered jest wywoływana dla każdego odwołania, a funkcja onEnter jest wywoływana tylko raz. onEnter było wywoływane wielokrotnie, jeśli obiekt był używany w kompozycjach podrzędnych, np. WithConstraints i Scaffold, co sprawiało, że pojedyncze wywołanie onEnter było niewiarygodne i zostało usunięte w przypadku RememberObserver.

    RememberObserver dodaje onAbandoned, które jest wywoływane, jeśli instancja RememberObserver jest zwracana z wywołania zwrotnego przekazanego do remember, ale nie została zapamiętana w stanie kompozycji, a więc nigdy nie zostanie wywołana funkcja onRemembered. 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 instancja RememberObserver po pojedynczej rekomendacji referencyjnej powyżej śledzi zasób zewnętrzny, zarówno onForgotten, jak i onAbandoned wskazują, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęcie pracy lub zasoby przydzielone w onRemembered, można zignorować onAbandoned, ponieważ nie zostanie on wywołany, jeśli zostanie wywołany onRemembered. (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. Funkcje items(items: List) i itemsIndexed(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) i itemsIndexed(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ę @ExperimentalTesting na @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> zamiast T. 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 Applier został 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 na insertTopDown().

    Dodaliśmy nową metodę: insertBottomUp().

    Aplikator wstawia węzły do edytowanego drzewa za pomocą funkcji insertTopDown() lub insertBottomUp() w zależności od tego, która z nich jest skuteczniejsza.

    Niektóre drzewa, np. LayoutNode i View, 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 zmianie Applier zastępuje insertBottomUp(), aby budować drzewo od dołu do góry, a insertTopDown() – 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.drawOpacity na Modifier.alpha
    • Zmieniono nazwę Modifier.drawShadow na Modifier.shadow (I264ca, b/173208140)
  • 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ą pivotFractionX i pivotFractionY jako component1 i component2 (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 children dla lambdy końcowej na content. (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 Ambient i 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.Typeface do androidx.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 id została zmieniona na layoutId w przypadku LayoutIdParentData. Nazwa Measurable.id została zmieniona na Measurable.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() na typeface() (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 relativePaddingFrom została zmieniona na paddingFrom. Dodano modyfikator paddingFromBaseline, 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ści Modifier.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 z PointerInputFilter.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.capitalize i AnnotatedString.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> z PointerInputFilter.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 listy Owner – OwnedLayer obsł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 createAndroidComposeRule i AndroidInputDispatcher z androidx.ui.test.android na androidx.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

  • emitView został wycofany. Jeśli to możliwe, używaj AndroidView do 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)
  • FocusState2 zostało wycofane i zastąpione przez FocusState (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 onChildPositioned i OnChildPositionedModifier. Zamiast tego programiści powinni używać onPositioned i OnPositionedModifier w 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 mergePolicy do SemanticsPropertyKey. 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 na PlacementScope.place(), a poprzednia nazwa PlacementScope.place() została zmieniona na PlacementScope.placeRelative(). W rezultacie metoda PlacementScope.place() nie będzie już automatycznie odzwierciedlać pozycji w kontekstach pisanych od prawej do lewej. Jeśli chcesz to zrobić, użyj zasady PlacementScope.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ń funkcji remember { mutableStateOf(...) } w celu uniknięcia wątpliwości. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji zarządzania stanem oraz pasuje do wzorca by 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)
  • Row i Column to 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)
    1. Usuwanie nieużywanego interfejsu OffsetBase
    2. Ujednolicenie klas Offset i IntOffset w celu zapewnienia spójności interfejsu API
    3. Zmiana nazwy IntOffset.Origin na IntOffset.Zero w celu zachowania spójności z interfejsem Offset API
    4. Przeniesiono metodę nativeCanvas z interfejsu Canvas, aby umożliwić użytkownikom tworzenie własnych instancji Canvas.
    5. 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.
    6. Zmiana nazw wyliczeń ClipOp na Pascal Case
    7. Zmiana nazwy wyliczeń FilterQuality na Pascal Case
    8. Zmieniono nazwy wyliczeń StrokeJoin na Pascal Case
    9. Zmiana nazw wyliczeń PointMode na Pascal Case
    10. Zmiana nazwy wyliczeń PaintingStyle na Pascal Case
    11. Zmiana nazwy wyliczeń PathFillType na Pascal Case
    12. Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
    13. Zaktualizowano implementację DrawCache, aby nie używać już parametrów lateinit.
    14. Zaktualizowano DrawScope, aby nie używać już leniwego delegowania w przypadku wewnętrznych parametrów fillPaint i strokePaint
    15. Zaktualizowano funkcję kompozycyjną Image, aby uniknąć używania Boxa i zmniejszyć obciążenie.
    16. Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
    17. Zaktualizowano klasę PathNode, aby zawierała adnotacje @Immutable dla każdej instrukcji ścieżki.
    18. Zaktualizowano podkompozycję wektora, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje.
    19. Wycofanie metod konstruktora towarzyszącego Rect na rzecz konstruktorów funkcji
    20. Zaktualizowano klasy Brush i konstruktory funkcji za pomocą interfejsów API @Immutable i @Stable
    21. Zaktualizowano wyliczenie VertexMode, aby używać notacji PascalCase
    22. Zaktualizowano metodę selectPaint w klasie DrawScope, aby warunkowo zastępować parametry pędzla w obiekcie Paint, jeśli uległy zmianie.
    23. 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.performPartialGesture został usunięty. Zamiast niej używaj zasady SemanticsNodeInteraction.performGesture. (Id9b62)
  • Nazwa LazyColumnItems została zmieniona na LazyColumnFor. Nazwa LazyRowItems została zmieniona na LazyRowFor (I84f84)
  • Pakiet foundation.shape.corner został spłaszczony do foundation.share (I46491, b/161887429)
  • Zmieniono nazwę AndroidComposeTestRule na createAndroidComposeRule. (I70aaf)
  • Dodano więcej interfejsów API do TextLayoutResult. (Id7e04)
  • Nazwa materiału FilledTextField została zmieniona na TextField, a nazwa podstawowego materiału TextField została zmieniona na BaseTextField, 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-dev15 biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.

Zmiany w interfejsie API

  • 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)

  • (I45f09, b/152842521)

    • 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 Force z 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).
  • runOnIdleCompose Nazwa została zmieniona na runOnIdle (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:

    1. Niektóre połączenia będą pomijane w miejscach, w których wcześniej nie były pomijane.
    2. 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 wersji vararg. 5. Adnotacja Pivotal została wycofana. Użyj key jako 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).