Interfejs Compose
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Zobacz dokumentację interfejsu API wszystkich pakietów Compose)
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja Alfa |
|---|---|---|---|---|
| 22 października 2025 r. | 1.9.4 | - | 1.10.0-beta01 | - |
Struktura
Compose to połączenie 7 identyfikatorów grupy Maven w androidx. Każda grupa zawiera ukierunkowany podzbiór funkcji, a każda z nich ma własny zestaw informacji o wersji.
W tej tabeli znajdziesz wyjaśnienie grup i linki do poszczególnych zestawów informacji o wersji.
| Grupa | Opis |
|---|---|
| compose.animation | tworzyć animacje w aplikacjach Jetpack Compose, aby zwiększać komfort użytkowników; |
| compose.compiler | Przekształcanie funkcji z adnotacją @Composable i włączanie optymalizacji za pomocą wtyczki kompilatora Kotlin. |
| compose.foundation | Twórz aplikacje w Jetpack Compose za pomocą gotowych elementów składowych i rozszerzaj podstawy, aby tworzyć własne elementy systemu projektowania. |
| compose.material | Twórz interfejsy Jetpack Compose za pomocą gotowych komponentów Material Design. Jest to punkt wejścia wyższego poziomu w Compose, który ma udostępniać komponenty zgodne z tymi opisanymi na stronie www.material.io. |
| compose.material3 | Twórz interfejsy Jetpack Compose za pomocą komponentów Material Design 3, czyli kolejnej ewolucji Material Design. Material 3 zawiera zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczny kolor. Został zaprojektowany tak, aby pasować do nowego stylu wizualnego Androida 12 i interfejsu systemu. |
| compose.runtime | Podstawowe elementy modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, do którego kierowany jest wtyczka kompilatora Compose. |
| compose.ui | Podstawowe komponenty interfejsu Compose potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i dane wejściowe. |
Deklarowanie zależności
Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.9.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.10
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 fokusu. Można to wyłączyć za pomocą
isOptimizedFocusEventDispatchEnabled = false(I919fb, b/449228515). - Aktualizuje wszystkie interfejsy API dotyku pośredniego, aby używać nazwy interfejsy API wskaźnika pośredniego, co jest zgodne z interfejsami API danych wejściowych wskaźnika. (I238ce, b/451607214)
- Funkcje
TextDirection,TextAlign,Hyphens,FontSynthesisivalueOfzwracają teraz błądIllegalArgumentException, gdy otrzymają nieznaną wartość. (I07c67) - Zaktualizuj
CompositionDataTree.makeTree, aby przekazywać wartości domyślne zamiast funkcji opakowującej. (Id64a6, b/445229688) - Interfejsy API reguł testowych
createComposeRule,createAndroidComposeRuleicreateEmptyComposeRule, które akceptują parametreffectContext, są stabilne, a wartość domyślna tego parametru toEmptyCoroutineContext. (If400c, b/450540702) - Nazwa
UnplacedStateAwareModifierNodezostała zmieniona naUnplacedAwareModifierNode(I6a551, b/449719932) - Cofanie optymalizacji przechwytywania treści (Ic000b, b/442364065)
- Dodano flagę funkcji
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled. Umożliwia to optymalizację wydajności, ponieważ żądania współrzędnych, takie jakLayoutCoordinates.positionInRoot(), korzystają z buforowanych przesunięć, które mamy już wRectManager, zamiast przy każdym wywołaniu przechodzić przez całe drzewo. (Ieaadc)
Poprawki błędów
PlaceholderSpanteraz prawidłowo używa 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 nieprawidłowym pozycjonowaniu zagnieżdżonych wyskakujących okienek u góry ekranu. Są one teraz 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)
- Naprawia pola z brakującymi w inspektorze parametrami wbudowanymi w funkcjach lambda wygenerowanych przez Kotlin w wersji 2.2.20 (I9855d, b/447110005).
- Rozwiązuje problem z zasłanianiem nazw zasobów autouzupełniania między modułami interfejsu a modułami podstawowymi (I5da5a).
Wkład zewnętrzny
UiModeszmieniono nazwę na AndroidUiModes, aby odzwierciedlała fakt, że jej stałe pochodzą z interfejsu Android API. (Ia0a77)
Wersja 1.10.0-alpha04
24 września 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-alpha04 Wersja 1.10.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Wariant reguły testu tworzenia, który akceptuje parametr
CoroutineContext, został przeniesiony do wersji stabilnej. Adnotacja „eksperymentalna” została usunięta i deweloperzy nie muszą już wyrażać zgody na korzystanie z tego interfejsu API. (I74e6e) - Usunięto kartę
ComposeUiFlags.isRectTrackingEnabled. Ta logika nie zawsze jest włączona. (Id78df) - Wycofano wbudowane przeciążenie funkcji
Updater#set, ponieważ zbyt wiele razy opakowywano podaną wartość (Id679e). - Oznaczanie właściwości semantycznej
onAutofillTextjako wycofanej. (I6f81c) - Wprowadzono
UnplacedStateAwareModifierNode. Zapewnia 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ą parametru
RetainObserver.onRetainedi dodaliśmy parametrRetainObserver.onUnused, który jest odpowiednikiem parametruRememberObserver.onAbandoned. (Ia6fc5) - Dodano
onVisibilityChangedNode(), które generujeModifier.Nodeużywane przezModifier.onVisibilityChanged()za pomocą delegowania. Umożliwia to rozszerzenie tej funkcjonalności w niestandardowymModifier.Node. (I70d84, b/443001320)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że treści wbudowane nie były renderowane, gdy znajdowały się w ostatnim wierszu wielowierszowego tekstu z wielokropkiem, mimo że symbol zastępczy poprzedzał region z wielokropkiem. (I76aaf, b/441829208)
Wersja 1.10.0-alpha03
10 września 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-alpha03 Wersja 1.10.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Zmienia nazwę
DelegatableNode.invalidateLayoutForSubtreenaDelegatableNode.invalidateMeasurementForSubtree. (I94257, b/430106107) - Usuwa zbędny element dopasowujący
isInHiddenAccessibilitySubtree. (I4476c, b/443792965) - Wprowadza ślady stosu Compose oparte na kluczu grupy, które są domyślnie włączone w przypadku wszystkich zminimalizowanych aplikacji. Mapowanie ProGuard dla tych śladów będzie generowane przez wtyczkę Gradle kompilatora Compose od wersji Kotlin 2.3.0. (Ifbcb5)
Modifier.skipToLookaheadSizekorzysta teraz z domyślnie włączonej funkcji lambda, która włącza pomijanie rozmiaru tylko wtedy, gdy aktywna jest wspólna zmiana, tak samo jakModifier.skipToLookaheadPosition. (Ibe0f5, b/432485585)ComposeUiFlags.isOutOfFrameDeactivationEnabledzostanie usunięta, a ta funkcja będzie zawsze włączona. (I421ed)- Przeniesienie funkcji fabrycznych do tworzenia instancji
FillableDatado obiektu towarzyszącego. Zamiast wywoływać funkcjęFillableData(value), użyj nowych metod fabrycznych:FillableData.createFrom(value). (I2e200, b/441719650) - Wprowadzamy
BeyondBoundsLayoutModifierNodenowy węzeł modyfikatora, który umożliwia wykonywanie układu wykraczającego poza granice w przypadku wyszukiwania z użyciem fokusu. (I39be1, b/416133658) FocusTargetModifierNode.requestFocus()przekazuje fokus do jednego z elementów podrzędnych, gdy sam nie może być zaznaczony. Jest to teraz zgodne z przeglądarkamiFocusRequester.requestFocus()iFocusRequesterModifierNode.requestFocus(). Jeśli nie potrzebujesz takiego działania, ustaw w aplikacji wartość false dla flagiComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabled. (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 funkcji autouzupełniania w interfejsie
FillableDataAPI. Dodanoval dateMillisValue: Longdo pobierania informacji o dacie oraz odpowiedni konstruktorFillableData(dateMillisValue: Long)do tworzenia instancjiFillableDatana podstawie daty. (Id072a)
Wkład zewnętrzny
- Wprowadzono obiekt
UiModes, aby deklarować stałe używane w adnotacjiUiMode(I03cb8).
Wersja 1.10.0-alpha02
27 sierpnia 2025 roku
Publikacja androidx.compose.ui:ui-*:1.10.0-alpha02 Wersja 1.10.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Zaktualizuj
FillableData, aby obsługiwać komponenty inne niż tekstowe, takie jak przełączniki i listy, w tym wartości logiczne i liczbowe wFillableDataoraz konstruktory fabryczne do tworzenia instancji logicznych i listFillableData, które są tłumaczone naAutofillValueplatformy. Dodawane są też odpowiednie właściwości semantyczne i działania. (Ia8105, Icc5cf) - W trybie bez dotyku system widoku przypisuje początkowe/domyślne zaznaczenie do jednego z elementów na ekranie, które można zaznaczyć. 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 dopasowania semantyczne
isHiddenFromAccessibility()iisInHiddenAccessibilitySubtree(). (I9f5a1) - Dodano
runCurrent()doMainTestClock, aby uruchamiać wszystkie zaległe zadania w harmonogramie bazowym. Ma to na celu obsługę testów naStandardTestDispatcher, gdzie zadania są dodawane do harmonogramu, a nie wykonywane natychmiast, gdy mają opóźnienie 0 ms. Test można skonfigurować tak, aby używałStandardTestDispatcher, tworzącComposeTestRulei przekazując do niegoStandardTestDispatcher. Domyślnie testy są uruchamiane naUnconfinedTestDispatcher, w którym to przypadku nigdy nie trzeba wywoływać funkcjirunCurrent(). - Dodaliśmy obsługę przeprowadzania testów na urządzeniu
StandardTestDispatcher. W przeszłości platforma testowa była (i nadal jest) konfigurowana za pomocąUnconfinedTestDispatcher, która nieznacznie różni się od środowiska produkcyjnego. Możesz teraz zmienić tę konfigurację, tworząc własnyStandardTestDispatcheri dodając go doeffectContextpodczas tworzeniaComposeTestRule(lub podczas wywoływania runComposeUiTest). (I334d0, b/254115946) - Zaktualizuj kod, aby utworzyć drzewo węzłów z
SlotTree. (I997d3)
Poprawki błędów
- Interfejs Compose UI instaluje teraz na Androidzie komponenty
RetainScopesuwzględniające cykl życia. Domyślne działanie będzie teraz zachowywać wartościretainw przypadku zmian konfiguracji. (Id4a09, b/177562901)
Wkład zewnętrzny
- Dodaje możliwość obliczania prędkości wskaźnika na podstawie śledzonych zdarzeń wskaźnika przy użyciu zachowania specyficznego dla platformy.
VelocityTracker(I621e8)
Wersja 1.10.0-alpha01
13 sierpnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.10.0-alpha01 Wersja 1.10.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wskaźniki myszy lub touchpada w
ComposeViewbędą teraz automatycznie usuwać fokus, jeśli wskaźnik nie znajduje się w granicach węzła, na którym jest fokus. Dzięki temu użytkownik może wyczyścić fokus, klikając ekran. Jest to bardziej oczekiwane niż obecne zachowanie w przypadku korzystania z urządzeń wskazujących. Możesz zrezygnować z tego sposobu działania za pomocą nowego interfejsuAbstractComposeView.isClearFocusOnPointerDownEnabledAPI. (I6322b, b/282963174) - Wprowadzenie interfejsu
FillableData, który obsługuje różne typy komponentów autouzupełniania, oprócz komponentu tekstowego. (If9bd2) - Nowy interfejs API umożliwiający dynamiczne włączanie i wyłączanie elementów udostępnionych, który uwzględnia też, czy trwa już przejście elementu udostępnionego. Nowy interfejs API do konfigurowania alternatywnych granic elementu docelowego, gdy docelowy element współdzielony zostanie usunięty podczas przejścia. Nowy interfejs API do uzyskiwania
LayoutCoordinatesLookaheadScope. (I18dd4, b/409819304, b/395670637) - Wprowadź flagę
isNestedScrollInteropIntegerPropagationEnabled, aby kontrolować eksperyment dotyczący wysyłania prawidłowych liczb całkowitych do zagnieżdżonego przewijania. (If8316) - Dodano
requestFocusForChildInRootBounds()doDelegatableNode, aby przenieść fokus na element podrzędny, który nakłada się na dany prostokąt. (I001ef) - Usunięto flagi:
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) - Dodano adnotację
@CheckResultdo funkcjiSemanticsNodewyszukiwania i selektora, aby wymusić używanie zwracanych wartości. (I6f86e, b/201652748) - Poprawienie wydajności procesu przechwytywania treści (I3c7c0)
- Wprowadzamy
CompositionLocal, którego można używać do modyfikowania pędzla podświetlenia udanego wypełnienia funkcji 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 kółkiem myszy. Wprowadziliśmy nowy interfejs API do testowania, który pomaga testować przypadki użycia w
MouseInjectionScope. Wprowadziliśmy też nowe przeciążenie metod przewijania wMouseInjectionScopeoraz flagę do kontrolowania nowego działania o nazwieisMouseWheel1DAxisLockingEnabled(I136df). - Dodaj
DeviceConfigurationOverridesdla typu i stanu klawiatury, typu i stanu nawigacji, stanu ekranu dotykowego oraz typu trybu interfejsu (I282f0). - Dodano nowy
LineHeightStyle.Modeo nazwieTight. Ten tryb pomaga wymuszać mniejsze wysokości wierszy, nawet jeśli mogą one obcinać wyższe glify. (Id3849) BaselineShiftma teraz wartość „Nieokreślony”, aby zapobiec boksowaniu.BaselineShift,Hyphens,LineBreak,TextAligniTextDirectionmają terazisSpecifiedfunkcje pomocnicze.Hyphens,TextAlign,TextDecorationiTextDirectionmają teraz metodyvalueOf()i wartości, które umożliwiają wydajną serializację i deserializację. (I8d44c)- Dodano 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 zwracana jest wartość false. Użycie funkcji
Dp.compareTo(Unspecified)zawsze zwraca wartość 0. Ustawienie flagiComposeUiUnitFlags.isDpCompareToChangedna wartość false przywróci poprzednie działanie funkcjiDp.compareTo(), w którym porównywanie wartości Unspecified z wartościami mniejszymi i większymi nie zawsze zwraca wartość false, a funkcjacompareTo()z wartością Unspecified działa tak samo jak funkcjaFloat.compareTo(). (Ifa88b, b/429221319)
Poprawki błędów
- Przeniesienie domyślnego minSdk z API 21 na API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Rozwiązuje problem, który uniemożliwiał tworzenie nowych
AndroidComposeViewspodczas trwającej zmiany. (I2e23e, b/340894487, b/287484338) - Naprawia błąd koloru podczas używania rysunku wektorowego, który używa jednego koloru, a
fillColornie jest ani całkowicie nieprzezroczysty, ani całkowicie przezroczysty. (I3b041, b/328677973) - Rozwiązuje problem polegający na tym, że ikony wczytywane za pomocą
painterResourcez kolorami specyficznymi dla motywu nie były aktualizowane po zmianie motywu. (I85ea0, b/424416571) - Wprowadzenie semantyki
onFillDataifillableData(I45d9e) - Kodowanie stanu specyficzne dla platformy jest teraz zawsze włączone w
StateRestorationTester. Dzięki temu zachowanie testu jest zgodne z przywracaniem rzeczywistego stanu aplikacji, np. z parcelizacją na Androidzie. (I38211, b/408154192, b/382294247) - Naprawiliśmy sporadyczne awarie podczas żądania ostrości. (57b31a11, b/431111149)
Wersja 1.9
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 polegający na tym, że wywołania zwrotne modyfikatora
onLayoutRectChangednie zawsze były wywoływane, gdy wartośćdebounceMillisbyła różna od zera. (72aba47, b/445324854)
Wersja 1.9.3
8 października 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.3 Wersja 1.9.3 zawiera te zatwierdzenia.
Poprawki błędów
- Usunęliśmy błąd, który powodował, że modyfikatory
onVisibilityChanged/onFirstVisible/onLayoutRectChangednie otrzymywały wywołań zwrotnych, jeśli przenoszony układ miał ponad 170 elementów podrzędnych. (4f2fdd, b/445356774)
Wersja 1.9.2
24 września 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.2 Wersja 1.9.2 zawiera te zatwierdzenia.
Poprawki błędów
Modifier.onVisibilityChanged()jest teraz prawidłowo wywoływane, gdy węzeł jest odłączany lub ponownie używany. (Ic5ce20)Modifier.onVisibilityChanged()ionLayoutRectChanged()prawidłowo obsługują teraz układy nadrzędne, używającplaceWithLayer()do umieszczania elementów podrzędnych. (Ia05ac9)- W przypadku
Modifier.onVisibilityChanged()ionLayoutRectChanged()prawidłowo powiadamiaj w sytuacjach granicznych, takich jak usuwanie warstwy lub modyfikatora warstwy czy 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 rysunku wektorowego, który używa jednego koloru, a
fillColornie jest ani całkowicie nieprzezroczysty, ani całkowicie przezroczysty. (I3b041, b/328677973)
Wersja 1.9.0
13 sierpnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0 Wersja 1.9.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.8.0
- Ważne zmiany w wersji 1.9.0 zostały opisane w tym artykule na blogu.
- Sprawdzanie za pomocą narzędzia Lint dostarczane z Compose wymaga teraz minimalnej wersji AGP 8.8.2. Jeśli nie możesz uaktualnić AGP, możesz zamiast tego uaktualnić Lint, używając w pliku
gradle.propertieswersjiandroid.experimental.lint.version=8.8.2(lub nowszej). Aby uruchamiać sprawdzanie kodu Compose w IDE, musisz mieć Androida Studio Ladybug lub nowszego. - Zmiana powodująca niezgodność: węzły modyfikatora
graphicsLayerimplementują teraz interfejsSemanticsModifierNode. Może to spowodować dodanie nowychSemanticsNodesdo drzewa semantycznego, a w konsekwencji niepowodzenie testów, które opierają się na założeniach dotyczących struktury drzewa semantycznego. Na przykład testy, które używająonChild,onParent,onSiblingi innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na rozwiązanie tych problemów jest bezpośrednie dodanietestTagdo 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ązuje problem polegający na tym, że ikony wczytywane za pomocą
painterResourcez kolorami specyficznymi dla motywu nie były aktualizowane po zmianie motywu systemu. (I85ea0, b/424416571) - Naprawia błędy w interfejsach API 21(Lollipop) i 28(Pie), w których podczas optymalizacji zmieniono nazwy ważnych metod graficznych. (Iebf99, b/425120571, b/420462749)
- Upewnij się, że nowo wstawione modyfikatory
onLayoutRectChangedsą początkowo wywoływane. (l9aa91), (lb348a) - Poprawka dotycząca nieprawidłowego unieważniania pamięci podręcznej przesunięcia, co powodowało wywoływanie modyfikatorów
onLayoutRectChangedz nieprawidłowymi współrzędnymi (ibd4cd), (lddc57) - Poprawka dotycząca obróconych lub przekrzywionych układów, które otrzymują nieprawidłowe współrzędne przez modyfikatory
onLayoutRectChanged(lddc57, b/426750475)
Wkład zewnętrzny
- Rozwiązaliśmy problem, który powodował, że elementy
dragAndDropSourcewLazyListznikały podczas przewijania. 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 polegający na tym, że jednolicie rozmyte cienie wewnętrzne nie przesuwały się prawidłowo z przesunięciem.
Wersja 1.9.0-beta02
2 lipca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-beta02 Wersja 1.9.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmienia obiekt towarzyszący na eksperymentalny, aby pasował do klasy. (I8452a)
- Usunięto eksperymentalną flagę
isTrackFocusEnabled(I003fd)
Poprawki błędów
- Jeśli
WindowInsetsnie narusza treściComposeView, wartościWindowInsetsRulersnie są podawane. (I71221)
Wersja 1.9.0-beta01
18 czerwca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-beta01 Wersja 1.9.0-beta01 zawiera te zatwierdzenia.
Zmiany powodujące niezgodność
- Węzły modyfikatora
graphicsLayerimplementują terazSemanticsModifierNode. Może to spowodować dodanie nowychSemanticsNodesdo drzewa semantycznego, a w konsekwencji niepowodzenie testów, które opierają się na założeniach dotyczących struktury drzewa semantycznego. Na przykład testy, które używająonChild,onParent,onSiblingi innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na rozwiązanie tych problemów jest bezpośrednie dodanietestTagdo węzła docelowego. Inne podejście to użycie mniej ścisłego dopasowania, np.onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Zmiany w interfejsie API
- Zmieniono
ShadowContextna interfejs zapieczętowany (I3ce40) - Dodaje sposób tworzenia zdarzenia dotyku pośredniego w różnych modułach (na potrzeby testowania) (I22e4c).
- Ustawia
IndirectTouchEvent.nativeEventeksperymentalny. (I6fda5) - Wprowadza zmiany w interfejsie API na podstawie opinii rady ds. API. (Ibf378)
- Usuń stałą
FrameRateCategory.NoPreference. Zmień nazwęModifier.requestedFrameRatenaModifier.preferredFrameRate. (I2f976) WindowInsetsRulers: zmieniono wartośćrulersIgnoringVisibilityna maksymalną. Zmieniono funkcjęgetDisplayCutoutBounds()na funkcję rozszerzeniaPlacementScope. WartośćWindowInsetsAnimationPropertieszostała zmieniona naWindowInsetsAnimation, a wartośćgetAnimationProperties()została zmieniona nagetAnimation(). (I3816f)- Zmieniono klasę
ShadowParamsnaShadow(I11cca) - Zmiana pakietu interfejsu API liczby klatek z
androidx.compose.ui.uinaandroidx.compose.ui(I8994e) - Zmieniono
InsetsRulers, aby był w kodzie wspólnym z nazwąWindowInsetsRulers. Uprościliśmy interfejs API, aby wszystkie wstawki miały wartośćWindowInsetsRulers. Wyodrębniono właściwości animacji inne niż linijki do klasyAnimationProperties. UsługaWindowInsetsRulers.innermostOf()może służyć do łączenia wieluWindowInsetsRulers. (I2f0c6, b/415012444) - Dodaliśmy interfejs API narzędzi do analizowania informacji o źródle dodanych przez kompilator Compose. (Iceaf9, b/408492167)
Poprawki błędów
- Flaga dla
isGetFocusedRectReturnEmptyEnabledzostała usunięta, ponieważ funkcja została w pełni zweryfikowana. (Ife722) - Naprawiono 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 wpływa 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 właściwość
SemanticsModifierNode.isImportantForBounds, która określa, czy węzeł ma być uwzględniany podczas obliczania granic. Domyślnie właściwość ma wartość „prawda”. Można ją ustawić na „fałsz”, aby wskazać, że węzeł nie powinien być brany pod uwagę przy określaniu granic. (I7ebec) - Dodaj funkcję fabryczną
SemanticsPropertyKeydo 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 funkcji
ComposeUiFlags.isRemoveFocusedViewFixEnabledi wycofano flagę. (I50328) - Wprowadzamy nową platformę cieni, którą można dostosowywać. Obejmuje to
DropShadowPainteriInnerShadowPainter, a także zależnościDropShadow/InnerShadow. Infrastruktura cieni jest udostępniana w taki sposób, że te same wygenerowane cienie mogą być udostępniane w wielu centrach obsługi połączeń bez konieczności ponownego generowania ich n razy. (I24f7a, b/160665122) - Wprowadzono węzły
CompositeShaderiCompositeShaderBrush, które tworzą złożony wynik z 2 shaderów. 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 nieprawidłowej kolejności w stosunku do widoków. (I56ad4) - Wcześniej okna, które zajmowały cały ekran, nie były rysowane w obszarze wycięcia na wyświetlaczu. Ten błąd został naprawiony, dzięki czemu okna z
decorFitsSystemWindows = falseiusePlatformDefaultWidth = falsemogą zajmować obszar wycięcia w ekranie. (I9e975) - Usunęliśmy błąd, który powodował, że po włączeniu zielony wskaźnik ostrości
TalkBacknie był rysowany, gdy aplikacja do pisania była w tle. (Ifd12a)
Wersja 1.9.0-alpha03
20 maja 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-alpha03 Wersja 1.9.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Flaga
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledpowoduje, że jeśli w elemencieComposeViewnie ma niczego, na czym można się skupić, ustawia prostokąt na wartość Empty. Zapobiega to wybraniu przez wyszukiwanie fokusu widoku, na którym ma się skupić. Jest to szczególnie ważne, gdy edytor IME ma opcję DALEJ, w przypadku której może próbować skupić się na błędachComposeViewirequestFocus(). (Ibd0e2, b/369256395) - Wprowadź flagę
isNestedScrollDispatcherNodeFixEnabled. (I0d24a) - Zmień nazwę
DialogProperties'dialogContentTitlenawindowTitle(Ibd27b) - Wprowadzono modyfikatory
Modifier.onFirstVisibleiModifier.onVisibilityChanged, które są modyfikatorami wyższego poziomu opartymi na modyfikatorzeModifier.onLayoutRectChanged. Te modyfikatory zostały opracowane specjalnie z myślą o obsłudze wielu typowych wymagań aplikacji, takich jak rejestrowanie wyświetleń czy automatyczne odtwarzanie filmów. Zostały one zaprojektowane z uwzględnieniem wydajności, dzięki czemu można ich używać w krytycznych scenariuszach opartych na listach bez ryzyka pogorszenia wydajności przewijania. Oprócz tych interfejsów API modyfikatorów dodaliśmy dodatkowe interfejsy APIRelativeLayoutBounds, aby obsługiwać te przypadki użycia i ułatwić deweloperom tworzenie podobnych modyfikatorów niestandardowych, które dokładnie odpowiadają ich potrzebom. (I759b8) - Zmień
setDiagnosticStackTraceEnabledna eksperymentalne, aby uwzględnić przyszły rozwój tej funkcji. (I11db3) - Wprowadź interfejsy API
Modifier.scrollable2D,Scrollable2DStatei towarzyszące im interfejsy API do tworzenia stanu. Wprowadziliśmy też wspólne funkcje rozszerzenia przewijania. (Ic61c8, b/214410040) - Wartości kolorów Compose 64-bit nie są bezpośrednio porównywalne z wartościami kolorów Androida
ColorLongs, ponieważ identyfikatory przestrzeni kolorów są w przypadku niektórych przestrzeni kolorów nieuporządkowane. Aby konwertować przestrzenie kolorów Androida, dodaliśmy 2 nowe interfejsy API:toColorLong()ifromColorLong(). (I36899) - Wprowadzono
ViewConfiguration.minimumFlingVelocity, aby umożliwić kontrolę dolnej granicy prędkości przesunięcia. (I11aab)
Wersja 1.9.0-alpha02
7 maja 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-alpha02 Wersja 1.9.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj
dialogContentTitledoDialogProperties, co ustawi 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 elementu
VelocityTrackerwDragGestureNode. Można to kontrolować za pomocą nowej flagiisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled.254ddb
Wersja 1.9.0-alpha01
23 kwietnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.9.0-alpha01 Wersja 1.9.0-alpha01 zawiera te zatwierdzenia.
Zmiany w zachowaniu
- Sprawdzanie za pomocą narzędzia Lint dostarczane z Compose wymaga teraz minimalnej wersji AGP 8.8.2. Jeśli nie możesz uaktualnić AGP, możesz zamiast tego uaktualnić Lint, używając w pliku
gradle.propertieswersjiandroid.experimental.lint.version=8.8.2(lub nowszej). Aby uruchamiać sprawdzanie kodu Compose w IDE, musisz mieć Androida Studio Ladybug lub nowszego.
Zmiany w interfejsie API
- Usuwa flagę, aby włączyć instrukcje śledzenia w narzędziu do śledzenia ścieżki wizyty (debugowanie). (I1b2a1)
- Zmieniono
InnerRectRulersiOuterRectRulesna metody. Usunięto parametr name z publicznego interfejsu APIRectRulers.DerivedRulersjest teraz opcją konstruktora linijek pionowych i poziomych.MergedHorizontalRulersiMergedVerticalRulerszostały zastąpione metodamiminOfimaxOfdo generowania instancji. (Iee89f, b/408192133) - Wycofaj
androidx.compose.ui.LocalSavedStateRegistryOwnerna rzeczandroidx.savedstate.compose.LocalSavedStateRegistryOwner. (I5439f, b/377946781) - Dodaj
Modifier.keepScreenOn, aby ustawić wyświetlacz tak, aby nie przechodził w stan uśpienia, gdy jest obecny (Ib5af4, b/408284174). - Dodaj nową właściwość semantyczną
Shape, którą można ustawić, gdy kształt elementu interfejsu różni się od jego prostokąta ograniczającego, np. prostokąta z zaokrąglonymi rogami. (I1376f) - Rozwiązanie problemu z wysyłaniem zdarzeń wskaźnika w szablonie
AndroidViewsi dodanie flagiisPointerInteropFilterDispatchingFixEnabledw celu ochrony zmian. (I0e272, b/372055500, b/408002332) FocusRestorernie przypina już poprzednio zaznaczonego elementu. Użytkownicy powinni używać klucza, aby mieć pewność, że poprzednio zaznaczony element ma ten sam hash kompozycji, dzięki czemu fokus zostanie przywrócony. (I4203b, b/330696779)- Zezwól na wywoływanie
ViewTreeObserver.OnScrollChangedprzez funkcję Twórz. To działanie jest wprowadzane pod flagąisOnScrollChangedCallbackEnabled. Wprowadziliśmy też funkcję rozszerzeniaDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) currentCompositeKeyHashzostało wycofane. Zamiast niej używaj zasadycurrentCompositeKeyHashCode. Zastępczy interfejs API koduje ten sam ciąg za pomocą większej liczby bitów, co wykładniczo zmniejsza prawdopodobieństwo, że 2 losowe, niezwiązane ze sobą grupy w hierarchii kompozycji będą miały ten sam klucz ciągu. (I4cb6a, b/177562901)- Projekty wydane w Kotlinie 2.0 wymagają do użycia KGP 2.0.0 lub nowszego (Idb6b5).
- Dodano obsługę sprawdzania kodu w narzędziu lint dla elementu
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 kompozycyjny (Ie5201).
- Udostępnianie natywnych
MotionEventna Androidzie. (I17286) - Dodaj
getChecked() + setChecked(int), wycofajisChecked + setChecked(boolean)(Iaac9d) - Modyfikator
graphicsLayerakceptuje terazblendModeicolorFilter(Iab0e6). - Dodano
LocalResourceskompozycję lokalną do zasobów zapytań. Wywołanie funkcjiLocalResources.currentspowoduje ponowne skomponowanie, gdy zmieni się konfiguracja, więc wywołania interfejsów API, takich jakstringResource(), zwrócą zaktualizowane wartości. (I50c13, b/274786917) - Udostępnianie eksperymentalnego interfejsu API dla funkcji kompozycyjnych do obsługi pośrednich zdarzeń dotykowych (Icff57)
- Ta wersja ulepsza raportowanie nieobsłużonych wyjątków zgłaszanych podczas faz układu i rysowania treści kompozycyjnych. Wcześniej nieobsłużony wyjątek w tym miejscu powodował awarię narzędzia do uruchamiania testów i przedwczesne zakończenie pakietu testów. Te wyjątki można teraz zgłaszać w bardziej elegancki sposób, bez przerywania zestawu testów. (I9928b, b/314128080)
- Wycofano eksperymentalny interfejs API
GlobalAssertions. Miała ona służyć do przeprowadzania testów dostępności. Zamiast niej używajenableAccessibilityChecks(). (I50aa5) SemanticsNodeInteraction.performTextInputSelectionnie jest już eksperymentalną funkcją i obsługuje dodatkowy parametrrelativeToOriginal, który umożliwia zastosowanie wyboru do oryginalnego, nieprzekształconego tekstu lub do tekstu przekształconego. (I3a905, b/261561038, b/277018945)- Wprowadzenie interfejsu API do tworzenia niestandardowych list punktowanych za pomocą
AnnotatedString(I1d066, b/383269496, b/139326648) - Zastąpienie wartości
runWithTimingDisabledwartościąrunWithMeasurementDisabled, która lepiej opisuje zachowanie – wszystkie dane są wstrzymane. Dodatkowo udostępnij superklasęMicrobenchmarkScope, ponieważ ponowne zadeklarowanie funkcjirunWithMeasurementDisabledw celu otwarcia dostępu nie jest możliwe, ponieważ jest ona wstawiana w kodzie. (I9e23b, b/389149423, b/149979716) - Zaktualizowano interfejs ui-tooling Devices API, aby uwzględniał nowsze urządzenia. (Ia2ac1)
- Dodanie do kolekcji rozmiarów ekranu podglądu formatu pionowego tabletu, aby pomóc deweloperowi w uwzględnianiu 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 wdrażane 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)
- Wartość
android:dialogThememożna teraz ustawić tak, aby kontrolować właściwości okna, gdy wartośćdecorFitsSystemWindowsto false (I7922f, b/246909281). - Rozwiązaliśmy problem polegający na tym, że każde zdarzenie ruchu wykryte poza oknem mogło je zamknąć. (Ia78fd)
- Sprawdzanie kodu w Compose wymaga teraz co najmniej wersji AGP 8.8.2 w wierszu poleceń i co najmniej Androida Studio Ladybug w przypadku obsługi w IDE. Jeśli używasz starszej wersji AGP, możesz ustawić
android.experimental.lint.version=8.8.2w pliku gradle.properties, aby uaktualnić wersję Lint bez wpływu na AGP. (I6f2a8) - Dodano nową właściwość semantyczną
InputText, która rejestruje wartośćtextfieldprzed zastosowaniem transformacji danych wyjściowych. (Iae46a, b/395911609, b/176949051) - Przeniesiono interfejs
enableAccessibilityChecks()API, który włącza sprawdzanie dostępności na Androidzie, do osobnych pakietów, które sącompose:ui:ui-test-accessibility, jeśli nie używaszTestRuleicompose:ui:ui-test-junit4-accessibilitypodczas wywoływaniaTestRule(I3c318, b/391560768). - Dodano obsługę tworzenia śladów stosu w
LaunchedEffectirememberCoroutineScope(I705c0, b/354163858).
Wkład zewnętrzny
- Zmiana eksperymentalnej funkcji
runComposeUiTest, aby akceptowała blokadę zawieszenia. Dodano też wycofaną funkcjęrunComposeUiTestna potrzeby zgodności binarnej (I3b88c, b/361577328).
Wersja 1.8
Wersja 1.8.3
18 czerwca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.3 Wersja 1.8.3 zawiera te zmiany.
Poprawki błędów
- Flaga dla
isGetFocusedRectReturnEmptyEnabledzostała usunięta, ponieważ funkcja została w pełni zweryfikowana. (Ife722) - Flaga
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledpowoduje, że jeśli w elemencieComposeViewnie ma niczego, na czym można się skupić, ustawia prostokąt na wartość Empty. Zapobiega to wybraniu przez wyszukiwanie fokusu widoku, na którym ma się skupić. Jest to szczególnie ważne, gdy edytor IME ma opcję DALEJ, która może próbować skupić się naComposeView, arequestFocus()się nie powiedzie. (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
- Naprawiono błąd NullPointerException, który występował, gdy okno było usuwane podczas aktywnego strumienia zdarzeń w oknie (6a7e7f).
- Naprawiono problem z brakiem aktualizacji
onLayoutRectChangezgodnie z ograniczonym harmonogramem w przypadku aktualizacji 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 zmiany.
Poprawki błędów
- Rozwiązywanie niektórych problemów z
onLayoutRectChangediLazyLayoutd791b11 - Pomiń prośby o ponowne pomiary w przypadku wstępnie skomponowanych produktów. Ten błąd wpływał na wydajność przewijania układów wczytywanych na żądanie, ponieważ w niektórych przypadkach pobieranie z wyprzedzeniem nie działało wydajnie, a pomiar odbywał się w ramce. 742087a
Wersja 1.8.0
23 kwietnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0 Wersja 1.8.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.7.0
- Compose w wersji 1.8 zawiera nową obsługę semantycznego autouzupełniania. Upewnij się, że używane wersje interfejsu i Foundation to 1.8 lub nowsze, ponieważ automatyczne wypeł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 w sekcjiLocalHapticFeedback. Na Androidzie jest domyślnie dostępna, gdy interfejs Vibrator API wskazuje, że haptyka jest obsługiwana. - Kilka interfejsów Focus API jest już stabilnych, w tym
Modifier.focusRestorer(),onEnterionExitFocusProperties(I6e667). Teraz możesz podaćFocusDirection, gdy dzwonisz pod numerrequestFocus. Dodaliśmy interfejs APIrequestFocus(FocusDirection)dofocusRequesteriFocusTargetModifierNode, aby umożliwić ustawianie ostrości w określonym kierunku. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
Wersja 1.8.0-rc03
9 kwietnia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-rc03 Wersja 1.8.0-rc03 zawiera te zmiany.
Poprawki błędów
- Wyłącza niektóre poprawki dotyczące interakcji z fokusem, które powodowały regresję. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
Wersja 1.8.0-rc02
26 marca 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-rc02 Wersja 1.8.0-rc02 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że widoki z zaznaczeniem osadzone w hierarchii Compose powodowały ponowne tworzenie kompozycji, gdy widok z zaznaczeniem 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 zaznaczony element
AndroidViewbył usuwany przy aktywnej klawiaturze ekranowej. (Ic725a) - Rozwiązuje kilka problemów w nowej implementacji obsługi stanu zaznaczenia. (b/395895685)
- Rozwiązuje problem blokujący automatyczne wypełnianie podczas używania
LaunchedEffectdo żądania zaznaczenia pola tekstowego. (b/392539099)
Wersja 1.8.0-beta03
26 lutego 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-beta03 Wersja 1.8.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Przeniesiono
enableAccessibilityChecks()interfejs 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, icompose:ui:ui-test-junit4-accessibilitypodczas wywoływaniaTestRule(I547ef, b/391560768). - Dodano nową właściwość semantyczną
InputText, która rejestruje wartość pola tekstowego przed zastosowaniem transformacji danych wyjściowych. (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 niej można użyć funkcjiLocalWindowInfo.current.containerSize, aby pobrać bieżący rozmiar okna.
Wersja 1.8.0-beta01
29 stycznia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-beta01 Wersja 1.8.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Funkcje
ContextualFlowRowiContextualFlowColumnzostały oznaczone jako wycofane. Ten eksperymentalny komponent został wprowadzony w wersji 1.7 i nie został jeszcze ustabilizowany, a jego wdrożenie uznano za niepożądane. W przyszłości może zostać udostępniony komponent rozwiązujący problemy, do których ten komponent był przeznaczony.FlowRowiFlowColumnmają eksperymentalne przeciążenia, które zostały wprowadzone w wersji 1.7 i zawierają parametroverflow. Używanie tego parametru zostało wycofane. Zamiast niego można używać przeciążeń bez tego parametru. Domyślne działanie „overflow” w przypadku tych przeciążeń będzie miało wartość „Clip”, tak jak od momentu wprowadzenia.- Wiele przypadków użycia
ContextualFlowRowmożna zrealizować za pomocą FlowRow, ale zdajemy sobie sprawę, że nie zawsze jest to możliwe.ContextualFlowRowmożna w pełni wdrożyć w przestrzeni użytkownika. Możesz skopiować jego implementację i w razie potrzeby ją dostosować. W przyszłości chcemy rozwiązywać te problemy w inny sposób. (Ibafec)
SemanticsNodeInteraction.semanticsId()został(a) usunięty(a). Zamiast niej używaj zasadySemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)- Stare interfejsy API autouzupełniania zostały wycofane. Zamiast tego używaj nowego interfejsu API opartego na semantyce. (I943ff)
- Przepisz interfejs
requestAutofillAPI, aby istniał poza menedżerem autouzupełniania. (Id1929)
Poprawki błędów
- Rozwiązaliśmy problem z fokusem, który powodował, że element
requestFocus()z bezsensownym parametrempreviouslyFocusedRect(związanym z kierunkiem fokusu) pomijał elementComposeView. (Ifdc2f, b/388590015) - Rozwiązaliśmy problem z sporadycznym błędem NPE podczas używania
GraphicsLayer.record { this@ContentDrawScope.drawContent() }. Jeśli nagrywaszdrawContent()w ten sposób, użyj funkcji rozszerzeniaGraphicsLayer#recordwDrawScope, a nie funkcji składowej wGraphicsLayer. (I75fc0, b/389046242) - Poprawiono układ tekstu z wielokropkiem, który czasami był nieprawidłowo tłumaczony podczas animacji. Więcej informacji znajdziesz w b/389707025 (Ie55b1, b/389707025).
Wersja 1.8.0-alpha08
15 stycznia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha08 Wersja 1.8.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Ustawienie
AutofillManagerjako klasy abstrakcyjnej. (I0a3b0) - Rozwiązaliśmy kilka problemów związanych z ogniskowaniem, w tym awarie, gdy edytor IME próbuje ustawić fokus na elemencie
ComposeViewbez elementów, na których można ustawić fokus, zmianę fokusu w elemencie podrzędnymAndroidViewsoraz prośbę o ustawienie fokusu, która pozostawia elementAndroidView. (Ia03c3, b/369256395, b/378570682, b/376142752) - Zmień
FocusEnterExitScope.cancelFocus()nacancelFocusChange()(I89959) - Możesz teraz obliczać kompozycje okluzji za pomocą
RectInfo.calculateOcclusions(). - Dodano funkcję rozszerzenia w
DelegatableNode, która umożliwia rejestrowanie detektora globalnych zmian układu. (I68b59)
Poprawki błędów
- Aktywność używana jako host dla testowanego komponentu kompozycyjnego podczas korzystania z funkcji
ComposeContentTestRule.setContentużywa teraz motywuTheme.Material.Light.NoActionBar, aby uniknąć nakładania się elementuActionBarna treść testu w przypadku pakietu SDK 35. Aby zrezygnować z tego działania, możesz usunąć zależność odui-test-manifesti dodać wpis aktywności w pliku AndroidManifest.xml aplikacji testowej dlaComponentActivityz wybranym motywem. (I7ae1b, b/383368165) - Czcionki zasobów o tych samych ustawieniach odmiany nie będą już nadmiernie buforowane, co powodowało stosowanie nieprawidłowych ustawień odmiany. (If3dff, b/372044241)
AnnotatedString.fromHtmlobsługuje teraz tagi<ul>/<li>. (I7c2fe, b/299662276, b/139326648)
Wkład zewnętrzny
- Dodano 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
LayoutNodena potrzeby narzędzi. (I26f7f) - W przypadku kompozycji
LocalAutofillHighlightColorlokalnie używany jest typ Kolor. (I0e05b) - Zachowaj wycofaną funkcję
UrlAnnotationi jej metody oznaczone jako eksperymentalne. (Ic0021)
Poprawki błędów
- Naprawiono awarię
IndexOutOfBoundsExceptionpodczas używaniaLinkAnnotationw komponencieBasicTextlub komponencie tekstowym (be7605, b/374115892). - Rozwiązaliśmy problem polegający na tym, że wypełnione pola tekstowe z niestandardowym kształtem nie przycinały linii wskaźnika. (I4f87f, b/380704151)
- Rozwiązaliśmy problem z brakującym tłem w przypadku długich zrzutów ekranu. (I4d57a)
- Ta biblioteka korzysta teraz z adnotacji o wartości null JSpecify, które są używane w typie. 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 przełączać się na czcionkę domyślną, zamiast zgłaszać wyjątek w funkcji measure. (Ib6a49)
- Rozwiązaliśmy problem z utratą zaznaczenia po odłączeniu i ponownym podłączeniu
AndroidView. (I53446) - Akceptuj
requestFocus()z działania poza układem ograniczonym. (Ia8461)
Wkład zewnętrzny
- Dodaj
BringIntoViewResponderModifierNodedo interfejsu, co zapewnia nowy sposób implementacji funkcji Bring Into View, a także umożliwia implementację na poziomie platformy. (Ia6dd8)
Wersja 1.8.0-alpha06
13 listopada 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha06 Wersja 1.8.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje modyfikator
stylusHoverIcon. (Iff20a, b/331289114) - Zmienia menedżera autouzupełniania w interfejs. (I84914, b/376080755)
- Dodaje
requestFocus(FocusDirection)dofocusRequesteriFocusTargetModifierNode, aby umożliwić ustawianie ostrości w określonym kierunku. (I5d9ec, b/245755256) FocusProperties.enteriFocusProperties.exitzostały zastąpione przezonEnterionExit, które używają zakresu odbiorcy zamiast parametruFocusDirection. (I6e667)- Dodanie obsługi autouzupełniania na pasku narzędzi tekstowych. (Ie6a4c)
- Zmiany w interfejsie API w elemencie
Modifier.focusRestorer()(I99c03):- nazwa parametru została zmieniona na „fallback”
- parametr jest teraz
FocusRequester, a nie funkcją LAMBDA. - parametr nie może już mieć wartości NULL, a wartością domyślną jest Default.
- Usuwanie adnotacji
@Experimentalz interfejsu menedżera autouzupełniania. Ta funkcja jest nadal w trakcie prac i planujemy ją udostępnić w tej wersji, ale nie chcemy wprowadzać interfejsu @Experimental API (Id8398). LocalHapticFeedbackudostępnia teraz domyślną implementacjęHapticFeedback, gdy interfejs Vibrator API wskazuje, że haptyka jest obsługiwana. DoHapticFeedbackType–Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKeydodano: Komponenty Wear Compose, które można długo klikać, takie jakButton,IconButton,TextButtoniCard, teraz wywołująLONG_PRESSwibracje, gdy podano obsługę długiego kliknięcia. (I5083d)- Usuwa
OverscrollConfigurationiLocalOverscrollConfigurationoraz dodajerememberPlatformOverscrollFactory, aby utworzyć instancję domyślnej implementacji przewijania poza krawędź lub dostosować jej parametry. Aby wyłączyć przewijanie poza krawędź, zamiastLocalOverscrollConfiguration provides nullużyjLocalOverscrollFactory provides null. Aby zmienić kolor lub wypełnienie efektu poświaty, zamiastLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)użyjLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516) - Usunięto eksperymentalny interfejs API
GlobalAssertions. Został on zaprojektowany do przeprowadzania testów ułatwień dostępu. Zamiast tego użyjenableAccessibilityChecks(). (I59322)
Wersja 1.8.0-alpha05
30 października 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha05 Wersja 1.8.0-alpha05 zawiera te zmiany.
Nowe funkcje
W tej wersji autouzupełnianie jest dostępne za flagą funkcji. Pracujemy nad poprawą wydajności i chętnie poznamy Twoją opinię o interfejsach API. Na podstawie opinii interfejsy API mogą ulec zmianie przed osiągnięciem stabilnej wersji.
- Aby włączyć autouzupełnianie, ustaw wartość
ComposeUiFlags.isSemanticAutofillEnabledna „true” wonCreatei użyj najnowszej wersji Compose Snapshot. - Ta wersja autouzupełniania obsługuje ręczne zapisywanie danych logowania, sugerowanie silnych haseł i nawigację. Obsługuje też wypełnianie, gdy pole z możliwością automatycznego wypełniania zostanie zaznaczone lub gdy automatyczne wypełnianie zostanie wywołane za pomocą paska narzędzi tekstowych w komponentach tekstowych. Komponent zostanie wyróżniony, 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 podświetlenia w przypadku udanego autouzupełniania. (I32092) - Dodano interfejs
Modifier.onRectChangedAPI, który umożliwia subskrybowanie pozycji i rozmiaru elementuLayoutNodewzględem elementu głównego, okna lub ekranu. Interfejs API rozwiązuje wiele przypadków użycia, które obsługuje istniejący modyfikatoronGloballyPositioned, ale robi to przy znacznie mniejszym obciążeniu. Interfejs API ma też funkcje ograniczania liczby wywołań zwrotnych i opóźniania ich w zależności od potrzeb. (Id28c7, b/372765423, b/372757007, b/372994338) - Rozszerza Menedżera autouzupełniania o interfejsy API
commit()icancel(), które pomagają użytkownikom zapisywać nowo wpisane dane logowania. (I2da00) - Wprowadza nowy interfejs
AutofillManager, który umożliwia precyzyjne dostosowywanie procesu autouzupełniania, oraz flagęisSemanticAutofillEnabled, która włącza nową wersję autouzupełniania. (I9d484) - Dodano interfejs
Modifier.onRectChangedAPI, który umożliwia subskrybowanie pozycji i rozmiaru elementuLayoutNodewzględem elementu głównego, okna lub ekranu. Interfejs API rozwiązuje wiele przypadków użycia, które obsługuje istniejący modyfikatoronGloballyPositioned, ale robi to przy znacznie mniejszym obciążeniu. Interfejs API ma też funkcje ograniczania liczby wywołań zwrotnych i opóźniania ich w zależności od potrzeb. (I3c8fa) - Dodaj właściwości semantyczne i typy danych, aby rozszerzyć obsługę autouzupełniania. (I52c7d)
- Wszystkie metody w narzędziu do tworzenia
AnnotatedStringnie są już eksperymentalne (Ia89c8, b/261561823)
Poprawki błędów
- Widoki umieszczone w kompozycji mogą teraz odbierać zdarzenia obrotowe, jeśli są aktywne (I4d53a, b/320510084).
- Rozwiązano problem polegający na tym, że różne typy zasobów nie były aktualizowane po zmianach konfiguracji (Ia9b99, b/352336694).
- Rozwiązaliśmy problem, który uniemożliwiał prawidłowe działanie
TextFieldpodczas korzystania z japońskiej klawiatury POBox na niektórych starszych urządzeniach Sony. (Ia9b99, b/373743376) - Rozwiązano problem z wyświetlaniem okien dialogowych u dołu ekranu zamiast na środku (Ia2ec, b/373093006).
- Kierowanie na interfejs API w wersji 35 lub nowszej nie wymusza już ustawienia wartości
decorFitsSystemWindowsna false w przypadku okien. (Ibc94, b/364492593) - Naprawiono awarię podczas przenoszenia warstw między oknami (np. oknem dialogowym a główną treścią) (I675ba, b/330955281)
Wersja 1.8.0-alpha04
16 października 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha04 Wersja 1.8.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje wywołania zwrotne
DelegatableNode#onDensityChangeiDelegatableNode#onLayoutDirectionChange, aby umożliwić aktualizowanie stanu węzła, gdy się on zmieni (I04f3e, b/340662451). - Dodaje parametr
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ą przesunięcie i prawidłowo wysyłają zdarzenie
onPostFlingz pozostałą prędkością. Wprowadzamy też flagęNewNestedScrollFlingDispatchingEnabled, która pozwala kontrolować działanie w przypadku regresji. Przed wersją beta flaga zostanie usunięta. (I05c37, b/371168883) - Wprowadzono
PointerInputModifierNode#touchBoundsExpansion, którego można używać do powiększania obszaru dotykowego modyfikatora pojedynczego wskaźnika. (Iccf02, b/335339283) - Dodaje parametr
WindowInfo#containerSize, aby podać rozmiar kontenera treści bieżącego okna. Można go pobrać za pomocąLocalWindowInfo. (I27767, b/369334429, b/360343819) - Usuń
readOnlyzTextFields', aby przypiąć do stabilnej wersji podstawowej. (I3aaba) ParagraphiParagraphIntrinsicsprzyjmują teraz listę wszystkich adnotacji zastosowanych doAnnotatedString. Wcześniej zawierały tylko listęSpanStyles(I12f80).
Poprawki błędów
- Zaktualizowano sposób traktowania akapitów w
AnnotatedString. Wcześniej można było tworzyć tylko niepokrywające się akapity. TerazAnnotatedStringumożliwia w pełni nakładają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). - Naprawiono błąd w
AnnotatedStringzLinkAnnotationo 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 Kotlina do 1.9 (I1a14c)
- Wprowadziliśmy nową rolę semantyczną o nazwie Karuzela, która emuluje zachowanie listy w pagerach na potrzeby usług ułatwień dostępu. (Id354b, b/354109776, b/239672673)
- Zmień nazwę
invisibleToUser()nahideFromAccessibility. Jego funkcja pozostaje bez zmian. Więcej informacji znajdziesz w dokumentacji. (Ib43a3)
Poprawki błędów
- Aktualizacja dokumentów dotyczących 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ązanie problemu polegającego na tym, że w przypadku niektórych wersji Androida po określeniu ogólnych klipów konturu stosowane były puste klipy.
- Naprawiono wyjątek zgłaszany, gdy edytor IME jest aktywny w zewnętrznym widoku, a działanie Dalej jest używane do ustawienia fokusu na
ComposeView. DziałanieclearFocus()jest zgodne z działaniem widoku w przypadku interfejsu API w wersji starszej niż 28, w którymclearFocus()może spowodować, że domyślny widok zostanie ustawiony jako aktywny. - Rozwiązaliśmy problem z umieszczaniem na odłączonych węzłach w
LazyList, rozdzielając zarządzanie podkompozycją dla różnych przebiegów układu. - Rozwiązaliśmy problem polegający na tym, że klawiatura ekranowa migała, gdy zaznaczenie przełączało się z
TextFieldnaEditTextlub dowolny inny edytor oparty na widoku. - Węzły Nested Scroll będą teraz prawidłowo wysyłać zdarzenia
onPostFlingpo odłączeniu. - Ogólne zwiększenie wydajności
Wersja 1.8.0-alpha02
18 września 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha02 Wersja 1.8.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dostępne są teraz znaki
TextOverflow.StartEllipsisiTextOverflow.MiddleEllipsis, które umożliwiają umieszczenie wielokropka na początku lub w środku wiersza tekstu jednowierszowego. (I38913, b/185418980)
Poprawki błędów
- Rozwiąż problem z dialogiem
dismissOnClickoutside(39a3d, b/364508685) - Nie przycinaj cieni treści dialogowych (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
AlignmentLinesMapakceptuje teraz beton typuVerticalAlignmentLinelubHorizontalAlignmentLine. (I02912)- Nowa wspólna metoda
ByteArray.decodeToImageBitmap(): ImageBitmap. (I83c21)
Wersja 1.8.0-alpha01
4 września 2024 r.
Publikacja androidx.compose.ui:ui-*:1.8.0-alpha01 Wersja 1.8.0-alpha01 zawiera te zmiany.
Wersja 1.7
Wersja 1.7.8
12 lutego 2025 r.
Publikacja androidx.compose.ui:ui-*:1.7.8 Wersja 1.7.8 zawiera te zmiany.
Wersja 1.7.7
29 stycznia 2025 r.
Publikacja androidx.compose.ui:ui-*:1.7.7 Wersja 1.7.7 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z
IndexOutOfBoundsExceptionpodczas przekazywaniaAnnotatedStringzLinkAnnotationdo komponentu kompozycyjnego Text. (Ic96d2) - Rozwiązaliśmy problem z przekroczeniem limitu czasu w testach w rzadkich przypadkach, gdy w
AnnotatedStringużyto znakuLinkAnnotation. (I04a03)
Wersja 1.7.6
11 grudnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.6 Wersja 1.7.6 zawiera te zmiany.
Poprawki błędów
- Wcześniej zgłaszaliśmy błąd, gdy napotkaliś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 ta opcja zostanie wycofana i zastąpiona przezSemanticsPropertyReceiver.hideFromAccessibility(). (I448f0, b/376479686) - Rozwiązaliśmy problem, który uniemożliwiał prawidłowe działanie
TextFieldpodczas korzystania z japońskiej klawiatury POBox na niektórych starszych urządzeniach Sony. (I94e0e, b/373743376) - Rozwiązaliśmy problem z ułatwieniami dostępu, który powodował, że element
BasicText’s inlineContent nie był odczytywany przezTalkBack. (I67bcb, b/376479686)
Wersja 1.7.5
30 października 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.5 Wersja 1.7.5 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problemy, które powodowały nieprawidłowe renderowanie wysokości i przycinania w przypadku niestandardowych konturów.
- Rozwiązuje problem z awarią tekstu, która występuje w przypadku znaku o zerowej szerokości
LinkAnnotation. (Ic1e2e) - Poprawia komunikat w
Talkbackprzycisku, gdy jest on zbudowany jako klikalny element kompozycyjny 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.
- Naprawiono wyjątek zgłaszany, gdy edytor IME jest aktywny w zewnętrznym widoku, a działanie Dalej jest używane do ustawienia fokusu na
ComposeView. DziałanieclearFocus()jest zgodne z działaniem widoku w przypadku interfejsu API w wersji starszej niż 28, w którymclearFocus()może spowodować, że domyślny widok zostanie ustawiony jako aktywny. - Rozwiązaliśmy problem, który powodował, że do unieważniania wyprzedzającego używano nieprawidłowego znaku
placeOrder, co w skrajnych przypadkach powodowało pomijanie umieszczania wyprzedzającego.
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ększono wydajność informacji o węzłach ułatwień dostępu i zdarzeń semantycznych przez usunięcie szczegółowego śledzenia. (I89156, b/362530618)
ComposeViewnie będzie już ulegać awarii w przypadku przekazania wyjątkowo dużego rozmiaru pomiaru (da5db, b/347036173).- Rozwiązaliśmy problem z czytnikiem ekranu, który powodował, że
LiveRegionkomunikaty na przyciskach nie były odczytywane. (f66fa7, b/348590026)
Wersja 1.7.1
10 września 2024 r.
- Brak zmian w artefaktach Androida. Usunięto
-desktopartefaktów, a dodano-jvmStubsi-linuxx64Stubsartefakty. Żaden z tych celów nie jest przeznaczony do użycia. Są to tylko symbole zastępcze, które mają pomóc w pracach nad Jetbrains Compose.
Wersja 1.7.0
4 września 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0
Ważne zmiany od wersji 1.6.0
Ważne zmiany w wersji 1.7.0 zostały opisane w tym poście na blogu.
Wersja 1.7.0-rc01
21 sierpnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-rc01 Wersja 1.7.0-rc01 zawiera te zmiany.
Ważne zmiany
- Moduł ui:ui wymusza teraz wymaganie minimalnej wersji modułu foundation:foundation, która musi być co najmniej 1.7.0-rc01 lub nowsza. Jest to wymuszane w celu wyeliminowania niezgodności w działaniu interfejsu i biblioteki Foundation w odniesieniu do zmian
NestedScrollSource, które zaszły na wczesnym etapie wersji 1.7.0-alpha01.
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta07 Wersja 1.7.0-beta07 zawiera te zmiany.
Poprawki błędów
- Funkcje związane z wprowadzaniem tekstu
SemanticsNodeInteraction,performTextReplacement,performTextInputiperformTextClearancebędą teraz zgłaszać błędy asercji, gdy zostaną wywołane w przypadkuTextFieldstylko do odczytu. (I4ae8f)
Wersja 1.7.0-beta06
24 lipca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta06 Wersja 1.7.0-beta06 zawiera te zmiany.
Wersja 1.7.0-beta05
10 lipca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta05 Wersja 1.7.0-beta05 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy błąd, który powodował, że po zmianie klawiatury ekranowej
TextFieldnie akceptował danych wejściowych z nowej klawiatury, dopóki nie stracił i nie odzyskał fokusu. - Rozwiązaliśmy problem, który powodował niepożądane efekty uboczne podczas renderowania treści
SurfaceVieww przypadku prób zachowania zawartości warstwy.
Wersja 1.7.0-beta04
26 czerwca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-beta04 Wersja 1.7.0-beta04 zawiera te zmiany.
Poprawki błędów
- Unikanie awarii podczas pomiaru bardzo długich wierszy tekstu (np.10 tys. znaków) (8157ab)
- Wyłącz obsługę renderowania oprogramowania dla interfejsu
GraphicsLayerAPI. (35ddd8) - Poprawka dotycząca 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ę interfejsu
SemanticsProperties.EditablenaIsEditablei zmieniliśmy wartośćSemanticsPropertyReceiver.editablenaisEditable. Właściwość jest teraz wartością logiczną i jest zawsze określana przez pola tekstowe. (I8acd8) - Zmień nazwę parametru testu porównawczego ułatwień dostępu. (I3d440)
- Zaktualizowany interfejs API do stylizowania linków:
TextLinkStylesjest teraz częścią konstruktoraLinkAnnotationi metodyAnnotatedString.fromHtml(I90b2b). Usunięto teżTextDefaultsz materiału (I5477b).
Poprawki błędów
- Nazwa
LayoutCoordinates.introducesFrameOfReferencezostała zmieniona naLayoutCoordinates.introducesMotionFrameOfReference, aby lepiej odzwierciedlała jej przeznaczenie. Zmieniono nazwę powiązanej funkcji, aby obliczać współrzędne na podstawie tego 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ę
performCustomAccessibilityActionLabellednaperformCustomAccessibilityActionWithLabel, aperformCustomAccessibilityActionWherenaperformCustomAccessibilityActionWithLabelMatching. (I5387f) AnnotatedString.hasEqualsAnnotationsto terazhasEqualAnnotations(I685c0)- Zaktualizowano interfejs API do pobierania linków w tekście w motywie Material. W szczególności usunęliśmy metody z
TextDefaultsdo tworzenia tematycznychLinkAnnotationsi parsowania kodu HTML z tematycznymi linkami. Zamiast tego dodaliśmy do funkcji kompozycyjnej Text parametrTextLinkStyles, który umożliwia stylowanie linków. (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 modyfikowalnych.
Shape#createOutlinejest teraz obserwowany w warstwach graficznych, więc odczytywanie wartości stanu w nich spowoduje unieważnienie, gdy stan się zmieni, co pozwoli na bardziej wydajne animacje kształtów. (Id1629, b/326070216) - Zmieniono nazwę
isPositionedByParentWithDirectManipulationnaintroducesFrameOfReference. Pamiętaj, że teraz ma to odwrotny efekt. Oznacza to, że domyślnie większośćLayoutCoordinateswprowadza ramkę odniesienia, a właściwość ma wartość fałsz tylko wtedy, gdy jest poddawana bezpośredniej manipulacji. Aby wysłać zapytanie o pozycję tylko w przypadku tych, które wprowadzają ramę odniesienia, użyj znakupositionInLocalFrameOfReference(...). lubpositionInLocalLookaheadFrameOfReferencezLookaheadScope. (Ifc5f7) LookaheadScopeInterfejsy API zostały ustabilizowane (I21507)- Zmień funkcję lambda działania dla
getScrollViewportLengthzgodnie z opinią rady ds. interfejsów API. (Ibc74a) - Zaktualizowano interfejsy API
GraphicsLayer, aby używały parametrów zmiennoprzecinkowych zamiast liczb całkowitych. Usunięto wartości wartowniczeGraphicsLayerna rzecz istniejących już stałych Unspecified w klasach wbudowanych Offset i Size opartych na liczbach zmiennoprzecinkowych (I2fb03, b/333863462).UnsetOffset/UnsetSize IntSize - Podczas wstrzykiwania danych wejściowych myszy w trakcie testów funkcje
MouseInjectionScope.click(),MouseInjectionScope.doubleClick(),MouseInjectionScope.tripleClick()iMouseInjectionScope.longClick()akceptują teraz parametrbutton: MouseButton, dzięki czemu są bardziej uniwersalne. Wartością domyślną wszystkich metod jestMouseButton.Primary. (I31a23, b/190493367, b/261439695) - Zmieniono nazwę
onClickednaonClickwLinkInteractionListener. (Iaa35c) - Zmień nazwę
TextInclusionStrategy.isInsidenaisIncluded. Ustaw typ zwracanyParagraph/MultiParagraph#getRangeForRect()jako niepusty. (I51f26)
Poprawki błędów
- Rozwiązanie problemu z robieniem długich zrzutów ekranu w przypadku przewijanych kontenerów z
reverseScrolling=true. (I7c59c)
Wkład zewnętrzny
- Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych komponentach
LazyLists(np. w komponencieLazyColumn, który renderuje zagnieżdżony komponentLazyRows). Oczekuje się, że ta zmiana zmniejszy liczbę pominiętych klatek podczas przewijania tych komponentówLazyLists. Domyślnie implementacja wstępnie pobiera pierwsze 2 elementy zagnieżdżone, ale to zachowanie można kontrolować za pomocą nowych interfejsów APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)iLazyListPrefetchStrategy#onNestedPrefetch. (I51952)
Wersja 1.7.0-alpha07
17 kwietnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha07 Wersja 1.7.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
ClickableTextzostało wycofane. Aby dodać linki do tekstu, utwórzAnnotatedStringzLinkAnnotationodpowiadającym linkowi i przekaż tenAnnotatedStringdo funkcji kompozycyjnej Text. (I34d4b, b/323346994)- Wprowadź
ViewConfiguration.HandwritingGestureLineMargindla gestów pisma odręcznego. Obsługa gestuJoinOrSplitw przypadkuBasicTextField(Ie6e13, b/325660505) - Atrybuty
FocusProperties.enteriFocusProperties.exitnie są już eksperymentalne. AtrybutyFocusDirection.EnteriFocusDirection.Exitnie są już eksperymentalne.FocusRequester.Cancelnie jest już funkcją eksperymentalną (I461a1, b/261564106) - Podczas wysyłania zapytań o współrzędne układu możesz teraz używać argumentu
excludeDirectManipulationOffset, aby wykluczyć przesunięcie ustawione przez układy nadrzędne, które umieściły elementy podrzędne za pomocąPlaceable.PlacementScope.withDirectManipulationPlacement. Podobnie układ, który często zmienia pozycję swoich elementów podrzędnych, może teraz umieszczać je za pomocąwithDirectManipulationPlacement(np. przewijania, które jest domyślnie zaimplementowane). Dzięki temu animacje oparte naapproachLayoutsą bardziej intuicyjne, ponieważ twórcy mają możliwość rozróżnienia, które przesunięcie animować, a które zastosować bezpośrednio podczas animowania swojego podejścia. (I60ec7) - Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
LazyColumnbędzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)- Źródła Drag i Fling zostaną zastąpione źródłami
UserInputiSideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz kółko myszy i klawiaturę (UserInput). (I40579)NestedScroll ApproachLayoutModifierNodeiModifier.approachLayoutsą teraz stabilne, a noweisMeasurementApproachInProgress()iisPlacementApproachInProgress()zastępują odpowiednio stareisMeasurementApproachComplete()iisPlacementApproachComplete().- Usunięto nieużywany modyfikator
intermediateLayout. (I3e91c) - Zmień nazwę
GraphicsLayer#buildLayerna record, aby odzwierciedlić metody begin/endRecording interfejsów API opartych na liście wyświetlania, takich jakRenderNodei Picture. - Zaktualizowano
rememberGraphicsLayer, aby korzystać zrememberObserver. (I312c1, b/288494724, b/330758155) - Typ pliku „
UrlAnnotation” został wycofany. Zamiast niego używaj typu „LinkAnnotation.Url”. Jeśli używasz motywów Material, użyj obiektuTextDefaults, aby utworzyć adnotację z zastosowanym motywem Material (I8d180, b/323346545). - Linki tekstowe mają opcję stylu stanu naciśnięcia oprócz normalnego stylu, stylu po najechaniu kursorem i stylu po zaznaczeniu (I5f864, b/139312671).
- Nazwa elementu została zmieniona z
String.parseAsHtmlnaAnnotatedString.Companion.fromHtml. (I43dcd) - Dodano argumenty stylu (
linkStyle,focusedLinkStyle,hoveredLinkStyle) i odbiornik interakcji z linkiem do metodyparseAsHtml. Podczas analizowania ciągu znaków z tagami HTML z tagami<a>metoda utworzy obiektLinkAnnotation.Urldla każdego takiego tagu i przekaże obiekty stylu oraz odbiornik interakcji z linkiem do każdej adnotacji. (I7c977) LinkAnnotationprzyjmuje teraz argumenty stylizacji opartej na stanie i wartośćLinkInteractionListener. Dodaj tę adnotację doAnnotatedString, aby uzyskać hiperlink. Przekazując wartościfocusedStatelubhoveredState, możesz określić wizualnyconfigurationlinków, gdy są one zaznaczone lub nad nimi najedzie się kursorem. (I81ce4, b/139312671)- Pole
ImeOptions.hintLocalesnie może już mieć wartości null. Jeśli chcesz przekazać pustą listę ustawień regionalnych, użyjLocaleList.Empty. (Ic5bc4)
Poprawki błędów
- Prawidłowo obsługuje nieprawidłowe lub uszkodzone dane zdarzeń historycznych (ignoruje nieprawidłowe dane przesunięcia).
- Rozwiązuje problem z nieoczekiwanymi zdarzeniami wskaźnika, gdy modyfikator wejścia wskaźnika jest dodawany dynamicznie przed innym modyfikatorem wejścia wskaźnika podczas aktywnego strumienia zdarzeń wejścia wskaźnika (np. między zdarzeniami hoverenter i hoverexit [mysz/rysik]).
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha06 Wersja 1.7.0-alpha06 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy metodę
parseAsHtmldla ciągów ze stylami: umożliwia ona przekształcenie ciągu oznaczonego tagami HTML wAnnotatedString. Pamiętaj, że nie wszystkie tagi są obsługiwane. Na przykład nie możesz jeszcze wyświetlać list punktowanych. (I84d3d, I30626, b/139326648) - Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania Compose za pomocą oficjalnego interfejsu Android API (
ScrollCaptureCallback). Ta funkcja jest eksperymentalna i może obecnie nie obsługiwać wszystkich przypadków prawidłowo. Dlatego jest ona obecnie domyślnie wyłączona. Aby włączyć tę funkcję, ustaw flagęComposeFeatureFlag_LongScreenshotsEnabledna wartość true. (I2b055, b/329296471)
Zmiany w interfejsie API
- Wartość
fun ClipEntry.getMetadata()została zmieniona naval ClipEntry.clipMetadata. (I50155) - Usunięto funkcje
ClipboardManager.getClipMetadataiClipboardManager.hasClip. Aby odczytać metadane bieżącego wpisu klipu, użyjclipEntry.getMetadata(). Sprawdź też wynikClipboardManager.getClip, aby dowiedzieć się, czy jest on wartością null, i określić, czy schowek zawiera bieżący klip. (I50498) - Teraz możesz przekazywać obiekty
GraphicsLayerdo funkcjiplaceable.placeWithLayer()(I1b22f) ClipboardManager.setClipakceptuje teraz wartość null, aby można było wyczyścić schowek. (I7d2e9)- Dodano identyfikatory zasobów, aby ułatwić ukrywanie widoków używanych jako szczegóły implementacji w narzędziach do kompilacji (I99531).
- Dodaliśmy metodę zawieszania
GraphicsLayer#toImageBitmap, aby obsługiwać renderowanie zawartości mapy bitowej w obiekcieGraphicsLayer. Jest to operacja renderowania z akceleracją sprzętową na poziomie interfejsu API 22 lub nowszym (włącznie), która jest obsługiwana przez ponad 99% wszystkich urządzeń z Androidem. Na Androidzie na poziomie API 21 jest to renderowanie programowe. (I9e114) - Metoda pomocnicza do konwertowania obiektu Android
RectFnaComposeRect(I39925, b/325660505) - Wszystkie parametry
KeyboardOptionsmają teraz domyślnie nieokreśloną wartość. Dodano metodęKeyboardOptions.merge. - Zmieniono nazwę
KeyboardOptions.autoCorrectnaautoCorrectEnabledi umożliwiono przypisywanie wartości null, która oznacza, że nie podano żadnej wartości. (Ia8ba0, b/295951492) BasicTextField(state)iBasicSecureTextFieldużywają terazKeyboardActionHandlerzamiastKeyboardActionsdo przetwarzania działań wykonywanych przez klawiaturę ekranową. (I58dda)
Wersja 1.7.0-alpha05
20 marca 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha05 Wersja 1.7.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Wprowadzenie nowego
GraphicsLayerinterfejsu API do rejestrowania poleceń rysowania na liście wyświetlania oraz dodatkowych 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 odtwarzania całej sceny. PrzekształceniaGraphicsLayermożna przeprowadzać bez ponownego nagrywania listy wyświetlania. W przeciwieństwie doModifier.graphicsLayer,GraphicsLayerumożliwia renderowanie treści Composable w innych miejscach i jest przydatny 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. Zamiast niej użyj funkcji rozszerzeniaDrawScope.drawLayer(GraphicsLayer), aby narysować warstwę. (I7a7c0)- Podzielenie
restrictedConstraints()na 2 metody:fitPrioritizingWidth()ifitPrioritizingHeight()(I6d7fd) - Wprowadzono
HardwareCanvasstub do użytku w Androidzie L (I1c3b5, b/288494724) - Zaktualizuj platformę Compose, aby udostępniać lokalną kompozycję
GraphicsContextwraz z aktualizacją implementacji elementów Owner,DelegateableNodeidrawWithCacheModifier, aby udostępniać dostęp do elementuGraphicsContextw celu uzyskania dostępu w określonym zakresie, który automatycznie czyści instancjeGraphicsLayerpo usunięciu elementów Modifier. (I64a2f, b/288494724) - Wprowadziliśmy
InterceptPlatformTextInput, aby ułatwić pisanie testów związanych z IME niskiego poziomu i innych przypadków użycia IME niskiego poziomu.PlatformTextInputTestOverridezostało wycofane. (I862ed, b/322680547) - Dodano funkcję rozszerzenia
GraphicsLayer.setOutline(Outline). (Ib81f4) - Wprowadzenie konstruktora funkcji
GraphicsContextdo tworzenia fabryki instancjiGraphicsLayer(Ib98d6, b/288494724) - Udostępniliśmy interfejs API
GraphicsLayer, 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
BasicTextargumentemonLinkClicked. W przyszłości udostępnimy API zastępujące obsługę hiperlinków. (I107d5)
Poprawki błędów
- Dodano definicję interfejsu API
GraphicsLayerexpect/actual, aby umożliwić rejestrowanie i odtwarzanie poleceń rysowania z opcjonalnymi efektami wizualnymi i transformacjami kompozycji. Wprowadzenie interfejsuGraphicsContextdo obsługi zależności graficznych, w tym tworzenia instancjiGraphicsLayeri zarządzania nimi. (I4a8d6, b/288494724) - Rozwiązaliśmy problem z współdziałaniem z wyszukiwaniem zaznaczenia 1D, który powodował, że zaznaczenie blokowało się w
ComposeViewzagnieżdżonym w innych widokach. (I08fd4)
Wkład zewnętrzny
LocalLifecycleOwnerzostał przeniesiony z interfejsu Compose dolifecycle-runtime-compose, aby jego interfejsy API pomocnicze oparte na Compose można było używać poza interfejsem Compose. Dziękujemy Jake’owi Whartonowi za pomoc. (I6c41b, b/328263448)- Konsekwentne 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 w wersji U lub nowszej. (I002e4)
- W tym CL dodajemy
GetScrollViewportLengthsemantic action, aby przekazywać do systemu ułatwień dostępu informacje o komponentach przewijanych w Compose. Ta zmiana dotyczy też użycia tej właściwości w listach przewijanych Foundation. (Ic5fa2) FocusRequester.createRefsjest teraz stabilny (I4d92c, b/261436820)- Wprowadzono
DelegatableNode.requireView(), aby umożliwić węzłom modyfikatorów uzyskiwanie bieżącegoViewAndroida bez odczytywania lokalnej kompozycji. (I40768) - Nowy interfejs API
Path.reverse()do odwracania kierunku ścieżki (I36348) - Dodano
hintLocalesdoKeyboardOptions, aby umożliwićTextFieldspodpowiadanie edytorom IME konkretnych ustawień regionalnych w celu wstępnego ustawienia preferowanego języka. - Udostępnij właściwość
platformLocalezLocale, która zwraca obiekt platformy bazowej, np.java.util.Locale. (I921c6)
Wersja 1.7.0-alpha03
21 lutego 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha03 Wersja 1.7.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Przedstawiamy
ContextualFlowRowi ulepszoneFlowRow/Columnz funkcjami MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnych komponentówFlowRowiFlowColumn, które teraz obsługują maxLines i overflow, oraz o wprowadzeniu komponentówContextualFlowRowiContextualFlowColumn. Ta aktualizacja ma na celu zapewnienie komponentów o optymalnej wydajności. KomponentContextualFlow*idealnie sprawdza się w przypadku dużej liczby produktów korzystających z małej konfiguracjimaxLinesoraz dynamicznych przycisków „+N więcej”, a komponentyFlowRowiFlowColumnsą idealne w przypadku małej liczby produktów, czyli mniej niż 100. Ważne: aby zachować dotychczasowe działanie wFlowRowlubFlowColumn, gdzie wszystkie elementy są komponowane niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw wartośćoverflownaFlowRowOverflow.VisiblelubFlowColumnOverflow.Visible. Przykłady działania tych nowych funkcji znajdziesz w sekcjachContextualFlowRowSampleiFlowRowSample. (Ib9135, b/293577082) - Dodaj właściwość semantyczną
maxTextLength, która powinna być ustawiona w polach tekstowych filtrujących maksymalną dozwoloną liczbę znaków. (I24d9f, b/170648072) - Moduł
Modifier.inspectablezostał wycofany. Ten interfejs API będzie tworzyć więcej unieważnień modyfikatora niż jest to konieczne, dlatego jego używanie jest obecnie odradzane. Deweloperzy, którzy chcą udostępniać narzędziom właściwości modyfikatora, powinni zaimplementować metodęinspectableProperties()wModifierNodeElement. (Ib3236) - Nowy konstruktor dla
PopupProperties, który umożliwia pełną kontrolę nad flagamiWindowManager.LayoutParams. (Ibb33e, b/312485503) - Wprowadziliśmy
DelegatableNode.requireLayoutCoordinates()jako sposób na uzyskanie aktualnegoModifier.NodeLayoutCoordinatesbez konieczności zastępowaniaonPlacedi samodzielnego przechowywania współrzędnych we właściwości. (Ia8657) - Wprowadziliśmy
DelegatableNode.currentLayoutCoordinatesjako sposób na uzyskanie aktualnegoModifier.NodeLayoutCoordinatesbez konieczności zastępowaniaonPlacedi samodzielnego przechowywania współrzędnych we właściwości. (Iaebaa) BasicTextField2i powiązane interfejsy API w pakiecieandroidx.compose.foundation.text2zostały przeniesione doandroidx.compose.foundation.text. (I9f635)- Dodano nowy interfejs API
ApproachLayoutModifierNode, który umożliwia tworzenie niestandardowej logiki podejścia w węźle modyfikatora. Dodano też nowy eksperymentalny interfejs APIDeferredTargetAnimationdo animacji, których cel jest nieznany w momencie tworzenia instancji. (I60745) - Nowe interfejsy API
Pathdo wysyłania zapytań o kierunek ścieżki i wyodrębniania konturów zPath. (I63d04) - Dodano funkcje
PathHitTestiPath.contains(Offset), aby sprawdzić, czyPathzawiera określony punkt. (I3b218) - Interfejs
TextLayoutResultudostępnia teraz metodęgetLineBaseline(lineIndex). Umożliwia to odczyt linii bazowej dowolnego wiersza tekstu oprócz istniejących właściwości wygodyfirstBaselineilastBaseline. (Ide4e8, b/237428541) - Dodano metodę porównywania tylko adnotacji dwóch
AnnotatedStrings. (I32659)
Poprawki błędów
- Rozwiązaliśmy problem ze zgodnością wsteczną z
SemanticsPropertyReceiver.performImeActioniSemanticsActions.PerformImeAction. (Id0528, b/322269946)
Wersja 1.7.0-alpha02
7 lutego 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha02 Wersja 1.7.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozwiązaliśmy problem ze zgodnością binarną z
SemanticsPropertyReceiver.performImeAction. (I65865, b/322269946) - Konstruktor
PopupProperties, który przyjmuje parametrusePlatformDefaultWidth, nie jest już eksperymentalny. (I8f8d2) - Dodano przeciążenie funkcji
ComposeTestRule.waitUntil, które przyjmuje opis warunku w postaci ciągu znaków do uwzględnienia w komunikacie o przekroczeniu limitu czasu. (I9413e) - Nowy interfejs API semantyki
unset()umożliwiający usuwanie właściwości semantycznych dodanych w tym samym łańcuchu modyfikatorów. Nowa właściwość semantycznaisOpaque. (I8c583, b/317966058, b/246056649) - Usunięto
originalEventPositionz metody kopiowania w publicznym interfejsie API usługiPointerInputChange. (I7bead)
Poprawki błędów
- Rozwiązaliśmy problem z ułatwieniami dostępu, który umożliwiał klikanie elementów innych niż karty i przyciski opcji po ich wybraniu. (I2181c)
VelocityTrackerbędzie teraz domyślnie zawierać poprawkę umożliwiającą dodawanie punktów. Jeśli wystąpią jakiekolwiek problemy, poprawkę można wyłączyć, ustawiając wartośćVelocityTrackerAddPointsFixna false. (Ib3877, b/269487059)- Usunięto brak zgodności wstecznej w plikach binarnych w przypadku
TextStyleiParagraphStyle. (I179f0, b/320819734)
Wkład zewnętrzny
- Dodano nowy konstruktor
DialogPropertiesbez parametrów specyficznych dla platformy. (I45829) - Dodano nowy konstruktor
PopupPropertiesbez parametrów specyficznych dla platformy. (I9a038)
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
Publikacja androidx.compose.ui:ui-*:1.7.0-alpha01 Wersja 1.7.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozszerzono atrybut
ClipboardManager, dodając atrybutyClipEntryiClipMetadata, aby obsługiwać dowolne treści, takie jak obrazy. - Dodaje interfejs
DeviceConfigurationOverridedo interfejsuui-test, aby umożliwić lokalne zastępowanie działania 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
- Rozwiązanie problemu z niezgodnościami w skalowaniu czcionki, gdy skala czcionki jest mniejsza niż najniższa zdefiniowana tabela. W tym przypadku interpolujemy teraz między liniową skalą 1x a najniższą zdefiniowaną tabelą, dzięki czemu rozmiar czcionki rośnie monotonicznie 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
- Naprawia rzadki błąd
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
SemanticsPropertyReceiver.performImeActioniSemanticsActions.PerformImeAction. (Ie0bb2, b/322269946) - Układy zgłaszają teraz błąd podczas pomiaru, gdy jeden z nich zwraca nienormalnie duży rozmiar. Ten rodzaj błędu występuje zwykle wtedy, gdy pomiar bezpośrednio wykorzystuje maksymalne ograniczenia bez sprawdzania wartości
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 minimalizowanie dodatkowych ponownych kompozycji.
Wersja 1.6.0-beta03
13 grudnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-beta03 Wersja 1.6.0-beta03 zawiera te zatwierdzenia.
Nowe funkcje
- Teraz można odłączyć
LayoutCoordinatesbez odłączania węzła. Zapobieganie temu w narzędziu Layout Inspector w Compose (If693)
Poprawki błędów
PlatformImeOptionsjest teraz klasą konkretną, a nie interfejsem. (If40a4)- Naprawiono dodatkowe ponowne komponowanie w dół spowodowane przez
LocalSoftwareKeyboardControlleriLocalTextInputService, które za każdym razem, gdy ponownie komponowano element główny, otrzymywały nowe wartości. (I42190, b/310510985)
Wersja 1.6.0-beta02
29 listopada 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-beta02 Wersja 1.6.0-beta02 zawiera te zatwierdzenia.
Wersja 1.6.0-beta01
15 listopada 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-beta01 Wersja 1.6.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Modyfikator
DragAndDropTargetprzyjmuje teraz jawnie elementDragAndDropTargeti ma funkcję lambda, która umożliwia rozpoczęcie sesji przeciągania i upuszczania. Obecnie dostępne są 2 funkcje fabryczne dla elementuDragAndDropModifierNode. jeden do odbierania przelewów i jeden do przesyłania danych (I69481); - Zaktualizowano wartość
maximumFlingVelocity, aby była reprezentowana jako liczba zmiennoprzecinkowa. Zaktualizowana dokumentacja, aby dokładniej wyjaśnić pojęciemaximumFlingVelocity. (I8adc7) onDragAndDropStartw fabryceDragAndDropModifierNodenosi teraz nazwęacceptDragAndDropTransfer.acceptsDragAndDropTransferzostał dodany do modyfikatoradragAndDropTarget, aby można było zaakceptować go w sesji przeciągania i upuszczania. Ta funkcja lambda zwraca wartośćDragAndDropTarget, jeśli użytkownik jest zainteresowany sesją przeciągania i upuszczania. Inne funkcje lambda do przetwarzania zdarzeń przeciągania zostały zastąpione przez tę funkcję. Dodano funkcję fabrycznąDragAndDropTargetdo odbierania danych z sesji przeciągania i upuszczania (Iebf3a).Usunięto
DragAndDropInfojako typ.DragAndDropModifierNode.dragprzyjmuje teraz parametry dla lambdytransferData, rozmiaru dekoracji i przeciągania dekoracjiDrawScope.DragAndDropTargetma metody dla poszczególnych zdarzeń przeciągania i upuszczania, a nie jedną metodę abstrakcyjną.onDragAndDropEventw funkcji fabrycznej dlaDragAndDropModifierNodezostała zmieniona naonDragAndDropStart, aby lepiej informować, że podanyDragAndDropTargetjest ważny tylko w przypadku danej sesji przeciągania i upuszczania.Usunięto
DragAndDropEventType(I645b1)Zmieniono nazwę
PlatformTextInputModifierNode.runTextInputSessionnaestablishTextInputSession. (I03cd0)Ulepsza nazwy interfejsu API węzłów, które można przechodzić, aby były bardziej zrozumiałe. (Ia4474)
Zastąp
OriginalTexttekstemTextSubstitution. (Ifa5a8)Zmieniono nazwę
PlatformTextInputModifierNode.textInputSessionnarunTextInputSession. (Ie9c6b)Elementy podrzędne
SubcomposeLayout(i układy takie jakLazyColumn, które są na nim oparte), które są zachowywane do ponownego użycia w przyszłości, są uważane za wyłączone. Wprowadziliśmy nowy interfejs APIassertIsDeactivated()do testowania takich węzłów. Pozostałe interfejsy API testu będą domyślnie odfiltrowywać dezaktywowane węzły. (I2ef84, b/187188981)Usunięto polecenia
FocusDirection.IniFocusDirection.Out, zamiast nich używaj poleceńFocusDirection.EnteriFocusDirection.Exit(I2f660)Interfejsy API Material
SwipeToReveal(w przypadku kart i elementów) korzystają teraz z interfejsu API opartego na slotach (zgodnie z zaleceniami Compose) zamiast z instancji opartych na klasach danych do tworzenia tych slotów. 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żyj konstruktoraFontStyle.NormallubFontStyle.Italic. (I66610)Zmieniono nazwę interfejsu
FontScalablenaFontScaling(Ie804a)
Poprawki błędów
SoftwareKeyboardController.show()nie będzie już wyświetlać klawiatury ekranowej, jeśli nie jest aktywny żaden edytor tekstu. (I2165a, b/301477279)- Zdarzenia naciśnięcia klawisza sprzętowego, które nie otrzymały zdarzenia naciśnięcia w tym samym widoku kompozycji, będą teraz ignorowane. (Ib37b4, b/305518328)
- Dodaliśmy obsługę renderowania gradientu kołowego w
ArcLine. (I4d5bb) - Zaimplementuj metody equals i hashcode dla klasy
PageSize.Fixed. (Ie3ede, b/300134276) - Rozwiązanie problemu ze zgodnością binarną ze zmianą wstawki okna (Iee695)
- Usuń podstawową warstwę materiału w przypadku komponentu lub przycisku Material3, ponieważ testy porównawcze pokazują, że bez niej wydajność jest lepsza. (I55555)
TestDispatchers przekazywane jakoeffectContextdo testów Compose będą teraz używane do tworzenia testów i zegarów klatek. (Ia7178)
Wersja 1.6.0-alpha08
18 października 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha08 Wersja 1.6.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- W funkcji
Modifier.dragAndDrawSourcezmieniliśmy nazwę lambdyonDrawDragShadownadrawDragDecoration, a w funkcjiDragAndDropInfozmieniliśmy nazwę parametru rozmiaru nadragDecorationSize. (Id0e30, b/303904810) - Wprowadziliśmy funkcje
SemanticsNodeInteraction.isDisplayed()iSemanticsNodeInteraction.isNotDisplayed(), które pozwalają sprawdzić, czy pasujący węzeł jest widoczny, bez konieczności potwierdzania tego. (I2c196, b/302100809) - Wprowadziliśmy specjalną wartość
Unspecifiedw polachTextAlign,TextDirection,HyphensiLineBreakwParagraphTextStyle, aby zastąpićnull. Ponieważ są to klasy wbudowane, zastąpienie wartości dopuszczających wartość null wartością Unspecified pozwala uniknąć pakowania typów prostych. Konstruktory, metody pobierające i inne metody wTextStyleoraz styl akapitu zostały zaktualizowane, aby akceptować wymienione parametry jako typy niepuste. (I4197e, b/299490814) - Dodaj przeciążenie
GoogleFontdo odczytywaniaGoogleFontz XML. (If8f59) - Zmieniono
LoremIpsumPreviewParameterProviderna zajęcia otwarte. (I41bf5, b/266918816, b/300116360)
Poprawki błędów
FontFamilyResolverużywa terazDispatchers.Maindo zarządzania pamięcią podręczną. (Ie8dd9)AndroidViewBindingsynchronicznie usuwa teraz instancjeFragmentpowiększone przez uwzględnienie elementuFragmentContainerVieww układzie w ramach funkcjionRelease, używająccommitNow(zamiastcommit, którego używał wcześniej). Rozwiązuje to problemy z metodą Live Edit polegającą na zastępowaniu kompozycji po wprowadzeniu zmian. (I58fbf)
Wersja 1.6.0-alpha07
4 października 2023 roku
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha07 Wersja 1.6.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy
PlatformTextInputMethodTestOverridedo pisania testów niestandardowych edytorów tekstu. (Id159b) - Dodaje
dragAndDropSourceModyfikator do rozpoczynania sesji przeciągania i upuszczania orazdragAndDropTargetModyfikator do odbierania danych z sesji przeciągania i upuszczania. (Ib7828, b/286038936) - Dodano kolekcje
ColorListiColorSet, które nie wymagają przydzielania. (I744bd) - Dodano
DisableNonLinearFontScalingInComposetymczasową flagę, która wyłącza nieliniowe skalowanie czcionki. Jeśli potrzebujesz czasu na ich uporządkowanie, ustaw w testach wartośćDisableNonLinearFontScalingInCompose = true. Ten atrybut zostanie usunięty w Compose 1.6.0-beta01. (Ic9486)
Poprawki błędów
- Zoptymalizowana analiza obiektów rysowalnych wektorowo w formacie 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ść poruszania się w górę i w dół drzewa modyfikatorów w celu znalezienia podobnych węzłów. (I2d234)
- Dodano wywołanie zwrotne
onRestoreFailed()do modyfikatorafocusRestorer()(Ie1d43) - Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić
ColorInt,FloatRange,IntRange,Sizei inne. (Id65c8, b/290950582) - Dodano
showSystemUi=truedo definicjiPreviewScreenSizes(Ib61d3)
Zmiany w zachowaniu
- Compose używa teraz nieliniowego skalowania czcionek, co zwiększa czytelność i ułatwia korzystanie z aplikacji. Gdy skala czcionki w ustawieniach systemu jest większa niż 100%, mały tekst zwiększy się normalnie, ale większy tekst zwiększy się tylko nieznacznie. Wysokość wiersza zdefiniowana w SP będzie się też automatycznie dostosowywać, 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 View, takich jak
ScrollViewiRecyclerView, są ograniczone doViewConfiguration.ScaledMaximumFlingVelocity. Funkcja pisania zawiera teraz własną wersjęmaximumFlingVelocity, która ma zastosowanie doDraggable. (Ibf974) - Dodaje początkową strukturę obsługi interfejsów API platformy do przeciągania i upuszczania. (If84ce)
- Dodaj
deviceIddoRotaryScrollEvent(Iba3bf) - Zaktualizowano interfejs
ui-toolingDevices API, aby uwzględniał nowsze urządzenia (Ib25b4).
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha04 Wersja 1.6.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy metodę dezaktywacji
ReusableComposition, która usuwa obserwacje, ale zachowuje węzły. Dezaktywowaną kompozycję można ponownie aktywować, dzwoniąc pod numersetContent. (Ib7f31) - Dodaj interfejs
ReusableCompositiondo zarządzania cyklem życia i ponownym wykorzystywaniem podkompozycji. (I812d1, b/252846775) Modifier.focusGroupzostał przeniesiony do stabilnych interfejsów API. (I7ffa3)- Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić
ColorInt,FloatRange,IntRange,Sizei inne. (I70487, b/290950582) - Zaktualizowano interfejs
ColorFilterAPI, aby zawierał konkretne typy podklas, co ułatwia sprawdzanie parametrów. (I5fe29) - Wprowadzenie biblioteki wear-tooling-preview, która zawiera listę prawidłowych urządzeń do noszenia, które można wykorzystać do podglądu interfejsu (Ib036e).
- Utworzono interfejs
FontScalabledo obsługi skalowania czcionek w interfejsie gęstości. (I2cf3f)
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha03 Wersja 1.6.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nowy typ przejścia wejścia/wyjścia, który skaluje treść na podstawie rozmiaru animowanego kontenera podczas animacji wejścia i wyjścia.
LookaheadScopeFunkcje i interfejs kompozycyjny są teraz stabilne. (Ifb2ce) - Dodano obsługę konfigurowania
privateImeOptions(Idb772)
Poprawki błędów
PopupPositionProvider.calculatePositionbędzie teraz automatycznie aktualizować pozycję wyskakującego okienka, gdy zmieni się stan odczytany w obliczeniach. (I676a1, b/292257547)- Rozwiązaliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość
readOnlywynosiła „true”. Naprawiliśmy też problem polegający na tym, że klawiatura nie wyświetlała się, gdy wartośćreadOnlyzmieniała się z prawdy na fałsz, gdy element był aktywny. (I34a19, b/246909589) - Rozszerzone 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 kompozytora, takich jak moduł interfejsu. (I296b9)
- Całkowicie przeprojektowany
PlatformTextInput*interfejs API. (I6c93a, b/274661182, b/267235947, b/277380808) - Atrybuty
SoftwareKeyboardControlleriLocalSoftwareKeyboardControllernie są już eksperymentalne.LocalSoftwareKeyboardControllerjest teraz też prawidłowymCompositionLocal. (I4c364) - Interfejsy
LookaheadLayoutiLookaheadLayoutScopezostały wycofane w kilku wersjach i zostały już usunięte. Zastępujące interfejsy API toLookaheadScope, które mogą współpracować z dowolnym układem. (I12ac3) - Dodano
SemanticsNodeInteraction.requestFocusjako wygodniejszy i łatwiejszy do znalezienia sposób na żądanie ostrości w testach. (Ie8722) - Dodano eksperymentalne interfejsy API do rejestrowania globalnych asercji, które będą w przyszłości używane przez platformy testowe. (I12d77)
Poprawki błędów
- Pierwsze wywołanie zwrotne
AndroidViewupdatebędzie teraz odroczone do momentu dołączenia widoku, zamiast uruchamiać się po zastosowaniu kompozycji, która wprowadzaAndroidView. Rozwiązaliśmy problem polegający na tym, że wywołanie zwrotneupdatenie było unieważniane, jeśli stan, z którego odczytywało dane, został natychmiast zmieniony przez efekt. (Ie9438, b/291094055)
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.6.0-alpha01 Wersja 1.6.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa wyprzedzenia w przypadku ścieżki
LazyList. Dzięki temuLazyListw przepustce wyprzedzającej może pominąć dowolną animację (np.animację umieszczania elementu,AnimatedVisibilityitp.) i obliczyć rozmiar i pozycję wyprzedzającą dla wszystkich elementów podrzędnych. Po wykonaniu ruchu wyprzedzającego dzieci w wiekuLazyListmogą animować niezależnie od rzeczywistości widocznej w ruchu wyprzedzającym.
Zmiana w działaniu: w Compose wartość includeFontPadding jest teraz domyślnie ustawiona na false
W funkcji tworzenia wiadomości 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 danych o czcionce 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 dodaj dopełnienie, jeśli jest to wymagane.
Możesz włączyć includeFontPadding, używając PlatformTextStyle dla każdego tekstu:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Możesz włączyć includeFontPadding dla wszystkich tekstów, konfigurując style Material. Pamiętaj, że nazwy parametrów będą się różnić w przypadku M2 i M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Więcej informacji o Compose znajdziesz includeFontPadding w dokumentacji dla deweloperów i tym poście na blogu.
Jeśli napotkasz problemy lub błędy związane z tą zmianą, zgłoś je w narzędziu do śledzenia problemów.
Zmiany w interfejsie API
- Wesprzyj kanał
InputConnection#requestCursorUpdates(I0c69b) - Dodano
FocusRequester.saveFocusedChildiFocusRequester.restoreFocusedChild(Ic557e, b/272302679, b/275157318) - Dodaj typ
ResourceResolutionException, aby opakować wyjątki zgłaszane podczas próby wczytania zasobów bitmapowych z opisem ścieżki zasobu, którego nie udało się wczytać. (I19f44, b/230166331, b/278424788) - Zoptymalizowany dostęp pod kątem wydajności i przydziału pamięci. (Iede48)
- Dodano właściwości i działania semantyczne, aby obsługiwać tłumaczenie tekstu. (I4a6bc)
- Nowa właściwość w
IntrinsincMeasureScopei jej implementacje (np.MeasureScope) wskazujące, czy bieżące przekazanie pomiaru jest przekazaniem wyprzedzającym. (I7a812) - Zaktualizowaliśmy interfejs
DrawScopeAPI, aby umożliwić ponowne kierowanie renderowania na inne obszary robocze 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 możliwość konfigurowania obszaru roboczego. (Ie1f9b, b/225408150) - Dodano
Paragraph#fillBoundingBoxesdo obliczania ramek ograniczających znaków. (If30ee) - Dodano zestaw typowych
MultiPreviews(Ia5a27)
Poprawki błędów
- Dodano interfejs
FocusTargetModifierNode, którego można używać do tworzenia niestandardowychFocusTarget. (I9790e) - Zmieniono nazwy parametrów
fallback*w konstruktorzeTextMeasurernadefault*. (I940a5) - Zmieniono nazwę
SemanticsPropertyReceiver.performImeActionnaonImeAction, aSemanticsActions.PerformImeActionnaOnImeAction. (I8e841) - Dodaje Wheel, aby odróżnić przewijanie myszą od przeciągania w przewijaniu zagnieżdżonym (szczególnie w
NestedScrollConnection). (Ie57e4) - Dodano interfejs API
asComposePaint, który zastępuje interfejstoComposePaint, ponieważ zwracany obiekt otacza oryginalny interfejsandroid.graphics.Paint(I22b4c). - Wycofaj parametr
SemanticsProperties.imeActioni zastąp go nowym parametremSemanticsActions.performImeAction. (I4a587) - Dodaliśmy obsługę zaznaczania za pomocą myszy. Zaznaczanie dotykowe będzie rozszerzane o wyrazy i zmniejszane o znaki. (Ic0c6c, b/180639271)
- Metody
Paragraph, które wcześniej zgłaszały wyjątekAssertionErrorw przypadku indeksów wykraczających poza zakres, zgłaszają teraz wyjątekIllegalArgumentException, tak jak robi toMultiParagraph. (I549d3, b/243338896)
Wersja 1.5
Wersja 1.5.4
18 października 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.4 Wersja 1.5.4 zawiera te zatwierdzenia.
Wersja 1.5.3
4 października 2023 roku
Publikacja androidx.compose.ui:ui-*:1.5.3 Wersja 1.5.3 zawiera te zatwierdzenia.
Poprawki błędów
- (b/301209788)
TextFieldczasami nieprawidłowo stosował poprzednie polecenia podczas ustawiania ostrości i wpisywania tekstu w języku koreańskim, co powodowało utratę znaków.
Wersja 1.5.2
27 września 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.2 Wersja 1.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano obejście problemu z awariami, które występowały, gdy interfejs API przewijania ułatwień dostępu był wywoływany 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
- Rozwiązaliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość
readOnlywynosiła „true”. Naprawiliśmy też problem polegający na tym, że klawiatura nie wyświetlała się, gdy wartośćreadOnlyzmieniała się z prawdy na fałsz, gdy element był 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
- Rozwiązaliśmy problem z awarią, która występowała, gdy element
SubcomposeLayoutbył używany w elemenciemovableContentOf().
Wersja 1.5.0-beta03
28 czerwca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-beta03 Wersja 1.5.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano interfejs FocusTargetModifierNode, którego można używać do tworzenia niestandardowego elementu FocusTarget. (Ifb1d6)
- Rozwiązaliśmy problem z komponentami Dialog i Popup, który mógł powodować, że okno podrzędne nie zmieniało rozmiaru zgodnie z oczekiwaniami 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 API
asComposePaint, który umożliwia korzystanie z instancjiandroid.graphics.Paintw Compose.
Poprawki błędów
- Dodano interfejs API
asComposePaint, który zastępuje interfejstoComposePaint, ponieważ zwracany obiekt otacza oryginalny interfejsandroid.graphics.Paint(I22b4c).
Wersja 1.5.0-beta01
24 maja 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-beta01 Wersja 1.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięto alokacje w przypadku ponownego komponowania, animacji kolorów i
AndroidComposeView(Ib2bfa) - Dodanie funkcji pomocniczej
CacheDrawModifierNode()umożliwiającej przekazywanie uwierzytelniania (Icf8f9) - Wprowadziliśmy właściwość
isLookingAhead, dostępną wMeasureScope, która umożliwia obserwowanie wyników wyprzedzających i w razie potrzeby wpływanie na główny przebieg. (Ibf4c3) - Nowa właściwość semantyczna
traversalIndex, liczba zmiennoprzecinkowa używana do zmiany kolejności węzłów podczas przechodzenia po drzewieTalkBack(niższe wartości są przed wyższymi). (I9a81b, b/186443263) - Zmiana nazwy usługi Semantics
isContainernaisTraversalGroup(I121f6) ColorProducerma terazoperator fun invokezamiastproduce(I4a9a2)- Dodano interfejs API przekształceń
Path, który umożliwia stosowanie przekształceń polegających na przesuwaniu, skalowaniu i obracaniu obiektów ścieżki. (I23434, b/233772232) - Metoda
ColorProducerjest wywoływana jakoproduce. (I78bde) - Zmień nazwę
toFrameworkColorSpacenatoAndroidColorSpace(I4f547) - Zmień nazwę
ColorLambdanaColorProducer. (I73b1a) - Wprowadzenie interfejsów API do konwertowania typów przestrzeni kolorów Androida i Compose. (Ie7db4, b/279979665)
- Dodano parametr koloru do
BasicText, aby umożliwić efektywne animowanie lub ustawianie koloru tekstu. (Iffd88, b/246961787) - Zmieniono nazwę
TextRange.constrainnaTextRange.coerceIn. (I31be2) - Dodano zoptymalizowany element
TextStyle.merge(...)z pełną listą parametrów. (Iad234, b/246961787) - Stabilizacja wielu interfejsów API do obsługi tekstu, w tym
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingnie jest już wycofane. Pierwotnie zamierzaliśmy usunąć to pole, ale opinie deweloperów pokazują, że potrzebują oni tej opcji konfiguracji. Dlatego wycofujemy wycofanie tego pola (I98e96, b/277703184).- Dodano publiczną metodę
TextRange.constrain. (I97912) UrlAnnotationwAnnotatedStringmożna teraz otwierać za pomocą usług ułatwień dostępu, takich jakTalkBack. (If4d82, b/253292081)- Dodano działanie semantyczne
InsertTextAtCursordla pól tekstowych. (I11ed5) - Konstruktor
LineHeightStyle.Alignment(topRatio)został przeniesiony do stabilnego interfejsu API. (I79c32, b/261565383) - Interfejs
TextMeasureri powiązane z nim interfejsy API nie są już eksperymentalne. (I74647, b/261581753) - Dodano działanie semantyczne
PerformImeAction, aby wywoływać działanie IME w węzłach edytora tekstu. (Ic606f, b/269633506) - Interfejsy
PlatformTextInputAPI nie są już eksperymentalne w przypadku Androida. (I668eb) - zmieniono nazwę parametru wartości dla
Enum.valueOf(Ia9b89) - więcej wyjątków zgłaszanych przez enum valueOf (I818fe)
- Wprowadziliśmy nowy interfejs API niskiego poziomu
PlatformTextInputAdapterdo tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4) - Dodano parametr
BlendModedo metodDrawScope.drawText,Paragraph.paintiMultiParagraph.paint, aby obsługiwać różne algorytmy mieszania podczas rysowania tekstu na obiekcie Canvas. (I57508) - Zmień nazwę
Font.MaximumAsyncTimeoutnaFont.MaximumAsyncTimeoutMillis. Zmień tylko nazwę. (I07af5) - Zaktualizowane wartości DPI urządzeń referencyjnych
@Preview(Id6151, b/254528382) - Dodaj parametry
brushialphadoBasicText, aby umożliwić wydajne animowanie lub ustawianie pędzla tekstowego. - Zdefiniuj typy lambda bez opakowania dla typów Float, Double, Long, Int i Short w module :ui:ui-unit (I6f18d, b/246961787)
Poprawki błędów
- Usunięto wiele alokacji w śledzeniu prędkości wskaźnika (I26bae)
- Zmniejszenie alokacji w zarządzaniu układem i danymi wejściowymi wskaźnika (I5333a)
- Optymalizacja wykorzystania pamięci przez Vector i renderowania pierwszych klatek (I2f3c6)
- Usunięto przydziały podczas rysowania linii i punktów za pomocą Canvas (I9f535)
- Dodaj dokumenty dla
AndroidFont.fontVariationSettings(I7d9e2)
Wkład zewnętrzny
- Zwiększenie wydajności i zmniejszenie przydziałów w interfejsach Vector API (I906cb)
Wersja 1.5.0-alpha04
10 maja 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-alpha04 Wersja 1.5.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
Modifier.NodeUlepszenia delegowania Dodano ulepszoną możliwość delegowania do innych instancjiModifier.Nodez instancjiDelegatingNode. Możesz to zrobić za pomocą interfejsów APIdelegateiundelegate. Przed tą zmianą każdy interfejs API z węzła delegującego musiał być jawnie delegowany do węzła delegowanego. Po tej zmianie interfejsy węzłów będą delegowane niejawnie, chyba żeDelegatingNodewyraźnie je zastąpi. (67352bc)
Zmiany w interfejsie API
- Wprowadź
NestedScrollModifierNode, czyliNestedScroll Modifier.Node, któremu można przekazywać dane logowania. (I69513) - Dodaliśmy parametry
onResetionReleasedo funkcjiAndroidViewBinding, które odzwierciedlają funkcjęAndroidViewi umożliwiają ponowne użycie widoku za pomocą funkcjiViewBinding. (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) - Stabilizacja wielu interfejsów API do obsługi tekstu, w tym
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush),MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingnie jest już wycofane. Pierwotnie zamierzaliśmy usunąć to pole, ale opinie deweloperów pokazują, że potrzebują oni tej opcji konfiguracji. Dlatego wycofujemy wycofanie tego pola (I98e96, b/277703184).
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że klawiatura nie wyświetlała się w polach tekstowych w oknach dialogowych, które nie zostały utworzone za pomocą funkcji kompozycyjnej
Dialog. (I82551, b/262140644)
Wersja 1.5.0-alpha03
19 kwietnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-alpha03 Wersja 1.5.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Nowe domyślne działanie w przypadku
SubcomposeLayoutwLookaheadScope:SubcomposeLayouts, które nie mają warunkowych slotów (np.TabRow,Scaffold,BoxWithConstraintsitp.), teraz dobrze współpracują z animacjami wyprzedzającymi.
Zmiany w interfejsie API
- Nowy domyślny typ
intermediateMeasurePolicy, który ponownie wykorzystuje zasady pomiaru z wcześniejszego przebiegu, umożliwia domyślne działanie z wyprzedzeniem w przypadku podtypówSubcomposeLayoutbez warunkowych miejsc docelowych, takich jakScaffold,TabRowiBoxWithConstraints. (Id84c8) - Kompozytor utworzony dla okna Androida będzie teraz blokować tylko wywołania
withFrameNanos, a nie całą kompozycję, gdy otrzyma powiadomienieON_STOP. Oznacza to, że okna powiązane z zatrzymanymi aktywnościami będą nadal ponownie komponowane w przypadku zmian danych, ale animacje lub inne wywołania funkcjiwithFrameNanosbędą blokowane. (Id9e7f, b/240975572) - Zmienia
motionEventSpyna wersję stabilną. (Ic5ec4, b/261560988) - Dodano publiczną metodę
TextRange.constrain. (I97912) PlatformTextStyle.includeFontPaddingnie jest już wycofany, aby zachęcić deweloperów do korzystania z tego interfejsu API zgodności w celu przełączania i testowania ustawieniaincludeFontPaddingna wartość false. (I98e96, b/277703184)
Wersja 1.5.0-alpha02
5 kwietnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-alpha02 Wersja 1.5.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nowy interfejs API
SubcomposeLayout, który przyjmuje dodatkowe zasady dotyczące pomiarów pośrednich do obsługi logiki pomiarów/układu podczas animacji opartych na wyprzedzeniu. (I017d3) - Funkcja PointerInput jest teraz leniwa i korzysta z Modifier.Node, co zwiększa 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)
- Zmiana eksperymentalnych interfejsów API na stabilne w
PointerInputChange. (I1b543, b/261560988, b/261565762, b/261565749) - Umożliwia utworzenie instancji
SuspendingPointerInputModifierNodew przypadku bardziej złożonych wdrożeńModifier.Node. (Ic4933) UrlAnnotationwAnnotatedStringmożna teraz otwierać za pomocą usług ułatwień dostępu, takich jakTalkBack. (If4d82, b/253292081)- Dodano interfejs API do przechwytywania klawiszy sprzętowych przed wysłaniem ich do klawiatury ekranowej (I4f4c6, b/186800395).
- Dodano działanie semantyczne
InsertTextAtCursordla pól tekstowych. (I11ed5) - Działania testowe związane z tekstem (np.
performTextInput) będą teraz bezpośrednio żądać fokusu za pomocą działania semantycznego zamiast klikania pola. (I6ed05)
Poprawki błędów
- Działania testowe dotyczące tekstu wymagają teraz włączenia pól tekstowych. (Iab328)
Wersja 1.5.0-alpha01
22 marca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.5.0-alpha01 Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Modifier.intermediateLayout nie wymaga już jawnego LookaheadScope. Blok pomiaru w elemencie intermediateLayout ma jako odbiorcę element IntermediateMeasureScope, który zapewnia wygodne elementy CoroutineScope, LookaheadScope i MeasureScope.(Ibe2e5)
- LookaheadLayout został zastąpiony przez LookaheadScope, który nie jest już układem. Dzięki temu treść podrzędna w obszarze LookaheadScope może być bezpośrednio kontrolowana przez element MeasurePolicy elementu nadrzędnego. (Ibe2e5)
- Dodaje
Modifier.Node#coroutineScope, aby umożliwić węzłom modyfikatora uruchamianie korutyn. (I76ef9) - Zezwól węzłom modyfikatora na odczytywanie lokalnych kompozycji, implementując interfejs CompositionLocalConsumerModifierNode. (Ib44df)
- Przenoszenie adnotacji @Deprecated z klasy na właściwość. (I882d1)
Wersja 1.4
Wersja 1.4.3
3 maja 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.3 Wersja 1.4.3 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że znak
AndroidViewmógł być nieprawidłowo rozmieszczony w przypadku użycia z niektórymi modyfikatorami. (I4dc77, b/274797771) - Naprawiono błąd w wyszukiwaniu 2D, który dotyczył
DropDownmenu (b/276811828). - Naprawiliśmy błąd we właściwościach niestandardowego fokusu wejścia/wyjścia, który powodował, że blok wejścia/wyjścia był uruchamiany tylko przy pierwszym wywołaniu funkcji lambda (b/277234245).
- Naprawiliśmy regresję w systemie ostrości, która powodowała awarię podczas odczytywania
focusProperties. (b/271324781, b/274897776)
Wersja 1.4.2
19 kwietnia 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.2 Wersja 1.4.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że funkcja
AndroidViewnie używała prawidłowo modyfikatorów, co mogło prowadzić do nieoczekiwanego zachowania i awarii. (Ib67ee, b/275919849) - Usunięto 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
ParentDataModifier, który nie wpływał naAndroidView(b/274797771)
Wersja 1.4.0
22 marca 2023 r.
Publikacja androidx.compose.ui:ui-*:1.4.0 Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
- Dodaliśmy nowy interfejs
PinnableContainerAPI, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane, gdy zostaną przewinięte poza zakres. Na przykładModifier.focusable()używa tego mechanizmu do przypinania aktualnie zaznaczonego elementu. (Ib8881, b/259274257, b/195049010) - System ostrości został przepisany przy użyciu nowych eksperymentalnych
Modifier.Nodeinterfejsów API. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Dodano właściwość semantyczną
IsContainerw przestrzeniach. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie znaczenia semantycznego elementów, takich jak powierzchnie. (I63379) - Dodaliśmy nową rolę ułatwień dostępu
DropdownList. Można go użyć do odtworzenia zachowaniaTalkBackpodczas ustawiania ostrości naandroid.widget.Spinner. (I177e5, b/236159001) - Możesz teraz użyć znaku
PlatformTextStyle(emojiSupportMatch), aby opcjonalnie wyłączyć przetwarzanie obsługi emoji w przypadku pojedynczego akapitu. (Ia7100, b/139326806) - Testy interfejsu Androida Compose będą teraz uruchamiać przebiegi układu dla każdej klatki podczas wykonywania klatek, aby przejść do stanu bezczynności (np. za pomocą
waitForIdle). Może to mieć wpływ na testy, które sprawdzają poszczególne klatki animacji układu. (I8ea08, b/222093277) - Dodano eksperymentalny parametr
TextMotiondo parametruTextStyle, aby określić, czy tekst ma byćStatic(default)czy animowany. UżyjTextMotion.Animated, jeśli tekst ma być skalowany, tłumaczony lub obracany za pomocą animacji. (I24dd7)
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 z adnotacją
AndroidView, które akceptuje parametronReset. Umożliwia ponowne wykorzystanie instancji View, gdy ich węzeł w kompozycji zostanie odrzucony i ponownie użyty w zgodny sposób. Jest to szczególnie przydatne w przypadkuLazyRowsiLazyColumnswyświetleń. (I3f10d, b/230099236) - Wprowadziliśmy nowy interfejs API niskiego poziomu
PlatformTextInputAdapterdo tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)
Poprawki błędów
- Działanie semantyczne
BasicTextField'sSetTextbędzie teraz aktualizować bufor tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (np.performTextReplacement). - Funkcje testowania tekstu
performTextClearance,performTextReplacementiperformTextSelectionużywają terazSemanticsActions. (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
- Usunęliśmy interfejs API
modifierElementOf(). Zamiast tego rozszerzaj bezpośrednio zModifierNodeElement. (I2256b) - Dodano nowe wywołanie zwrotne
Modifier.Node.onReset(), które umożliwia zresetowanie stanu lokalnego, aby prawidłowo obsługiwać sytuację, w której komponentLayoutjest ponownie używany (np. jako element komponentuLazyColumn). Poprawiono komponentFocusTargetModifierNode, aby prawidłowo resetować stan zaznaczenia. (I65495, b/265201972) - Dodano parametr
BlendModedo metodDrawScope.drawText,Paragraph.paintiMultiParagraph.paint, aby obsługiwać różne algorytmy mieszania podczas rysowania tekstu na obiekcie Canvas. (I57508)
Poprawki błędów
- Ulepszono algorytm kolejności fokusu ułatwień dostępu, np. 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()zmieniono nazwę narelease()(I4667a)- Dodano
waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExistsiwaitUntilDoesNotExistjako eksperymentalne interfejsy API doComposeTestRule, rozszerzając interfejs APIwaitUntil, aby akceptował dowolny element dopasowujący i dowolną liczbę węzłów. Więcej informacji znajdziesz wComposeTestRule. (Ifa1b9, b/226934294) - Zmień nazwę
Font.MaximumAsyncTimeoutnaFont.MaximumAsyncTimeoutMillis. (I07af5) - Usunięto
GoogleFont.Provider.AllFontsListUrii 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 zmiany.
Zmiany w interfejsie API
- Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTesticreate*ComposeRule, które akceptują parametryCoroutineContext. Kontekst będzie używany do tworzenia testu oraz wszystkich wywołańLaunchedEffectirememberCoroutineScope()w teście. (I10614, b/265177763) - Dodanie nowego interfejsu API do śledzenia prędkości 1-wymiarowej (If5a82)
- Urządzenie
FocusRequesterjest teraz oznaczone jako@Stable. (I580ee) - Usuń eksperymentalną adnotację z konstruktora
DialogProperties, który przyjmuje parametrusePlatformDefaultWidth. (Ic4048) - Dodano funkcję obliczania pozycji i stycznej w określonej odległości na ścieżce – z użyciem
PathMeasure.getPosition()iPathMeasure.getTangent()(I3b47c) - Usunięto przypadkowo udostępniony publiczny setter w
PlatformParagraphStyle. (I07f47) - Więcej typów i wartości null dla funkcji wbudowanych i ukrytych (I24f91)
- Dodaj
AnnotatedString.hasStringAnnotations, aby wyszukać adnotacje z zerową liczbą przydzielonych zasobów. (I94dfe, b/246960758) - Dodaliśmy nowy przeciążony wariant funkcji
TextMeasurer.measure, który przyjmuje wartośćStringjako tekst. (I47b2d, b/242705342) - Interfejsy API
LineBreakiHyphensw TextStyle zostały przeniesione do wersji stabilnej. (Ic1e1d)
Wkład zewnętrzny
- Metody
notifyFocusedRectw przestrzeniach nazwTextInputSessioniTextInputServicenie są już wycofane. (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
- Dodaliśmy nowy interfejs
PinnableContainerAPI, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane, gdy zostaną przewinięte poza zakres. Na przykładModifier.focusable()używa tego mechanizmu do przypinania aktualnie zaznaczonego elementu. (Ib8881, b/259274257, b/195049010) - System ostrości został przepisany przy użyciu nowych eksperymentalnych
Modifier.Nodeinterfejsów API. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Dodano właściwość semantyczną
IsContainerw przestrzeniach. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie znaczenia semantycznego elementów, takich jak powierzchnie. (I63379) - Dodano nową rolę ułatwień dostępu
DropdownList. Można go użyć do odtworzenia działaniaTalkBack'spodczas ustawiania ostrościandroid.widget.Spinner. (I177e5, b/236159001) - Możesz teraz użyć znaku
PlatformTextStyle(emojiSupportMatch), aby opcjonalnie wyłączyć przetwarzanie obsługi emoji w przypadku pojedynczego akapitu. (Ia7100, b/139326806) - Testy interfejsu Androida Compose będą teraz uruchamiać przebiegi układu dla każdej klatki podczas wykonywania klatek, aby przejść do stanu bezczynności (np. za pomocą
waitForIdle). Może to mieć wpływ na testy, które sprawdzają poszczególne klatki animacji układu. (I8ea08, b/222093277) - Dodano eksperymentalny parametr
TextMotiondo parametruTextStyle, aby określić, czy tekst ma byćStatic(default)czy animowany. UżyjTextMotion.Animated, jeśli tekst ma być skalowany, tłumaczony lub obracany za pomocą animacji. (I24dd7)
Zmiany w interfejsie API
- Zastąpiliśmy argument
maxSize: IntSizew funkcjidrawTextargumentemsize: Size, aby był zgodny z innymi funkcjamiDrawScope. Domyślnie wartośćsizejest ustawiona naSize.Unspecified, co nie powinno zmieniać poprzedniego domyślnego działania. (Icd27d) - Usunięto wycofany eksperymentalny konstruktor czcionek. (I8a724, b/261435386)
- Klasa danych narzędzi interfejsu
Groupma teraz poleisInline, które wskazuje, czy grupa jest przeznaczona do wywołania funkcji kompozycyjnej wbudowanej. JeśliisInlinema wartośćtrue, wywołanie dotyczy funkcji kompozycyjnej wbudowanej. Wartość może być jednak fałszywa w przypadku wywołań wbudowanych funkcji kompozycyjnych pochodzących z modułów skompilowanych za pomocą wersji wtyczki kompilatora Compose, która nie generuje informacji o funkcji wbudowanej. (Idb846) - Przekształcenie kilku wcześniej eksperymentalnych interfejsów API w stabilne
- Interfejs Rotary Scroll Event API jest już stabilny (I42ad3, b/261561229).
FontVariationInterfejs API jest już stabilny (I8779f, b/241016309)- Wszystkie konstruktory
Font()są teraz stabilnym interfejsem API (I5948b, b/261435386). DeviceFontFamilyNamejest teraz stabilny (I8b640, b/261435386)- Konstruktor
AndroidFontz parametremvariationSettingsjest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807) - Interfejs
createFontFamilyResolverAPI jest już stabilny. Może to służyć do przechwytywania nieobsłużonych wyjątków podczas asynchronicznego wczytywania czcionek. (Ibb481, b/261435386) - Interfejs
Font.loadingStrategyAPI jest już stabilny. (I5937c, b/261435386) - Interfejs
GoogleFontAPI jest już stabilny. (Ic90b0, b/261435386) - Interfejs
TextUnit(float, TextUnitType)jest teraz stabilnym interfejsem API. (I90c84, b/261561612) - Interfejs
pluralStringResourcejest teraz stabilnym interfejsem API. (I09849, b/261439703)
Wersja 1.4.0-alpha03
7 grudnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-alpha03 Wersja 1.4.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usuwam instancję
ExperimentalComposeUiApiz instancjiPointerIcon(I23af8) - Wprowadzenie działań związanych z ułatwieniami dostępu na stronie:
PageUp,PageDown,PageLeft,PageRight. Pamiętaj, że są one dostępne tylko w interfejsie API 29. (Ida4ab) - Zaktualizowano widok parametru
rememberNestedScrollConnectionz widoku głównego na widok hosta. (Ia5200) - Dodaliśmy interfejs Modifier API do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych. (I2ba9d, b/203141462)
- Używany w
Clickabledo prawidłowego opóźniania interakcji z naciśnięciem, gdy gesty mogą stać się zdarzeniami przewijania. - Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów falowania przez element
Clickables, gdy jest używany w elemencieScrollable ViewGroup. - Zaktualizowano panele i arkusze, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
- Zmiana nazwy
CompositingStrategy.AlwaysnaOffscreen, aby wskazać, żegraphicsLayerbędzie zawsze renderowany do bufora pośredniego (I47dc1). - Przepełnienie układu wieloma miejscami na treści jest już stabilne (I10566, b/248294649)
- Dodaliśmy eksperymentalne nowe interfejsy API
PerfettoTrace.record {}iPerfettoTraceRule, które umożliwiają rejestrowanie śladów Perfetto (znanych też jako ślady systemowe) w ramach testu, aby sprawdzać zachowanie i wydajność testu. (I3ba16) - W testach interfejsu przeprowadzanych za pomocą reguły Compose wznawiane kontynuacje w wywołaniach zwrotnych
withFrameNanosnie będą wysyłane, dopóki nie zostaną wykonane wszystkie wywołania zwrotne klatek. Odpowiada to działaniu funkcji tworzenia wiadomości w normalnych warunkach. Testy, które opierają się na starym działaniu, mogą jednak zakończyć się niepowodzeniem. Powinno to mieć wpływ tylko na kod, który bezpośrednio wywołuje funkcjewithFrameNanoslubwithFrameMillis, i zawiera logikę poza wywołaniem zwrotnym przekazywanym do tych funkcji, która może wymagać przeniesienia do wywołań zwrotnych. Przykłady zmian w teście animacji znajdziesz w tym CL. - Dodano opcjonalny parametr
onPerformTraversals: (Long) -> Unitdo konstruktoraTestMonotonicFrameClocki funkcji fabrycznej, aby uruchamiać kod po wywołaniach zwrotnychwithFrameNanos, ale przed wznowieniem korutyn rozmówców. (Idb413, b/254115946, b/222093277, b/255802670) - Dodano EmojiCompat do Compose (Ibf6f9, b/139326806)
- Dodano nowy parametr tapety do
@Preview, aby obsługiwać dynamiczne kolory (I9f512).
Poprawki błędów
- Powiadomienia o zastosowaniu migawki są teraz wysyłane po zakończeniu wprowadzania zmian przez
Recomposer. (Iad6c0, b/222093277) - Wprowadzono zmiany w
captureToImage, aby umożliwić przechwytywanie zrzutów ekranu w trybie wielu okien. Jest to przydatne w przypadku testów zrzutów ekranu, które korzystają z komponentów PopUp. (I169c5)
Aktualizacje zależności
- Biblioteki Compose UI i Compose Material zależą teraz od biblioteki Lifecycle w wersji 2.5.1. (I05ab0, b/258038814)
Wersja 1.4.0-alpha02
9 listopada 2022 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-alpha02 Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zaktualizowano
GraphicsLayerScope, aby wyświetlać bieżący rozmiargraphicsLayer. Jest to przydatne do obliczania przekształceńgraphicsLayerw funkcji rozmiaru elementu kompozycyjnego. (If8c43,b/181387080) - Wprowadziliśmy
CompositingStrategy, aby określać, kiedy używać warstwy kompozycji poza ekranem do renderowania treścigraphicsLayer. Automatycznie zachowuje domyślne działanie, które wewnętrznie wykorzystuje warstwę, jeśli zastosowano przezroczystość, lubRenderEffect/Overscroll. Zawsze będzie wprowadzać bufor poza ekranem, w którymModulateAlphanie będzie korzystać z bufora poza ekranem, a zamiast tego będzie modyfikować każdą z zarejestrowanych instrukcji rysowania w ramachgraphicsLayer.ModulateAlphanadal będzie korzystać z bufora poza ekranem w przypadku użyciaRenderEffect/Overscroll(I25e82, b/256382834). - Do
Modifier.NodedodanoinvalidateSubtree(), aby umożliwić unieważnianie całych hierarchii na potrzeby układu i rysowania. (I4bd90) - Promuj
rememberNestedScrollInteropConnectiondo wersji stabilnej. Wprowadziliśmy możliwość przekazywania widoku głównego dorememberNestedScrollInteropConnection. Dzięki temu widok niestandardowy może lepiej reagować na ograniczenia przewijania, zwłaszcza w przypadku widoków niestandardowych (np.ModalBottomSheetDialog). (I9e107) - Dodano interfejs
ObserverNode, który może być używany przez implementacjeModifier.Nodewymagające powiadomienia o zmianie wartości, którą wcześniej odczytały (I5728b, b/247716483). - Dodaliśmy nowy konstruktor do
Paint, który akceptuje natywnyandroid.graphics.Paint. Dodaliśmy też funkcję rozszerzeniatoComposePaint(), która przekształca istniejący natywny obiekt Paint w obiekt Paint Compose. (Ica91b) - Dodaj nowe
FontFamily.Resolver.resolveAsTypefacedo używania na Androidzie. (I8950b) - Dodanie
ToolingState, aby umożliwić narzędziom zmianę wewnętrznych stanów funkcji kompozycyjnej (Ie6614) - Przebudowa narzędzi w celu lepszej obsługi nowych dodanych animacji (I8677b)
- Dodano parametr
minLinesdo komponentów Text w material i material3,TextFieldiOutlinedTextField, który umożliwia ustawienie minimalnej wysokości komponentu w liczbie wierszy (I4af1d).
Wersja 1.4.0-alpha01
24 października 2022 r.
Publikacja androidx.compose.ui:ui-*:1.4.0-alpha01 Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy nową metodę
awaitEachGesture()dla wzorców do wykrywania gestów. Działa podobnie doforEachGesture(), ale pętla gestów działa w całości w ramachAwaitPointerEventScope, więc zdarzenia nie mogą zostać utracone między iteracjami. - Element
forEachGesture()został wycofany na rzecz elementuawaitEachGesture(), ponieważ umożliwia on utratę zdarzeń między gestami. (Iffc3f, b/251260206) - Wycofywanie odświeżania obiektów ułatwień dostępu w androidx. Nawet w najstarszych obsługiwanych wersjach zmiany wydajności są znikome. (I0a961)
- Dodano
DrawStylejako atrybut eksperymentalny doTextStyleiSpanStyle, aby umożliwić rysowanie tekstu z obrysem. (If24b8, b/155421273) AnnotatedString.Builderkorzysta teraz zkotlin.text.Appendable. (I1a061, b/231030444)AnnotatedString.Builderma terazappend(AnnotatedString, start: Int, end: Int)metodę dołączania podciąguAnnotatedStringi przecinających się stylów.- Dodano parametr
DrawStyledo funkcji rysowaniaParagraphiMultiParagraph, który umożliwia rysowanie tekstu z obrysem. (Ic8102, b/155421273)
Wkład zewnętrzny
- Dziękujemy za
vighneshdodanie urządzeń telewizyjnych 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
- Naprawiono problem z zawieszaniem się aplikacji na Androidzie 9 podczas zapisywania stanu widoku Compose przez aktywność. (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 dotyczącemu bezpieczeństwa w
protobuf-javalite:3.19.4(CVE-2022-3171) (b/255545055).
Wersja 1.3.1
9 listopada 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.1 Wersja 1.3.1 zawiera te zatwierdzenia.
Wersja 1.3.0
24 października 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0 Wersja 1.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.2.0
- Nowy eksperymentalny pakiet interfejsów API
LookaheadLayout(umożliwiający zachowania animacji, które wcześniej były niemożliwe) - Nowy eksperymentalny pakiet interfejsów API
Modifier.Node(wydajniejsza alternatywa dlaModifier.composed) - Ulepszona obsługa wcięć okien.
- Obsługa zaznaczania w przypadku padów kierunkowych i klawiatur sprzętowych 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 ulepszeń interfejsu API
- Wiele poprawek błędów i lepsze działanie
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
- Czcionki
DeviceFontFamilyNamenie będą domyślnie konfigurować ustawień wariantówwghtiital, tylko będą używać ustawień platformy dla załadowanych czcionekTypeface. (Ia7a6d, b/246989332) - Naprawiono
LazyColumnwyciek pamięcionModifierLocalsUpdated– funkcja nie była wywoływana z wartością domyślną, gdy modyfikatory były używane ponownie (b/230168389).
Wersja 1.3.0-beta03
21 września 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0-beta03 Wersja 1.3.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj opcje dostosowywania podziału wierszy w tekście. (I86907)
- Zmieniono argument
size:IntSizenaconstraints: Constraintsw metodzieTextMeasurer.measure, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)
Poprawki błędów
- Interfejs API
BackHandlerAndroidX Activity działa teraz w funkcjiDialog. (I35342)
Wersja 1.3.0-beta02
7 września 2022 roku
Publikacja androidx.compose.ui:ui-*:1.3.0-beta02 Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy eksperymentalne przeciążenie funkcji Layout, które akceptuje listę wielu funkcji lambda z treściami, co pozwala traktować mierzalne elementy umieszczone w różnych funkcjach lambda z treściami w odmienny sposób (Ic1b4e).
Zmiany w eksperymentalnych interfejsach API Focus:
FocusDirection.IniFocusDirection.Outzostały wycofane i zastąpione przezFocusDirection.EnteriFocusDirection.Exit. (Ia4262, b/183746982)- Dodaliśmy 2 nowe właściwości focus: enter i exit, aby określić niestandardowe działanie dla
FocusManager.moveFocus(Enter)iFocusManager.moveFocus(Exit). (I5f3f9, b/183746982) - Aby anulować przeniesienie ostrości, możesz teraz użyć
FocusRequester.Cancel.FocusRequester.Cancelmożna używać w przypadku 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.
Zmiana struktury 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 zmiana w kodzie, 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ć w miarę możliwości i w rozsądnym zakresie zgodna wstecznie pod względem obserwowalnego działania. W ramach tej zmiany nie zmodyfikowaliśmy jednak kilku podsystemów Compose i jest prawdopodobne, że zachowanie niektórych z nich uległo zmianie w sposób, który nie został uwzględniony w naszych testach i nie został jeszcze wykryty ani naprawiony.
Zachowaj ostrożność podczas uaktualniania 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”. Węzły Modifier.Node są tworzone w wyniku
fun modifierElementOf(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface IntermediateLayoutModifierNode
Zmiana w działaniu powodująca niezgodność
Maksymalna obsługiwana wysokość w oknach i wyskakujących okienkach została zmniejszona do 8 dp.
Maksymalna obsługiwana wysokość 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. Zmiana ta ma na celu wyeliminowanie błędu ułatwień dostępu w wersjach Androida starszych niż S oraz zapewnienie, że usługi ułatwień dostępu w tych oknach będą mogły wchodzić w interakcje z zawartością w oknie dialogowym lub wyskakującym.
Ta zmiana będzie miała wpływ tylko na użytkowników, którzy tworzą niestandardowe okno 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 odpowiednim ustawieniem wysokości. Nie jest to zalecane, ponieważ może negatywnie wpłynąć na ułatwienia dostępu. Deweloper musi zadbać o to, aby dolna część okna lub wyskakującego okienka była interaktywna i czytelna dla usług ułatwień dostępu.
Zmiany w interfejsie API
- Rozwiązaliśmy problem, który powodował, że
painterResourcenie aktualizował się po zmianach konfiguracji (I58e73, b/228862715). rememberTextMeasurernie przyjmuje już parametrówFontFamily.Resolver,DensityaniLayoutDirection. Aby podać niestandardowe wartości tych parametrów, użyj konstruktoraTextMeasurer. (Ia1da3)- Dodaliśmy właściwość
DialogProperties.decorFitsSystemWindows, aby okna dialogowe mogły obsługiwaćWindowInsets. (I57742, b/229378542) - Przywrócono konstruktory czcionek do oryginalnego pliku Kotlin, aby zachować zgodność binarną. Brak zmian w porównaniu z ostatnią wersją stabilną. (Ieb2f3)
- Usunięto niepotrzebny operator z kilku definicji równości – nie ma to żadnego wpływu. (I6c309)
FontVariation.Settingto zamknięty interfejs, który umożliwia korzystanie z przyszłych interfejsów API ograniczających. (I11021, b/143703328)- Dodano
CompositionGroup.findParametersdoSlotTree.kt. Dzięki temu narzędzia mogą pobierać parametry dlaCompositionGroupbez konieczności analizowania całej tabeli slotów. (I124fe)
Wersja 1.3.0-alpha03
10 sierpnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0-alpha03 Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
LayoutCoordinates.findRootCoordinates()jest teraz dostępny publicznie (I7fa37, b/204723384)- Dodano eksperymentalny interfejs API do pobierania
LayoutCoordinateswPlacementScope. Dzięki temu deweloperzy wiedzą, gdzie znajduje się bieżący układ, aby umieścić elementy podrzędne względem jego pozycji. (I5482b, b/238632578) - Dodano
LayoutCoordinates.transformFrom, aby uzyskać przekształcenie macierzy z jednegoLayoutCoordinatesna drugi. (Ic5ab1, b/238632578) - Wycofano
SemanticsModifier.idi przeniesiono identyfikator semantyki doLayoutInfo.semanticsId. (Iac808, b/203559524) - Czcionki zasobów obsługują teraz ustawianie ustawień wariacji czcionki (API w wersji 26 lub nowszej). (I900dd, b/143703328)
- Obsługa czcionek zmiennych w
DeviceFontFamilyNameFont(Ic1279, b/143703328) - Konstruktory czcionek akceptują teraz listę
FontVariation.Settingdo konfigurowania czcionek zmiennych na urządzeniach z Androidem O i nowszym. (I11a9d, b/143703328) - Dodano interfejs API
FontVariationdo definiowania i używania czcionek zmiennych. (I3c40c, b/143703328) - Konstruktor
LineHeightStyle.Alignmentjest teraz publiczny (eksperymentalny) (I4bbbe, b/235876330) - W przypadku akapitów zdefiniowano teraz wartości oczekiwane i rzeczywiste na urządzeniach z Androidem i komputerach. (Id387e, b/239962983)
- Interfejs Paragraph jest teraz interfejsem sealed interface Paragarph. Nie ma zastosowania dla podklas paragrafu, więc jeśli ta zmiana ma na Ciebie wpływ, skontaktuj się z nami. (If5247, b/239962983)
- Usunięto adnotację eksperymentalną z funkcji
PlatformTextStyleiLineHeightStyle. (I64bef) - Wycofaj:
TextInputService.show|hideSoftwareKeyboardZamiast niego użyjSoftwareKeyboardControllerw kodzie aplikacji iTextInputSessionw kodzie zarządzania IME. (I14e4c, b/183448615) - Dodano nowy interfejs API dla istniejących typów animacji (I26179)
Poprawki błędów
- Dodaliśmy
@RequiresPermissiondo interfejsów API, które wymagają przyznania uprawnieniaPOST_NOTIFICATIONSw przypadku pakietu SDK w wersji 33 lub nowszej. (Ie542e, b/238790278)
Wersja 1.3.0-alpha02
27 lipca 2022 roku
Publikacja androidx.compose.ui:ui-*:1.3.0-alpha02 Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy nową właściwość
PointerInputChange#pressure, która umożliwia pobieranie ciśnienia. (I45a5e, b/205164819) - Dodano
rememberTextMeasurer, aby ułatwić tworzenie i zapamiętywanie instancjiTextMeasurerw kompozycji. (I8d66e) - Usługi
Rect,RoundRectiMutableRectobsługują teraz składnię Kotlinindo wywoływania funkcjicontains. (Ie42b0, b/238642990) - Usuń z
KeyInjectionScopeniepotrzebne funkcje, ponieważ można je łatwo zaimplementować za pomocą prostszych części interfejsu API. Usunięte funkcje to m.in.pressKeys,keysDownikeysUp. (I81d77) - Zmieniliśmy nazwy stałych i parametrów w
KeyInjectionScope, aby zawierały przyrostek „Millis”, jeśli jednostką tych stałych i parametrów są milisekundy. (Iabef5) - Dodano metodę
toStringForLog()doEditCommand, aby ułatwić rozwiązywanie problemów z edytowaniem tekstu. (I53354, b/228862731) - Dodano funkcję rozszerzenia
drawTextwDrawScope, która umożliwia rysowanie tekstu z wieloma stylami w komponentach i modyfikatorach działających naDrawScope, takich jakCanvasidrawBehind. (I16a62, b/190787898) - Wprowadzono nowy eksperymentalny interfejs API o nazwie
TextMeasurer, który umożliwia obliczanie dowolnego układu tekstu i daje identyczne wyniki jakBasicText, niezależnie od środowiska wykonawczego Compose. (I17101) - Dodano
mapTreedoSlotTree.kt. Dzięki temu narzędzia mogą sprawdzaćSlotTreebez tworzenia kopii w pamięci, jak to robi funkcja asTree. W przypadku Inspektora układu daje to wzrost wydajności o około 10-krotny. (I5e113) - Zmieniliśmy sposób przechowywania podglądu funkcji Compose na binarne pliki wyjściowe, aby umożliwić deweloperom pisanie i ponowne wykorzystywanie adnotacji
MultiPreviewz bibliotek. (I85699, b/233511976)
Poprawki błędów
- Podczas dodawania zdarzeń
InputEventChangedo modułu śledzącegoVelocitybędziemy teraz uwzględniać różnice zamiast pozycji. Dzięki temu prędkość będzie prawidłowo obliczana we wszystkich przypadkach, nawet jeśli element docelowy się porusza (Icea9d, b/216582726, b/223440806, b/227709803). - Naprawiono błąd NPE spowodowany przez
AnnotatedString.toUpperCase, gdy występują adnotacje. (I0aca2, b/210899140)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.3.0-alpha01 Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nowy
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 także pozwala na użycie obliczonych wcześniej rozmiarów i pozycji do animowania rozmiarów i pozycji w kierunku wartości docelowych.SubcomposeLayoutsnie są jeszcze obsługiwane, ale będzie można z nich korzystać w przyszłej wersji. (I477f5) - Dodano opcjonalny parametr alfa do typu pędzla w przypadku
TextStyleiSpanStyle, aby modyfikować krycie całego elementuText. (Ic2fac, b/234117635) - Wprowadziliśmy typ adnotacji
UrlAnnotationi powiązane z nim metody, aby obsługiwać linkiTalkBackwAnnotatedString. (I1c754, b/231495122) - Przeniesienie funkcji narzędziowych do środowiska wykonawczego (I4f729)
Poprawki błędów
TextLayoutResult.getLineForOffsetnie rzuca. (Idc5d6, b/235876324)
Wkład zewnętrzny
- Dodano nowy interfejs API
WindowInfo.keyboardModifiersdo obserwowania jego stanu w funkcjach kompozycyjnych lub za pomocą snapshotFlow (Icdb8a).
Wersja 1.2
Wersja 1.2.1
10 sierpnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.1 Wersja 1.2.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd wskaźnika null w inspektorze (b/237987764)
- Naprawiono wyjątek 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 z użyciem fokusu działa teraz dzięki nowemu
BeyondBoundsLayoutinterfejsowi API. - Nowe interfejsy API do dostosowywania zachowań w
FocusOrderiFocusProperties - Ulepszone działanie w przypadku klawiatury fizycznej lub pilota do telewizora
- Przewijanie list leniwych z użyciem fokusu działa teraz dzięki nowemu
Nowe interfejsy API:
- Wstawki okienne
- Podstawowe elementy pierwotne animacji opartych na gestach, nieskończonych i układu
GraphicsLayer, w tymRenderEffect
Wiele poprawek błędów i lepsze działanie
Wersja 1.2.0-rc03
29 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-rc03 Wersja 1.2.0-rc03 zawiera te zatwierdzenia.
- Brak zmian od wersji 1.2.0-rc02.
Wersja 1.2.0-rc02
22 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-rc02 Wersja 1.2.0-rc02 zawiera te zatwierdzenia.
Wersja 1.2.0-rc01
15 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-rc01 Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejsy w bibliotekach Compose są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1).
- Dodano funkcje wyższego rzędu do
KeyInjectionScope, aby wstrzykiwać naciśnięcia klawiszy, gdy inne klawisze są przytrzymywane lub włączone. Do tych funkcji należąwithKeysDown,withKeysToggleditp. Dodaliśmy też właściwości sprawdzające, czy dany klawisz meta jest wciśnięty, np.isCtrlDown, aby sprawdzić, czy któryś z klawiszy Control jest wciśnięty. Dokumentację poszczególnych funkcji znajdziesz na stronieKeyInjectionScope. (I9f6cd, b/229831515) - Wprowadzono eksperymentalny interfejs
OverscrollEffect, który umożliwia stosowanie niestandardowych efektów przewijania poza zakres, a także przeciążeniaModifier.scrollable, które go akceptują. - Eksperymentalny interfejs
LocalOverScrollConfigurationzostał przeniesiony zfoundation.gesturedo pakietu podstawowego i zmieniono jego nazwę naLocalOverscrollConfiguration(If19fb, b/204650733). - Zmień nazwę
runComposeUiTestWithoutActivity {}narunEmptyComposeUiTest {}, aby była zgodna zcreateEmptyComposeRule()(I6fed7)
Wersja 1.2.0-beta03
1 czerwca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-beta03 Wersja 1.2.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano użytkownika
pressKeyTimesorazisCapsLockOni znajomych doKeyInjectionScope. Dodatkowo interfejs API obsługuje teraz wzorce wstrzykiwania łączące mysz i klawiaturę, takie jak kliknięcie przycisku myszy z przytrzymanym klawiszem meta. (I4c8da, b/229831515) - Dodaliśmy eksperymentalną obsługę wstrzykiwania kluczowych zdarzeń. Użyj
performKeyInput, aby wysłać kluczowe zdarzenia, lub wyślij je za pomocą właściwościkeyobiektuMultiModalInjectionScopepodczas gestu wprowadzania multimodalnego z użyciemperformMultiModalInput. Dokumentację interfejsu API znajdziesz wKeyInjectionScope. (Ic5000, b/229831515) - Dodaj nowy element
GoogleFont.Provider.AllFontsListUri, aby pobrać kanoniczne źródło internetowe czcionek Google Fonts obsługiwanych przez Androida. - Ulepszyliśmy komunikaty o błędach, które są ponownie zgłaszane, gdy nie można wczytać czcionek Google w Compose. (I0416c)
Poprawki błędów
- Podczas dodawania zdarzeń
InputEventChangedo narzędzia Velocity Tracker będziemy teraz uwzględniać różnice zamiast pozycji. Dzięki temu prędkość będzie prawidłowo obliczana we wszystkich przypadkach, nawet jeśli element docelowy się porusza (I51ec3, b/216582726, b/223440806, b/227709803). - Ustawienie
Show Layout Boundsbędzie teraz stosowane w przypadku komponentów natychmiast po przełączeniu go w szybkich ustawieniach, bez konieczności opuszczania i ponownego wchodzenia w aktywność. (I843d5, b/225937688) - Wyszukiwanie ciągów znaków ułatwień dostępu nie powoduje wczytywania czcionki. Wcześniej próbowano wczytać czcionki dla
StyleSpans, co powodowało awarie, jeśliFontFamily.Resolverzostało zastąpione. (I4609d) - Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
DeleteSurroundingTextCommandiDeleteSurroundingTextInCodePointsCommandwymagają teraz, aby argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)
Wersja 1.2.0-beta02
18 maja 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-beta02 Wersja 1.2.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Ponowne wykorzystanie funkcji w innych typach podglądu (I19f39)
Poprawki błędów
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerzmieniliśmy nazwę naDisposeOnDetachedFromWindowOrReleasedFromPool, aby lepiej odzwierciedlać, że dotyczy to sytuacji, w których następuje utylizacja, a nie tylko tych, w których nie następuje. (If15ca)
Wersja 1.2.0-beta01
11 maja 2022 roku
Publikacja androidx.compose.ui:ui-*:1.2.0-beta01 Wersja 1.2.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- To pierwsza wersja beta 1.2.
Zmiany w interfejsie API
- Dodano eksperymentalny interfejs
BeyondBoundsInterval, który może być używany przez niestandardowe implementacje interfejsuLazyListpodczas rozmieszczania elementów poza widocznymi granicami (Ifabfb, b/184670295). - Wersje
Modifier.composedz kluczem są teraz stabilnym interfejsem API (Ie65e4, b/229988420). - Uproszczono interfejs
rememberNestedScrollConnectionAPI, aby używać lokalnych kompozycji do uzyskiwania informacji o bieżącym widoku (I67ca7). - Adnotacji
@ComposableTargeti adnotacji oznaczonych symbolem@ComposableTargetMarkermożna teraz używać w zakresie pliku za pomocą prefiksu@file. Użycie adnotacji docelowej w zakresie pliku spowoduje, że kompilator założy, że wszystkie funkcje z możliwością komponowania w pliku są przeznaczone do powiązanego aplikatora. Na przykład użycie@file:UiComposabledeklaruje, że wszystkie funkcje@Composablesą przeznaczone dla aplikacji Compose UI. Funkcja, która ma kierować reklamy na innego aplikatora, musi wyraźnie podać adnotację znacznika docelowego dla wybranego aplikatora. (I40804) Wprowadziliśmy nowy eksperymentalny interfejs API do testowania niezależny od platformy:
interface ComposeUiTestifun runComposeUiTest(block: ComposeUiTest.() -> Unit), których można używać do przeprowadzania testów interfejsu Compose bez konieczności korzystania zTestRule. Aby uruchomić test bezComposeTestRule, przekaż go jako funkcję lambda dorunComposeUiTesti użyj metod oraz elementów w zakresie odbiorcyComposeUiTest, które są takie same jak wComposeContentTestRule.Do pakietu dodano specyficzne dla Androida adnotacje
interface AndroidComposeUiTestifun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit), aby zapewnić dostęp do bazowej aktywności, podobnie jak w przypadku adnotacjiAndroidComposeTestRule. Aby mieć jeszcze większą kontrolę, możesz samodzielnie utworzyć instancjęclass AndroidComposeUiTestEnvironment.Implementacja na komputery to
class DesktopComposeUiTest, ale obecnie nie ma funkcji uruchamiania przeznaczonych specjalnie na komputery.Test można przenieść z
ComposeTestRuledoComposeUiTestw ten sposób (przykład na Androidzie). Od:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }Do:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }Obecnie
ComposeContentTestRuleiComposeTestRulenie są rozszerzeniamiComposeUiTest, co oznacza, że funkcji rozszerzeń wComposeUiTestnie można jeszcze wywoływać w interfejsieTestRule. Gdy interfejs APIComposeUiTeststanie się stabilny, interfejsyComposeContentTestRuleiComposeTestRulezostaną zmienione tak, aby rozszerzać interfejsComposeUiTest. (Ib4e90)Nazwa
LineHeightBehaviorzostała zmieniona naLineHeightStyleNazwa
LineVerticalAlignmentzostała zmieniona naLineHeightStyle.AlignmentZmieniono nazwę
LineHeightTrimnaLineHeightStyle.TrimUsunięto wartości domyślnego konstruktora z
LineHeightStyle(I582bf, b/181155707)Dodano
BrushdoTextStyleiSpanStyle, aby umożliwić rysowanie tekstu z kolorowaniem gradientowym. (I53869, b/187839528)Atrybuty
trimFirstLineTopitrimLastLineBottomelementuLineHeightBehaviorzostały zmienione w jedno wyliczenie:LineHeightTrim.LineHeightTrimmają 4 stany zdefiniowane przez 2 wartości logiczne:FirstLineTop,LastLineBottom, Both i None (Ifc6a5, b/181155707).Dodano użytkownika
LineHeightBehaviordo listyTextStyleiParagraphStyle.LineHeightBehaviorokreśla, czy wysokość wiersza jest stosowana do góry pierwszego wiersza i do dołu ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni podanej przezTextStyle(lineHeight).Na przykład zachowanie podobne do tego, które definiuje usługa porównywania cen, można uzyskać za pomocą parametru
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).Konfiguracje
trimFirstLineTopitrimLastLineBottomdziałają prawidłowo tylko wtedy, gdy wartośćincludeFontPaddingto „false”. (I97332, b/181155707)Funkcje
PlatformParagraphStyle.lerpiPlatformSpanStyle.lerpzostały zmienione na funkcje najwyższego poziomu (I9a268).
Poprawki błędów
- Dokumentacja
PointerInputChange::copyzawiera teraz prawidłową informację, że jest to kopia płytka. (I182f5) - Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
- Domyślnie włączone
includeFontPadding. Możesz wyłączyćincludeFontPaddingza pomocą atrybutuTextStyle.platformTextStyle. W najbliższej przyszłości zmienimy domyślne działanie, ale do tego czasu pozwoli nam to lepiej zintegrować ulepszenia wysokości wiersza (aosp/2058653) i rozwiązać problemy zTextFieldprzycinaniem. (I01423, b/171394808)
Wkład zewnętrzny
MouseInjectionScope.scroll(delta = someDelta)jest teraz odwrócony na Androidzie, jeśli przewijamy w pionie (jeśli someDelta jest dodatni, przewijanie będzie w dół) (Ifb697, b/224992993)
Wersja 1.2.0-alpha08
20 kwietnia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha08 Wersja 1.2.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Funkcje
pluralStringResourcezostały oznaczone jako eksperymentalne, aby umożliwić ich rozwój i lepsze wsparcie internacjonalizacji w przyszłości. (If24e4) - Elementy Paragraph i MultiParagraph akceptują teraz parametr Constraints. Przekazywanie wartości
Constraints.maxHeightjest obecnie operacją pustą, ale w przyszłości umożliwi wykonywanie 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 (obniżenie lub pozycja) zostało wycofane w
PointerInputChange. Aby w pełni wykorzystać zmianę, możesz użyćconsume(). Możesz użyćisConsumed, aby sprawdzić, czy ktoś inny wcześniej wykorzystał zmianę. PointerInputChange::copy()zawsze tworzy teraz płytką kopię. Oznacza to, że po wykorzystaniu jednej kopiiPointerInputChangezostaną wykorzystane kolejne kopie. Jeśli chcesz utworzyć niepowiązany obiektPointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)- Włączanie współdziałania zagnieżdżonego przewijania między Compose i widokiem w kierunku Compose > View. Oznacza to, że element kompozycyjny nadrzędny będzie mógł otrzymywać zagnieżdżone delty przewijania z zagnieżdżonego widoku przewijania. (If7949, b/174348612)
- Nowy
SemanticsProperty testTagsAsResourceId, który można wykorzystać, aby dostosować Compose do testów UIAutomator zaprojektowanych dla systemu View. (I39c20) - Wyświetlaj 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 działaniu, ponieważ wcześniej w interfejsach API 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992) - W przypadku instrukcji Paragraph i Multiparagraph zmieniliśmy kolejność argumentów pozycyjnych, aby były one umieszczone przed argumentami opcjonalnymi. (Idafaa)
AndroidFontprzyjmuje teraz typefaceLoader jako parametr konstruktora. (I2c971)
Wersja 1.2.0-alpha07
6 kwietnia 2022 roku
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha07 Wersja 1.2.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano nową funkcję
Snapshot.withoutReadObservation { ... }. Umożliwia użytkownikom uruchamianie przekazanej funkcji lambda bez subskrybowania zmian wartości stanu odczytanych w tym bloku. Może się to przydać w przypadkach, gdy chcesz korzystać z bezpiecznych dla wątków odczytów i zapisów opartych na zrzutach, ale chcesz mieć możliwość odczytania wartości bez powodowania niepotrzebnego ponownego komponowania lub ponownego pomiaru. (I9f365, b/214054486) - Właściwość rozszerzenia
consumeWindowInsetselementuComposeViewumożliwia deweloperom wyłączenie wykorzystywaniaWindowInsetsna Androidzie. Dzięki temu poszczególneComposeViewsw hierarchii mogą stosowaćWindowInsetsbez wzajemnego zakłócania działania. (I0ef08, b/220943142) - Dodano
KeyboardType.Decimaljako alternatywę dlaKeyboard.Number, aby uwzględnić separator dziesiętny w edytorze IME. (Iec4c8, b/209835363) PointerEventType.ScrolliPointerEvent.scrollDeltato teraz stabilne interfejsy API (I574c5, b/225669674).- Włącz zagnieżdżone przewijanie między widokiem a Compose w przypadku współpracujących klas widoku. Oznacza to, że funkcja Compose może teraz wysyłać różnice przewijania do współpracującego elementu nadrzędnego View. (I5d1ac, b/174348612)
- Zaktualizowano
FontFamily.Resolver, aby zintegrować ustawienie ułatwień dostępu „Pogrubienie tekstu w całym systemie” (I6c1e7) - Środowisko wykonawcze
Font(AssetManager, String, ...)zostało wycofane i zastąpione środowiskiemFont(String, AssetManager, ...). To eksperymentalny interfejs API. (I1c7a4) - Dodaj nowy deskryptor czcionki
Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane w systemie w łańcuchach zastępczych czcionek. (I30468, b/219754572) - Dodano tymczasową konfigurację zgodności dla
includeFontPaddingw TextStyle/ParagraphStyle.includeFontPaddingmożna zmienić na stronieTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Jest to tymczasowa opcja konfiguracji umożliwiająca migrację, która zostanie usunięta. (If47be, b/171394808) - Dodaj rozszerzenie
GoogleFont.Provider.isAvailableOnDevice, aby uzyskać pomoc w debugowaniu. (I64e31) - Dodaj konstruktor
GoogleFont.Providerdo użycia z@ArrayRes(Ic5ee1, b/225984280) Compose GoogleFontnazywa się terazFont(GoogleFont), a interfejs API pozostaje stabilny. (I125f2)
Poprawki błędów
- Dodano sprawdzanie w narzędziu lint w przypadku 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 się skupić. (I17b71) - Zaktualizowano analizowanie wektorowych elementów rysunkowych, aby obsługiwać automatyczne dublowanie, które odwraca zawartość elementu
VectorPainter, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237) Zaktualizowano kolory cienia/otoczenia, aby były parametrami końcowymi
Modifier.graphicsLayerw celu zapewnienia zgodności z interfejsem API (I3f864, b/160665122).Dodano domyślne implementacje koloru cienia/otoczenia w
GraphicsLayerScope, aby zapewnić brak zmian w interfejsie API powodujących błędy.Dodano godzinę wydarzenia do zdarzeń RSB (Ief8ae)
Usługa
FocusOrderzostała połączona z usługąFocusProperties, a usługafocusProperties()ma teraz wszystkie funkcje usługifocusOrder(). FunkcjeFocusOrderifocusOrder()zostały wycofane.focusOrder(), który akceptujefocusRequester, należy zastąpić modyfikatoremfocusRequester()w połączeniu zfocusProperties(). Dzięki temu modyfikatory mogą być bardziej od siebie odseparowane. (I601b7)Uaktualnienie obu tych elementów
RecyclerViewiComposeznacznie poprawi wydajność przewijania w przypadku widoków RecyclerView z widokami Compose jako elementami podrzędnymi.Dodaj
ViewCompositionStrategy.Defaultjako sposób pobierania wbudowanej strategii domyślnej.Dodaj
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer, która jest nową strategią domyślną i prawidłowo obsługuje kontenery puli, takie jak RecyclerView. (If7282)Dodaliśmy obsługę adnotacji do klas adnotacji za pomocą adnotacji @Preview jako pierwszego kroku w procesie dodawania funkcji Multipreview. Takie adnotacje można wykorzystać do adnotowania metod Composable lub innych klas adnotacji, które można następnie uznać za pośrednio adnotowane za pomocą danej adnotacji @Preview. (I12eff)
Urządzenia referencyjne dodane do listy urządzeń 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: dodanie właściwości
ambientShadowColorispotShadowColordoGraphicsLayerScope(I1ba1a, b/160665122) - Zasoby w liczbie mnogiej są teraz obsługiwane przez funkcje
pluralStringResource. (Ib2f23, b/191375123)
Wersja 1.2.0-alpha05
9 marca 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha05 Wersja 1.2.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Funkcja
TextToolbarprzyjmuje teraz argumenty lambda zamiastActionCallback. (Ib2eb9, b/197950089) - Zaktualizowano możliwość przyjmowania wartości null w bibliotekach core i appcompat, aby była zgodna z wersją DP2 Tiramisu (I0cbb7).
- Interfejs pomiarowy udostępnia teraz właściwość parentData (I3313f)
Modifier.onPlacedi interfejsOnPlacedModifierdziałają teraz stabilnie. (Ib5482)- Hurra! Animacja kompozycji obsługuje teraz ustawienie „Skala czasu trwania animatora” z opcji programisty. (I5a4fc, b/161675988)
- Dodano modyfikator
BeyondBoundsLayoutlokalny (If8b51, b/184670295) - Tekst: opcja includeFontPadding jest teraz domyślnie wyłączona. Problemy z obcinaniem wynikające z
includeFontPadding=falsezostały rozwiązane i nie powinno już dochodzić do obcinania w przypadku wysokich skryptów. (I31c84, b/171394808)
Poprawki błędów
ComposeContentTestRule.setContentbędzie teraz zgłaszać wyjątekIllegalStateException, jeśli spróbujesz ustawić treść, gdy już istnieje. (I888a5, b/199631334)- Naprawiliśmy awarię spowodowaną zawartością schowka podczas odczytywania danych ze schowka na urządzeniu z Androidem. (I06020, b/197769306)
- Ulepszanie przykładowych przewijanych reklam w sieci wyszukiwania. (I6a596)
Wkład zewnętrzny
- Zaktualizowano do korzystania z rutyn Kotlinx w wersji 1.6.0 (I3366d).
Wersja 1.2.0-alpha04
23 lutego 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha04 Wersja 1.2.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
Dodano adnotacje
ComposableTarget,ComposableTargetMarkeriComposableOpenTarget, które umożliwiają zgłaszanie w czasie kompilacji sytuacji, w których funkcja kompozycyjna jest wywoływana w odniesieniu do narzędzia, do którego nie została zaprojektowana.W większości przypadków adnotacje te mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Nie można wywnioskować przypadków, w których tworzony jest i używany niestandardowy aplikator, abstrakcyjne funkcje kompozycyjne (np. metody interfejsu), pola lub zmienne globalne, które są kompozycyjnymi wyrażeniami lambda (zmienne lokalne i parametry są wywnioskowane), lub gdy używana jest funkcja
ComposeNodelub powiązane funkcje kompozycyjne.W przypadku niestandardowych funkcji stosujących funkcje kompozycyjne, które wywołują
ComposeNodelubReusableComposeNode, należy dodać adnotacjęComposableTargetdo funkcji i wszystkich typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji, która jest oznaczona symbolemComposableTargetMarker, a następnie użycie tej adnotacji zamiast symboluComposableTarget. Adnotacja kompozycyjna oznaczona symbolemComposableTargetMarkerjest równoważna adnotacjiComposbleTargetz pełną i jednoznaczną nazwą klasy atrybutu jako parametrem funkcji stosującej. Przykład użycia elementuComposableTargetMarkerznajdziesz w sekcjianroidx.compose.ui.UiComposable. (I38f11)Font(resId, ...)obsługuje teraz loadingStrategy w stabilnym interfejsie API. (Ief3d2)Interfejs
FontLoadingStrategyjest teraz stabilnym interfejsem API. (I1ee35, b/174162090)Obsługa asynchronicznego wczytywania czcionek w komponencie Tekst (I77057, b/214587005)
Dodaj interfejs Bridge API do konwertowania niestandardowego parametru
Font.ResourceLoadernaFontFamily.Resolver. (Ia0060)
Poprawki błędów
- Podane
FontFamily.Resolversą przekazywane do podkompozycji, takich jak Popup. - Podane
Font.ResourceLoadersą przekazywane do podkompozycji, takich jak Popup. (I48fa5)
Wersja 1.2.0-alpha03
9 lutego 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha03 Wersja 1.2.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Metody
notifyFocusedRectwTextInputSessioniTextInputServicezostały wycofane i nie będą wywoływane. Zamiast niej używaj właściwościBringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874) - Wprowadzono metodę
destroyDisplayListDataw klasie zastępczejRenderNode(I1e659, b/216660268). - Dodaliśmy nowe API, które 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 elementem kompozycyjnym w funkcję lambda przenoszącą stan i odpowiednie węzły do dowolnej nowej lokalizacji, w której jest wywoływana. Gdy poprzednie połączenie opuści kompozycję, stan jest tymczasowo zachowywany. Jeśli do kompozycji dołączy nowe połączenie z funkcją Lambda, stan i powiązane węzły zostaną przeniesione do lokalizacji nowego połączenia. Jeśli nie zostanie dodane nowe połączenie, stan zostanie trwale usunięty, a obserwatorzy zostaną powiadomieni.Jeśli funkcja lambda
movableContentOfjest wywoływana wielokrotnie 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ń do wywołań wchodzących w kolejności, w jakiej są wywoływane. Cały stan, który nie został wykorzystany przez nowe połączenia, jest trwale usuwany. (Ib4850)FontFamilyResolverjest teraz dostępna wLocalFontFamilyResolver.currentDodano
createFontFamilyResolver(context)icreateFontFamilyResolver(context, coroutineScope), aby tworzyć nowe narzędzia do rozpoznawania FontFamily poza użyciem funkcji Compose.Komponenty Paragraph i MultiParagraph przyjmują teraz wartość
FontFamily.ResolverTextLayoutResult.layoutInput.fontFamilyResolverzawiera teraz resolver używany w tym układzie. WycofaliśmyTextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)Obsługa asynchronicznego i opcjonalnego wczytywania czcionek z zachowaniem rezerwowym. Ta ścieżka jest używana przez komponenty Text i TextField i udostępniana przez interfejs FontFamilyResolver.
Obsługa wstępnego wczytywania czcionek za pomocą
FontFamilyResolver.preloadFontFamilyResolver.setAsyncLoadContextumożliwia ustawienie globalnego kontekstu korutyny używanego do wczytywania czcionek asynchronicznych. (I87fe8, b/174162090)Dodano
AndroidFont, nowy interfejs API niskiego poziomu do udostępniania nowych typów deskryptorów zasobów czcionek na Androidzie. Może to być np. 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.Rozszerzyliśmy interfejs
Font.ResourceLoadedAPI, aby obsługiwał opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy programistom aplikacji bezpośredniego korzystania z tego interfejsu API. Aby dodać nowe rodzaje czcionek, zapoznaj się zAndroidFont.Funkcja rozszerzenia
Font.AndroidResourceLoaderumożliwia tworzenieFont.ResourceLoaderpoza kompozycją.Dodano parametr
loadingStrategydo czcionek opartych na zasobach, aby umożliwić asynchroniczne wczytywanie, gdy czcionka zasobu odwołuje się do pliku XML czcionek do pobrania. (Ie5aea, b/174162090)Konstruktor
Typeface(FontFamily)został wycofany. Wcześniej służyło to 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 niego używaj interfejsuFontFamilyResolver.preload.Środowisko wykonawcze
fontResource(FontFamily): Typefacezostało wycofane. Wcześniej służyło to do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast tego użyjFontFamilyResolver.preload(If8e7c, b/174162090).Konstruktor
SubcomposeLayoutStateakceptującymaxSlotsToRetainForReusezostał wycofany. Zamiast tego jest nowy konstruktor akceptującySubcomposeSlotReusePolicy– nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które sloty powinny być zachowane do ponownego użycia w przyszłości. (I52c4d)Udostępnia funkcje HSV i HSL w
Colorjako nieeksperymentalne interfejsy API. Przestrzeń kolorów Oklab jest teraz publicznym interfejsem API. (I08fb6, b/180731008)Wycofaliśmy interfejs
AndroidComposeTestRule.AndroidComposeStatement, który nie miał być częścią publicznego interfejsu API i nie miał dla Ciebie żadnego znaczenia. (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 komputerze. (I9ce5c, b/174162090)
FontFamily.Resolver.resolvezwrotyState<Any>(I4406c, b/174162090)
Poprawki błędów
- Pola tekstowe będą teraz znajdować się nad klawiaturą, gdy są aktywne i klawiatura jest wyświetlana, a tryb wprowadzania tekstu jest ustawiony na
ADJUST_PAN. (I8eaeb, b/190539358, b/192043120) - Komputer stacjonarny używa lokalnego komponentu do
FontFamily.Resolver - Wycofanie platformy
FontLoaderna komputery - Nowa
createFontFamilyResolverfabryka na komputerze (I6bbbb, b/174162090) - Klawiatura ekranowa nie miga już podczas przełączania fokusu między polami tekstowymi. (I1bf50, b/187746439)
Wersja 1.2.0-alpha02
26 stycznia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano
Modifier.onRotaryScrollEvent()iModifier.onPreRotaryScrollEvent()w przypadku urządzeń do noszenia z obrotowym przyciskiem bocznym (I18bf5, b/210748686) - Dodaj eksperymentalne rozszerzenie
View.createLifecycleAwareRecomposer(I0cde6)
Wkład zewnętrzny
PointerEvent.scrollDelta.yjest teraz odwrócony na Androidzie (zwraca 1 zamiast –1, jeśli przechylimy kółko myszy w prawo) (Ia9811).
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
Publikacja androidx.compose.ui:ui-*:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Wycofano
FontFamily.canLoadSynchronously. Ta właściwość nie ma znaczenia semantycznego. (Ica5ef) - Dodano pole tożsamości do
CompositionData, aby generować niezmienne identyfikatory w Inspektorze układu. (Ic116e) - Dodano identyfikatory urządzeń z Wear OS do listy urządzeń w wersji przedpremierowej (I93232)
Aktualizacje zależności
- Teraz zależy od Kotlina
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
- Rozwiązanie problemu
NullPointerExceptionna stronieandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059, b/206677462) - Naprawiliśmy awarię spowodowaną zawartością schowka podczas odczytywania danych ze schowka na urządzeniu z Androidem. (I06020, b/197769306)
- Poprawiono układ od prawej do lewej w
LazyVerticalGrid(aosp/1931080, b/207510535)
Wersja 1.1.0
9 lutego 2022 r.
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 będą rozszerzać przestrzeń układu, aby spełniać wytyczne dotyczące ułatwień dostępu w Material w zakresie rozmiaru obszaru klikalnego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48x48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu biblioteka Compose Material zachowuje się tak samo jak komponenty Material Design, co zapewnia spójne działanie, jeśli używasz widoków i biblioteki Compose. Ta zmiana zapewnia też, że gdy tworzysz interfejs za pomocą komponentów Compose Material, spełnione są 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 obsługę 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
- Naprawiono błąd, który powodował brak działań przewijania ułatwień dostępu (I7cbfb).
SemanticsNodeInteraction.captureToImage()będzie teraz działać również wtedy, gdyHardwareRenderer.isDrawingEnabled()ma wartośćfalse, poprzez włączenie go 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
1.6.0
Zmiany w interfejsie API
- Usunięto możliwość wartości null w
androidx.core.view(I7078a, b/204917439) - Dodaliśmy 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)
- Dodano obsługę zdarzeń przewijania kółkiem 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) ComposeNotIdleExceptionrozciąga się teraz odExceptionzamiast bezpośrednio odThrowable. Pamiętaj, że oznacza to, że klauzule catch, które wcześniej wyłapywałyException, mogą teraz wyłapywaćComposeNotIdleException, czego wcześniej nie robiły. (I9c217)
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że uchwyty tekstu nie przesuwały się, gdy zmieniała się widoczność 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 docelowego. Dodatkowe zmiany przesunięcia modyfikatora podrzędnego można więc wprowadzać na podstawie zaobserwowanej zmiany miejsca docelowego. (I558fd)
- Usunięto
InjectionScope.flush()iInjectionScope.dispose(). Opróżnianie wszystkich zdarzeń i usuwanie zakresu odbywa się teraz na końcu wywołanej metody perform*Input(), tak jak wcześniej. (I2bed8) - Usunięto
MultiModalInjectionScope.TouchiMultiModalInjectionScope.Mouse. Aby wstrzykiwać zdarzenia dotyku i myszy w przypadku gestów wielomodowych, możesz teraz używać funkcjiMultiModalInjectionScope.touch()iMultiModalInjectionScope.mouse(). Obie akceptują lambdę, która ma zakres odbiorcy tej modalności. (Idde18)
Poprawki błędów
- Wartość domyślna parametru
durationMilliswTouchInjectionScope.swipeWithVelocityjest teraz obliczana tak, aby przesunięcie było możliwe. (I19deb)
Wersja 1.1.0-beta02
3 listopada 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-beta02 Wersja 1.1.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie do rodziców próśb o przewinięcie strony, 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 roku
Publikacja androidx.compose.ui:ui-*:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano eksperymentalny interfejs API
BringIntoView, 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 przejściach. (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ń
ExperimentalComposeUiApiz kontaViewRootForInspectoriLayoutInfo.ownerViewId(I5c2e3) - Dodano przeciążenie bez elementów podrzędnych dla układu, co zwiększa wydajność (Ib0d9a).
- Usunięto
InternalCompilerApiz metod narzędzia Composer, które muszą być wywoływane w różnych modułach (I1aa0b). SemanticsNodeInteraction.performSemanticsActionzwraca terazSemanticsNodeInteraction, na którym wywołano funkcję. (I9e5db)- Dodano LocalInputModeManager CompositionLocal, aby wykrywać tryb dotykowy i niedotykowy. (I6a83c, b/175899786)
- Dodano
viewConfiguration: ViewConfigurationdoLayoutInfoaby umożliwić konsumentom uzyskanie prawidłowej wartości w przypadku takich elementów jak czas oczekiwania na długie naciśnięcie. (I76ca6)- Dodano
viewConfiguration: ViewConfigurationdoInjectionScope, aby umożliwić testom dostosowywanie wstrzykiwania danych wejściowych na podstawie takich czynników jak limit czasu długiego naciśnięcia czy tolerancja dotyku. - Zmieniono domyślny czas trwania długiego naciśnięcia i dwukrotnego kliknięcia w przypadku wprowadzania danych za pomocą dotyku i myszy, aby był oparty na wartościach w
InjectionScope.viewConfiguration.
- Dodano
- 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 właściwość otrzymuje pozycję kliknięcia i granice elementu zakotwiczonego, co zapewnia większą kontrolę nad tym, czy należy wywołać funkcję onDismissRequest. Może to być przydatne np. w zapobieganiu zamykaniu kotwicy w wyniku dotknięcia jej.
- Do klasy PopupProperties dodano funkcję updateAndroidWindowManagerFlags, która umożliwia 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ą końcowe flagi, które zostaną przekazane do menedżera okien Androida. Domyślnie funkcja updateAndroidWindowManagerFlags pozostawia flagi obliczone na podstawie parametrów bez zmian. Tego interfejsu API należy używać ostrożnie, tylko w przypadkach, gdy wyskakujące okienko ma bardzo specyficzne wymagania dotyczące działania. (I6e9f9)
Recomposer.statezostało wycofane i zastąpione przezRecomposer.currentState, aby zmienić jego typ na StateFlow (Ic2ab3, b/197773820).- Dodano użytkowników
flush()idispose()do listyInjectionScope. Używaj ich, gdy chcesz natychmiast wyczyścić wszystkie zdarzenia w kolejce i gdy chcesz odpowiednio usunąć zakres. (Ifb73a) - Dodano
performScrollToNode(matcher: SemanticsMatcher), które przewija kontener z możliwością przewijania do treści pasujących do danego dopasowania. (Ic1cb8) InjectionScopeobsługuje terazDensity, co umożliwia łatwe konwertowanie jednostek px i dp wperformTouchInputi podobnych narzędziach. (I8fe1f)
Poprawki błędów
- Element AndroidView przekazuje teraz elementy LocalLifecycleOwner i LocalSavedStateRegistryOwner do swojego widoku za pomocą elementów ViewTreeLifecycleOwner i ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Naprawienie 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 zatwierdzenia.
Zmiany w interfejsie API
- Dodano obsługę komunikacji między modyfikatorami (Id5467, b/198826874)
- Dodano eksperymentalne wskaźniki historyczne do PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
- Dodano użytkowników
density: DensityilayoutDirection: LayoutDirectiondo listyLayoutInfo. Dzięki temu użytkownicyLayoutInfomogą prawidłowo interpretować wymiary i pozycję udostępniane wLayoutInfo. (I002f1) - Dodaliśmy eksperymentalną obsługę wstrzykiwania zdarzeń myszy. Użyj
performMouseInput, aby zacząć wysyłać zdarzenia myszy, lub wysyłaj zdarzenia myszy za pomocą właściwościMouseobiektuMultiModalInjectionScopepodczas gestu wprowadzania multimodalnego z użyciemperformMultiModalInput. Dokumentację dostępnego interfejsu API znajdziesz wMouseInjectionScope. (Iaa4a8, b/190493367)
Poprawki błędów
- Poprawiono obsługę 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).
- Ulepszono
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
PointerEventma terazPointerEventTypedo obsługi zdarzeń najechania kursorem. (I091fa)- Zezwalaj dzieciom na akceptowanie danych wejściowych wskaźnika poza granicami danych wejściowych wskaźnika rodzica. Rodzice mogą przechwytywać te wywołania za pomocą właściwości PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655).
- Wycofano funkcje
performGestureiGestureScope, które zostały zastąpione przezperformTouchInputiTouchInjectionScope. (Ia5f3f, b/190493367) - Dodano
touchBoundsInRootdoSemanticsNode, które zawiera minimalny rozmiar docelowego elementu dotykowego, aby deweloperzy mogli mieć pewność, że docelowe elementy dotykowe spełniają minimalne wymagania dotyczące ułatwień dostępu. (I2e14b, b/197751214) - Ponowne wdrożenie funkcji inspectable (I927bc, b/191017532)
- Zmiana nazwy parametru elementu podlegającego inspekcji na nazwę parametru elementu złożonego (I3a482, b/191017532)
Wprowadziliśmy
performTouchInputiTouchInjectionScopejako zamiennikiperformTouchInputiTouchInjectionScope, co otwiera drogę do innych metod (np. myszy).TouchInjectionScopema te same metody coGestureScope, z wyjątkiemmovePointerToimovePointerBy, które zostały zmienione naupdatePointerToiupdatePointerBy. Wszystkie inne metody są takie same.Działanie funkcji
TouchInjectionScopejest niemal identyczne z działaniem funkcjiGestureScope, z dwoma drobnymi różnicami:- Gdy wysyłane jest zdarzenie down, a wskaźniki zostały przesunięte bez wysłania zdarzenia move (czyli użyto
updatePointerTo(), ale niemove(), a potem wywołanodown()), poprzednia implementacja przesuwała czas zdarzenia i wysyłała zdarzenie move przed wysłaniem zdarzenia down. Nowa implementacja nadal wysyła zdarzenie move, ale w tym konkretnym scenariuszu nie przesuwa czasu zdarzenia. - Gdy wysyłano 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 pozycje wskaźników będą odzwierciedlane tylko w zdarzeniu up.
Na koniec
TouchInjectionScopewprowadza nową metodęcurrentPosition(pointerId: Int)pobierania bieżącej pozycji danego wskaźnika. (If1191, b/190493367)- Gdy wysyłane jest zdarzenie down, a wskaźniki zostały przesunięte bez wysłania zdarzenia move (czyli użyto
Poprawki błędów
- Zezwalaj na rozszerzanie granic docelowego obszaru kliknięcia poza region przycinania na potrzeby minimalnego docelowego obszaru kliknięcia. (I43e10, b/171509422)
- 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 Compose
1.1.0-alpha03, aby zależał od Kotlin1.5.30. (I74545)
Zmiany w interfejsie API
- Dodano
Modifier.inspectabledo opakowywania innych modyfikatorów. (I1909b, b/191017532) - Dodano
BlurredEdgeTreatmentAPI, aby uprościć przypadki użycia rozmycia do bardziej powszechnych kombinacji flag klipu i trybów TileMode. 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. Wprowadzono OffsetEffect oraz modyfikator rozmycia jako prosty sposób na dodanie efektów wizualnych rozmycia do części hierarchii kompozycji. (I0f6aa, b/166927547)
- Wprowadzono interfejs RenderEffect API, który można opcjonalnie skonfigurować w
Modifier.graphicsLayer, aby zmienić zawartość samej warstwy. Można go używać do rozmywania treści funkcji kompozycyjnej i jej funkcji kompozycyjnych podrzędnych w hierarchii kompozycji. (I47c4d, b/166927547) - AwaitPointerEventScope ma teraz funkcje withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
- Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (Ie861c)
- Dodano obsługę TileMode.Decal, która jest przydatna do definiowania zachowania krawędzi w przypadku efektów renderowania opartych na rozmyciu. (I7e8ed, b/166927547)
performScrollToIndex,performScrollToKey,hasScrollToIndexActionihasScrollToKeyActionto teraz stabilne interfejsy API (I142ae, b/178483889).- Dodano metodę testową, aby uzyskać przycięte granice. (I6b28e)
Poprawki błędów
- Usunięto metodę isBounded z klasy BlurredEdgeTreatment i zastąpiono ją jawnym sprawdzaniem, czy parametr kształtu ma wartość null. (I85d68)
Wersja 1.1.0-alpha02
18 sierpnia 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Interfejs PointerEvent obsługuje teraz odczytywanie stanu przycisku myszy i stanu modyfikatora klawiatury. (I6310c, b/180075467)
- Wstrzykiwane gesty używają teraz czasu MainTestClock jako źródła informacji o czasie. Bieżący czas wstrzykiwanych zdarzeń w
performGesturezostanie zainicjowany bieżącym czasem 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 ColorStateList jako właściwości odcienia koloru głównego w przypadku obiektów VectorDrawable. (I86915, b/195668138)
Wersja 1.1.0-alpha01
4 sierpnia 2021 r.
Publikacja androidx.compose.ui:ui-*:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
RelocationRequester.bringIntoViewakceptuje teraz prostokąt jako parametr, co umożliwia wyświetlanie części komponentu (Ice2c5, b/194330245).AnimatedImageVectori powiązane interfejsy API znajdują się teraz w nowym moduleandroidx.compose.animation:animation-graphics. (I60873)- Dodano eksperymentalny modyfikator do obsługi próśb o przeniesienie. (I65a97, b/178211874)
Wprowadzono 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, o który wysyłane jest zapytanie w klasie BrushPainter (Ia2752, b/189466433).
Zaktualizowana metoda DrawScope#drawImage, która przyjmuje prostokąty źródłowe i docelowe, aby przyjmować opcjonalny parametr FilterQuality. Jest to przydatne w przypadku grafiki pikselowej, która ma być pikselowana po powiększeniu. Zaktualizowano funkcję kompozycyjną BitmapPainter + Image, aby przyjmowała też opcjonalny parametr FilterQuality (Ie4fb0, b/180311607)
Dodano metodę
GestureScope.advanceEventTime, aby zapewnić 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 Modifier.paint miał być węzłem liścia w łańcuchu modyfikatorów, ale uniemożliwiało to jego skonfigurowanie w komponowalnym kontenerze (np. w ramce) lub dodanie do niego 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 dopasowywane do rozmiaru platformy. Aby zastąpić to działanie, ustaw wartość
usePlatformDefaultWidthna false. (Iffaed, b/192682388) - Przeniesiono
InfiniteAnimationPolicydo :compose:ui (I5eb09, b/160602714) - Przewijanie za pomocą działań semantycznych w przypadku list leniwych i zwykłych komponentów przewijania jest teraz animowane (Id9066, b/190742024).
Wersja 1.0
Wersja 1.0.5
3 listopada 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.5 Wersja 1.0.5 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy 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 Kotlin
1.5.31
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 Kotlin
1.5.30
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, aby zależał od Kotlina w wersji
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 wersji Compose.
Znane problemy
Jeśli używasz Android Studio Bumblebee Canary 4 lub AGP
7.1.0-alpha04/7.1.0-alpha05, może wystąpić ten błąd:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"Aby to naprawić, tymczasowo zwiększ wartość minSdkVersion do 24 lub wyższej w pliku
build.gradle. Ten problem zostanie rozwiązany w kolejnej wersji Androida Studio Bumblebee i wtyczki AGP7.1. (b/194289155)
Wersja 1.0.0-rc02
14 lipca 2021 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-rc02 Wersja 1.0.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Okna dialogowe są teraz dopasowywane do rozmiaru platformy. Aby zastąpić to działanie, ustaw wartość
usePlatformDefaultWidthna false. (Iffaed, b/192682388)
Wersja 1.0.0-rc01
1 lipca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-rc01 Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Podziel moduł ui-tooling na
ui-toolingiui-tooling-preview(Iefa28, b/190649014)
Zmiany w interfejsie API
- Usunięto wycofane eksperymentalne interfejsy
FocusManager#moveFocusIniFocusManager#moveFocusOut(I227d7, b/170154986, b/186567354, b/168510304) - Canvas obsługuje teraz parametr contentDescription na potrzeby ułatwień dostępu. (Ib547c)
- Nazwa elementu
useDefaultMaxWidthwPopupPropertieszostała zmieniona nausePlatformDefaultWidth. (I05710) - Okna dialogowe mogą teraz korzystać z całej szerokości ekranu. (I83929, b/190810877)
- Dodaliśmy eksperymentalną obsługę reprezentacji kolorów HSV i HSL. (Id7cf8, b/180731008)
Zmiany w zachowaniu
- Compose
@Previewudostępnia terazLocalActivityResultRegistryOwner, który umożliwia wyświetlanie podglądu funkcji kompozycyjnych korzystających z interfejsów API, takich jakrememberLauncherForActivityResult(), które zależą od istnienia tego właściciela. (Ib13d1, b/185693006) - Compose
@Previewudostępnia terazLocalOnBackPressedDispatcherOwner, który umożliwia wyświetlanie podglądu funkcji kompozycyjnych korzystających z interfejsów API, takich jakBackHandler, które wymagają istnienia tego właściciela. (Ia1c05, b/185693006)
Poprawki błędów
- Przeniesiono
InfiniteAnimationPolicydoandroidx.compose.ui:ui(I5eb09, b/160602714) - Klasa AnimatedImageVector została tymczasowo usunięta w celu zmiany struktury modułu. (I41906, b/160602714)
Wersja 1.0.0-beta09
16 czerwca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta09 Wersja 1.0.0-beta09 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmiana typów wyliczeniowych Role i LiveRegionMode na klasy wbudowane z prywatnym konstruktorem (Id1890)
- KeyboardCapitalization jest przekształcana w klasę wbudowaną. (Id5a1c)
- Zmiana HapticFeedbackType na klasę wbudowaną. (I255ec)
- Modifier.pointerInteropFilter jest oznaczony jako @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ć prywatne stałe przed jego ustabilizowaniem. (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ępne losowanie (czyli nastąpi zakleszczenie). - Nie ma załadowanej czcionki, więc każdy tekst będzie mierzony nieprawidłowo. Wszystkie znaki mają stałą wysokość około 20 pikseli i szerokość 1 piksela.
ComposeTestRule.waitUntil {}nie uruchamia wątku głównego podczas oczekiwania, co sprawia, że jest on w zasadzie taki sam jakComposeTestRule.mainClock.advanceTimeUntil {}W przyszłości mogą zostać zidentyfikowane kolejne ograniczenia. (I284fa)
- Nie ma natywnej mapy bitowej, więc
Dodane reguły profilu
W tej wersji dodaliśmy reguły profilu do tych modułów kompozycji (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Czym są reguły profilu?
Reguły profilu dla biblioteki są określone w pliku tekstowym
baseline-prof.txtznajdującym się w katalogusrc/mainlub w odpowiednim katalogu. Plik zawiera regułę w każdym wierszu. W tym przypadku reguła jest wzorcem dopasowywanym do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART czytelnego dla człowieka, który jest używany podczas korzystania zadb shell profman --dump-classes-and-methods .... Reguły te przyjmują jedną z 2 form, aby kierować reklamy na metody lub klasy.Reguła metody będzie mieć ten wzorzec:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>Reguła klasy będzie miała następujący wzorzec:
<CLASS_DESCRIPTOR>W tym przypadku
<FLAGS>to co najmniej jeden z tych znaków:H,SiP. Wskazuje on, czy ta metoda powinna być oznaczona jako „Hot”, „Startup” lub „Post Startup”.<CLASS_DESCRIPTOR>to deskryptor klasy, do której należy kierowana metoda. Na przykład klasaandroidx.compose.runtime.SlotTablebędzie miała deskryptorLandroidx/compose/runtime/SlotTable;.Symbol
<METHOD_SIGNATURE>to sygnatura metody, która zawiera jej nazwę, typy parametrów i typy zwracanych wartości. Na przykład metodafun isPlaced(): BooleanwLayoutNodema sygnaturęisPlaced()Z.Wzorce mogą zawierać symbole wieloznaczne (
**,*i?), dzięki czemu jedna reguła może obejmować wiele metod lub klas.
Do czego służą reguły?
Metoda z flagą
Hjest „gorącą” metodą i powinna być skompilowana z wyprzedzeniem.Metoda oznaczona flagą
Sjest wywoływana podczas uruchamiania i powinna być skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretacji w momencie uruchamiania.Metoda oznaczona flagą
Pjest wywoływana po uruchomieniu.Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona w stercie, aby uniknąć kosztów ładowania klasy.
Jak to działa?
- Biblioteki mogą definiować te reguły, które będą pakowane w artefakty AAR. Gdy aplikacja zawierająca te artefakty zostanie skompilowana, reguły zostaną połączone, a połączone reguły zostaną użyte do utworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie wykorzystać ten profil podczas instalowania aplikacji na urządzeniach, aby skompilować z wyprzedzeniem określony podzbiór aplikacji i zwiększyć jej wydajność, zwłaszcza podczas pierwszego uruchomienia. Nie będzie to miało wpływu na aplikacje, które można debugować.
Wersja 1.0.0-beta08
2 czerwca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta08 Wersja 1.0.0-beta08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wyliczenie
NestedScrollSourcezostało zastąpione klasą wbudowaną. (Ie321b, b/187055290) - Nazwa
FocusManager.clearFocus(forcedClear = true)została zmieniona naFocusManager.clearFocus(force = true)(Ia0c41) - Zmieniono sposób używania wyliczeń na klasy wbudowane, aby uniknąć problemów z wyczerpującymi instrukcjami „when” po dodaniu nowych wartości wyliczenia. (I2b5eb)
- Usuń urządzenie
@ExperimentalComposeUiApiz kontaPopupProperties. (I01fa6) - Wartość pola „
PointerType” została zmieniona 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 scalić w takiej postaci, w jakiej są, zamiast je łączyć. Udostępniliśmy też lepsze interfejsy API do testowania, które umożliwiają korzystanie z tych zmian (Ica6bf, b/184825850).
- Środowisko wykonawcze
Modifier.focusModifier()zostało wycofane i zastąpione środowiskiemModifier.focusTarget()(I6c860). Modifier.onSizeChanged()iModifier.onGloballyPositioned()nie są już funkcjami wbudowanymi (I727f6, b/186109675).- Wyliczenie
KeyboardTypezostało zastąpione klasą wbudowaną. (I73045, b/187055290) - Zastąpiono wyliczenie
FocusStateinterfejsemFocusState(Iccc1a, b/187055290). - Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
PlaceholderVerticalAlignjest przekształcana w klasę w tekście. (If6290)- TextUnitType to teraz klasa wbudowana. (I4cba9)
AnnotatedString.withAnnotationsą teraz funkcjami ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a)- Konstruktor TextUnit z TextUnitType jest teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
Poprawki błędów
- Usunęliśmy błąd wprowadzony w wersji beta07, który powodował, że elementy LazyColumn/Row były wyświetlane częściowo po przewinięciu (I8c9ac, b/188566058).
- Teraz
detectDragGesures,detectVerticalGesturesidetectHorizontalGesturesbędą automatycznie wykorzystywać zmianę pozycji, więc nie musisz 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. Usunęliśmy błąd, który powodował, że wymiary elementu nadrzędnego nie były ponownie mierzone, gdy zmieniały się linie wyrównania elementów podrzędnych. (I4401f, b/174315652)
Modifier.onGloballyPositioned()została zmieniona, aby raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że kolejność modyfikatorów wpływa teraz na to, jakie współrzędne będą raportowane. (Ieb67d, b/177926591)
Wersja 1.0.0-beta07
18 maja 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta07 Wersja 1.0.0-beta07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano interfejs
ViewRootForInspectordo użycia w inspektorze (Ib70df) SubcomposeLayoutStateobsługuje teraz ustawianie liczby gniazd wielokrotnego użytku. Układ będzie utrzymywać aktywność maksymalnie tylu slotów, zamiast je usuwać, aby można było ich użyć ponownie, gdy będziemy potrzebować nowego (Ieb981).- Wyliczenie KeyEventType zostało zastąpione klasą wbudowaną. (Id670a, b/187055290)
- Wyliczenie
FocusDirectionzostało zastąpione 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 etap pomiaru, ponieważ gdy następnym razem spróbujemy skomponować podrzędnie z danym slotId, nie będzie już potrzebna kompozycja. (I42580, b/184940225)
- Dodano uchwyt zaznaczenia klipu (Iff80d, b/183408447)
- Usunięto nieużywane interfejsy API związane z obsługą narzędzia LayoutInspector. (I2ac78)
Poprawki błędów
- Komponenty LazyColumn i LazyRow będą teraz utrzymywać do 2 wcześniej widocznych elementów w stanie aktywnym (nieusuniętym), 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)
TextGeomerticTransformiTextDecorationnaAnnotatedStringzostaną zastosowane zgodnie z podanymi wartościami. (I61900, b/184760917)
Wersja 1.0.0-beta06
5 maja 2021 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-beta06 Wersja 1.0.0-beta06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozwiązywanie konfliktów z gestem nawigacji (I1145e)
@ComposeCompilerApinie jest już@RequiresOptIn(Iab690)- Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i jej elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
- Dodano
SemanticsActions.ScrollToIndex, aby przewijać listę z elementami indeksowanymi do elementu o określonym indeksie, orazSemanticsProperties.IndexForKey, aby uzyskać indeks elementu na liście z elementami kluczowymi. Oba działania są realizowane przez LazyList.- Dodano funkcję
SemanticsNodeInteraction.performScrollToIndex, która przewija listę do podanego indeksu, oraz funkcjęSemanticsNodeInteraction.performScrollToKey, która przewija listę do elementu z podanym kluczem. (I4fe63, b/178483889, b/161584524)
- Dodano funkcję
- Dodano element ownerViewId do elementu GraphicLayerInfo (I19f62)
- Dodano przeciążenia Font() do wczytywania czcionek z zasobów, plików i deskryptorów plików (I5d382).
- Dodano interfejs API ułatwień dostępu
error, który umożliwia oznaczanie węzła zawierającego nieprawidłowe dane wejściowe (I12997, b/180584804, b/182142737). - Dodano
Font()przeciążeń do wczytywania czcionek z zasobów, plików i deskryptorów plików (I43007). - Dodaliśmy obsługę zapisywania elementu AnnotatedString w
TextFieldValue.Saver. Dodano funkcje narzędzioweaddTtsAnnotationi withAnnotation doAnnotatedString.Builder(I8cbdc, b/178446304) - Dodano funkcję konstruktora TextUnit
TextUnit(value: Float, type: TextUnitType)(I7ecce, b/178446304)
Wersja 1.0.0-beta05
21 kwietnia 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta05 Wersja 1.0.0-beta05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano eksperymentalne funkcje
FocusManager.moveFocus(In)iFocusManager.moveFocus(Out)(Ic5534, b/183746743) - Dodano eksperymentalny interfejs
performTextInputSelectionAPI (I2dcbb, b/178510628) - Interfejs
InputEventCallbackzostał wycofany. Nie można było używać interfejsu w żadnym publicznym interfejsie API, a w kodzie nie było żadnego jego użycia. (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:
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRightiaccessibilityActionScrollDown. Zamiast przewijać do końca obszaru przewijanego, 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
hideSoftwareKeyboardishowSoftwareKeyboardnaSoftwareKeyboardControllernahide()ishow().- Udostępnia pełny interfejs CompositionLocal dla LocalSoftwareKeyboardController, co umożliwia jego ustawienie (szczególnie przydatne w testach) (I579a6).
- Dodano interfejs API ułatwień dostępu LiveRegion. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadomią użytkownika o jego zmianach (Idcf6f, b/172590946).
- Wprowadzono TextOverflow.Visible. (Ic8f89)
Poprawki błędów
- Rozwiązaliśmy problem z nieprawidłowym pozycjonowaniem elementów
LazyColumn/LazyRowznajdujących się na krawędziach po szybkim przesunięciu (Ie4d13, b/183877420). AndroidViewBindingprawidłowo usuwa fragmenty rozszerzone za pomocąFragmentContainerView, gdyAndroidViewBindingjest usuwany z hierarchii kompozycji. (Ib0248, b/179915946)AndroidViewBindingprawidłowo zagnieżdża fragmenty rozszerzone za pomocąFragmentContainerView, gdyComposeViewznajduje się wFragment. Rozwiązuje to problemy z zapisywaniem i przywracaniem stanu tych fragmentów. (I70eb0, b/179915946)- Compose ViewBinding zależy teraz od Fragment
1.3.2i po zmianach konfiguracji konsekwentnie wyświetla fragmenty utworzone za pomocąFragmentContainerView. (I0743d, b/179915946)
Wersja 1.0.0-beta03
24 marca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta03 Wersja 1.0.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Odroczone sprawdzanie zależności ViewTree w przypadku ComposeView (I8dbbf, b/182466548)
- Dodaliśmy opcjonalne parametry
startX/endXistartY/endYdo funkcjiswipeUp/swipeDown/swipeLeft/swipeRightwGestureScope. (I49e2d, b/182063305)
Wersja 1.0.0-beta02
10 marca 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano nowy interfejs API
LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I5951e, b/168778053) - Dodano nowy interfejs API
LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I84472, b/168778053) - Usunięto te
SemanticsMatcher:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(If16bd)
- Oznaczono
SemanticsMatchersjako @ExperimentalTestApi:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(Ia600c)
- Dodaliśmy te
SemanticsMatcher:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(I2f502)
Poprawki błędów
- Wymuszanie ograniczeń dotyczących publicznego używania eksperymentalnych interfejsów API (I6aa29, b/174531520)
androidx.compose.ui:uinie zależy już od AppCompat ani Fragment. Jeśli w aplikacji używasz elementu ComposeView oraz komponentów Fragment lub AppCompat, upewnij się, że korzystasz z wersji AppCompat 1.3 lub nowszej albo Fragment 1.3 lub nowszej. Te wersje są potrzebne do prawidłowego ustawienia właścicieli cyklu życia i zapisanego stanu wymaganych w przypadku elementu ComposeView. (I1d6fa, b/161814404)- Poprawka uszkodzonego elementu
rememberSaveable { mutableStateOf(0) }, gdy jest używany w miejscu docelowym navigation-compose. (I1312b, b/180042685, b/180701630) - Dodano nowy interfejs API
LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I658b6, b/168778053) - Rozwiązano rzadki problem NoSuchElementException w
ComposeRootRegistrytearDownRegistry()(Iddce1)
Wersja 1.0.0-beta01
24 lutego 2021 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zatwierdzenia.
To pierwsza wersja beta Compose 1.0.0.
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)
- Bloki pomiarowe zostały przekształcone w zasady pomiaru, które stały się zabawnym interfejsem. Interfejsy API układu zostały zaktualizowane i uproszczone, aby korzystać z funkcji MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionStatezostało zastąpione przez[Mutable]InteractionSource- Interfejsy odpowiadają za wysyłanie i zbieranie zdarzeń interakcji.
- Zamiast przekazywać wartość
interactionState = remember { InteractionState() }do komponentów takich jakButtoniModifier.clickable(), użyj wartościinteractionSource = remember { MutableInteractionSource() }. - Zamiast:
Interaction.Pressed in interactionStateużywaj funkcji rozszerzających w klasie InteractionSource, np. InteractionSource.collectIsPressedAsState(). - W przypadku złożonych przypadków użycia możesz użyć InteractionSource.interactions, aby obserwować strumień interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Dodanie interfejsu AccessibilityMananger i LocalAccessibilityMananger do CompositionLocals (I53520)
- Usunięto przestarzałe metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent używaj funkcji (I580ed, b/169874631, b/175142755)
- Alias typu zastąpiony typami bazowymi:
ColorStopto terazPair<Float, Color>SpanStyleRangeto teraz `AnnotatedString.RangeParagraphStyleRangeto terazAnnotatedString.Range<ParagraphStyle>StringAnnotationto terazAnnotatedString.Range<String>- (I8dd1a)
- Utworzono nową klasę TextInputSession dla sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, takich jak CoreTextField. (I8817f, b/177662148)
- Komponent Placeable udostępnia teraz właściwość measuredSize, która reprezentuje rozmiar, do którego został zmierzony układ podrzędny. Ten rozmiar może nie spełniać ograniczeń pomiarowych. (Ib2729, b/172560206, b/172338608)
- Dodaj modyfikator selectionGroup, który umożliwia oznaczanie kolekcji kart lub przycisków opcji na potrzeby ułatwień dostępu (Ie5c29).
defaultFactoryw przypadkucompositionLocalOfistaticCompositionLocalOfjest teraz wymagane 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 referencja null.
W przypadku typów dopuszczających wartość null rozważ podanie wartości
{ null }jako domyślnej funkcji fabrycznej.Nie zalecamy używania zmiennych lokalnych z typami, które nie dopuszczają wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie ma sensownej wartości domyślnej, funkcja lambda
defaultFactorypowinna zgłosić wyjątek. Wyjątek oznacza jednak, że konsumenci lokalnego będą mieli niejawną zależność od jego dostarczenia, która nie jest wymuszana przez system typów. (Ifbd2a)Usunęliśmy wycofane metody z modułów interfejsu (I646f6).
Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmieniono nazwy elementów Modifier.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwy modyfikatorów Modifier.preferredWidth/preferredHeight/preferredSize na width/height/size. (I5b414)
Modifier.tapGestureFilterzostał(a) usunięty(a). Zamiast niej używaj zasadyModifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)częściowe wykorzystanie zostało usunięte z systemu wprowadzania za pomocą wskaźnika. Zalecanym sposobem koordynowania częściowego zużycia jest Modifier.nestedScroll. (Ie9c9b)
Orientacja została przeniesiona do pakietu podstawowego. Klasa VelocirtTracker została przeniesiona z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)
imageResource i vectorResource są teraz funkcjami rozszerzającymi odpowiednio elementy ImageBitmap i ImageVector. Usunięto
load{Image,Vector,Font}Resourcefunkcji. (I89130)Klasy AnimationClockObservable i jej podklasy zostały usunięte. Klasa AnimatedFloat została usunięta. (Icde52, b/177457083)
Element Providers został zmieniony na CompositionLocalProvider
- Konstruktor Composition nie akceptuje już parametru key i został wycofany.
- currentCompositeKeyHash został przekształcony w właściwość najwyższego poziomu typu „composable”, a nie w funkcję najwyższego poziomu typu „composable”.
- Klasy CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- Typ ComposableLambda został zmieniony z klasy konkretnej na interfejs i nie ma już parametrów typu.
- ComposableLambdaN stał się interfejsem zamiast 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ż potrzebny.
- Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
- Funkcja Composer.collectKeySourceInformation została usunięta. Nie jest już potrzebny.
- Usunęliśmy metody isJoinedKey, joinedKeyLeft i joinedKeyRight. Nie są już potrzebne.
- Różne interfejsy API najwyższego poziomu zostały przeniesione i zreorganizowane w różnych plikach. Ze względu na semantykę klasy plików w języku Kotlin spowoduje to przerwanie zgodności binarnej, ale nie zgodności kodu źródłowego, więc nie powinno stanowić problemu dla większości użytkowników.
- (I99b7d, b/177245490)
ComponentActivity.setContent()zostało usunięte z biblioteki compose:ui. Użyj tego zandroidx.activity:activity-compose:1.3.0-alpha01. Z biblioteki compose:ui usunięto funkcjeviewModel()iLocalViewModelStoreOwner. Użyj tych zandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01(I6f36b)Zmodyfikowano element Modifier.scrollable. Teraz zamiast klasy ScrollableController używa interfejsu Scrollable (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 funkcji 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 asercje dp (I798d2)
Usunięto androidx.compose.runtime:runtime-dispatch (I55feb)
Działania związane z tekstem automatycznie sprawdzają teraz ostrość (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. Wkrótce zostanie ono zastąpione nowym interfejsem API. (Iae869, b/168778053)
Klasy FontSpan i FontWeigthStyleSpan nie są już używane i zostały usunięte. (Ie5b56, b/177423444)
Wprowadziliśmy te zmiany w interfejsie Material API:
- Dodano parametr contentPadding do komponentów TopAppBar i BottomAppBar, aby umożliwić dostosowywanie domyślnego dopełnienia.
- Zmieniono kolejność parametrów w komponencie BackdropScaffold, aby była zgodna z wytycznymi interfejsu API, zgodnie z którymi parametry wymagane powinny występować przed parametrami opcjonalnymi.
- Parametr
iconw elemencie BottomNavigationItem został przeniesiony i jest teraz po parametrachselectedionClick. - Zmieniono nazwę parametru
alwaysShowLabelsw elemencie BottomNavigationItem naalwaysShowLabel. - W kilku komponentach zmieniliśmy nazwy parametrów
bodyContentnacontent. - Zmieniono kolejność parametrów w zdarzeniu
ButtonDefaults.buttonColors(). Pamiętaj, że typ parametrów nie uległ zmianie, więc nie spowoduje to błędu w kodzie. Upewnij się, że używasz nazwanych parametrów lub ręcznie zaktualizuj kolejność, w przeciwnym razie kod nie będzie działać tak jak wcześniej. - Dodano parametr
secondaryVariantdodarkColors(). Ten kolor jest zwykle taki sam jaksecondaryw ciemnym motywie, ale dodajemy go, aby zapewnić spójność i umożliwić dalsze dostosowywanie. - Usunęliśmy z publicznego interfejsu API funkcje ElevationDefaults i animateElevation(), ponieważ nie były one powszechnie używane ani przydatne.
- Zmieniliśmy nazwę pola
onValueChangeEndwSlidernaonValueChangeFinishedi uczyniliśmy je dopuszczającym wartość null. - Zmieniliśmy nazwę parametru
textwSnackbarnacontent, aby zachować spójność. - Dodano parametr
contentPaddingdoDropdownMenuItem, aby umożliwić dostosowywanie domyślnego dopełnienia, i sprawiono, żecontentjest rozszerzeniemRowScope. - Zmieniono nazwę
ModalDrawerLayoutnaModalDrawer. - Zmieniono nazwę
BottomDrawerLayoutnaBottomDrawer. - (I1cc66)
Poprawki błędów
- Dodano interfejs API do używania zasobów AnimatedVectorDrawable w Compose. Użyj
animatedVectorResource, aby wczytać plik
<animated-vector>XML jako AnimatedImageVector i animować go za pomocą funkcji painterFor (I8ea91). - Dodano nowy lokalny interfejs API LocalSoftwareKeyboardController do zastąpienia poprzedniego interfejsu SoftwareKeyboardController w polu tekstowym. (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. Usunięto wycofane funkcje emitView. (Ifb214)
- Funkcja Modifier.pointerInput wymaga teraz kluczy pamięci, aby wskazywać, kiedy korutyna wykrywania danych wejściowych wskaźnika powinna zostać ponownie uruchomiona w przypadku nowych zależności. (I849cd)
- Zmiana nazwy CompositionReference na CompositionContext (I53fcb)
- Bounds zmieniono 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 dopuszczające wartość 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 podłańcucha z podłańcuchem jako argumentem (Icbe78)
- Dodano
Modifier.focusOrder(), który akceptuje FocusRequester bez określania niestandardowej kolejności fokusu w przypadku lambdy. Jest to przydatne, gdy musimy tylko określić odniesienie, ale nie niestandardową kolejność fokusu dla komponentu (I4f52a, b/179180978). - Funkcja 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 klasy AndroidPopupProperties została zmieniona na PopupProperties, a
isFocusablezostało przeniesione do parametrufocusablewPopupProperties(Ieeea5). - Przeniesiono okno dialogowe, aby było specyficzne dla platformy. Nazwa AndroidDialogProperties została zmieniona 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)
- Funkcja 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).
- Udostępniono wewnętrznie klasy OwnerLayer, OwnerScope i OwnerSnapshotObserver (I4ffaf, b/175103944)
- Funkcja toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)
- Zmieniliśmy nazwę klasy 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. Zamiast niej używaj zasady
Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć modyfikatora Modifier.draggable do przeciągania w jednej osi (I0ba93, b/175294473). - Zmieniliśmy nazwę Ambients, aby pasowała do zmiany nazwy Ambient -> CompositionLocal. Komponenty Ambients miały wcześniej nazwy AmbientFoo, a teraz komponenty CompositionLocals mają nazwy LocalFoo. (I2d55d)
- Wycofane pole BaseTextField zostało usunięte. Zamiast tego użyj BasicTextField. (I71368)
- Zaznaczenie zostało przeniesione do warstwy podstawowej. (I7892b)
- Podobnie jak wcześniej usunęliśmy funkcję
state { 0 }i teraz promujemy używanie funkcjiremember { mutableStateOf(0) }, usuniemy funkcjęsavedInstanceState { 0 }. Zamiast tego użyjrememberSaveable { mutableStateOf(0) }. Jeśli typ użyty w MutableState można zapisać w pakiecie, funkcja ta automatycznie zapisze i przywróci stan. Jeśli wcześniej przekazywano niestandardowy obiekt zapisujący, teraz trzeba użyć nowego przeciążenia funkcji rememberSaveable, które ma parametrstateSaver. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004) - Dodano semantykę haseł na potrzeby ułatwień dostępu (I231ce)
- Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczać nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05)
- Narzędzia
emptyContent()i(@Composable () -> Unit).orEmpty()zostały wycofane, ponieważ nie mają już pozytywnego wpływu na skuteczność ani wartość (I0484d). snapshotFlowiwithMutableSnapshotnie są już eksperymentalne (I6a45f)- Recomposery można teraz zamknąć. Zamknięte kompozytory będą kontynuować rekompozycję, 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)
- Klasa UiSavedStateRegistry została zmieniona na SaveableStateRegistry, a klasa AmbientUiSavedStateRegistry na AmbientSaveableStateRegistry. Obie 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 element
view.captureToImage()bez zastąpienia go innym. (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 metody createOutline klasy Shape. Umożliwia to tworzenie kształtów uwzględniających kierunek układu. (I57c20, b/152756983)
- 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 projekcieComposeTestRule. (I50ec4, b/151940543) - Właściwość canDrag została usunięta z modyfikatora scrollable. (Id66e7, b/175294473)
- Zmieniliśmy nazwę LayoutCoordinates.parentCoordinates na LayoutCoordinates.parentLayoutCoordinates, aby umożliwić dodanie nowej właściwości parentCoordinates. Właściwość parentCoordinates oferuje teraz LayoutCoordintes modyfikatora nadrzędnego. Umożliwi to pełniejsze wykorzystanie funkcji onSizeChanged() i onGloballyPositioned() (Idfbfd, b/177926591).
- Filtry tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)
- Usunięto metodę unregisterProvider z klasy SaveableStateRegistry. Zamiast tego funkcja registerProvider() zwraca teraz obiekt SaveableStateRegistry.Entry, którego możesz 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 wycofane 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 teraz leniwie, w zakresie okna, Recomposery sterowane przez ViewTreeLifecycleOwner dla okna. Ponowne komponowanie i tyknięcia 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 trwającej kompozycji w procesie. Zalecamy używanie tego interfejsu API zamiast Recomposer.current(), który jest obecnie wycofany. (If8ebe)
- Funkcje Saver, listSaver(), mapSaver(), autoSaver zostały przeniesione z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6)
- EditCommands akceptuje AnnotatedString. Jest to jednak zmiana tylko w interfejsie API, a edytowanie tekstu w wielu stylach nie zostało jeszcze wdrożone. (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 obsługiwać automatyczne odbijanie kształtu w kierunku od prawej do lewej. Kształty AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone w przypadkach, gdy automatyczne dublowanie nie jest pożądane. (I61040, b/152756983)
Interfejs API, na który jest ukierunkowana 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).
- Zaktualizowano interfejs API compose's imageFromResource, aby podczas wczytywania obiektów ImageBitmap ponownie wykorzystywać pamięć podręczną zasobu rysowalnego. (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 niego użyj Key.DirectionUp. (Iab335, b/177954892)
- Interfejs właściciela będzie od teraz wewnętrzny. (If8e35)
- Dodano interfejs API FocusManager.moveFocus(), który umożliwia programowe przenoszenie 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 zmiana windowGlobalBounds na windowSize: IntSize (I2994a)
- Wartości Duration i Uptime zostaną zastąpione wartością Long milliseconds, a ten krok usuwa zależność danych wejściowych wskaźnika od tych klas. (Ia33b2, b/175142755, b/177420019)
- Dodano AmbientSavedStateRegistryOwner podobnie jak istniejące już AmbientLifecycleOwner i AmbientViewModelStoreOwner (I9a3e8, b/176756365).
- Zaktualizowano interfejs API grafiki wektorowej, 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)
- Wycofano metody globalnych współrzędnych i wprowadzono nowe metody współrzędnych oparte na oknach. (Iee284)
- Dodano Modifier.toolingGraphicsLayer, który dodaje modyfikator warstwy graficznej, gdy włączone jest sprawdzanie. (I315df)
- Funkcja FocusRequester.createRefs została oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)
- Właściwość SemanticsPropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Zmieniliśmy nazwę AccessibilityRangeInfo na ProgressBarRangeInfo. stateDescriptionRange zmieniliśmy na progressBarRangeInfo. Zmieniliśmy nazwę AccessibilityScrollState na ScrollAxisRange. Zmieniliśmy nazwę horizontalAccessibilityScrollState na horizontalScrollAxisRange. Zmieniliśmy nazwę verticalAccessibilityScrollState na verticalScrollAxisRange. (Id3148)
- Usunięto PointerInputData i zmodyfikowano PointerInputChange, aby zawierał wszystkie pola PointerInputData. Uczyniliśmy klasy PointerInputEvent i PointerInputEventData wewnętrznymi, ponieważ nie są one używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
- Zaktualizowano implementację GraphicsLayerScope density, aby obsługiwała konwersję jednostek dp na piksele. (Ied528, b/176819695)
- Zaktualizowano interfejs API macierzy, aby stosować kolejność wierszową i udostępniać stałe indeksy, 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 String.fintPrecedingBreak i String.fingFollowingBreak do InternalTextApi. (I657c4)
- Funkcja androidx.compose.ui.util.isSurrogatePair została usunięta z publicznego interfejsu API. (Ia9494)
- Nazwa TransformedText.transformedText została zmieniona na TransformedText.text
- TransformedText nie jest już klasą danych (Ie672a)
- Usunięto
data classz tych zajęć:- InlineTextContent
- LocaleList (I605c7)
- Te klasy nie są już klasami danych:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- Grubość czcionki
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- Zmiana interfejsu VisualTransformation na interfejs funkcyjny (I3bba4)
- Dodano typ parametru odwołania do funkcji (I5e1bd).
- Dodawanie przekształconych granic 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
- Ukryte konstruktory podklas, dzięki czemu można je tworzyć tylko za pomocą funkcji fabrycznych.
- Zmiana nazwy Font.asFontFamily na Font.toFontFamily (I42aa7)
Wprowadzono
ComposeContentTestRule, która rozszerzaComposeTestRulei definiujesetContent, która została usunięta zComposeTestRule. Dodano metodę fabrycznącreateEmptyComposeRule(), która zwraca obiektComposeTestRulei nie uruchamia aktywności. Użyj tej opcji, gdy chcesz uruchomić aktywność podczas testu, np.za pomocąActivityScenario.launch(I9d782, b/174472899).Funkcja animateAsState została zmieniona na animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)
Do obrazu i ikony dodano parametr opisu treści. Służy do przekazywania opisu usługom ułatwień dostępu (I2ac4c).
Usuń displaySize, ponieważ należy go unikać. Zwykle lepiej jest używać rozmiaru onRoot() lub co najmniej rozmiaru okna. (I62db4)
OnSizeChanged zgłaszał rozmiar zawartości układu. Teraz raportuje rozmiar w pozycji w łańcuchu modyfikatorów. (I36b78, b/177562900)
Interfejs API emit() i wszystkie jego przeciążenia zostały wycofane i zmieniono ich nazwę na ComposeNode. Interfejsy API są identyczne, tylko mają inną nazwę, aby zachować zgodność z konwencjami nazewnictwa Compose (I4137b).
TextFieldValue akceptuje AnnotatedString. Jest to jednak zmiana tylko w interfejsie API, a edycja tekstu w wielu stylach nie została jeszcze wdrożona.
- Usunięto parametr
initialz parametrów konstruktora EditingBuffer. (I326d5)
- Usunięto parametr
Funkcje invalidate i compositionReference() zostały wycofane na rzecz funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)
Klasa AnnotatedString została zmieniona tak, aby rozszerzać klasę kotlin.CharSequence. Dlatego length i subSequence są teraz funkcjami instancji, a funkcje rozszerzające zostały usunięte. (Iaf429)
RememberObserver zastępuje CompositionLifecycleObserver, a CompositionLifecycleObserver jest teraz wycofany.
RememberObserverzastępujeCompositionLifecycleObserver, ale ma zmodyfikowaną semantykę i zmienione nazwy metod. Przejście na nowy interfejs API można przeprowadzić mechanicznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to zalecana praktyka. Jeśli jednak odwołanie zostało zapamiętane w kompozycji więcej niż raz, funkcjaonRememberedjest wywoływana dla każdego odwołania, a funkcjaonEnterjest wywoływana tylko raz.onEnterbyło wywoływane wielokrotnie, jeśli obiekt był używany w podkompozycjach, np.WithConstraintsiScaffold, co sprawiało, że pojedyncze wywołanieonEnterbyło niewiarygodne i zostało usunięte w przypadkuRememberObserver.RememberObserverdodajeonAbandoned, które jest wywoływane, jeśli instancjaRememberObserverjest zwracana z wywołania zwrotnego przekazanego doremember, ale nie została zapamiętana w stanie kompozycji, a więc nigdy nie zostanie wywołana funkcjaonRemembered. Może to nastąpić, jeśli wyjątek zakończy kompozycję przed jej ukończeniem lub kompozycja zostanie odrzucona, ponieważ stan, dla którego była tworzona, nie jest już aktualny lub nie jest już potrzebny. Jeśli instancjaRememberObserverpo rekomendacji pojedynczego odwołania powyżej śledzi zasób zewnętrzny, zarównoonForgotten, jak ionAbandonedwskazują, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęcie pracy lub zasoby przydzielone wonRemembered,onAbandonedmożna zignorować, ponieważ nie zostanie wywołany, jeśli zostanie wywołanyonRemembered. (I02c36)Wycofane operacje arytmetyczne na co najmniej 2 obiektach TextUnit. Funkcje TextUnit.Sp i TextUnit.Em są wycofane na rzecz funkcji rozszerzeń, takich jak Int.sp i Int.em. (I48369)
Zasoby w bibliotekach, które nie mają jawnie zadeklarowanych zasobów publicznych (np. za pomocą pliku public.xml), są teraz domyślnie prywatne. (Ia1dcc, b/170882230)
Komponenty ScrollableColumn i ScrollableRow zostały wycofane. Używanie komponentu ScrollableColumn jest mniej wydajne niż LazyColumn w przypadku długich treści przewijanych, ponieważ w przypadku komponentu LazyColumn możemy tylko tworzyć, mierzyć i rysować widoczne elementy. Aby uniemożliwić użytkownikom korzystanie z nieefektywnego sposobu, zdecydowaliśmy się wycofać ScrollableColumn i ScrollableRow oraz promować zamiast nich LazyColumn i LazyRow. Użytkownicy mogą nadal decydować, że nie potrzebują leniwego zachowania, i używać modyfikatorów bezpośrednio, np. Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).
Nowa metoda fabryczna
items(count: Int)dla zakresu LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)iitemsIndexed(items: List)są teraz funkcjami rozszerzającymi, więc musisz je ręcznie importować, gdy są używane. Nowe przeciążenia rozszerzeń dla tablic:items(items: Array)iitemsIndexed(Array)(I803fc, b/175562574)Zamiast ImeAction.NoAction użyj ImeAction.None.
- Zamiast ImeAction.Unspecified (Ie1bcc) używaj ImeAction.Default.
Używanie TestCoroutineDispatcher w testach (I532b6)
Zmiana nazwy TextInputService.onStateUpdated na updateState (Id4853)
Wycofano przejście oparte na TransitionDefinition (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ść
Restrukturyzacja 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ść wsteczną, która może wpłynąć na kod aplikacji, ponieważ węzły nie są już dostępne w wewnętrznych i eksperymentalnych interfejsach 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 momentu 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żywaj 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. Zmiana 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 Velocity, aby zawierał części składowe i operacje matematyczne. (Ib0447)
- Zmieniono nazwę
@ExperimentalTestingna@ExperimentalTestApi, aby była zgodna z podobnymi adnotacjami interfejsu API w wersji eksperymentalnej (Ia4502, b/171464963) - Zmiana nazwy funkcji Color.useOrElse() na Color.takeOrElse() (Ifdcf5)
- Usunięto nieużywane klasy DpInverse, DpSquared i DpCubed. (I4d62b)
- Właściwość Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
- Dodaj wywołanie zwrotne, aby powiadomić właściciela o zmianach 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. Dodano interfejsy API do instalowania i odkrywania kompozytorów i odwołań do kompozycji w zakresie okna na potrzeby tworzenia kompozycji podrzędnych.
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 na rzecz bezpośredniego używania 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)
Funkcje Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj funkcji Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
Wprowadzono SelectionRegistrar.notifySelectableChange, aby powiadamiać SelectionManager o aktualizacjach Selectable. (I6ff30, b/173215242)
Dodano właściwość Outline.bounds do uzyskiwania prostokąta ograniczającego w przypadku różnych implementacji konturu. (I16e74, b/175093504)
Wycofano TestUiDispatcher. Zamiast tego użyj Dispatchers.Main (Ic171f, b/175385255)
ImeOptions i KeyboardOptions nie są już klasą danych (I3c898, b/168684531)
Zmiany w interfejsie VisualTransformation API
- 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 natywnego zdarzenia keyEvent można teraz uzyskać dostęp za pomocą keyEvent.nativeKeyEvent (I87c57, b/173086397).
animate()zastępuje terazanimateAsState(), która zwracaState<T>zamiastT. Umożliwia to lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczytywana jest wartość State. (Ib179e)- Dodaj interfejs API roli Semantics i dodaj rolę jako parametr do klikalnego, wybieralnego i przełączalnego elementu SemanticsModifier. Zmiana parametru Modifier.progressSemantics, aby można było go używać także 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 zanikania
- (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
- Wycofany element KeyEvent.Alt został usunięty. Zamiast tego użyj KeyEvent.isAltPressed. (Idd695)
- Interfejsy Modifier.keyInputFilter i Modifier.previewKeyInputFilter zostały wycofane. Zamiast nich używaj interfejsów Modifier.onKeyEvent i Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
- 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 została zmieniona na contentDescription. accessibilityValue została zmieniona na stateDescription. (I250f2)
- Usunięto zdarzenia niestandardowe z interfejsu API zawieszania 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)
- Informacje o układzie zostały wprowadzone do użytku 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 dokumentacji Modifier.nestedScroll (I36e15, b/162408885).
- Funkcja subcomposeInto(LayoutNode) została oznaczona jako wewnętrzna (Id724a)
Interfejs
Applierzostał zmieniony, aby uprościć tworzenie drzew od dołu do góry, a nie od góry do dołu.Nazwa metody
insert()została zmieniona nainsertTopDown().Dodano nową metodę:
insertBottomUp().Aplikator wstawia węzły do edytowanego drzewa za pomocą funkcji
insertTopDown()lubinsertBottomUp()w zależności od tego, która z nich jest bardziej skuteczna.Niektóre drzewa, np.
LayoutNodeiView, znacznie łatwiej jest budować od dołu niż od góry. Przed wprowadzeniem tej zmiany do wdrożenia 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 ze względu na wydajność. Po tej zmianieApplierzastępujeinsertBottomUp()budowanie drzewa od dołu do góry, ainsertTopDown()– 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. (If5e17)
Dodano interfejs API painterResource, który umożliwia nieprzezroczyste wczytywanie obiektów Painter z formatów zasobów rastrowych (takich jak PNG) lub z plików VectorDrawable. Konsumenci nie muszą już z wyprzedzeniem określać typu komponentu i 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 klasę ContentDrawScope do modułu ui-graphics, aby była razem z klasą DrawScope. (Iee043, b/173832789)
Wprowadziliśmy interfejs API grafiki PathEffect, który umożliwia stosowanie różnych wzorów do kształtów z obrysem. 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ą ComposeTestRule (I433f3).
Usunięto globalną (nie)rejestrację ComposeIdlingResource i globalną (nie)rejestrację zegarów w ComposeIdlingResource (I32660)
Poprawki błędów
- Funkcje lambda w modyfikatorach przesunięcia zwracają teraz 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 kompozycji.
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ą surowe informacje, które ten interfejs interpretuje (I31a9c).
Zmodyfikowano klasę ShaderBrush, aby leniwie tworzyć instancję shadera, gdy dostępne są informacje o rozmiarze środowiska rysowania. Przydaje się to do definiowania gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania elementu kompozycyjnego, bez konieczności implementowania niestandardowych implementacji DrawModifier.
Wycofano interfejsy API konstruktora funkcji gradientu na rzecz metod fabrykujących w obiekcie Gradient. (I511fc, b/173066799)
Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego używaj komponentó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 klasy 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 API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, aby zawierał aliasy typów i metody pomocnicze ułatwiające migrację z przestarzałych interfejsów API na obecne. (Id6044, b/173834241)
- Zmiana nazwy Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowano też powiązane klasy do GraphicsLayer zgodnie z opiniami o interfejsie API. (I0bd29, b/173834241)
- Dodano nowe metody placeable.placeWithLayer() i placeable.placeRelativeWithLayer(), które umożliwiają układom niestandardowym 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 Modifier.scale/rotate
API jako ułatwienia dla drawLayer.
- Zmieniono nazwę
Modifier.drawOpacitynaModifier.alpha - Nazwa
Modifier.drawShadowzostała zmieniona naModifier.shadow(I264ca, b/173208140)
- Zmieniono nazwę
- Pola uptime i position w klasie PointerInputData nie mogą mieć wartości null. (Id468a)
- Motyw MaterialTheme ustawia teraz prawidłowe kolory uchwytów zaznaczenia i tła zaznaczenia. Aplikacje inne niż Material mogą ręcznie używać AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
- Dodano funkcję WindowManager.isWindowFocused, która sprawdza, czy okno hosta jest aktywne, oraz funkcję WindowFocusObserver, która udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
- Zaktualizowano interfejs TransformOrigin API, aby miał składnię destrukcyjną zwracającą
pivotFractionXipivotFractionYjakocomponent1icomponent2(If43c4, b/173586560). - Dodano sprawdzanie składni nazw i pozycji parametrów funkcji lambda, aby zapewnić zgodność ze wskazówkami dotyczącymi Compose.
Zgodnie z kontrolą składni i wskazówkami zmieniliśmy też nazwy niektórych interfejsów API z
childrennacontent. (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 ponownego komponowania i ponownego układu w przypadku zmiany stanu. DrawLayerModifier jest teraz wewnętrzny w ramach przygotowań do przeniesienia jego logiki do metody placeable.placeWithLayer() interfejsu LayoutModifier (I15e9f, b/173030831). - Wycofaliśmy właściwości Ambients, które miały w nazwie sufiks
Ambient, i zastąpiliśmy je nowymi właściwościami z prefiksem Ambient, zgodnie z innymi właściwościami Ambients i wytycznymi interfejsu Compose API. (I33440) - Przeniesiono
androidx.compose.ui.text.Typefacedoandroidx.compose.ui.text.font.Typeface(Ic2b81) - Argument semantyczny mergeAllDescendants został zmieniony na mergeDescendants. (Ib6250)
- Nowy detektor gestów przeciągania zawieszający wskaźnik interfejs API danych wejściowych, 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)
- Dodanie parametru 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ć indeksy z dla 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żywaj 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)
- Dodano detektor gestów do wykrywania kliknięć, dwukrotnych kliknięć, długich naciśnięć i naciśnięć za pomocą nowego wskaźnika zawieszającego. Dodaliśmy też kilka narzędzi, które ułatwiają deweloperom pisanie własnych detektorów gestów. (I00807)
- Nazwa
idzostała zmieniona nalayoutIdw przypadkuLayoutIdParentData. NazwaMeasurable.idzostała zmieniona naMeasurable.layoutId. (Iadbcb, b/172449643) - Nowy detektor gestów wielodotykowych, w tym funkcje pomocnicze do wykrywania obracania, powiększania i przesuwania. (Ic459d)
- Wprowadzono interfejsy SweepGradientShader i SweepGradientBrush API. (Ia22c1)
- Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest teraz eksperymentalna (I6ef86, b/171378521).
Dodaj interfejsy API przewijania oparte na korutynach:
Dodaje LazyListState.snapToItem i LazyListState.smoothScrollBy, a także interfejsy API niższego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania do sterowania przewijaniem, który czeka na zakończenie przewijania przed zwróceniem wyniku. (Ie5642)
W bibliotece Foundation dodano właściwość Modifier.focusable. Użyj tego komponentu, 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ść (Ib8288, b/153623653, b/154135019).
Metoda TextLayoutResult.getLineVisibleEnd została wycofana. W zamian za to 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 mechanizmie 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. Teraz przyjmują parametry lambda zamiast parametru State. (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 lint sprawdza nazewnictwo, typ zwracany, wartość domyślną i kolejność parametru pod kątem zgodności z wytycznymi dotyczącymi Compose. (If493b)
- Tymczasowo dodano opcję, która umożliwia sterowanie zegarem TestAnimationClock za pomocą zegara MonotonicFrameClock (I1403b, b/173402197)
- Dodano kod Android Typeface. Czcionkę Androida możesz wczytać za pomocą funkcji
typeface, np.typeface(Typeface.DEFAULT). Zmieniono też nazwętypefaceFromFontFamily()natypeface()(I52ab7) - Dodano sprawdzanie lint, aby sprawdzić, czy funkcje fabryczne modyfikatora 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ą uzyskiwane z elementu effectCoroutineContext. Interfejs FrameManager został wycofany. Integracje platform powinny inicjować własną obsługę globalnych zrzutów. (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
- Wprowadzono klasę wbudowaną ScaleFactor, która reprezentuje współczynniki skali dla osi poziomej i pionowej niezależnie od siebie, aby obsługiwać przypadki użycia skalowania nierównomiernego.
- Dodano metodę computeScaleFactor do ContentScale
- Dodano ContentScale.FillBounds, aby wykonać skalowanie nierównomierne i rozciągnąć granice źródła, tak aby w pełni zajmowały miejsce docelowe.
- Dodano metody operatorów 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, który powodował, że w widokach w Compose nie była rysowana wysokość. (If7782)
- Utworzono interfejs API onDrawBehind w ContentDrawScope , aby dopasować konwencję nazewnictwa do Modifier.drawBehind. (I4fc3a, b/171955269)
- Dodano obsługę parametru camera distance jako uzupełnienie przekształceń 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 nieprzezroczystość z modyfikatora drawShadow(), ponieważ była myląca. (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 pakietu androidx.compose.layout.ui. (I0fa98, b/170475424)
- Usunięto wycofany element FocusState2 (I686cb, b/168686446)
- Modyfikator ZIndexModifier jest teraz wewnętrzny (I1808b, b/171493718)
- Zaktualizowano typ zwracany metody lerp w parametrach Size, aby zwracać niepusty rozmiar i 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 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. Można jej używać do określania wartości otoczenia, które będą ustawiane tylko wtedy, gdy nie ma jeszcze podanej wartości otoczenia. (Id6635, b/171024925)
- Komponent BaseTextField został wycofany. Zamiast tego użyj BasicTextField. (I896eb)
- Wprowadzenie modułu ui-test-junit4 (Ib91f8)
- Nazwa
relativePaddingFromzostała zmieniona napaddingFrom. Dodano modyfikatorpaddingFromBaseline, aby ułatwić określanie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813) - Aby zachować spójność z interfejsami SideEffect API i DisposableEffect API, nazwa LaunchedTask została zmieniona na LaunchedEffect. Aby zachęcać do stosowania sprawdzonych metod, nie zezwalamy na używanie LaunchedEffect bez parametrów subject. (Ifd3d4)
- Wprowadzono komponent resources, który ponownie się komponuje, gdy aktualizowana jest konfiguracja. (I6387c, b/167352819)
- Recomposer wymaga teraz CoroutineContext podczas tworzenia (Ic4610)
- Sumuj wartości
zIndex, gdy zastosowano wieleModifier.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 publikowanie 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 różnych kompozycjach. (Ifda43)
- Zaktualizowano interfejs API Modifier.drawWithCache, aby udostępniać ContentDrawScope jako zakres odbiorcy zamiast DrawScope, dzięki czemu implementacje mogą zmieniać kolejność poleceń rysowania. Jest to przydatne w przypadku mieszania lub barwienia, gdy piksele treści muszą być najpierw renderowane, aby można było prawidłowo zastosować odpowiedni algorytm trybu mieszania. (Ie7ec8)
- Przenieś SimpleContainer do PopupTestUtils.kt (I78c57)
- 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 od prawej do lewej. (I6e1e0)
- Zmiana typu DrawScope i ContentDrawScope z klas abstrakcyjnych na interfejsy.
- Utworzono implementację CanvasDrawScope interfejsu DrawScope
- Zmiana implementacji interfejsu DrawScope na CanvasScope
- Utworzono DrawContext do opakowywania zależności dla DrawScope
- Usunięto wycofane metody w klasie DrawScope (I56f5e)
- Zmiana powodująca niezgodność: usunięto wartość zwracaną z
PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w przypadku zdarzeń wskaźnika, są dane o użyciu. Zamiast zwracać dane zPointerInputFilter.onPointerEvent(...), możesz teraz po prostu zmieniać dane o użyciu przekazywanych zdarzeń PointerEvents. (I6acd0) - Interfejsami stały się MeasureScope i IntrinsicMeasureScope. (I1a087, b/170461665)
- Funkcja scalania dla 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 w 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 lint pod kątem 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 z jednym wierszem w komponencie CoreTextField (I72e6d)
- Przeniesienie klasy SimpleContainer do pliku 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 wszystkich działań z wyjątkiem
ACTION_DOWN(I94c5a, b/170320973) - Funkcja Box została przekształcona w funkcję wbudowaną. (Ibce0c, b/155056091)
Wkład zewnętrzny
- Obsługa różnych ustawień regionalnych dla
AnnotatedString.capitalizeiAnnotatedString.decapitalize(I4aa7f)
Wersja 1.0.0-alpha05
14 października 2020 r.
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodanie języka DSL do określania informacji o inspektorze (Ic9a22)
- Przenieś LongPress do Text. (Iff2bc)
- Experimental Modifier.pointerInput suspending input modifier (Ia77d2)
- Dodano działania związane z ułatwieniami dostępu Kopiuj/Wklej/Wytnij (I6db4f)
- Usunięto publiczny konstruktor klasy AndroidOwner (Iacaef)
- Wyskakujące okienka i okna dialogowe dziedziczą teraz FLAG_SECURE z okna nadrzędnego. Dodaliśmy też opcję wyraźnej konfiguracji tej funkcji (I64966, b/143778148, b/143778149).
Dane o zużyciu można teraz zmieniać. Poza tym 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 inne dane wskaźnika nie mogły być edytowane przez kod użytkownika. Drugim krokiem będzie usunięcie typu zwracanego
List<PointerInputChange>zPointerInputFilter.onPointerEvent(...). (Id067e)Wyłącz zaznaczanie tekstu i obejrzyj demonstrację. (Ie7e97)
Funkcja Made onGloballyPositioned została przekształcona w funkcję wbudowaną (I15830)
Interfejs OnPositionedModifier został zmieniony na OnGloballyPositionedModifier, a funkcja onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
Do interfejsu Owner dodano właściwość hasPendingMeasureOrLayout, która informuje, czy w przypadku danego obiektu Owner oczekuje się wykonania jakichkolwiek prac związanych z układem. (I3d9f8, b/169038599)
Dodano interfejs API do programowego czyszczenia fokusu (Ie1dc2, b/161487952)
Użytkownik
PointerInputFilter.onPointerInput(...)został usunięty. Zamiast niego należy użyć atrybutuPointerInputFilter.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 zakresu w metodzie AnnotatedString.Builder.addStringAnnotation został zmieniony na tag w celu zachowania spójności interfejsu API. (I7c8cb)
Poprawki błędów
- Wydajność przewijania w przypadku komponentów LazyColumn i LazyRow została zwiększona dzięki zmniejszeniu ilości pracy wykonywanej w podkompozycji podczas każdego przewijania. Do klasy Composition dodano nową metodę hasInvalidations(). Metoda hasPendingChanges() z klasy Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371).
- Zaktualizowano parametry Size.Unspecified tak, aby zamiast Float.POSITIVE_INFINITY miały wartość Float.NaN. Zaktualizowano implementacje Painter, aby sprawdzały zarówno Size.Unspecified, jak i rozmiary nieograniczone. (I95a7e)
- Kolejność wywołań funkcji 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)
Wartości PlacementScope#parentWidth i PlacementScope#parentLayoutDirection nie można już odczytywać z bloku miejsca docelowego w układzie niestandardowym. (Icc1ae, b/168295623)
dodaj AccessibilityScrollState do właściwości semantycznych; (Ifeda9)
Wprowadzono funkcję Modifier.drawWithCache, która umożliwia tworzenie obiektu rysowania, który warunkowo odtwarza zależności zależne od informacji o rozmiarze lub stanie (I376dc).
Usunięto 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ń skali i rotacji, aby używały jednego parametru Offset do reprezentowania współrzędnych punktu obrotu zamiast oddzielnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform.
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowano dokumentację dotyczącą promienia, aby uwzględnić kształt owalny oprócz eliptycznego.
- Dodano dokumentację, aby wskazać, że publiczny konstruktor wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale obiekty Radius powinny być tworzone za pomocą konstruktorów funkcji.
- Usunięto interfejsy API RoundRect do wysyłania zapytań o wartości topRight, bottomRight, bottomCenter itp.
- Wycofanie Rect.shift na rzecz Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmiana nazwy RoundRect.outerRect na Rect.boundingRect
- Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
- Zmiana nazwy RoundRect.longestSide na RoundRect.maxDimension
- Zmiana nazwy RoundRect.shortestSide na RoundRect.minDimension
- Zmiana RoundRect.center na właściwość zamiast funkcji
- Zaktualizowano konstruktor RoundRect, aby korzystał z właściwości Radius zamiast z poszczególnych parametrów wartości promienia x/y.
- Usunięto interfejsy API rozmiaru, które zakładały, że jest to prostokąt o początku w punkcie 0,0
- Dodano do Radius interfejs API niszczenia
- Przeniesiono różne funkcje rozszerzenia RoundRect, aby były właściwościami.
- (I8f5c7, b/168762961)
- foundation.Box został wycofany. Zamiast tego użyj foundation.layout.Box. (Ie5950, b/167680279)
- Grupa została zmieniona na Box. Dotychczasowy komponent Box zostanie wycofany na rzecz nowego komponentu Box w pakiecie compose.foundation.layout. Nowy 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 dopełnienie do elementu Box, użyj zamiast tego modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
- Zaktualizowano wiele interfejsów API grafiki.
- Zaktualizowano interfejsy DrawScope API o metody przekształcania w określonym zakresie, aby wskazać, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po jego wywołaniu.
- Zaktualizowano dokumentację clipPath, aby odwoływała się do ścieżki zamiast do zaokrąglonego prostokąta.
- Poprawiono odstępy w dokumentacji parametru right w elemencie clipPath
- Zmieniono nazwę DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr rozmiaru
- Zmieniono nazwy parametrów dx/dy w metodzie inset na horizontal i vertical
- Dodano przeciążenie wstawki, które zapewnia tę samą wartość wstawki dla wszystkich 4 obszarów.
- Usunięto dokumentację dotyczącą metody wstawiania, która wskazywała, że wstawianie będzie stosowane do wszystkich 4 stron.
- Zaktualizowana dokumentacja klasy Rect
- Zaktualizowano komentarze dotyczące parametrów Rect, aby były zgodne ze stylem kdoc.
- Usunięto Rect.join i Rect.expandToInclude
- Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
- (If086a, b/167737376)
- Oznaczanie adnotacjami rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled i textInputServiceFactory za pomocą @VisibleForTesting, przekształcanie ich w wewnętrzne interfejsy API i ukrywanie ich dokumentacji w formacie 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, aby opakować treści, które mają być możliwe do zaznaczenia. (I8dfe0, b/158459594)
Wersja 1.0.0-alpha03
16 września 2020 roku
Publikacja androidx.compose.ui:ui-*:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usuń działania semantyczne przewijania do przodu i do tyłu. Dodano kroki w AccessibilityRangeInfo. (Ia47b0)
- Usunięto element
onInvalidate()z listyOwner–OwnedLayerobsługuje unieważnienie. (Ica72b, b/162061312) Usunięto metody operatora w interfejsie Size API, które wykorzystują parametry Offset. Wynik tych operacji jest niejasny, a typ wyniku jest nieoczekiwany. Przykład: czy rozmiar – przesunięcie powinno zwrócić przesunięcie czy wynik rozmiaru z różnicą?
Usunięto też przestarzałe metody w klasie Size. (Iec902, b/166514214)
Poprawki błędów
- Poprawka dotycząca nieprawidłowego rysowania elementów LazyColumn w niektórych przypadkach. Powodowało to też awarie w określonych warunkach. (Ibcf17, b/163066980, b/165921895)
- Interfejs DpConstraints i interfejsy API, które go używają, zostały wycofane. (I90cdb, b/167389835)
- Przeniesiono
createAndroidComposeRuleiAndroidInputDispatcherzandroidx.ui.test.androiddoandroidx.ui.test(Idef08, b/164060572) - W interfejsach API układu nazwy związane 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 powiadomić właściciela o zmianie granic węzła układu. (If654e, b/166106882)
- Dodaliśmy obsługę parametrów filltype na ścieżkach grafiki wektorowej w celu obsługi wycinania kształtów zgodnie z regułami wypełniania ścieżek evenOdd lub NonZero. (I43dd2)
- Czas działania i szybkość są teraz klasami wbudowanymi (I48f4a)
- Czas trwania jest teraz klasą wbudowaną (I565eb)
- Dodaj wywołanie zwrotne, aby powiadomić właściciela o zmianach 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 left, right, top, bottom zamiast left, top, right, bottom.
Usunięto wycofane metody towarzyszące w przypadku klasy Rect na rzecz konstruktorów funkcji.
Dodano testy weryfikujące metody w pliku Rect.kt (I08460, b/165822356)
Poprawki błędów
- Dodano MutableRect, czyli prostokąt, który można modyfikować. (I71bd2, b/160140398)
- Matrix4 został zastąpiony przez Matrix. Wszystkie pozostałe części pakietu vectormath zostały usunięte. (Ibd665, b/160140398)
Konwencja wywoływania funkcji kompozycyjnych uległa zmianie. Jest to zmiana powodująca niezgodność binarną. 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 wysył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
- Środowisko wykonawcze
emitViewzostało wycofane. Jeśli to możliwe, używajAndroidViewdo emitowania widoków w Compose. Pamiętaj, że bezpośrednie tworzenie widoków i grup widoków nie będzie w przyszłości obsługiwane, chyba że będą one elementami końcowymi w drzewie kompozycji. W takim przypadku można to osiągnąć za pomocą elementu AndroidView. (I29b1e, b/163871221) FocusState2zostało wycofane i zastąpione przezFocusState(Ia8b79, b/160822876, b/160923332)- Usunęliśmy przestarzałe przeciążenia AndroidView. (I946b9, b/163802393)
- Niestandardowe funkcje emitujące mogą teraz deklarować, że co najmniej jeden z ich setterów może zostać pominięty i ponownie skomponowany niezależnie od funkcji emitującej. (Ibbd13)
Zmieniono klasy wektorowe, 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.
Zrefaktoryzowano instancję VectorComponent, aby była częścią VectorPainter, ponieważ jest ona ponownie używana w różnych kompozycjach.
Zaktualizowano komponenty GroupComponent i PathComponent, aby ich pola nazwy były modyfikowalne (Ieae45, b/151378808).
Usunięto
onChildPositionediOnChildPositionedModifier. Zamiast tego programiści powinni używać w układzie podrzędnym elementówonPositionediOnPositionedModifier. (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
mergePolicydo usługiSemanticsPropertyKey. Można jej użyć do zdefiniowania niestandardowych zasad scalania semantyki mergeAllDescendants. 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ę skupienia z klasy AndroidComposeView (I528ef, b/161487952, b/162206799)
Zaktualizowane nazwy PointerEventPass w wersji alfa. (Ifda6f)
IntOffset jest teraz klasą wbudowaną (Iac0bf)
IntSize jest teraz klasą wbudowaną (I2bf42).
Nazwa
PlacementScope.placeAbsolute()została zmieniona naPlacementScope.place(), a poprzednia nazwaPlacementScope.place()została zmieniona naPlacementScope.placeRelative(). W związku z tym metodaPlacementScope.place()nie będzie już automatycznie odzwierciedlać pozycji w kontekstach pisanych od prawej do lewej. Jeśli chcesz to zrobić, użyj zasadyPlacementScope.placeRelative(). (I873ac, b/162916675)AlertDialog używa teraz FlowRow w przypadku przycisków (I00ec1, b/161809319, b/143682374)
Niektóre narzędzia testowe zostały ustawione jako niepubliczne, ponieważ nie znajdują się w odpowiednim miejscu. W przyszłości zostanie upubliczniona. (I32ab1)
Zmieniono organizację kodu wejścia wskaźnika. (Ie3f45)
Wycofano PxBounds na rzecz Rect. Zaktualizowano wszystkie użycia PxBounds za pomocą prostokąta i dodano odpowiednie adnotacje dotyczące wycofania/zastąpienia, aby ułatwić migrację. (I37038, b/162627058)
Usunięto wycofany element KeyEvent2. Zamiast tego użyj KeyEvent. (Ied2d0, b/162097587)
Obiekt KeyEvent ma właściwość unicode, która umożliwia uzyskanie 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 przekazywania PointerEvent, 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 ScrollableColumn/Row. Usunięto Modifier.drawBackground. Użyj Modifier.background (I73b0d, b/163019183)
Naprawiono błąd powodujący awarię, gdy w pętli for użyto czegoś, co zapisuje stan. Teraz ten sam klucz w metodzie savedInstanceState() jest dozwolony, więc interfejs API UiSavedStateRegistry został dostosowany do tego nowego wymagania (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
Funkcja
state { ... }została wycofana na rzecz jawnych wywołań funkcjiremember { mutableStateOf(...) }, aby zwiększyć przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji zarządzania stanem oraz pasuje do wzorcaby mutableStateOf()delegowania właściwości klasy. (Ia5727)Zmiana nazwy RRect na RoundRect, aby lepiej pasowała do wzorców nazewnictwa w Compose. Utworzono podobne konstruktory funkcji do RRect i wycofano konstruktory funkcji RRect (I5d325).
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
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)
- Funkcja setViewContent została wycofana. Zamiast niej należy używać funkcji 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 Alt (I9036b)
- Interfejs FocusManager został wycofany. Zamiast tego użyj funkcji 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 przekazywania PointerEvent, 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 funkcję Modifier.layout(), która umożliwia wygodne tworzenie niestandardowego modyfikatora układu (I73b69, b/161355194).
- Dodaliśmy nowy interfejs AndroidView API i oznaczyliśmy dotychczasowe interfejsy jako przestarzałe. (I5bcfd)
- Funkcja Modifier.plus została wycofana. Zamiast niej używaj funkcji Modifier.then. Słowo „wtedy” silniej sygnalizuje kolejność, a także uniemożliwia wpisanie znaku
Modifier.padding().background() + anotherModifier, który przerywa ciąg i utrudnia czytanie (Iedd58, b/161529964). - Dodaj podklasy widoku [Abstract]ComposeView do hostowania treści Compose w hierarchii widoków. (I46357)
- Funkcje
RowiColumnsą teraz funkcjami wbudowanymi, co znacznie zmniejsza 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 dropdownPopup. (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 elementach LazyColumn 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 wektorowe 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
- Poprawki w interfejsie API (I077bc)
- Usuwanie nieużywanego interfejsu OffsetBase
- Ujednolicenie klas Offset i IntOffset w celu zapewnienia spójnego interfejsu API
- Zmiana nazwy IntOffset.Origin na IntOffset.Zero w celu zachowania spójności z interfejsem Offset API
- Przeniesiono metodę nativeCanvas z interfejsu Canvas, aby umożliwić konsumentom tworzenie własnych instancji Canvas.
- Utworzono klasę EmptyCanvas, aby refaktoryzować DrawScope i zamiast lateinit używać parametru niepustego, a także zapewnić, że pole nie będzie miało wartości null.
- Zmiana nazw wyliczeń ClipOp na Pascal Case
- Zmiana nazw wyliczeń FilterQuality na pisane wielkimi literami
- Zmiana nazw wyliczeń StrokeJoin na Pascal Case
- Zmiana nazwy wyliczeń PointMode na Pascal Case
- Zmiana nazw wyliczeń PaintingStyle na Pascal Case
- Zmiana nazwy wyliczeń PathFillType na Pascal Case
- Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
- Zaktualizowano implementację DrawCache, aby nie używać już parametrów lateinit
- Zaktualizowano DrawScope, aby nie używać już leniwego delegowania w przypadku wewnętrznych parametrów fillPaint i strokePaint
- Zaktualizowano funkcję kompozycyjną Image, aby uniknąć używania Boxa i zmniejszyć obciążenie.
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano klasę PathNode, aby zawierała adnotacje @Immutable dla każdej instrukcji ścieżki.
- Zaktualizowano podkompozycję wektora, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje.
- Wyłączenie metod konstruktora towarzyszącego Rect na rzecz konstruktorów funkcji
- Zaktualizowane klasy Brush i konstruktory funkcji z interfejsami API @Immutable i @Stable
- Zaktualizowano wyliczenie VertexMode, aby używać notacji PascalCase
- Zaktualizowano metodę selectPaint w klasie DrawScope, aby warunkowo nadpisywać parametry pędzla w obiekcie Paint, jeśli uległy zmianie.
- Aktualizacja klasy Size (dodanie interfejsu API destructuring, zmiana nazwy UnspecifiedSize na Unspecified i usunięcie nieużywanych metod)
- Zaktualizowano wykorzystanie interfejsu API BlendMode 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, co rozwiązuje problem, gdy element powinien wypełniać obszar widoku, a zwykły modyfikator Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
- Użytkownik
SemanticsNodeInteraction.performPartialGesturezostał usunięty. Zamiast niej używaj właściwościSemanticsNodeInteraction.performGesture. (Id9b62) - Nazwa
LazyColumnItemszostała zmieniona naLazyColumnFor.LazyRowItemszmieniono nazwę naLazyRowFor(I84f84) - Pakiet
foundation.shape.cornerzostał spłaszczony dofoundation.share(I46491, b/161887429) - Zmieniono nazwę
AndroidComposeTestRulenacreateAndroidComposeRule. (I70aaf) - Dodaliśmy więcej interfejsów API do
TextLayoutResult. (Id7e04) - Nazwa Material
FilledTextFieldzostała zmieniona naTextField, a nazwa foundationalTextFieldzostała zmieniona naBaseTextField, aby ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676). - Nazwa funkcji Modifier.drawBackground została zmieniona na Modifier.background (I13677)
Wersja 0.1.0-dev15
22 lipca 2020 r.
Publikacja androidx.compose.ui:ui-*:0.1.0-dev15 Wersja 0.1.0-dev15 zawiera te zatwierdzenia.
Aktualizacja zależności
- Aby używać wersji
0.1.0-dev15biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany w interfejsie API
- FocusModifier został wycofany na rzecz Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. Stany FocusState i FocusDetailedState zostały wycofane na rzecz stanu FocusState2 (I46919, b/160822875, b/160922136).
- Dodano modyfikator do obserwowania zmiany stanu fokusu. (I05866, b/160924455, b/160923326)
- Dodano modyfikator do żądania zmiany fokusu (I8dd73, b/161182057, b/160924778)
- Dostosuj menu paska narzędzi, aby poprawnie 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 całkowitych z układu. Interfejs API PopupPositionProvider został zaktualizowany, aby go używać. (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)
- Uczyniono eksperymentalnym interfejs API LayoutNode (I4f2e9)
Dodano metody kopiowania do różnych typów klas wbudowanych, w tym:
- 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 i menu dziedziczą teraz kontekstowy MaterialTheme (Ia3665, b/156527485).
TextDirection zmienia nazwę 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 za pomocą obiektu zakresu pomiaru (Ic7d9d).
Refactor SelectionHandles for reusing. (I420e0)
Element klikalny został usunięty. Użyj modyfikatora 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).
Zmieniliśmy nazwę Modifier.tag na Modifier.layoutId, aby uniknąć pomyłki z Modifier.testTag. (I995f0)
Pozycje liczb całkowitych linii 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 kompozycyjnego AndroidView dodano parametr modyfikatora. (I48a88, b/158746303)
Funkcja Semantics() została wycofana. Zamiast tego użyj funkcji Modifier.semantics(). (I72407, b/158841414)
Dodano funkcję 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 przez Int. Zastąpiono IntPxPosition przez IntOffset. Zastąpiono IntPxSize wartością IntSize. (Ib7b44)
Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o rozmiarach, ujednolić użycie klasy Size zamiast PxSize. Dzięki temu można korzystać z zalet klasy wbudowanej, aby używać typu long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących szerokość i wysokość jako liczb zmiennoprzecinkowych. (Ic0191)
Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, ujednolić użycie klasy Offset zamiast klasy PxPosition. Dzięki temu można korzystać z zalet klasy wbudowanej, aby używać typu long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących przesunięcia x i y w postaci liczb zmiennoprzecinkowych. (I3ad98)
W ramach dużych zmian w kodzie zastąpiliśmy użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli korzystać tylko z jednostek Dp i typów prostych. Usunięto w całości klasę Px (I3ff33)
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I086f4).
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (Id3434).
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I97a5a).
TestTag został wycofany. Zamiast tego użyj Modifier.testTag. (If5110, b/157173105)
Domyślna implementacja ParentDataModifier#modifyParentData, która nie wykonuje żadnych działań, została usunięta – była ona równoważna z nieimplementowaniem interfejsu. (I0deaa)
Wcześniej wycofana funkcja ScaleFit została usunięta. Zamiast tego użyj ContentScale. (Ifbc5b)
Zastąpiono użycie klasy Px w różnych klasach Compose w ramach dużego refaktoryzowania, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I19d02).
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)
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 pierwotnych (I57bff).
Wycofanie wycofania Modifier.semantics, aby umożliwić używanie w komponentach wysokiego poziomu. (I4cfdc)
Ujednoliciliśmy implementacje CanvasScope, więc teraz są tylko DrawScope i ContentDrawScope. Zmieniliśmy nazwę CanvasScope na DrawScope. Zaktualizowano DrawScope, aby zaimplementować interfejs Density i udostępnić podklasę 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ą zapewnia bez ręcznego podawania (I1798e).
DoubleTapGestureFilter teraz rozróżnia 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).
Zmieniliśmy interfejs API modyfikatorów DrawLayer: outlineShape został zmieniony na shape i ma teraz domyślną wartość RectangleShape oraz nie może mieć wartości null; clipToOutline został zmieniony na clip; clipToBounds został usunięty, ponieważ jest taki sam jak clip == true z RectangleShape (I7ef11, b/155075735).
Zaktualizowane interfejsy API wyższego poziomu Compose, które zamiast Canvas udostępniają CanvasScope. Eliminuje to konieczność utrzymywania przez konsumentów własnych obiektów Paint. Użytkownicy, którzy nadal potrzebują dostępu do elementu Canvas, mogą użyć metody drawCanvas, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania za pomocą bazowego elementu Canvas. (I80afd)
Zmieniono interfejs API lambda końcowego WithConstraints. Zamiast 2 parametrów ma teraz zakres odbiorcy, który oprócz ograniczeń i kierunku układu udostępnia właściwości minWidth, maxWidth, minHeight i maxHeight w jednostkach dp (I91b9a, b/149979702).
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 modyfikatorze DrawLayerModifier została zmieniona na shadowElevation i nie kontroluje już kolejności rysowania. Zmieniono kolejność parametrów funkcji DrawShadow: pierwszy to teraz elevation, a drugi to shape z domyślnym RectangleShape. (I20150, b/152417501)
Usunięto funkcje onSizeChange i onPositionChange w klasie 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 Androidzie.
- Dodaliśmy też IntSize, który ostatecznie zastąpi IntPxSize. (I4b43a)
Umożliwiono tworzenie instancji klasy Alignment z dowolnymi wartościami. Dodano wyrównania 1D. (Ia0c05)
Funkcja alignToSiblings akceptuje teraz obiekt Measured zamiast Placeable. (I5788d)
-
- Zmiana nazwy ScaleFit na ContentScale
- Przeniesiono ContentScale z modułu ui-graphics do modułu ui-core, aby znajdował się w tym samym module co interfejs API Alignment.
- Zmiana nazwy FillMaxDimension na Crop
- Zmiana nazwy FillMinDimension na Fit
- Zmiana nazwy z Dopasowanie na Wewnątrz, aby lepiej pasowała do funkcji
- Odpowiedniki ImageView.ScaleType
- Dodano dokumentację wskazującą, że połączenie opcji Przytnij i Wyrównanie.Środek daje ten sam efekt co ImageView.ScaleType.CENTER_CROP, a opcja Dopasuj używana z opcją Wyrównanie.Środek daje ten sam efekt co ImageView.ScaleType.FIT_CENTER. Opcja Wewnątrz używana z opcją Wyrównanie.Środek daje ten sam efekt co ImageView.ScaleType.CENTER_INSIDE.
Obsługa pisma od prawej do lewej w przypadku modyfikatorów rysowania. (I0aaf9)
Wprowadzono interfejs API do tworzenia widoków Androida z pliku XML. Więcej informacji znajdziesz w demonstracji ViewInCompose. (I42916)
Ulepszenie interfejsu DrawModifier API:
- Zmieniono zakres odbiorcy funkcji draw() na ContentDrawScope
- Usunięto wszystkie parametry funkcji draw()
- DrawScope ma taki sam interfejs jak poprzednia wersja CanvasScope.
- ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067)
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 modyfikatora plus operatorem funkcjami rozszerzenia fabrycznego (I225e4)
Dodaliśmy 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 warstw, 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 dodawanie RenderNode do układu. Umożliwia ustawianie przycinania, krycia, obrotu, skalowania i cieni. Zastąpi on RepaintBoundary. (I7100d, b/150774014)
Umożliwiono propagowanie kierunku układu z węzła układu nadrzędnego do węzłów podrzędnych. Dodano modyfikator kierunku układu. (I3d955)
Komponent Stack obsługuje kierunek od prawej do lewej (Ic9e00)
Początkowa obsługa układu od prawej do lewej w Compose (Ia5519)
Połączyliśmy interfejsy Density i DensityScope w jeden. Zamiast ambientDensity() możesz teraz używać DensityAmbient.current. Zamiast withDensity(density) używaj tylko with(density) (I11cb1).
Zmieniono LayoutCoordinates, aby providedAlignmentLines było zbiorem zamiast mapy, a LayoutCoordinates implementowało operatora get() zamiast pobierania wartości. Ułatwia to modyfikatorom modyfikowanie co najmniej jednej wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
LayoutCoordinates nie ma już właściwości position. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obrotu ani skalowania. Zamiast tego programiści powinni używać funkcji parentCoordinates i childToLocal() do obliczania przekształcenia z jednego obiektu LayoutCoordinate na inny.
LayoutCoordinates używa IntPxSize dla właściwości size zamiast PxSize. Układy korzystają z rozmiarów w pikselach wyrażonych liczbami całkowitymi, 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 opakowuje obiekt Canvas, aby udostępniać bezstanowy, deklaratywny interfejs API do rysowania. Przekształcenia są zawarte w odpowiednim zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wstawki. Nie wymaga to od użytkownika utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.
- Dodaliśmy CanvasScopeSample, a także zaktualizowaliśmy aplikację demonstracyjną, aby zawierała demonstrację grafiki deklaratywnej (Ifd86d).
Usunięto nieużywany interfejs MaskFilter API, ponieważ jest on rzadko używany i nie jest zoptymalizowany pod kątem akceleracji sprzętowej w większości przypadków użycia (I54f76).
RectangleShape przeniesiono z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Zastąpiono wszystkie użycia wartości Color, które mogą mieć wartość null, w interfejsie API wartościami, które nie mogą mieć wartości null, i zamiast wartości null użyto wartości Color.Unset (Iabaa7).
Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter w celu obsługi rysowania 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 używać opcjonalnych współrzędnych punktu obrotu do przekształceń. Domyślnie są one ustawione 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 wykonywanie 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 Androida, na których są oparte. Zaktualizowaliśmy 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ę rozszerzenia w klasie android.graphics.Bitmap, Bitmap.asImageAsset(), aby utworzyć instancję klasy ImageAsset przydatną do łączenia tradycyjnego tworzenia aplikacji na Androida z platformą Compose (Id5bbd).
Dodano TextDirection.Content (I48f36)
Dodano operator TextDecoration.plus (I0ad1a)
Usunięto
Forcez wartości wyliczeniowych TextDirectionAlgorithm (Icc944)Zmiana nazwy TextDirectionAlgorithm na TextDirection (I75ce8)
Implementuje LongPressAndDrag na potrzeby zaznaczania w polu tekstowym. (I17919)
Dodano funkcję AnnotatedString.getStringAnnotations, która zwraca wszystkie adnotacje w zakresie. (I1fa00)
Zmieniono nazwę pakietu dla Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c)
Kursor w polu TextField ma animację migania (Id10a7)
Zmiana w interfejsie API: AnnotatedString(builder: Builder) zmieniono na annotatedString(builder: Builder). (Ia6377)
Zmiana interfejsu API: element AnnotatedString.Item został zmieniony na AnnotatedString.Range. (I2d44d)
Zmiana nazwy funkcji AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)
Klawiaturę ekranową można teraz ukrywać i wyświetlać za pomocą klasy SoftwareKeyboardController, która jest dostarczana przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).
Dodano operator plusa dla (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 tylko komponuje i układa widoczne elementy. Obecnie znane problemy obejmują to, że jest on tylko pionowy i nie obsługuje w pełni wszystkich przypadków zmian w jego elementach podrzędnych. (Ib351b)
Dodaj parametry dopełnienia, obramowania, kształtu i tła do elementu 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 klasa ScrollerPosition została wycofana na rzecz klasy ScrollState' (I400ce, b/157225838, b/149460415, b/154105299).
- Nazwa została zmieniona na
runOnIdle(I83607)runOnIdleCompose - 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 ViewGroups 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, aby zmienić zaznaczenie w przypadku pola tekstowego. (I27032)
- Usunięto wbudowaną klasę 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)
Przebudowano PainterModifier, aby nie zapewniać już skalowania na podstawie podanych ograniczeń i parametru ContentScale. Implementacje Painter muszą samodzielnie skalować rysowane treści 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 rozmiar domyślny 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. Elementy kompozycyjne TextField, FilledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Zamiast tego użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
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ą subkompozycji podczas wysyłania. Zostało to już rozwiązane. (Iab398, b/157998762)
Zmieniliśmy klasę Radius na klasę wbudowaną. Usunięto metody tworzenia elementów towarzyszących 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 osobnych wartości zmiennoprzecinkowych dla promienia wzdłuż osi X i Y (I46d1b).
Funkcja kompozycyjna Recompose nie jest już przydatną abstrakcją. Większość ponownego komponowania powinna być wynikiem przypisań MutableState. W innych przypadkach zalecamy użycie funkcji
invalidate, aby wywołać ponowne skomponowanie bieżącego zakresu. (Ifc992)W ramach dużego refaktoryzowania zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko jednostek dp i typów pierwotnych (Iede0b).
Zmienia strategię generowania kodu kompilatora Compose. Przed zmianą kompilator Compose przekształcał wywołania funkcji kompozycyjnych. Dzięki tej zmianie przekształcamy treść funkcji kompozycyjnej, a miejsce wywołania pozostaje (w większości przypadków) bez zmian.
Oznacza to, że większość logiki komunikującej się z środowiskiem wykonawczym funkcji kompozycji znajduje się na początku treści funkcji, a nie w miejscu wywołania.
Powinna to być zmiana zgodna ze źródłem w przypadku wszystkich zastosowań funkcji compose. Większość użytkowników Compose nie będzie musiała aktualizować kodu w wyniku tej zmiany.
Aby to umożliwić, zmieniliśmy sygnaturę JVM wszystkich funkcji kompozycyjnych. Funkcja kompozycyjna 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ę z możliwością komponowania. 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 tego:
- Niektóre połączenia będą pomijane w miejscach, w których wcześniej nie były pomijane.
- Wyrażenia kompozycyjne w wyrażeniach argumentów domyślnych są teraz prawidłowo subskrybowane i obsługiwane.
W ramach tych prac wprowadziliśmy kilka optymalizacji: 1. Wyniki porównań parametrów są propagowane przez graf wywołań do innych funkcji kompozycyjnych. Dzięki temu w czasie działania aplikacji 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 momencie kompilacji są uznawane za „statyczne”, nie są już porównywane ani przechowywane w czasie działania. Zmniejsza to liczbę porównań i rozmiar tabeli slotów. 3. Struktura przepływu sterowania w treści funkcji służy 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. Przeciążenia funkcji
key, które nie przyjmują argumentów o zmiennej liczbie, zostały usunięte. Od teraz używaj wersjivararg. 5. Adnotacja Pivotal została wycofana. Użyjkeyjako zamiennika. 6. Funkcja ScopeUpdateScope::updateScope została zmieniona tak, aby oczekiwała funkcji Function3 zamiast Function1. 7. Funkcje restartableFunction i restartableFunctionN zostały zaktualizowane, aby zawierały dodatkowe parametry czasu kompilacji (I60756, b/143464846).Usunięto wycofane modyfikatory LayoutAlign. (I10877)
Usunięto RepaintBoundary na rzecz DrawLayerModifier (I00aa4)
Komponenty Button, FloatingActionButton i Clickable mają teraz osobny parametr
enabled. Niektóre parametry w przypadku elementu 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żytkowaniu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)
Zmiany powodujące niezgodność w interfejsie API ambients. Szczegółowe informacje znajdziesz w dzienniku i
Ambient<T>dokumentacji (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 był to TextDirection.ContentOrLtr/Rtl (I4e803)
Poprawka błędu: gdy w obiekcie AnnotatedString zagnieżdżone są wagi i style 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).