Interfejs tworzenia wiadomości
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Zobacz dokumentację API wszystkich pakietów do tworzenia wiadomości
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
10 lipca 2024 r. | 1.6.8 | - | 1.7.0-beta05 | - |
Struktura
Narzędzie Compose to połączenie 7 identyfikatorów grup Maven w ramach usługi androidx
. Każda grupa zawiera docelowy podzbiór funkcji, z których każda ma własny zestaw informacji o wersji.
W tej tabeli opisano grupy i linki do poszczególnych zestawów informacji o wersji.
Grupa | Opis |
---|---|
compose.animation, | Twórz animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników. |
compose.buildr | Przekształcaj funkcje @Composable i optymalizuj funkcje za pomocą wtyczki kompilatora Kotlin. |
compose.foundation | Twórz aplikacje w Jetpack Compose, używając gotowych do użycia elementów składowych, i rozbuduj podstawy, aby tworzyć własne elementy systemu. |
compose.material, | Twórz interfejsy Jetpack Compose z gotowymi do użycia komponentami Material Design. Jest to punkt wejścia wyższego poziomu w Composer, który ma dostarczać komponenty pasujące do tych opisanych na www.material.io. |
compose.material3, | Twórz interfejsy Jetpack Compose z komponentami Material Design 3, które stanowią kolejną wersję Material Design. Material 3 ma zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczne kolory, i został zaprojektowany tak, aby był spójny z nowym stylem wizualnym i interfejsem systemu na Androidzie 12. |
compose.runtime, | Podstawowe elementy składowe modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka kompilatora Compose. |
compose.ui, | Podstawowe elementy interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu. |
Deklarowanie zależności
Aby dodać zależność w Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
W pliku build.gradle
aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:
Odlotowy
dependencies { implementation "androidx.compose.ui:ui:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } 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ć Jetpack. Daj nam znać, jeśli odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.
Wersja 1.7
Wersja 1.7.0-beta05
10 lipca 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-beta05
została zwolniona. Wersja 1.7.0-beta05 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że zmiana klawiatury programowej powodowała, że
TextField
nie przyjmował danych wejściowych z nowej klawiatury, dopóki zaznaczenie nie zostanie utracone i odzyskane. - Rozwiązaliśmy problem, który powodował, że próby utrwalenia zawartości warstwy powodowały niezamierzone efekty uboczne podczas renderowania z treścią
SurfaceView
.
Wersja 1.7.0-beta04
26 czerwca 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-beta04
została zwolniona. Wersja 1.7.0-beta04 zawiera te zatwierdzenia.
Poprawki błędów
- Unikaj awarii przy pomiarze bardzo dużych linii tekstowych (np. 10 tys. znaków) (8157ab).
- Wyłącz obsługę renderowania programowego interfejsu API
GraphicsLayer
. (35ddd8) - Naprawiono poważny błąd związany z logiką trwałości warstwy. (70B13E)
- Ponowne wykorzystanie optymalizacji obiektów warstwy zostało wycofane, ponieważ spowodowało to problemy z renderowaniem. (70B13E)
Wersja 1.7.0-beta03
12 czerwca 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-beta03
została zwolniona. Wersja 1.7.0-beta03 zawiera te zatwierdzenia.
Wersja 1.7.0-beta02
29 maja 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-beta02
została zwolniona. Wersja 1.7.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zmieniono nazwę
SemanticsProperties.Editable
naIsEditable
iSemanticsPropertyReceiver.editable
naisEditable
. Właściwość jest teraz wartością logiczną i zawsze jest określana przez pola tekstowe. (I8acd8), - Zmień nazwę parametru testu porównawczego ułatwień dostępu. (I3d440)
- Zaktualizowany interfejs API do określania stylu linków:
TextLinkStyles
jest teraz częścią konstruktoraLinkAnnotation
i metodyAnnotatedString.fromHtml
(I90b2b). Usunięto równieżTextDefaults
z materiału (I5477b)
Poprawki błędów
- Zmieniono nazwę
LayoutCoordinates.introducesFrameOfReference
naLayoutCoordinates.introducesMotionFrameOfReference
, aby lepiej odzwierciedlić jej przeznaczenie. Zmieniono nazwę powiązanej funkcji, aby obliczać współrzędne na podstawie tej flagi. (I3a330)
Wersja 1.7.0-beta01
14 maja 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-beta01
została zwolniona. Wersja 1.7.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nazwa
performCustomAccessibilityActionLabelled
została zmieniona naperformCustomAccessibilityActionWithLabel
, aperformCustomAccessibilityActionWhere
naperformCustomAccessibilityActionWithLabelMatching
. (I5387f) AnnotatedString.hasEqualsAnnotations
to terazhasEqualAnnotations
(I685c0)- Zaktualizowaliśmy interfejs API pod kątem pobierania w tekście linków o tematyce Material. W tym celu usunęliśmy metody z
TextDefaults
do tworzenia tematycznychLinkAnnotations
i analizuj kod HTML za pomocą linków tematycznych. Zamiast tego dodaliśmy klasęTextLinkStyles
, która pozwala na określenie stylu linków jako parametr funkcji Text composable. (I31b93)
Poprawki błędów
- Poprawiono dodatkowe przypadki użycia związane z dynamicznym dodawaniem modyfikatorów danych wejściowych wskaźnika podczas zdarzeń 63e1504.
Wersja 1.7.0-alpha08
1 maja 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-alpha08
została zwolniona. Wersja 1.7.0-alfa08 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaje obsługę zmiennych kształtów. Funkcja
Shape#createOutline
jest obecnie obserwowana w warstwach grafiki, dlatego odczytywanie wartości stanu wewnątrz spowoduje unieważnienie po zmianie stanu, co umożliwi tworzenie bardziej wydajnych animacji kształtów. (Id1629, b/326070216) - Nazwa
isPositionedByParentWithDirectManipulation
została zmieniona naintroducesFrameOfReference
. Zwróć uwagę, że teraz efekt jest odwrotny, co oznacza, że domyślnie większość elementówLayoutCoordinates
wprowadza ramkę odniesienia. Tylko w przypadku bezpośredniej manipulacji właściwość ma wartość false (fałsz). Aby wysłać zapytanie o pozycję tylko w przypadku tych, które wprowadzają układ odniesienia, użyj funkcjipositionInLocalFrameOfReference(...)
. LubpositionInLocalLookaheadFrameOfReference
w sklepieLookaheadScope
. (Ifc5f7). LookaheadScope
interfejs API został stabilny (I21507)- Zgodnie z opiniami Rady ds. interfejsów API zmień parametr lambda działania dotyczący elementu
getScrollViewportLength
. (IBC74a) - Zaktualizowaliśmy interfejsy API interfejsu
GraphicsLayer
Outline, aby korzystać z parametrów zmiennoprzecinkowych zamiast int. W klasach wbudowanych typu przesunięcia i rozmiaru (I2fb03, b/333863462) usunęliśmy już istniejące nieokreślone stałe stałe na podstawie przesunięcia i rozmiaru.UnsetOffset/UnsetSize IntSize
- Podczas wstrzykiwania danych wejściowych myszą podczas testów zasady
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
iMouseInjectionScope.longClick()
akceptują teraz parametrbutton: MouseButton
, dzięki czemu mają one bardziej uniwersalne zastosowanie. Wartością domyślną w przypadku wszystkich metod jestMouseButton.Primary
. (I31a23, b/190493367, b/261439695) - Nazwa
onClicked
została zmieniona naonClick
w domenieLinkInteractionListener
. (Iaa35c). - Zmień nazwę
TextInclusionStrategy.isInside
naisIncluded
. Ustaw zwracany typ funkcjiParagraph/MultiParagraph#getRangeForRect()
, który nie może mieć wartości null. (I51f26)
Poprawki błędów
- Poprawiliśmy robienie długich zrzutów ekranu w przypadku przewijanych kontenerów z funkcją
reverseScrolling=true
. (I7C59c).
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano obsługę pobierania z wyprzedzeniem elementów w zagnieżdżonych obiektach
LazyLists
(np.LazyColumn
, który renderuje zagnieżdżoneLazyRows
). Ta zmiana powinna zmniejszyć liczbę klatek podczas przewijania w przypadku tych elementów typuLazyLists
. Domyślną implementacją jest pobieranie z wyprzedzeniem pierwszych 2 zagnieżdżonych elementów, ale to działanie można kontrolować przez nowe interfejsy APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
iLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Wersja 1.7.0-alpha07
17 kwietnia 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-alpha07
została zwolniona. Wersja 1.7.0-alfa07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Usługa
ClickableText
została oznaczona jako wycofana. Aby dodać linki do tekstu, utwórz poleAnnotatedString
z elementemLinkAnnotation
odpowiadającym linkowi i przekaż wartośćAnnotatedString
do funkcji tworzenia tekstu. (I34d4b, b/323346994) - Przedstaw
ViewConfiguration.HandwritingGestureLineMargin
do obsługi gestów pisma odręcznego. Obsługuj gestJoinOrSplit
w przypadku aplikacjiBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
iFocusProperties.exit
nie są już eksperymentalne.FocusDirection.Enter
iFocusDirection.Exit
nie są już eksperymentalne.FocusRequester.Cancel
nie jest już 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, w których ich elementy podrzędne zostały umieszczone za pomocą funkcjiPlaceable.PlacementScope.withDirectManipulationPlacement
. Podobnie szablon, który często zmienia położenie swoich elementów podrzędnych, może teraz umieszczać je za pomocą elementuwithDirectManipulationPlacement
(np. domyślnie zaimplementowane przewijanie). Zwiększa to intuicyjność animacjiapproachLayout
, umożliwiając rozróżnianie przesunięcia i zasady bezpośrednio przy animowaniu sposobu animacji. (I60ec7). - Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
LazyColumn
będzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)- Źródła „Przeciągnij i przesunięcie” (
NestedScroll
) zostały zastąpione przez regułyUserInput
iSideEffect
, aby uwzględnić rozszerzoną definicję tych źródeł, do których teraz należą animacje (efekt boczny) oraz pokrętło myszy i klawiaturę (UserInput
). (I40579) ApproachLayoutModifierNode
iModifier.approachLayout
są teraz stabilne. Zastąpiły je odpowiednio nowe wersjeisMeasurementApproachInProgress()
iisPlacementApproachInProgress()
, które zastąpią odpowiednio stareisMeasurementApproachComplete()
iisPlacementApproachComplete()
.- Usunięto wycofany modyfikator
intermediateLayout
. (I3E91C). - Zmień nazwę rekordu
GraphicsLayer#buildLayer
, aby odzwierciedlała metody rozpoczęcia/endRecording interfejsów API opartych na liście Displaylist, takich jakRenderNode
i Picture. - Zaktualizowano
rememberGraphicsLayer
, aby korzystać z:rememberObserver
. (I312c1, b/288494724, b/330758155) - Interfejs
UrlAnnotation
został wycofany. Użyj interfejsuLinkAnnotation.Url
. Jeśli korzystasz z motywów Material Design, użyj obiektuTextDefaults
, aby utworzyć adnotację z zastosowanymi motywami Material Design (I8d180, b/323346545). - Oprócz standardowego stylu, najechania kursorem i zaznaczenia linków tekstowych dostępna jest opcja stylizacji naciśniętych linków (I5f864, b/139312671)
- Zmieniono nazwę z
String.parseAsHtml
naAnnotatedString.Companion.fromHtml
. (I43dcd) - Dodano argumenty stylu (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) i detektor interakcji z linkiem do metodyparseAsHtml
. Podczas analizowania ciągu z tagami HTML z tagami<a>
metoda tworzyLinkAnnotation.Url
dla każdego tagu i przekazuje do każdej adnotacji obiekty stylu oraz detektor interakcji z linkami. (I7c977) LinkAnnotation
przyjmuje teraz argumenty stylu oparte na stanach orazLinkInteractionListener
. Dodaj tę adnotację do elementuAnnotatedString
, aby uzyskać hiperlink. WartościfocusedState
lubhoveredState
pozwalają określić wizualną wartośćconfiguration
linków, gdy są zaznaczone lub najeżdżane kursorem. (I81ce4, b/139312671)- Pole
ImeOptions.hintLocales
nie może już dopuszczać wartości null. Jeśli chcesz przesłać pustą listę języków, użyjLocaleList.Empty
. (IC5bc4)
Poprawki błędów
- Granie obsługuje błędne/uszkodzone historyczne dane wejściowe zdarzeń (ignoruje nieprawidłowe dane przesunięcia).
- Naprawia nieoczekiwane zdarzenia wskaźnika, gdy modyfikator danych wejściowych wskaźnika jest dodawany dynamicznie przed innym modyfikatorem danych wejściowych wskaźnika podczas aktywnego strumienia zdarzeń wejściowych wskaźnika (np. między najechaniem kursorem a wyjściem po najechaniu kursorem [mysz/stylus]).
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-alpha06
została zwolniona. Wersja 1.7.0-alfa06 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano metodę
parseAsHtml
dla ciągów znaków ze stylem: umożliwia ona konwersję ciągu znaków oznaczonego tagami HTML na formatAnnotatedString
. Pamiętaj, że nie wszystkie tagi są obsługiwane, na przykład nie będzie jeszcze można wyświetlać list punktowanych. (I84d3d, I30626, b/139326648) - Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania w usłudze Compose przy użyciu oficjalnego interfejsu API Androida (
ScrollCaptureCallback
). Ta funkcja jest eksperymentalna i może obecnie nie obsługiwać wszystkich przypadków poprawnie. Z tego powodu jest ono domyślnie wyłączone. Aby wyrazić zgodę, ustaw flagęComposeFeatureFlag_LongScreenshotsEnabled
na wartość true. (I2b055, b/329296471)
Zmiany interfejsu API
- Rola
fun ClipEntry.getMetadata()
została zmieniona na:val ClipEntry.clipMetadata
. (I50155) - Usunięto funkcje
ClipboardManager.getClipMetadata
iClipboardManager.hasClip
. UżyjclipEntry.getMetadata()
, aby odczytać metadane bieżącego wpisu. Sprawdź też, czy wynik funkcjiClipboardManager.getClip
ma wartość null, czy nie, aby dowiedzieć się, czy schowek ma bieżący klip. (I50498) - Możesz teraz przekazywać obiekty
GraphicsLayer
do funkcjiplaceable.placeWithLayer()
(I1b22f) - Aby można było wyczyścić schowek,
ClipboardManager.setClip
akceptuje teraz wartość null. (I7d2e9). - Dodano identyfikatory zasobów ułatwiające ukrywanie widoków używanych jako szczegóły implementacji w narzędziach do tworzenia (I99531)
- Dodano metodę zawieszenia
GraphicsLayer#toImageBitmap
, która obsługuje renderowanie zawartości bitmapy w plikuGraphicsLayer
. To proces renderowania z akceleracją sprzętową na poziomie interfejsu API 22 lub wyższym (włącznie), który obsługuje ponad 99% urządzeń z Androidem. W przypadku interfejsu API Androida poziomu 21 następuje to w ramach renderowania programowego. (I9e114). - Metoda pomocnicza do konwertowania Androida
RectF
naComposeRect
(I39925, b/325660505) - Wszystkie parametry
KeyboardOptions
domyślnie mają teraz nieokreśloną wartość. Dodano metodęKeyboardOptions.merge
. - Nazwa
KeyboardOptions.autoCorrect
została zmieniona naautoCorrectEnabled
i ma wartość null (null), gdzie wartość null nie została określona. (Ia8ba0, b/295951492) - Wariant
BasicTextField(state)
iBasicSecureTextField
używają teraz poleceniaKeyboardActionHandler
zamiastKeyboardActions
do przetwarzania działań wykonanych przez klawiaturę programową. (I58dda)
Wersja 1.7.0-alpha05
20 marca 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-alpha05
została zwolniona. Wersja 1.7.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
- Wprowadź nowy interfejs API
GraphicsLayer
umożliwiający rejestrowanie poleceń rysowania na liście wyświetlania, a także dodatkowe właściwości wpływające na renderowanie listy wyświetlania. Pozwala to oddzielić od siebie granicę, która pozwala podzielić skomplikowaną scenę na mniejsze części, które można aktualizować osobno bez konieczności odtwarzania całej sceny. Przekształcenia w elemencieGraphicsLayer
można wykonać bez ponownego rejestrowania listy wyświetlania. W przeciwieństwie do zasadyModifier.graphicsLayer
GraphicsLayer
umożliwia renderowanie treści kompozycyjnych w innych miejscach i jest przydatne w animowanych przypadkach użycia, w których treści będą renderowane w różnych scenach.
Zmiany interfejsu API
GraphicsLayer.draw(Canvas)
nie jest już publicznym interfejsem API. Do rysowania warstwy użyj funkcji rozszerzeniaDrawScope.drawLayer(GraphicsLayer)
. (I7a7c0)- Podziel
restrictedConstraints()
na 2 metody:fitPrioritizingWidth()
ifitPrioritizingHeight()
(I6d7fd) - Wprowadzono atmosferę
HardwareCanvas
na potrzeby Androida L (I1c3b5, b/288494724) - Zaktualizowanie platformy tworzenia wiadomości, aby udostępnić kompozycję
GraphicsContext
lokalnie wraz z aktualizacją implementacji modyfikatorów Właściciel,DelegateableNode
idrawWithCache
w celu zapewnienia dostępu do funkcjiGraphicsContext
w ramach dostępu w zakresie, który automatycznie wyczyściGraphicsLayer
instancje, gdy modyfikatory zostaną wyłączone. (I64a2f, b/288494724) - Udostępniliśmy usługę
InterceptPlatformTextInput
, która ułatwia pisanie testów IME niskopoziomowych oraz innych niskopoziomowych zastosowań. UsługaPlatformTextInputTestOverride
została wycofana. (I862ed, b/322680547) - Dodano funkcję rozszerzenia
GraphicsLayer.setOutline(Outline)
. (IB81f4). - Wprowadź konstruktor funkcji
GraphicsContext
, aby utworzyć fabrykę do tworzenia instancjiGraphicsLayer
(Ib98d6, b/288494724) - Przedstawione są interfejs API
GraphicsLayer
, który zapewnia deweloperską elastyczność w rejestrowaniu poleceń rysowania, które można wykorzystać do rysowania w innym miejscu, a także do stosowania różnych efektów wizualnych. (I80245, b/288494724) - Podaj funkcję
Paragraph#getRangeForRect
, która zwraca zakres tekstu uwzględniony w danym obszarze prostokąta. (Iee516, b/325660505) - Usunięto eksperymentalne zastąpienie funkcji
BasicText
zonLinkClicked
argumentem. W przyszłości wprowadzimy zamienny interfejs API do obsługi hiperlinków. (I107d5)
Poprawki błędów
- Dodano oczekiwaną/rzeczywistą definicję interfejsu API
GraphicsLayer
, aby umożliwić przechwytywanie i ponowne odtwarzanie poleceń rysowania z opcjonalnym komponowaniem efektów wizualnych i przekształceń. Wprowadź interfejsGraphicsContext
, który będzie zawierał zależności grafiki, w tym możliwość tworzenia instancjiGraphicsLayer
i zarządzania nimi. (I4a8d6, b/288494724) - Rozwiązaliśmy problem związany z interoperacją z wyszukiwaniem z fokusem 1D, który powodował, że zaznaczenie pozostawało w obiekcie
ComposeView
umieszczonym wśród innych widoków. (I08fd4)
Treści tłumaczone przez użytkowników zewnętrznych
- Usługa
LocalLifecycleOwner
została przeniesiona z interfejsu tworzenia wiadomości dolifecycle-runtime-compose
, dzięki czemu jej pomocnicze interfejsy API oparte na Compose mogą być używane poza tym interfejsem. Dziękujemy, Jake Wharton, za pomoc. (I6c41b, b/328263448) - Konsekwentnie ujawniaj właściwości pływające uprzedzenia we wszystkich podtypach wyrównywania opartych na odchyleniach. (I69f0f, b/328088992)
Wersja 1.7.0-alpha04
6 marca 2024 roku
Usługa androidx.compose.ui:ui-*:1.7.0-alpha04
została zwolniona. Wersja 1.7.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Obsługa funkcji pisma odręcznego rysikiem w BasicTextField2 na urządzeniach z Androidem U. (I002e4)
- W tej liście zmian dodajemy działanie semantyczne
GetScrollViewportLength
, aby umożliwić przekazywanie do systemu a11y informacji o komponentach przewijanych w ramach tworzenia wiadomości. Ta lista zmian stosuje również użycie tej właściwości na przewijanych listach podstawowych. (Ic5fa2). FocusRequester.createRefs
jest teraz stabilny (I4d92c, b/261436820)- Wprowadziliśmy
DelegatableNode.requireView()
, aby umożliwić węzłom modyfikatorów uzyskanie bieżącego AndroidaView
bez lokalnego odczytu kompozycji. (I40768) - Nowy interfejs API
Path.reverse()
do odwrócenia kierunku ścieżki (I36348) - W programie
KeyboardOptions
dodanohintLocales
, aby umożliwić w narzędziuTextFields
możliwość sugerowania edytorom IME z konkretnymi językami, aby można było ustawić preferowany język. - Udostępnij właściwość
platformLocale
z metodyLocale
, która zwraca obiekt platformy, np.java.util.Locale
. (I921C6)
Wersja 1.7.0-alpha03
21 lutego 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-alpha03
została zwolniona. Wersja 1.7.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Przedstawiamy
ContextualFlowRow
i ulepszony formatFlowRow
/Column
w MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnej wersjiFlowRow
iFlowColumn
, które oprócz debiutuContextualFlowRow
iContextualFlowColumn
obejmują teraz opcje maxLine i obsługę przepełnienia. Ta aktualizacja ma na celu dostarczenie komponentów zapewniających optymalne działanie.ContextualFlow*
to idealne rozwiązanie dla dużej liczby elementów z małą konfiguracjąmaxLines
i dynamicznymi przyciskami +N „zobacz więcej”. Z koleiFlowRow
iFlowColumn
są idealne w przypadku niewielkiej liczby elementów, która nie przekracza 100 elementów. Ważne: aby zachować obecne zachowanie w funkcjachFlowRow
iFlowColumn
, w których wszystkie elementy są złożone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjowania ustawoverflow
naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. Zapoznaj się z usługamiContextualFlowRowSample
iFlowRowSample
, aby zobaczyć przykłady tych nowych funkcji w praktyce. (Ib9135, b/293577082) - Dodaj właściwość semantyczną
maxTextLength
, która powinna być ustawiona w polach tekstowych, które filtrują maksymalną dozwoloną liczbę znaków. (I24d9f, b/170648072) - Kod
Modifier.inspectable
został wycofany. Ten interfejs API doprowadzi do większej liczby unieważnień modyfikatora, dlatego odradzamy jego używanie. Zachęcamy deweloperów do wdrożenia metodyinspectableProperties()
wModifierNodeElement
, jeśli chcą oni przetestować właściwości modyfikatora dla narzędzi. (IB3236) - Nowy konstruktor dla
PopupProperties
, który zapewnia pełną kontrolę nad flagamiWindowManager.LayoutParams
. (Ibb33e, b/312485503) - Wprowadzono
DelegatableNode.requireLayoutCoordinates()
, aby umożliwić uzyskiwanie obecnej wartościLayoutCoordinates
elementuModifier.Node
bez konieczności zastępowania parametruonPlaced
i samodzielnego zapisywania współrzędnych w usłudze. (IA8657). - Wprowadzono
DelegatableNode.currentLayoutCoordinates
, aby umożliwić uzyskiwanie obecnej wartościLayoutCoordinates
elementuModifier.Node
bez konieczności zastępowania parametruonPlaced
i samodzielnego zapisywania współrzędnych w usłudze. (Iaebaa) BasicTextField2
i powiązane z nim interfejsy API w ramach pakietuandroidx.compose.foundation.text2
zostały przeniesione doandroidx.compose.foundation.text
. (I9f635)- Dodaliśmy nowy interfejs API
ApproachLayoutModifierNode
, aby umożliwić tworzenie logiki niestandardowego podejścia w jawnym węźle modyfikatora. Dodaliśmy też nowy eksperymentalny interfejs APIDeferredTargetAnimation
do animacji, których wartość docelowa jest nieznana w momencie tworzenia instancji. (I60745) - Nowe interfejsy API
Path
do wysyłania zapytań dotyczących kierunku ścieżki i wydobywania konturów zPath
. (I63d04) - Dodano punkty
PathHitTest
iPath.contains(Offset)
, aby sprawdzić, czyPath
zawiera określony punkt. (I3b218) - Obiekt
TextLayoutResult
udostępnia teraz metodęgetLineBaseline(lineIndex)
. Umożliwia to odczytywanie punktu odniesienia dowolnego wiersza tekstu w uzupełnieniu do istniejących właściwościfirstBaseline
ilastBaseline
zapewniających wygodę. (Ide4e8, b/237428541) - Dodano metodę porównywania tylko adnotacji dwóch elementów typu
AnnotatedStrings
. (I32659)
Poprawki błędów
- Rozwiązaliśmy problem ze zgodnością wsteczną w funkcjach
SemanticsPropertyReceiver.performImeAction
iSemanticsActions.PerformImeAction
. (Id0528, b/322269946)
Wersja 1.7.0-alpha02
7 lutego 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-alpha02
została zwolniona. Wersja 1.7.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozwiązaliśmy problem ze zgodnością plików binarnych z pakietem
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - Konstruktor
PopupProperties
, który wykorzystuje parametrusePlatformDefaultWidth
, nie jest już eksperymentalny. (I8f8d2) - Dodano przeciążenie zasady
ComposeTestRule.waitUntil
, które powoduje uwzględnienie warunku w postaci ciągu znaków w komunikacie o przekroczeniu limitu czasu. (I9413e) - Nowy interfejs semantyczny interfejs API
unset()
do usuwania właściwości semantycznych, które zostały dodane do tego samego łańcucha modyfikatorów. Nowa właściwość semantycznaisOpaque
. (I8c583, b/317966058, b/246056649) - Usunięto metodę
originalEventPosition
z metody kopiowania w publicznym interfejsie APIPointerInputChange
. (I7 zwierzę)
Poprawki błędów
- Naprawiliśmy błąd a11y, który umożliwiał klikanie elementów innych niż karty i przyciski bez opcji. (I2181C)
VelocityTracker
będzie mieć teraz domyślną poprawkę dotyczącą dodawania punktów. Poprawkę można nadal wyłączyć, ustawiając wartośćVelocityTrackerAddPointsFix
na Fałsz, jeśli wystąpią problemy. (Ib3877, b/269487059)- Naprawiono niezgodność wsteczną pliku binarnego w
TextStyle
iParagraphStyle
. (I179f0, b/320819734)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano nowy konstruktor
DialogProperties
bez parametrów związanych z konkretną platformą. (I45829) - Dodano nowy konstruktor
PopupProperties
bez parametrów związanych z konkretną platformą. (I9a038).
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-alpha01
została zwolniona. Wersja 1.7.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozwinięto
ClipboardManager
, dodając atrybutyClipEntry
iClipMetadata
, aby umożliwić obsługę dowolnych treści, takich jak obrazy. - Dodaje do
ui-test
interfejsDeviceConfigurationOverride
API, aby umożliwić lokalne zastępowanie działania testowanej treści, np. określenie dostępnego rozmiaru, języka, kierunku układu, skali czcionki lub motywu.
Wersja 1.6
Wersja 1.6.8
12 czerwca 2024 r.
Usługa androidx.compose.ui:ui-*:1.6.8
została zwolniona. Wersja 1.6.8 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono niespójności w skalowaniu czcionek, gdy skala czcionki jest mniejsza niż najniższa zdefiniowana tabela. W tym przypadku dokonamy interpolacji między liniową skalą 1x a najniższą zdefiniowaną tabelą, aby rozmiar czcionki zwiększał się monotonicznie wraz ze wzrostem skali. (Icbae3)
Wersja 1.6.7
1 maja 2024 r.
Usługa androidx.compose.ui:ui-*:1.6.7
została zwolniona. Wersja 1.6.7 zawiera te zatwierdzenia.
Wersja 1.6.6
17 kwietnia 2024 r.
Usługa androidx.compose.ui:ui-*:1.6.6
została zwolniona. Wersja 1.6.6 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawia rzadką awarię
BasicTextField
.
Wersja 1.6.5
3 kwietnia 2024 r.
Usługa androidx.compose.ui:ui-*:1.6.5
została zwolniona. Wersja 1.6.5 zawiera te zatwierdzenia.
Wersja 1.6.4
20 marca 2024 r.
Usługa androidx.compose.ui:ui-*:1.6.4
została zwolniona. Wersja 1.6.4 zawiera te zatwierdzenia.
Wersja 1.6.3
6 marca 2024 roku
Usługa androidx.compose.ui:ui-*:1.6.3
została zwolniona. Wersja 1.6.3 zawiera te zatwierdzenia.
Wersja 1.6.2
21 lutego 2024 r.
Usługa androidx.compose.ui:ui-*:1.6.2
została zwolniona. Wersja 1.6.2 zawiera te zatwierdzenia.
Wersja 1.6.1
7 lutego 2024 r.
Została udostępniona aplikacja 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ą w funkcjach
SemanticsPropertyReceiver.performImeAction
iSemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946) - Układy zwracają teraz błąd podczas pomiaru, gdy zwracany jest nietypowo duży rozmiar. Ten rodzaj błędu występuje zwykle wtedy, gdy pomiar bezpośrednio używa ograniczeń maksymalnych bez sprawdzania funkcji
Constraints.Infinity
. Sprawdzanie pomoże programistom znaleźć problemy z niewłaściwym rozmiarem układu zamiast z układem, który go zawiera. (I339a9)
Wersja 1.6.0
24 stycznia 2024 r.
Usługa androidx.compose.ui:ui-*:1.6.0
została zwolniona. Wersja 1.6.0 zawiera te zatwierdzenia.
Wersja 1.6.0-rc01
10 stycznia 2024 r.
Usługa androidx.compose.ui:ui-*:1.6.0-rc01
została zwolniona. Wersja 1.6.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Zoptymalizowana implementacja grafiki wektorowej w celu poprawy wydajności przez ograniczenie dodatkowych zmian kompozycji.
Wersja 1.6.0-beta03
13 grudnia 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-beta03
została zwolniona. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.
Nowe funkcje
- Teraz można odłączyć instancję
LayoutCoordinates
bez odłączania węzła. Chroń się przed tym w inspektorze układu tworzenia (If693).
Poprawki błędów
PlatformImeOptions
to teraz konkretna klasa, a nie interfejs. (If40a4).- Naprawiliśmy dodatkowe zmiany kompozycji w dół, które występowały, gdy wartości
LocalSoftwareKeyboardController
iLocalTextInputService
były podawane przy każdym ponownym skomponowaniu elementu głównego. (I42190, b/310510985)
Wersja 1.6.0-beta02
29 listopada 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-beta02
została zwolniona. Wersja 1.6.0-beta02 zawiera te zatwierdzenia.
Wersja 1.6.0-beta01
15 listopada 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-beta01
została zwolniona. Wersja 1.6.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Modyfikator
DragAndDropTarget
bezpośrednio przejmuje teraz elementy odbierająceDragAndDropTarget
i ma funkcję lambda umożliwiającą rejestrowanie sesji metodą „przeciągnij i upuść”.DragAndDropModifierNode
ma teraz 2 funkcje fabryczne. jeden do odbierania transferów, a drugi do przesyłania danych (I69481) - Zaktualizowano wartość
maximumFlingVelocity
, by była reprezentowana jako liczba zmiennoprzecinkowa. Zaktualizowaliśmy dokumentację, aby lepiej wyjaśnić działanie jednostkimaximumFlingVelocity
. (I8adc7). - Nazwa urządzenia
onDragAndDropStart
w fabryce urządzeniaDragAndDropModifierNode
została zmieniona naacceptDragAndDropTransfer
.ElementacceptsDragAndDropTransfer
został dodany do modyfikatoradragAndDropTarget
, aby można go było zaakceptować z sesji metodą „przeciągnij i upuść”. Ta funkcja lambda zwraca realną wartośćDragAndDropTarget
, jeśli interesuje Cię sesja przeciągania i upuszczania. Zastąpiły one inne lambda do przetwarzania zdarzeń przeciągania. Dodaliśmy funkcję fabrycznąDragAndDropTarget
, która umożliwia odbieranie danych z sesji przeciągania i upuszczania (Iebf3a). Usunięto
DragAndDropInfo
jako typDragAndDropModifierNode.drag
teraz zawiera parametry funkcjitransferData
, rozmiar dekoracji i przeciąganie elementów lambdaDrawScope
Funkcja
DragAndDropTarget
nie jest pojedynczą metodą abstrakcyjną, lecz udostępnia metody dotyczące konkretnych zdarzeń przeciągania i upuszczania.Nazwa
onDragAndDropEvent
w funkcji fabrycznej urządzeniaDragAndDropModifierNode
została zmieniona naonDragAndDropStart
, aby lepiej poinformować, że podana wartośćDragAndDropTarget
jest ważna tylko w przypadku danej sesji przeciągania i upuszczaniaKarta
DragAndDropEventType
została usunięta (I645b1)Nazwa
PlatformTextInputModifierNode.runTextInputSession
została zmieniona naestablishTextInputSession
. (I03cd0).Poprawia możliwe do przemierzenia nazwy interfejsów API węzłów, aby były bardziej zrozumiałe. (IA4474).
Zastąp
OriginalText
przezTextSubstitution
. (Ifa5a8).Nazwa
PlatformTextInputModifierNode.textInputSession
została zmieniona narunTextInputSession
. (IE9c6b)Elementy podrzędne elementu
SubcomposeLayout
(i układy takie jakLazyColumn
), które są zachowywane do ponownego wykorzystania w przyszłości, są uznawane za wyłączone. Wprowadzono nowy testowy interfejs APIassertIsDeactivated()
do testowania takich węzłów. Pozostałe interfejsy API domyślnie odfiltrowują wyłączone węzły. (I2ef84, b/187188981)Usunięto
FocusDirection.In
iFocusDirection.Out
, a zamiast nich używająFocusDirection.Enter
iFocusDirection.Exit
(I2f660)Interfejsy API Material
SwipeToReveal
(w przypadku kart i elementów) do tworzenia tych przedziałów korzystają teraz z interfejsu API opartego na przedziałach (zgodnie z zaleceniem funkcji Compose), a nie instancji opartych na klasach danych. Jest to niezwykła zmiana. Przykłady korzystania z nowego interfejsu API znajdziesz w prezentacji i przykładowym kodzie. (IA8943).Konstruktor
FontStyle(int)
został wycofany. Zamiast niego użyj konstruktoraFontStyle.Normal
lubFontStyle.Italic
. (I66610).Zmieniono nazwę interfejsu
FontScalable
naFontScaling
(Ie804a)
Poprawki błędów
SoftwareKeyboardController.show()
nie będzie już pokazywać klawiatury oprogramowania, jeśli nie będzie zaznaczony edytor tekstu. (I2165a, b/301477279)- Zdarzenia dotyczące sprzętowego klawisza zwiększania w przypadku kluczy, które nie otrzymały zdarzenia w dół w tym samym widoku tworzenia wiadomości, będą teraz ignorowane. (Ib37b4, b/305518328)
- Dodano obsługę mechanizmu renderowania dla gradientu automatycznego w
ArcLine
. (I4d5bb) - Zaimplementuj kod równa się i kod skrótu dla funkcji
PageSize.Fixed
. (Ie3ede, b/300134276) - Napraw problem ze zgodnością plików binarnych ze zmianą wstawienia okna (Iee695)
- Usuń podstawową warstwę materiałową z elementu Material3/przycisku, ponieważ bez niego mikrotesty porównawcze wykazują lepszą skuteczność. (I55555)
- Do tworzenia zegarów testowych i ramek będą teraz używane jednostki
TestDispatcher
przekazane w ramach testóweffectContext
do tworzenia wiadomości. (IA7178).
Wersja 1.6.0-alpha08
18 października 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-alpha08
została zwolniona. Wersja 1.6.0-alfa08 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zmieniono nazwę funkcji lambda
onDrawDragShadow
w elemencieModifier.dragAndDrawSource
nadrawDragDecoration
, a parametr rozmiaruDragAndDropInfo
nadragDecorationSize
. (Id0e30, b/303904810) - Przedstaw
SemanticsNodeInteraction.isDisplayed()
iSemanticsNodeInteraction.isNotDisplayed()
, aby sprawdzić, czy pasujący węzeł jest widoczny, bez potwierdzania go. (I2c196, b/302100809) - Wprowadzono specjalną wartość
Unspecified
w polachTextAlign
,TextDirection
,Hyphens
iLineBreak
w polachParagraphTextStyle
, aby zastąpićnull
. Ponieważ klasy te są klasami wbudowanymi, unikamy umieszczania wartości null w polu Nieokreślone, unikamy stosowania pól typu prostego. Zaktualizowaliśmy konstruktory, metody pobierania i inne metody w styluTextStyle
oraz w stylu akapitu, aby akceptować wspomniane parametry jako typy inne niż zero. (I4197e, b/299490814) - Dodaj przeciążenie
GoogleFont
do odczytu elementuGoogleFont
z XML. (If8f59). - Zmienił(a) rolę
LoremIpsum
PreviewParameterProvider
w zajęcia otwarte. (I41bf5, b/266918816, b/300116360)
Poprawki błędów
FontFamilyResolver
używa terazDispatchers.Main
do obsługi zarządzania pamięcią podręczną. (IE8dd9)- Obecnie
AndroidViewBinding
synchronicznie usuwaFragment
instancje powiększone przez uwzględnienieFragmentContainerView
w układzie jako części elementuonRelease
za pomocą parametrucommitNow
(zamiast funkcjicommit
, z której korzystał wcześniej). Naprawia to więc problemy z metodą edycji na żywo polegającą na zastępowaniu kompozycji po wprowadzeniu zmian. (I58fbf)
Wersja 1.6.0-alpha07
4 października 2023 roku
Usługa androidx.compose.ui:ui-*:1.6.0-alpha07
została zwolniona. Wersja 1.6.0-alfa07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wprowadziliśmy
PlatformTextInputMethodTestOverride
do testowania pisania testów w niestandardowych edytorach tekstu. (Id159b). - Dodaje modyfikator
dragAndDropSource
, który będzie uruchamiać sesje przeciągania i upuszczania, oraz modyfikatordragAndDropTarget
do odbierania sesji metodą „przeciągnij i upuść”. (Ib7828, b/286038936) - Dodano kolekcje
ColorList
iColorSet
, które pozwalają uniknąć alokacji. (I744bd) - Dodano tymczasową flagę
DisableNonLinearFontScalingInCompose
, aby wyłączyć nieliniowe skalowanie czcionek. DodajDisableNonLinearFontScalingInCompose = true
do testów, jeśli potrzebujesz czasu na ich wyczyszczenie. Ta flaga zostanie usunięta z interfejsu Compose w wersjach 1.6.0-beta01. (IC9486)
Poprawki błędów
- Zoptymalizowano analizowanie elementów rysowalnych wektorów XML. (Ibb015),
Wersja 1.6.0-alpha06
20 września 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-alpha06
została zwolniona. Wersja 1.6.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodatkowe optymalizacje ikon Material. (I3E08D)
- Dodano możliwość poruszania się w górę i w dół drzewa modyfikatora w celu znalezienia podobnych węzłów. (I2d234).
- Dodano wywołanie zwrotne
onRestoreFailed()
do modyfikatorafocusRestorer()
(Ie1d43) - Do różnych interfejsów API grafiki dodano adnotacje Androidax, które określają
ColorInt
,FloatRange
,IntRange
,Size
i inne. (Id65c8, b/290950582) - Dodaj
showSystemUi=true
do definicji kategoriiPreviewScreenSizes
(Ib61d3)
Zmiany w działaniu
- Funkcja tworzenia wiadomości używa teraz nieliniowego skalowania czcionek, aby poprawić czytelność i dostępność. Gdy skala czcionki w ustawieniach systemowych przekracza 100%, rozmiar małego tekstu jest normalnie powiększony, a już już duży – tylko trochę. Ponadto wysokość wierszy określona w SP będzie automatycznie dostosowywana do zamierzonej wysokości skali 100%. Aby dowiedzieć się więcej, zapoznaj się ze sprawdzonymi metodami skalowania czcionek (I11518).
Wersja 1.6.0-alpha05
6 września 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-alpha05
została zwolniona. Wersja 1.6.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Włącz przechwytywanie treści w usłudze
AndroidComposeViewAccessibilityDelegateCompat
. (IB2969). - Prędkości przesunięcia w komponentach widoku danych, takich jak
ScrollView
iRecyclerView
, są ograniczone doViewConfiguration.ScaledMaximumFlingVelocity
. Narzędzie Utwórz zawiera teraz własną wersję funkcjimaximumFlingVelocity
, która ma teraz zastosowanie do językaDraggable
. (IBF974). - Dodaje początkowe rusztowanie, które obsługuje interfejsy API przeciągania i upuszczania platformy. (If84ce).
- Dodaj
deviceId
do kampaniiRotaryScrollEvent
(Iba3bf) - Zaktualizowano interfejs
ui-tooling
Devices API, aby uwzględnić nowsze urządzenia (Ib25b4)
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-alpha04
została zwolniona. Wersja 1.6.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano metodę dezaktywacji funkcji
ReusableComposition
, która usuwa obserwacje, ale pozostawia węzły na swoim miejscu. Dezaktywowaną kompozycję można ponownie aktywować, wywołując funkcjęsetContent
. (Ib7f31) - Dodaj interfejs
ReusableComposition
do zarządzania cyklem życia i ponownym używaniem podkompozycji. (I812d1, b/252846775) - Aplikacja
Modifier.focusGroup
została awansowana do stabilnych interfejsów API. (I7ffa3). - Do różnych interfejsów API grafiki dodano adnotacje Androidax, które określają
ColorInt
,FloatRange
,IntRange
,Size
i inne. (I70487, b/290950582) - Zaktualizowaliśmy interfejs API
ColorFilter
, aby dodać konkretne podklasy w celu lepszego sprawdzania parametrów. (I5fe29) - Wprowadź bibliotekę wear-tooling-preview, aby wyświetlić listę prawidłowych urządzeń do noszenia, których można używać w podglądach w interfejsie (Ib036e)
- Utworzono interfejs
FontScalable
do obsługi części dotyczącej skalowania czcionek w interfejsie Gęstość. (I2cf3f).
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-alpha03
została zwolniona. Wersja 1.6.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nowy typ przejścia wejścia/wyjścia, który skaluje treść na podstawie rozmiaru kontenera animowanego w animacji wejścia i wyjścia.
LookaheadScope
Funkcje kompozycyjne i interfejs są teraz stabilne. (Ifb2ce) - Dodano obsługę konfigurowania usługi
privateImeOptions
(Idb772)
Poprawki błędów
PopupPositionProvider.calculatePosition
automatycznie zaktualizuje pozycję wyskakującego okienka po zmianie stanu odczytywanego w obliczeniach. (I676a1, b/292257547)- Poprawiono pola tekstowe przedstawiające klawiaturę i można je było edytować, gdy
readOnly
ma wartość prawda. Rozwiązaliśmy też problem z klawiaturą, która nie wyświetlała się, gdy zasadareadOnly
po zaznaczeniu została zmieniona z „prawda” na „fałsz”. (I34a19, b/246909589) - Rozszerzone zastosowanie asercji globalnych w testowaniu interfejsu użytkownika. (I1f90d)
Wersja 1.6.0-alpha02
26 lipca 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-alpha02
została zwolniona. Wersja 1.6.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaliśmy interfejs lokalizatora usług, który można zaimplementować przez implementacje Kompozycji. Umożliwia on implementację Kompozycji, która przekazuje zapytania do innej usługi delegowanej do pierwotnej kompozycji. Nie powinno się tego nazywać Directy i służy do tworzenia w środowisku wykonawczym eksperymentalnych interfejsów API, które można znaleźć z opakowanych wersji kompozytora, takich jak ma to miejsce w module UI. (I296b9)
- Całkowicie zmieniony interfejs API
PlatformTextInput*
. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
iLocalSoftwareKeyboardController
nie są już eksperymentalne.LocalSoftwareKeyboardController
to teraz także prawidłowa wartośćCompositionLocal
. (I4c364)- Wersje
LookaheadLayout
iLookaheadLayoutScope
zostały wycofane w kilku wersjach i teraz usunięte. Zastępcze interfejsy API toLookaheadScope
, które mogą działać z dowolnym szablonem. (I12ac3), - Dodaliśmy
SemanticsNodeInteraction.requestFocus
, aby ułatwić śledzenie testów i ułatwić im śledzenie. (IE8722) - Dodaj eksperymentalne interfejsy API do rejestrowania globalnych asercji do wykorzystania w przyszłości na platformach testowania. (I12d77)
Poprawki błędów
- Pierwsze wywołanie zwrotne
update
funkcjiAndroidView
zostanie odroczone do momentu dołączenia widoku, a nie wywoływane po zastosowaniu kompozycji wprowadzającejAndroidView
. Rozwiązano błąd, który powodował, że wywołanie zwrotneupdate
nie było unieważnione, jeśli odczytywany stan został natychmiast zmieniony w wyniku natychmiastowego zmiany. (IE9438, b/291094055)
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
Usługa androidx.compose.ui:ui-*:1.6.0-alpha01
została zwolniona. Wersja 1.6.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Pomoc na bieżąco w tym zakresie:
LazyList
. Dzięki temu elementLazyList
w przebiegu przebiegu z wyprzedzeniem może ominąć animację (np.animację umieszczenia elementu,AnimatedVisibility
itp.) i obliczyć rozmiar i pozycję z wyprzedzeniem w przypadku wszystkich elementów podrzędnych. Po upływie tego czasu dzieciLazyList
mogą samodzielnie poruszać się w rzeczywistości, tak jak widać to na ekranie.
Zmiana działania: domyślnie parametr includeFontPadding ma wartość false (fałsz)
includeFontPadding
ma teraz wartość domyślną (21d806) w funkcji tworzenia wiadomości.
includeFontPadding
to starszy atrybut, który określa, czy w pierwszym i ostatnim wierszu tekstu ma być dodawane dodatkowe dopełnienie, aby zmieścić znaki, które mogą sięgać powyżej lub poniżej linii bazowych tekstu.
Zaktualizowanie tej wersji Compose spowoduje zmianę sposobu renderowania wszystkich tekstów w interfejsie przez usunięcie dodatkowego dopełnienia u góry pierwszego i ostatniego wiersza każdego wyświetlanego tekstu.
W zależności od wymagań interfejsu użytkownika i używanych danych dotyczących czcionek zmiany powinny być minimalne. Mogą jednak wystąpić takie blokady jak: – uszkodzony test zrzutu ekranu; W razie potrzeby napraw interfejs i ponownie wygeneruj złote obrazy. - Tekst jest nieco niewłaściwie wyrównany. Usuń wszystkie niestandardowe dopełnienia wykluczające lub dodaj dopełnienie, jeśli jest wymagane.
Możesz wyrazić zgodę na includeFontPadding
, używając tekstu PlatformTextStyle
w przypadku każdego SMS-a:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Możesz włączyć includeFontPadding
w przypadku wszystkich swoich tekstów, konfigurując style Material. Pamiętaj, że nazwy parametrów mogą się różnić w zależności od wersji M2–M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Więcej informacji o funkcji Utwórz includeFontPadding
znajdziesz w dokumentacji dla deweloperów i w tym poście na blogu.
Jeśli w związku z tą zmianą wystąpią problemy lub błędy, zgłoś błąd za pomocą narzędzia do rejestrowania problemów.
Zmiany interfejsu API
- Pomoc:
InputConnection#requestCursorUpdates
(I0c69b) - Dodano
FocusRequester.saveFocusedChild
iFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318) - Dodaj typ
ResourceResolutionException
do opakowań zgłaszanych przy próbie wczytania zasobów mapy bitowej z opisem ścieżki zasobu, której nie udało się wczytać. (I19f44, b/230166331, b/278424788) - Zoptymalizowany dostęp pod kątem wydajności i alokacji pamięci. (Iede48).
- Dodano właściwości i działania semantyczne do obsługi tłumaczenia tekstu. (I4a6bc).
- Nowa usługa w usłudze
IntrinsincMeasureScope
i jej implementacje (np.MeasureScope
), która wskazuje, czy bieżący pomiar jest przekazany dalej. (I7a812) - Zaktualizowaliśmy interfejs API
DrawScope
, aby wprowadzić możliwość ponownego kierowania renderowania na inny obszar roboczy z inną gęstością/układem i rozmiarem. - Zaktualizowano
DrawContext
, aby obsługiwał konfigurację gęstości i kierunku układu oraz umożliwiał konfigurowanie obszaru roboczego. (Ie1f9b, b/225408150) - Dodano funkcję
Paragraph#fillBoundingBoxes
do obliczania ramek ograniczających znaki. (If30ee). - Dodano zestaw typowych właściwości
MultiPreviews
(Ia5a27).
Poprawki błędów
- Dodano interfejs
FocusTargetModifierNode
, którego można używać do tworzenia niestandardowychFocusTarget
. (I9790e) - Zmieniono nazwę parametrów
fallback*
w konstruktorzeTextMeasurer
nadefault*
. (I940a5) - Nazwa
SemanticsPropertyReceiver.performImeAction
została zmieniona naonImeAction
, aSemanticsActions.PerformImeAction
naOnImeAction
. (I8E841) - Dodaje kółko myszy, aby odróżnić przewijanie myszą od przeciągania w przypadku przewijania zagnieżdżonego (w szczególności w języku
NestedScrollConnection
). (Ie57e4) - Dodano interfejs API
asComposePaint
, aby zastąpićtoComposePaint
, ponieważ zwrócony obiekt opakowuje oryginalny obiektandroid.graphics.Paint
(I22b4c). - Wycofać funkcję
SemanticsProperties.imeAction
i zastąpić ją nowym parametremSemanticsActions.performImeAction
. (I4a587) - Dodano obsługę zaznaczania za pomocą myszy. Zaznaczenie dotykowe powiększa się o poszczególne słowa lub zmniejsza po znaku. (Ic0c6c, b/180639271)
- Metody
Paragraph
, które były wcześniej używane do zgłaszaniaAssertionError
dla przesunięcia poza granicami, teraz zwracająIllegalArgumentException
, tak jak ma to miejsce w przypadkuMultiParagraph
. (I549d3, b/243338896)
Wersja 1.5
Wersja 1.5.4
18 października 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.4
została zwolniona. Wersja 1.5.4 zawiera te zatwierdzenia.
Wersja 1.5.3
4 października 2023 roku
Usługa androidx.compose.ui:ui-*:1.5.3
została zwolniona. Wersja 1.5.3 zawiera te zatwierdzenia.
Poprawki błędów
- (b/301209788) Podczas zaznaczania i wprowadzania tekstu w języku koreańskim
TextField
czasami nieprawidłowo stosowało poprzednie polecenia, co prowadziło do utraty znaków.
Wersja 1.5.2
27 września 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.2
została zwolniona. Wersja 1.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano obejście powodujące awarie, które występowały podczas uzyskiwania dostępu do interfejsu Accessibility Scroll API z wątku w tle.
- Naprawiono niepołączone węzły dodawane do drzewa semantyki.
Wersja 1.5.1
6 września 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.1
została zwolniona. Wersja 1.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiono pola tekstowe przedstawiające klawiaturę i można je było edytować, gdy
readOnly
ma wartość prawda. Rozwiązaliśmy też problem z klawiaturą, która nie wyświetlała się, gdy zasadareadOnly
po zaznaczeniu została zmieniona z „prawda” na „fałsz”. (I34a19, b/246909589)
Wersja 1.5.0
9 sierpnia 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.0
została zwolniona. Wersja 1.5.0 zawiera te zatwierdzenia.
Wersja 1.5.0-rc01
26 lipca 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.0-rc01
została zwolniona. Wersja 1.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który występował, gdy plik
SubcomposeLayout
był używany w aplikacjimovableContentOf()
.
Wersja 1.5.0-beta03
28 czerwca 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.0-beta03
została zwolniona. Wersja 1.5.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano interfejs FocusTargetModifierNode, którego można używać do tworzenia niestandardowego obiektu FocusTarget. (Ifb1d6).
- Rozwiązaliśmy problem z elementami kompozycyjnymi Okno i Wyskakujące okienko, który powodował, że rozmiar okna podrzędnego nie zmieniał się zgodnie z oczekiwaniami w przypadku funkcji
usePlatformDefaultWidth=true
. (I112ee).
Wersja 1.5.0-beta02
7 czerwca 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.0-beta02
została zwolniona. Wersja 1.5.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano interfejs API
asComposePaint
, aby umożliwić użycie instancjiandroid.graphics.Paint
w funkcji Compose
Poprawki błędów
- Dodano interfejs API
asComposePaint
, aby zastąpićtoComposePaint
, ponieważ zwrócony obiekt opakowuje oryginalny obiektandroid.graphics.Paint
(I22b4c).
Wersja 1.5.0-beta01
24 maja 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.0-beta01
została zwolniona. Wersja 1.5.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Usunięto alokacje w zmianie kompozycji, animacji kolorów i funkcji
AndroidComposeView
(Ib2bfa). - Dodaje zabawę pomocniczą
CacheDrawModifierNode()
, która umożliwia przekazywanie dostępu (Icf8f9) - Przedstawiamy właściwość
isLookingAhead
(dostępną z poziomuMeasureScope
), która umożliwia obserwowanie wyników z wyprzedzeniem i w razie potrzeby wpływ na ruch główny. (Ibf4c3). - Nowa właściwość semantyki
traversalIndex
, liczba zmiennoprzecinkowa używana do zmieniania kolejności węzłów w ramach przemierzaniaTalkBack
(niższe wartości znajdują się przed nim). (I9a81b, b/186443263) - Zmieniamy nazwę właściwości Semantyka
isContainer
naisTraversalGroup
(I121f6). ColorProducer
ma terazoperator fun invoke
zamiastproduce
(I4a9a2)- Dodaj interfejs API transformacji
Path
, aby zastosować przekształcenia translacji, skalowania i rotacji do obiektów ścieżek. (I23434, b/233772232) - Metoda metody
ColorProducer
nazywa sięproduce
. (I78bde) - Zmień nazwę
toFrameworkColorSpace
natoAndroidColorSpace
(I4f547) - Zmień nazwę
ColorLambda
naColorProducer
. (I73b1a) - Wprowadź interfejsy API umożliwiające konwersję między typami przestrzeni kolorów Androida i Compose. (Ie7db4, b/279979665)
- Dodano parametr koloru do elementu
BasicText
, aby umożliwić sprawne animowanie lub ustawianie koloru tekstu. (Iffd88, b/246961787) - Nazwa
TextRange.constrain
została zmieniona naTextRange.coerceIn
. (I31be2). - Dodano zoptymalizowaną wartość
TextStyle.merge(...)
z pełną listą parametrów. (Iad234, b/246961787) - Ustabilizowaliśmy wiele interfejsów API związanych z tekstem, w tym
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
iMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) - Usługa
PlatformTextStyle.includeFontPadding
została wycofana. Pierwotnie chcieliśmy usunąć to pole, ale z opinii wynika, że deweloperzy potrzebują tej opcji konfiguracji. Dlatego usunięcie wycofania z pola (I98e96, b/277703184) - Dodano metodę publiczną
TextRange.constrain
. (I97912) - Elementy
UrlAnnotation
w aplikacjiAnnotatedString
można teraz otwierać przy użyciu usług ułatwień dostępu takich jakTalkBack
. (If4d82, b/253292081) - Dodano działanie semantyczne
InsertTextAtCursor
w polach tekstowych. (I11ed5). - Konstruktor
LineHeightStyle.Alignment(topRatio)
jest awansowany do stabilnego interfejsu API. (I79c32, b/261565383) TextMeasurer
i powiązane z nim interfejsy API nie są już w wersji eksperymentalnej. (I74647, b/261581753)- Dodano działanie semantyczne
PerformImeAction
, które wywołuje działanie IME w węzłach edytora tekstu. (Ic606f, b/269633506) - Interfejsy API
PlatformTextInput
nie są już w wersji eksperymentalnej na Androida. (I668eb). - nazwa parametru wartości w tabeli
Enum.valueOf
została zmieniona (Ia9b89) - więcej zgłoszonych wyjątków od wartości enum (I818fe)
- Wprowadziliśmy nowy niskopoziomowy interfejs API
PlatformTextInputAdapter
do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4) - Dodaliśmy parametr
BlendMode
do metodDrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508) - Zmień nazwę
Font.MaximumAsyncTimeout
naFont.MaximumAsyncTimeoutMillis
. Tylko zmiana nazwy. (I07af5). - Zaktualizowano wartości DPI
@Preview
urządzeń referencyjnych (Id6151, b/254528382) - Dodaj do obiektu
BasicText
parametrybrush
ialpha
, aby umożliwić sprawne animowanie lub ustawianie pędzla tekstu. - Zdefiniuj wolne od pól typy lambda dla liczby zmiennoprzecinkowej, liczby zmiennoprzecinkowej, długiej, całkowitej i krótkiej w polach :ui:ui-unit (I6f18d, b/246961787)
Poprawki błędów
- Usunięto wiele przydziałów ze śledzenia prędkości wskaźnika (I26bae).
- Mniej przydziałów w zarządzaniu układami i danymi wprowadzania wskaźnika (I5333a)
- Optymalizowanie wykorzystania pamięci wektorowej i renderowania pierwszych klatek (I2f3c6)
- Usunięto przydziały podczas rysowania linii i punktów w Canvas (I9f535).
- Dodaj dokumentację dla
AndroidFont.fontVariationSettings
(I7d9e2)
Treści tłumaczone przez użytkowników zewnętrznych
- Większa wydajność i mniej przydziałów w interfejsach API Vector (I906cb)
Wersja 1.5.0-alpha04
10 maja 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.0-alpha04
została zwolniona. Wersja 1.5.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
Modifier.Node
Udoskonalenia w zakresie przekazywania dostępu Dodano ulepszone przekazywanie dostępu do innych instancjiModifier.Node
zDelegatingNode
. Można to zrobić za pomocą interfejsów APIdelegate
iundelegate
. Przed tą zmianą każdy interfejs API z węzła przekazującego musiał być bezpośrednio delegowany do węzła delegowanego. Po tej zmianie interfejsy węzłów zostaną domyślnie delegowane, chyba że interfejsDelegatingNode
jednoznacznie je zastąpi. (67352bc)
Zmiany interfejsu API
- Przedstaw
NestedScrollModifierNode
, elementNestedScroll Modifier.Node
, do którego można przekazać dostęp. (I69513) - Dodano parametry
onReset
ionRelease
do funkcji kompozycyjnejAndroidViewBinding
, ponieważ jest to odbicie lustrzane kompozycyjnegoAndroidView
i włączono obsługę ponownego użycia widoku przy użyciu funkcjiViewBinding
. (I00b1e, b/276802519) - Zaktualizowaliśmy interfejs Compose Path API, aby umożliwić obsługę operacji przewijania do tyłu, aby wspierać przypadki częstego manipulacji ścieżką z szybszym wykorzystaniem. (I7B797)
- Dodano zoptymalizowaną wartość
TextStyle.merge(...)
z pełną listą parametrów. (Iad234, b/246961787) - Ustabilizowaliśmy wiele interfejsów API związanych z tekstem, w tym
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
iMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) - Usługa
PlatformTextStyle.includeFontPadding
została wycofana. Pierwotnie chcieliśmy usunąć to pole, ale z opinii wynika, że deweloperzy potrzebują tej opcji konfiguracji. Dlatego usunięcie wycofania z pola (I98e96, b/277703184)
Poprawki błędów
- Naprawiono regresję polegającą na tym, że w polach tekstowych w oknach, które nie zostały utworzone przez funkcję kompozycyjną
Dialog
, nie wyświetlała się klawiatura. (I82551, b/262140644)
Wersja 1.5.0-alpha03
19 kwietnia 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.0-alpha03
została zwolniona. Wersja 1.5.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Nowe domyślne zachowanie dla funkcji
SubcomposeLayout
wLookaheadScope
:SubcomposeLayouts
, które nie mają przedziałów warunkowych (np.TabRow
,Scaffold
,BoxWithConstraints
itp.), teraz dobrze współdziałają z animacjami typu „Spojrzenie w górę”.
Zmiany interfejsu API
- Nowa domyślna wartość
intermediateMeasurePolicy
, która wykorzystuje ponownie zasadę pomiaru z przebiegu z wyprzedzeniem, zezwala podtypomSubcomposeLayout
bez przedziałów warunkowych, takim jakScaffold
,TabRow
iBoxWithConstraints
, domyślnie na współpracę z podglądem z wyprzedzeniem. (Id84c8). - Rekompozytor utworzony dla okna Androida będzie teraz blokować wywołania
withFrameNanos
, a nie całą kompozycję, gdy otrzyma powiadomienieON_STOP
. Oznacza to, że okna powiązane z zatrzymanymi działaniami będą nadal ponownie komponować się w przypadku zmian danych, ale animacje lub inne wywołanie elementuwithFrameNanos
będą blokowane. (Id9e7f, b/240975572) - Zmienia wersję
motionEventSpy
na wersję stabilną. (Ic5ec4, b/261560988) - Dodano metodę publiczną
TextRange.constrain
. (I97912) - Interfejs
PlatformTextStyle.includeFontPadding
nie jest już wycofany, aby zachęcić deweloperów do korzystania z tego interfejsu API zgodności do przełączania i testowania ustawieniaincludeFontPadding
false (fałsz). (I98e96, b/277703184)
Wersja 1.5.0-alpha02
5 kwietnia 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.0-alpha02
została zwolniona. Wersja 1.5.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nowy interfejs API
SubcomposeLayout
, który wymaga dodatkowej zasady dotyczącej pomiarów pośrednich w zakresie obsługi logiki pomiaru/układu podczas animacji opartych na Lookerze. (I017d3) - PointerInput jest teraz leniwy i korzysta z modułu Modifier.Node, aby zwiększyć wydajność (dowiedz się więcej o drobnej zmianie w działaniu). (15 dab9).
- Zmienia eksperymentalne interfejsy API na stabilne z kluczowymi zdarzeniami. (I9c7d8, b/261566839, b/261567368)
- Zmienia eksperymentalne interfejsy API na stabilne w
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749) - Dodaje sposób tworzenia instancji
SuspendingPointerInputModifierNode
na potrzeby bardziej złożonych implementacjiModifier.Node
. (IC4933). - Elementy
UrlAnnotation
w aplikacjiAnnotatedString
można teraz otwierać przy użyciu usług ułatwień dostępu takich jakTalkBack
. (If4d82, b/253292081) - Dodaliśmy interfejs API przechwytujący klucze sprzętowe przed ich wysłaniem do klawiatury programowej (I4f4c6, b/186800395)
- Dodano działanie semantyczne
InsertTextAtCursor
w polach tekstowych. (I11ed5). - Działania testowe związane z tekstem (np.
performTextInput
) będą teraz wymagać fokusu bezpośrednio, korzystając z działania semantycznego, zamiast klikać pole. (I6ed05).
Poprawki błędów
- Czynności testowe związane z tekstem wymagają teraz włączenia pól tekstowych. (IAb328)
Wersja 1.5.0-alpha01
22 marca 2023 r.
Usługa androidx.compose.ui:ui-*:1.5.0-alpha01
została zwolniona. Wersja 1.5.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Modifier.middleLayout nie wymaga teraz jawnego parametru LookaheadScope. Blok wskaźników w interfejsie pośredniczącym ma IntermediateMeasureScope jako odbiornik, co zapewnia wygodne w obsłudze funkcje CoroutineScope, LookaheadScope i MeasureScope.(Ibe2e5).
- Układ LookaheadLayout został zastąpiony przez LookaheadScope, który nie jest już szablonem. Dzięki temu zawartość chid w LookaheadScope może być bezpośrednio kontrolowana przez zasadę MeasurePolicy elementu nadrzędnego. (Ibe2e5).
- Dodaje obiekt
Modifier.Node#coroutineScope
, aby umożliwić modyfikatorowi.Węzłym uruchamianie współrzędnych. (I76ef9). - Pozwól Modifier.Nodes na odczyt elementu CompositionLocals, implementując interfejs CompositionLocalConsumerModifierNode. (IB44df)
- Rozpowszechnianie klasy @Wycofane do właściwości. (I882d1)
Wersja 1.4
Wersja 1.4.3
3 maja 2023 r.
Usługa androidx.compose.ui:ui-*:1.4.3
została zwolniona. Wersja 1.4.3 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że interfejs
AndroidView
mógł nie być prawidłowo rozłożony w przypadku użycia z określonymi modyfikatorami. (I4dc77, b/274797771) - Naprawiliśmy błąd w funkcji wyszukiwania skupionego w 2D, który wpływał na menu w
DropDown
(b/276811828). - Naprawiliśmy błąd we właściwościach wejścia/wyjścia niestandardowego zaznaczenia, które uruchamiały blok wejścia/wyjścia tylko przy pierwszym wywołaniu funkcji lambda (b/277234245).
- Naprawiono regresję w systemie ostrości, która powodowała awarię podczas odczytu pola
focusProperties
. (b/271324781, b/274897776)
Wersja 1.4.2
19 kwietnia 2023 r.
Usługa androidx.compose.ui:ui-*:1.4.2
została zwolniona. Wersja 1.4.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że usługa
AndroidView
nie wykorzystywała poprawnie swoich modyfikatorów, co mogło powodować nieoczekiwane działanie i awarie. (Ib67ee, b/275919849) - Naprawiono regresję, która powodowała, że w polach tekstowych w oknach nieutworzonych przez funkcję kompozycyjną
Dialog
(I82551, b/262140644) nie wyświetlała się klawiatura.
Wersja 1.4.1
5 kwietnia 2023 r.
Usługa androidx.compose.ui:ui-*:1.4.1
została zwolniona. Wersja 1.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z atrybutem
ParentDataModifier
, który nie wpływa na usługęAndroidView
(b/274797771)
Wersja 1.4.0
22 marca 2023 r.
Usługa androidx.compose.ui:ui-*:1.4.0
została zwolniona. Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 1.3.0
- Dodano nowy interfejs API
PinnableContainer
, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane, gdy znajdą się poza zakresem. Na przykładModifier.focusable()
używa tego mechanizmu do przypinania aktualnie zaznaczonego elementu. (Ib8881, b/259274257, b/195049010) - System zaznaczania został przepisany za pomocą nowych eksperymentalnych interfejsów API
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/25}b/25184 - Dodano we właściwości semantyki
IsContainer
na platformach. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia między elementami na podstawie semantycznego znaczenia elementów takich jak powierzchnie. (I63379) - Dodano nową rolę ułatwień dostępu
DropdownList
. W ten sposób można odtworzyć działanie funkcjiTalkBack
podczas koncentracji na elemencieandroid.widget.Spinner
. (I177e5, b/236159001) - Za pomocą
PlatformTextStyle(emojiSupportMatch)
możesz teraz opcjonalnie wyłączyć przetwarzanie emotikonów w przypadku pojedynczego akapitu. (Ia7100, b/139326806) - Testy interfejsu Android Compose będą teraz uruchamiać przekazywanie układu dla każdej klatki podczas wykonywania klatek w celu stanu bezczynności (np. za pomocą
waitForIdle
). Może to mieć wpływ na testy poszczególnych klatek animacji układu. (I8ea08, b/222093277) - W polu
TextStyle
dodano eksperymentalną funkcjęTextMotion
, która pozwala określić tekst jakoStatic(default)
lub Animowany. Użyj wartościTextMotion.Animated
, jeśli tekst ma być skalowany, tłumaczony lub obrócony za pomocą animacji. (I24dd7)
Wersja 1.4.0-rc01
8 marca 2023 r.
Usługa androidx.compose.ui:ui-*:1.4.0-rc01
została zwolniona. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano przeciążenie funkcji kompozycyjnej
AndroidView
, która akceptuje parametronReset
. Pozwala to na ponowne wykorzystanie instancji widoku danych, gdy ich węzeł w kompozycji zostanie odrzucony i ponownie użyty w zgodny sposób. Jest to szczególnie przydatne w przypadkuLazyRows
iLazyColumns
widoków danych. (I3f10d, b/230099236) - Wprowadziliśmy nowy niskopoziomowy interfejs API
PlatformTextInputAdapter
do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)
Poprawki błędów
- Działanie semantyczne typu
SetText
w narzędziuBasicTextField
spowoduje teraz zaktualizowanie bufora tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowania (np.performTextReplacement
). - Funkcje testowania tekstu
performTextClearance
,performTextReplacement
iperformTextSelection
używają terazSemanticsActions
. (I0807d, b/269633168, b/269624358)
Wersja 1.4.0-beta02
22 lutego 2023 roku
Usługa androidx.compose.ui:ui-*:1.4.0-beta02
została zwolniona. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Usunięto interfejs API
modifierElementOf()
. Zamiast tego skorzystaj z rozszerzonego połączenia bezpośrednio z usługiModifierNodeElement
. (I2256b) - Dodano nowe wywołanie zwrotne
Modifier.Node.onReset()
, które pozwala zresetować część stanu lokalnego, aby umożliwić prawidłowe obsługę zgłoszenia, gdyLayout
będzie używany ponownie (np. jako elementLazyColumn
). NaprawionoFocusTargetModifierNode
, aby prawidłowo resetować stan skupienia. (I65495, b/265201972) - Dodaliśmy parametr
BlendMode
do metodDrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508)
Poprawki błędów
- Ulepszony algorytm kolejności fokusu w ułatwieniach dostępu: na przykład słupki górne i dolne są częściej odczytywane odpowiednio jako pierwsze/ostatnie (74e9c5).
Wersja 1.4.0-beta01
8 lutego 2023 r.
Usługa androidx.compose.ui:ui-*:1.4.0-beta01
została zwolniona. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nazwa usługi
PinnableContainer.PinnedHandle.unpin()
została zmieniona narelease()
(I4667a) - Do
ComposeTestRule
dodanowaitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
iwaitUntilDoesNotExist
jako eksperymentalny interfejs API. Rozszerzyliśmy interfejs APIwaitUntil
, aby akceptował dopasowania i dowolną liczbę węzłów. Więcej informacji znajdziesz na stronieComposeTestRule
. (Ifa1b9, b/226934294) - Zmień nazwę
Font.MaximumAsyncTimeout
naFont.MaximumAsyncTimeoutMillis
. (I07af5). - Plik
GoogleFont.Provider.AllFontsListUri
został usunięty. Zamiast niego utworzono link do niego w ktdoc. (I16f29)
Poprawki błędów
- Dodaj dokumentację dla
AndroidFont.fontVariationSettings
(I7d9e2)
Wersja 1.4.0-alpha05
25 stycznia 2023 r.
Usługa androidx.compose.ui:ui-*:1.4.0-alpha05
została zwolniona. Wersja 1.4.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
icreate*ComposeRule
, które akceptują parametryCoroutineContext
. Kontekst zostanie użyty w kompozycji testowej i wszelkich wywołaniachLaunchedEffect
irememberCoroutineScope()
w kompozycji. (I10614, b/265177763) - Dodaj nowy interfejs API, aby śledzić 1 wymiarową prędkość (If5a82)
FocusRequester
jest teraz oznaczony jako@Stable
. (I580ee)- Usuń adnotację eksperymentalną z konstruktora
DialogProperties
, który przyjmuje parametrusePlatformDefaultWidth
. (IC4048). - Dodano funkcję do pozycji obliczeń i tangensa w odległości na ścieżce – przy użyciu funkcji
PathMeasure.getPosition()
iPathMeasure.getTangent()
(I3b47c) - Usunięto przypadkowo ujawnioną publiczną konfigurację ustawiającą w:
PlatformParagraphStyle
. (I07f47) - Więcej typów i wartości null funkcji wbudowanych/wycofanych (I24f91)
- Dodaj
AnnotatedString.hasStringAnnotations
, aby wysłać zapytanie o adnotacje z zerowym przydziałem. (I94dfe, b/246960758) - Dodano nowe przeciążenie funkcji
TextMeasurer.measure
, która pobieraString
jako tekst. (I47b2d, b/242705342) - Interfejsy API
LineBreak
iHyphens
w TextStyle zostały przekształcone w interfejsy API stabilne. (Ic1e1d).
Treści tłumaczone przez użytkowników zewnętrznych
- Metody
notifyFocusedRect
wTextInputSession
iTextInputService
nie są ponownie wycofane. (I23a04, b/262648050)
Wersja 1.4.0-alpha04
11 stycznia 2023 r.
Usługa androidx.compose.ui:ui-*:1.4.0-alpha04
została zwolniona. Wersja 1.4.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nowy interfejs API
PinnableContainer
, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane, gdy znajdą się poza zakresem. Na przykładModifier.focusable()
używa tego mechanizmu do przypinania aktualnie zaznaczonego elementu. (Ib8881, b/259274257, b/195049010) - System zaznaczania został przepisany za pomocą nowych eksperymentalnych interfejsów API
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/25}b/25184 - Dodano we właściwości semantyki
IsContainer
na platformach. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia między elementami na podstawie semantycznego znaczenia elementów takich jak powierzchnie. (I63379) - Dodano nową rolę ułatwień dostępu
DropdownList
. Pozwala to odtworzyć działanie funkcjiTalkBack's
podczas korzystania z polaandroid.widget.Spinner
. (I177e5, b/236159001) - Za pomocą
PlatformTextStyle(emojiSupportMatch)
możesz teraz opcjonalnie wyłączyć przetwarzanie emotikonów w przypadku pojedynczego akapitu. (Ia7100, b/139326806) - Testy interfejsu Android Compose będą teraz uruchamiać przekazywanie układu dla każdej klatki podczas wykonywania klatek w celu stanu bezczynności (np. za pomocą
waitForIdle
). Może to mieć wpływ na testy poszczególnych klatek animacji układu. (I8ea08, b/222093277) - W polu
TextStyle
dodano eksperymentalną funkcjęTextMotion
, która pozwala określić tekst jakoStatic(default)
lub Animowany. Użyj wartościTextMotion.Animated
, jeśli tekst ma być skalowany, tłumaczony lub obrócony za pomocą animacji. (I24dd7)
Zmiany interfejsu API
- Zastąpiono argument
maxSize: IntSize
w funkcjidrawText
elementemsize: Size
, który będzie wbudowany z innymi funkcjamiDrawScope
.size
ma domyślną wartośćSize.Unspecified
, co nie powinno zmieniać poprzedniego działania domyślnego. (Icd27d). - Usunięto wycofany eksperymentalny konstruktor czcionek. (I8a724, b/261435386)
- Klasa danych narzędzia UI
Group
zawiera teraz poleisInline
, które wskazuje, czy grupa dotyczy wywołania wbudowanej funkcji kompozycyjnej. JeśliisInline
totrue
, wywołanie dotyczy wbudowanej funkcji kompozycyjnej. Ta wartość może jednak mieć wartość false w przypadku wywołań wbudowanych funkcji kompozycyjnych, które pochodzą z modułów skompilowanych z wersją wtyczki kompilatora kompilatora, która nie generuje wbudowanych informacji o funkcji. (IdB846) - Wiele wcześniej eksperymentalnych interfejsów API zostało przekształconych w stabilną wersję
- Interfejs Rotary Scroll Event API jest teraz stabilny (I42ad3, b/261561229)
- Interfejs API
FontVariation
jest teraz stabilny (I8779f, b/241016309) - Wszystkie konstruktory
Font()
są teraz stabilnym interfejsem API (I5948b, b/261435386) DeviceFontFamilyName
jest teraz stabilny (I8b640, b/261435386)- Konstruktor
AndroidFont
z atrybutemvariationSettings
jest teraz stabilnym interfejsem API i można go używać do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807) - Interfejs API
createFontFamilyResolver
jest teraz stabilny. Można go użyć, aby wychwytywać nieobsłużone wyjątki podczas asynchronicznego wczytywania czcionek. (Ibb481, b/261435386) - Interfejs API
Font.loadingStrategy
jest teraz stabilny. (I5937c, b/261435386) - Interfejs API
GoogleFont
jest teraz stabilny. (Ic90b0, b/261435386) TextUnit(float, TextUnitType)
to teraz stabilny interfejs API. (I90c84, b/261561612)pluralStringResource
to teraz stabilny interfejs API. (I09849, b/261439703)
Wersja 1.4.0-alpha03
7 grudnia 2022 r.
Usługa androidx.compose.ui:ui-*:1.4.0-alpha03
została zwolniona. Wersja 1.4.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Usuwam plik
ExperimentalComposeUiApi
z kampaniiPointerIcon
(I23af8) - Przedstaw działania ułatwień dostępu na stronie:
PageUp
,PageDown
,PageLeft
,PageRight
. Pamiętaj, że są one dostępne tylko w interfejsie API 29. (Ida4ab). - Widok parametrów
rememberNestedScrollConnection
został zmieniony z widoku głównego na widok hosta. (IA5200). - Dodano interfejs API modyfikatora do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych (I2ba9d, b/203141462).
- Używany w
Clickable
do prawidłowego opóźnienia interakcji polegającej na naciśnięciu, gdy gesty mogą stać się zdarzeniami przewijania. - Naprawiono błąd
Clickables
w zakresie nieprawidłowego opóźniania echa w przypadku użycia wewnątrz elementuScrollable ViewGroup
. - Zaktualizowaliśmy panele i panele, tak aby prawidłowo opóźniały naciśnięcia, gdy gesty mogą stać się zdarzeniami przewijania.
- Zmieniliśmy nazwę
CompositingStrategy.Always
naOffscreen
, by wskazać, że obiektgraphicsLayer
będzie zawsze renderowany w buforze pośrednim (I47dc1). - Przeciążenie układów z kilkoma boksami na treści jest teraz stabilne (I10566, b/248294649)
- Dodaliśmy nowe, eksperymentalne interfejsy API
PerfettoTrace.record {}
iPerfettoTraceRule
do rejestrowania logów czasu Perfetto (nazywanych też śladami systemu) w celu zbadania zachowania i wydajności testów. (I3Ba16) - W testach interfejsu użytkownika z użyciem reguły tworzenia kontynuacje wznawiane w ramach wywołań zwrotnych
withFrameNanos
będą wysyłane dopiero po zakończeniu wykonywania wszystkich wywołań zwrotnych klatek. Odpowiada to działaniu funkcji tworzenia wiadomości przy normalnym działaniu. Testy, które bazują na starym sposobie działania, mogą się jednak nie udać. Powinno to mieć wpływ tylko na kod, który bezpośrednio wywołujewithFrameNanos
lubwithFrameMillis
, i ma logikę poza wywołaniem zwrotnym przekazywaną do tych funkcji, które być może trzeba przenieść w obrębie wywołań zwrotnych. Przykłady znajdziesz w zmianach testowych animacji w tej liście zmian. - Dodano opcjonalny parametr
onPerformTraversals: (Long) -> Unit
do konstruktora i funkcji fabrycznejTestMonotonicFrameClock
w celu uruchamiania kodu po wywołaniach zwrotnychwithFrameNanos
, ale przed wznowieniem współrzędnych elementów wywołujących. (Idb413, b/254115946, b/222093277, b/255802670) - Dodano emotikon emojiCompat do tworzenia wiadomości (Ibf6f9, b/139326806)
- Dodano nowy parametr tapety w elemencie
@Preview
z obsługą dynamicznych kolorów (I9f512)
Poprawki błędów
- Powiadomienia o zastosowaniu zrzutu są teraz wysyłane, gdy
Recomposer
zakończy stosowanie zmian. (Iad6c0, b/222093277) - Wprowadzono zmiany w
captureToImage
, aby umożliwić robienie zrzutów ekranu obejmujących wiele okien. Jest to przydatne podczas testów na zrzutach ekranu, w których używane są wyskakujące okienka tworzenia wiadomości. (I169C5)
Aktualizacje zależności
- Interfejs tworzenia wiadomości i materiał tworzenia wiadomości zależą teraz od cyklu życia wersji 2.5.1. (I05ab0, b/258038814)
Wersja 1.4.0-alpha02
9 listopada 2022 r.
Usługa androidx.compose.ui:ui-*:1.4.0-alpha02
została zwolniona. Wersja 1.4.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zaktualizowano
GraphicsLayerScope
, aby udostępnić bieżący rozmiar elementugraphicsLayer
. Jest to przydatne przy obliczaniu przekształceńgraphicsLayer
jako funkcji rozmiaru kompozycyjnego. (If8c43,b/181387080) - Wprowadziliśmy
CompositingStrategy
, aby określić, kiedy należy wykorzystać warstwę komponowania pozaekranową do renderowania treścigraphicsLayer
. Automatyczne zachowuje domyślne zachowanie, które wewnętrznie korzysta z warstwy po zastosowaniu wersji alfa lub funkcjiRenderEffect/Overscroll
. Zawsze wprowadza bufor poza ekranem, w którymModulateAlpha
nie będzie wykorzystywać bufora poza ekranem, a zamiast tego będzie modulować każdą z zarejestrowanych instrukcji rysowania w tabeligraphicsLayer
. W przypadku użycia funkcjiRenderEffect/Overscroll
użycie funkcjiModulateAlpha
nadal będzie korzystać z bufora poza ekranem (I25e82, b/256382834) - Do elementu
Modifier.Node
dodano elementinvalidateSubtree()
, aby umożliwić unieważnienie całych hierarchii w układzie i rysowaniu. (I4Bd90) - Zmień wersję
rememberNestedScrollInteropConnection
na stabilną. Wprowadziliśmy możliwość przekazywania widoku głównego dorememberNestedScrollInteropConnection
. Może to pomóc w lepszym reagowaniu na ograniczenia przewijania, szczególnie w niestandardowych widokach (np.ModalBottomSheetDialog
). (I9e107). - Dodano interfejs
ObserverNode
, którego mogą używać implementacjeModifier.Node
, które muszą powiadamiać o zmianie odczytanej przez nich wartości (I5728b, b/247716483) - Do
Paint
dodaliśmy nowy konstruktor, który akceptuje natywny elementandroid.graphics.Paint
. Dodaliśmy też funkcję rozszerzeniatoComposePaint()
, która konwertuje istniejący natywny obiekt Paint do obiektu Compose Paint. (ICA91b). - Dodaj nową aplikację
FontFamily.Resolver.resolveAsTypeface
do użycia na Androidzie. (I8950B) - Dodaj
ToolingState
, aby umożliwić narzędziom do zmiany wewnętrznych stanów funkcji kompozycyjnej (Ie6614) - Narzędzia do refaktoryzacji w celu lepszej obsługi nowych dodanych animacji (I8677b)
- Dodano parametr
minLines
do obiektu Material3 Text orazTextField
iOutlinedTextField
, który umożliwia ustawienie minimalnej wysokości komponentu w zależności od liczby linii (I4af1d).
Wersja 1.4.0-alpha01
24 października 2022 r.
Usługa androidx.compose.ui:ui-*:1.4.0-alpha01
została zwolniona. Wersja 1.4.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano nową metodę (
awaitEachGesture()
) do wykrywania gestów. Jej działanie jest podobne doforEachGesture()
, ale pętla gestów działa w całości w obrębieAwaitPointerEventScope
, więc zdarzenia nie mogą zostać utracone między iteracjami. - Funkcja
forEachGesture()
została wycofana i zastąpionaawaitEachGesture()
, ponieważ umożliwia utratę zdarzeń pomiędzy gestami. (Iffc3f, b/251260206) - Wycofujemy recykling obiektów ułatwień dostępu w Androidzie. Zauważyliśmy, że zmiany w wydajności są pomijane nawet w najstarszych obsługiwanych wersjach. (I0a961)
- Dodano atrybut
DrawStyle
jako atrybut eksperymentalny do atrybutówTextStyle
iSpanStyle
, aby umożliwić rysowanie konturu. (If24b8, b/155421273) AnnotatedString.Builder
ma teraz zaimplementowaną metodękotlin.text.Appendable
. (I1a061, b/231030444)AnnotatedString.Builder
ma teraz metodęappend(AnnotatedString, start: Int, end: Int)
umożliwiającą dołączanie podłańcucha elementuAnnotatedString
i przecinających się stylów.- Dodano parametr
DrawStyle
do funkcji malowaniaParagraph
iMultiParagraph
, które umożliwiają rysowanie konturu. (Ic8102, b/155421273)
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy, że
vighnesh
dodał(a) telewizory do wersji przedpremierowej (Ie15cd)
Wersja 1.3
Wersja 1.3.3
11 stycznia 2023 r.
Usługa androidx.compose.ui:ui-*:1.3.3
została zwolniona. Wersja 1.3.3 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto awarię, która występuje w Androidzie 9, gdy aktywność zapisuje stan widoku tworzenia. (I0b755, b/260322832)
Wersja 1.3.2
7 grudnia 2022 r.
Usługa androidx.compose.ui:ui-*:1.3.2
została zwolniona. Wersja 1.3.2 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano, aby korzystała z protokołu Profobuf 3.21.8, który pozwala uniknąć alertu bezpieczeństwa w
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055)
Wersja 1.3.1
9 listopada 2022 r.
Usługa androidx.compose.ui:ui-*:1.3.1
została zwolniona. Wersja 1.3.1 zawiera te zatwierdzenia.
Wersja 1.3.0
24 października 2022 r.
Usługa androidx.compose.ui:ui-*:1.3.0
została zwolniona. Wersja 1.3.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 1.2.0
- Nowy eksperymentalny pakiet interfejsów API
LookaheadLayout
(wprowadzanie niedostępnych wcześniej zachowań w zakresie animacji) - Nowy eksperymentalny pakiet interfejsów API
Modifier.Node
(bardziej wydajna alternatywa dlaModifier.composed
) - Ulepszona obsługa wkładek okien.
- Lepsza obsługa padów kierunkowych i klawiatury sprzętowej na listach linowych.
- Maksymalna obsługiwana wysokość w oknach i wyskakujących okienkach została zmniejszona do 8 dp (zmiana działania w przypadku niektórych niestandardowych systemów projektowania – uzasadnienie w informacjach o wersji beta01)
- wiele drobnych, trwałych ulepszeń interfejsu API.
- Wiele poprawek błędów i usprawnień działania aplikacji
Wersja 1.3.0-rc01
5 października 2022 r.
Usługa androidx.compose.ui:ui-*:1.3.0-rc01
została zwolniona. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaliśmy nowe eksperymentalne łączniki w interfejsie API do obsługi automatycznego łącznika w tekście (Iaa869).
Poprawki błędów
- Czcionki
DeviceFontFamilyName
nie będą domyślnie konfigurowane ustawień wersjiwght
iital
, zamiast tego będą używać ustawienia platformy dla wczytywanych elementówTypeface
. (Ia7a6d, b/246989332) - Naprawiliśmy wyciek pamięci (
LazyColumn
) – funkcjaonModifierLocalsUpdated
nie była wywoływana z wartością domyślną w przypadku ponownego użycia modyfikatorów (b/230168389)
Wersja 1.3.0-beta03
21 września 2022 r.
Usługa androidx.compose.ui:ui-*:1.3.0-beta03
została zwolniona. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaj opcje pozwalające dostosować podział wierszy w tekście. (I86907).
- Zmieniono argument
size:IntSize
zconstraints: Constraints
w metodzieTextMeasurer.measure
, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)
Poprawki błędów
- Interfejs API
BackHandler
aktywności w AndroidX działa teraz w komponencie kompozycyjnymDialog
. (I35342)
Wersja 1.3.0-beta02
7 września 2022 roku
Usługa androidx.compose.ui:ui-*:1.3.0-beta02
została zwolniona. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaliśmy eksperymentalne przeciążenie w przypadku Układu, które akceptuje listę wielu elementów lambda dotyczących treści kompozycyjnych, co pozwala stosować różne rodzaje zagrożeń dla danych lambda dotyczących różnych treści (Ic1b4e).
Zmiany w eksperymentalnych interfejsach Focus API:
- Reguły
FocusDirection.In
iFocusDirection.Out
zostały wycofane i zastąpione elementamiFocusDirection.Enter
orazFocusDirection.Exit
. (Ia4262, b/183746982) - Dodaliśmy 2 nowe właściwości zaznaczenia oraz wychodzenia z niego, by określić niestandardowe zachowanie dla elementów
FocusManager.moveFocus(Enter)
iFocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982) - Za pomocą aplikacji
FocusRequester.Cancel
możesz teraz anulować zaznaczenie. ElementuFocusRequester.Cancel
można używać we wszystkich tych właściwościach zaznaczenia: w górę, w dół, w lewo, w prawo, dalej, wstecz, początek, koniec, Enter i zakończenie. (IB300F)
Wersja 1.3.0-beta01
24 sierpnia 2022 r.
Usługa androidx.compose.ui:ui-*:1.3.0-beta01
została zwolniona. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Refaktoryzacja węzła modyfikatora
Warstwa, która obsługuje instancje Modifier/Modifier.Element
i koordynuje ich działanie w środowisku LayoutNodes
, została w dużej mierze zmodyfikowana. Obecny refaktoryzacja nie miała wpływu na publiczny interfejs API żadnego z wielu modyfikatorów w Compose i można go traktować tylko jako zmianę w ramach 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 pozwala utrzymać stan instancji, która zostanie zachowana w cyklu życia węzła układu i zostanie przydzielana według węzła układu i przy użyciu odpowiedniego elementu Modifier.Element
, który go wygenerował.
Ogólnie rzecz biorąc, ta abstrakcja stanowi alternatywny mechanizm tworzenia modyfikatorów stanowych bez korzystania z mechaniki interfejsu API Modifier.composed
.
Ryzyko
Ta zmiana jest ściśle zgodna z wcześniejszymi wersjami i ma być zgodna wstecznie w zakresie obserwowalnego zachowania. Mimo to istnieje kilka podsystemów składających się na ten refaktoryzację, których nie dało się dotknąć, i prawdopodobnie zachowanie zmieniło się w sposób, który nie został uwzględniony w naszych testach i nie został jeszcze wykryty i naprawiony.
Zachowaj ostrożność podczas uaktualniania do tej wersji. Jeśli uważasz, że ta sytuacja coś się Tobie zmieniło, daj nam znać.
Eksperymentalne interfejsy API
Dodaliśmy różne eksperymentalne interfejsy API, wszystkie związane z nową koncepcją „węzła modyfikatora”. Modyfikator.Węzeł jest tworzony w wyniku
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
Niezwykła zmiana w działaniu
Maksymalna obsługiwana wysokość w oknach i wyskakujących okienkach została zmniejszona do 8 dp.
Maksymalna obsługiwana wysokość okien dialogowych tworzenia wiadomości i wyskakujących okienek została zmniejszona z 30 dp do 8 dp. Ta zmiana dotyczy zarówno niestandardowych okien dialogowych, jak i wyskakujących okienek z elementami interfejsu użytkownika. Ta zmiana ma na celu usunięcie błędu związanego z ułatwieniami dostępu na Androidzie w wersji starszej niż S oraz zagwarantowanie, że usługi ułatwień dostępu w tych oknach będą mogły wchodzić w interakcje z treściami w oknie lub wyskakującym okienku.
Ta zmiana będzie miała na Ciebie wpływ tylko w przypadku tworzenia implementacji niestandardowych okien lub wyskakujących okienek z wysokością wyższą niż 8 dp. Rozważ obniżenie wysokości okna lub wyskakującego okienka. Jeśli chcesz zrezygnować z tego nowego sposobu, rozważ utworzenie własnego okna lub wyskakującego okienka z ustawioną wysokością. Nie jest to zalecane, ponieważ może to negatywnie wpływać na ułatwienia dostępu. To deweloper musi zadbać o to, aby dolna część okna lub wyskakującego okienka była możliwa do interakcji i czytelna dla usług ułatwień dostępu.
Zmiany interfejsu API
- Rozwiązaliśmy problem, który powodował, że usługa
painterResource
nie aktualizowała się po zmianie konfiguracji (I58e73, b/228862715) - Funkcja
rememberTextMeasurer
nie przyjmuje już parametrówFontFamily.Resolver
,Density
aniLayoutDirection
. Użyj konstruktoraTextMeasurer
, aby podać niestandardowe wartości tych parametrów. (Ia1da3), - Dodano właściwość
DialogProperties.decorFitsSystemWindows
, która umożliwia obsługęWindowInsets
przez okna. (I57742, b/229378542) - Przeniesiono konstruktory czcionek z powrotem do oryginalnego pliku kotlin, aby zachować zgodność binarną. Bez zmian w porównaniu z ostatnią wersją stabilną. (Ieb2f3)
- Z kilku definicji „równa się” usunięto zbędny operator – nie działa to. (I6c309)
FontVariation.Setting
to zamknięty interfejs, który umożliwia przyszłe interfejsy API ograniczania zakresu. (I11021, b/143703328)- Dodaj
CompositionGroup.findParameters
doSlotTree.kt
. Dzięki temu narzędzia mogą pobierać parametry obiektuCompositionGroup
bez konieczności analizowania całej tabeli przedziałów. (I124fe)
Wersja 1.3.0-alfa03
10 sierpnia 2022 r.
Usługa androidx.compose.ui:ui-*:1.3.0-alpha03
została zwolniona. Wersja 1.3.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
LayoutCoordinates.findRootCoordinates()
jest teraz publiczny (I7fa37, b/204723384)- Dodano eksperymentalny interfejs API, aby uzyskać
LayoutCoordinates
wPlacementScope
. Dzięki temu deweloperzy wiedzą, gdzie umieścić obecny układ elementów podrzędnych względem jego położenia. (I5482b, b/238632578) - Dodano element
LayoutCoordinates.transformFrom
, aby uzyskać przekształcenie macierzy z jednego typuLayoutCoordinates
na drugi. (Ic5ab1, b/238632578) - Wycofaliśmy zasadę
SemanticsModifier.id
i przenieśliśmy identyfikator semantyczny doLayoutInfo.semanticsId
. (IAC808, b/203559524) - Czcionki zasobów obsługują teraz ustawianie ustawień odmian czcionek (API w wersji 26 lub nowszej). (I900dd, b/143703328)
- Obsługa zmiennych czcionek w
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Konstruktory czcionek akceptują teraz listę elementów
FontVariation.Setting
do konfigurowania czcionek zmiennych na urządzeniach O+. (I11a9d, b/143703328) - Dodaj interfejs API
FontVariation
do definiowania i używania czcionek zmiennych. (I3c40c, b/143703328) - Konstruktor
LineHeightStyle.Alignment
jest teraz publiczny (eksperymentalny) (I4bbbe, b/235876330) - Akapit jest teraz zdefiniowany w przypadku Androida i komputerów. (Id387e, b/239962983)
- Akapit interfejsu jest teraz zapieczętowanym akapitem interfejsu. Nie ma możliwości użycia podklasyfikacji akapitu. Jeśli ta zmiana Cię dotyczy, zalecamy skontaktowanie się z nami. (If5247, b/239962983)
- Usunięto adnotacje eksperymentalne z
PlatformTextStyle
iLineHeightStyle
. (I64bef). - Wycofaj
TextInputService.show|hideSoftwareKeyboard
. Użyj zamiast niegoSoftwareKeyboardController
w kodzie aplikacji iTextInputSession
w kodzie zarządzania IME. (I14e4c, b/183448615) - Dodaj nowy interfejs API do istniejących typów animacji (I26179)
Poprawki błędów
- Dodano
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnieńPOST_NOTIFICATIONS
w pakiecie SDK 33 i nowszych. (IE542e, b/238790278)
Wersja 1.3.0-alfa02
27 lipca 2022 roku
Usługa androidx.compose.ui:ui-*:1.3.0-alpha02
została zwolniona. Wersja 1.3.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano nową właściwość
PointerInputChange#pressure
do pobierania informacji o ciśnieniu. (I45a5e, b/205164819) - Dodano
rememberTextMeasurer
, aby łatwo tworzyć i zapamiętywaćTextMeasurer
instancje w kompozycji. (I8d66e) Rect
,RoundRect
iMutableRect
obsługują teraz składnięin
usługi Kotlin do wywoływania funkcjicontains
. (Ie42b0, b/238642990)- Usuń niepotrzebne funkcje z
KeyInjectionScope
, ponieważ można je łatwo wdrożyć za pomocą prostszych części interfejsu API. Usunięte funkcje topressKeys
,keysDown
ikeysUp
. (I81d77) - Przekształciliśmy stałe i parametry w polu
KeyInjectionScope
, aby uwzględnić sufiks „Millis”, gdzie jednostki tych stałych i parametrów są wyrażone w milisekundach. (Iabef5). - Do elementu
EditCommand
dodano metodętoStringForLog()
, która ułatwia rozwiązywanie problemów z edytowaniem tekstu. (I53354, b/228862731) - W
DrawScope
dodaliśmy funkcję rozszerzeniadrawText
, która umożliwia rysowanie tekstu o różnych stylach w elementach kompozycyjnych i modyfikatorach działających w elemencieDrawScope
, takim jakCanvas
idrawBehind
. (I16a62, b/190787898) - Przedstaw nowy eksperymentalny interfejs API o nazwie
TextMeasurer
, który umożliwia wykonywanie dowolnych obliczeń układu tekstu i generowanie wyników identycznych jak wBasicText
, niezależnie od środowiska wykonawczego Compose. (I17101) - Dodaj
mapTree
doSlotTree.kt
. Dzięki temu narzędzia mogą zbadać obiektSlotTree
bez wcześniejszego tworzenia kopii w pamięci, tak jak robi to drzewo. W inspektorze układu zwiększa to wydajność o ok. 10. (I5e113). - Zmieniliśmy format podglądu tworzenia wiadomości tak, aby był przechowywany w binarnych plikach wyjściowych, aby umożliwić programistom pisanie i wykorzystywanie ponownie adnotacji
MultiPreview
z bibliotek. (I85699, b/233511976)
Poprawki błędów
- Przy dodawaniu zdarzeń
InputEventChange
do trackeraVelocity
będziemy teraz uwzględniać delta, a nie pozycje, co zagwarantuje, że prędkość zostanie prawidłowo obliczona we wszystkich przypadkach, nawet jeśli element docelowy jest przesuwany (Icea9d, b/216582726, b/223440806, b/227709803). - Rozwiąż problem z NPE powodowanym przez tag
AnnotatedString.toUpperCase
przy obecności adnotacji. (I0aca2, b/210899140)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
Usługa androidx.compose.ui:ui-*:1.3.0-alpha01
została zwolniona. Wersja 1.3.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nowy obiekt
LookaheadLayout
, który obsługuje przejście z wyprzedzeniem przed rzeczywistym wskaźnikiem lub układem. Pozwala to na wstępne obliczenie układu po jego zmianie, a jednocześnie umożliwia użycie obliczonego wcześniej rozmiaru lub pozycji do animowania rozmiaru i pozycji w kierunku celu, a wymiary lub układy z wyprzedzeniem mogą używać tych obliczonych wartości.SubcomposeLayouts
nie są jeszcze obsługiwane, ale zostaną udostępnione w nadchodzącej wersji. (I477f5) - Dodaj opcjonalny parametr alfa do rodzaju pędzla w atrybutach
TextStyle
iSpanStyle
, aby zmienić przezroczystość całego obiektuText
. (Ic2fac, b/234117635) - Wprowadziliśmy typ adnotacji
UrlAnnotation
i powiązane z nim metody, aby umożliwić obsługę linkówTalkBack
wAnnotatedString
. (I1c754, b/231495122) - Przeniesienie funkcji narzędziowych do środowiska wykonawczego (I4f729)
Poprawki błędów
TextLayoutResult.getLineForOffset
nie rzuca. (Idc5d6, b/235876324)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano nowy interfejs API
WindowInfo.keyboardModifiers
, aby obserwować jego stan w funkcjach kompozycyjnych lub za pomocą funkcji snapshotFlow (Icdb8a)
Wersja 1.2
Wersja 1.2.1
10 sierpnia 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.1
została zwolniona. Wersja 1.2.1 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiono wskaźnik null w inspektorze (b/237987764).
- Naprawiliśmy wyjątek przesyłania klas podczas zapamiętywania w inspektorze (b/235526153).
Wersja 1.2.0
27 lipca 2022 roku
Usługa androidx.compose.ui:ui-*:1.2.0
została zwolniona. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
Ulepszenia przemierzania ostrości:
- Za pomocą nowego podstawowego interfejsu API
BeyondBoundsLayout
działa teraz przewijanie listy leniwej z fokusem - Nowe interfejsy API dostosowywania zachowań w
FocusOrder
iFocusProperties
- Lepsze działanie klawiatury fizycznej lub pilota do telewizora
- Za pomocą nowego podstawowego interfejsu API
Nowe interfejsy API dla:
- Wgłębienia okienne
- Podstawowe elementy podstawowe do obsługi nieskończonych animacji, sterowanych gestami i animacji układu
- Możliwości usługi
GraphicsLayer
, w tymRenderEffect
Wiele poprawek błędów i usprawnień działania aplikacji
Wersja 1.2.0-rc03
29 czerwca 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-rc03
została zwolniona. 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.
Usługa androidx.compose.ui:ui-*:1.2.0-rc02
została zwolniona. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.
Wersja 1.2.0-rc01
15 czerwca 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-rc01
została zwolniona. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Interfejsy w bibliotekach tworzenia wiadomości są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1)
- Do
KeyInjectionScope
dodano funkcje wyższego rzędu służące do wstrzykiwania naciśnięć klawiszy, gdy inne klawisze są wciśnięte lub włączone. Te funkcje to m.in.withKeysDown
iwithKeysToggled
. Dodano też właściwości pozwalające sprawdzić, czy dany klawisz meta jest włączony, np.isCtrlDown
, który sprawdza, czy klawisz sterujący jest naciśnięty. Zajrzyj doKeyInjectionScope
, aby zapoznać się z dokumentacją poszczególnych funkcji. (I9f6cd, b/229831515) - Wprowadziliśmy eksperymentalną funkcję
OverscrollEffect
, która umożliwia stosowanie niestandardowych efektów dalekiego przewijania oraz przeciążeniaModifier.scrollable
, które je akceptują. - Eksperymentalna funkcja
LocalOverScrollConfiguration
została przeniesiona zfoundation.gesture
do pakietu podstawowego i ma nazwęLocalOverscrollConfiguration
(If19fb, b/204650733) - Zmień nazwę
runComposeUiTestWithoutActivity {}
narunEmptyComposeUiTest {}
, tak aby została wyrównana docreateEmptyComposeRule()
(I6fed7)
Wersja 1.2.0-beta03
1 czerwca 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-beta03
została zwolniona. Wersja 1.2.0-beta03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano użytkowników
pressKeyTimes
orazisCapsLockOn
i znajomych do grupyKeyInjectionScope
. Dodatkowo interfejs API obsługuje teraz wzorce wstrzykiwania myszą i klawiaturą, takie jak klikanie przycisku myszy przy naciśniętym klawiszu meta. (I4c8da, b/229831515) - Dodaliśmy eksperymentalną obsługę wstrzykiwania kluczowych zdarzeń. Użyj
performKeyInput
, aby wysyłać kluczowe zdarzenia lub za pomocą właściwościkey
MultiModalInjectionScope
podczas multimodalnego wprowadzania danych za pomocąperformMultiModalInput
. Dokumentację interfejsu API znajdziesz naKeyInjectionScope
. (IC5000, b/229831515) - Dodaj nowy plik
GoogleFont.Provider.AllFontsListUri
, aby pobrać kanoniczne źródło internetowe czcionek Google Fonts obsługiwane przez Androida. - Popraw komunikaty o błędach, które są ponownie wyświetlane, gdy GoogleFonts nie załaduje się podczas tworzenia wiadomości. (I0416C)
Poprawki błędów
- Przy dodawaniu zdarzeń
InputEventChange
do trackera prędkości będziemy teraz brać pod uwagę delta, a nie pozycje, co zagwarantuje, że we wszystkich przypadkach prędkość zostanie prawidłowo obliczona (I51ec3, b/216582726, b/223440806, b/227709803). - Ustawienie
Show Layout Bounds
będzie teraz stosowane do funkcji kompozycyjnych natychmiast po przełączeniu go na kafelku Szybkich ustawień bez konieczności opuszczania aktywności i ponownego dołączania do niej. (I843d5, b/225937688) - Wyszukiwanie ciągu tekstowego dotyczącego ułatwień dostępu nie uruchamia wczytywania czcionek. Wcześniej próbowano wczytywać czcionki dla języka
StyleSpans
, co prowadziło do awarii, jeśli zastąpionoFontFamily.Resolver
. (I4609D) - Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie będzie już powodować błędów.
- Argumenty
DeleteSurroundingTextCommand
iDeleteSurroundingTextInCodePointsCommand
wymagają teraz, aby argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)
Wersja 1.2.0-beta02
18 maja 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-beta02
została zwolniona. Wersja 1.2.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Ponowne wykorzystanie funkcji w innych typach podglądu (I19f39)
Poprawki błędów
- Nazwa
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
została zmieniona naDisposeOnDetachedFromWindowOrReleasedFromPool
, aby lepiej odzwierciedlić fakt, że usuwanie danych jest dokonywane, a nie tylko w momencie, gdy nie ma miejsca. (If15ca).
Wersja 1.2.0-beta01
11 maja 2022 roku
Usługa androidx.compose.ui:ui-*:1.2.0-beta01
została zwolniona. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Pierwsza wersja beta 1.2.
Zmiany interfejsu API
- Dodano eksperymentalną
BeyondBoundsInterval
, której można używać w niestandardowych implementacjach obiektuLazyList
, gdy układ elementów wykracza poza widoczne granice (Ifabfb, b/184670295) - Wersje
Modifier.composed
z kluczem są teraz stabilnym interfejsem API (Ie65e4, b/229988420) - Uprościliśmy interfejs API
rememberNestedScrollConnection
, aby umożliwić uzyskiwanie informacji o bieżącym widoku danych za pomocą lokalnych kompozycji (I67ca7) - Adnotacji
@ComposableTarget
i adnotacji oznaczonych przez@ComposableTargetMarker
można teraz używać w zakresie pliku przy użyciu prefiksu@file
. Użycie adnotacji docelowej w zakresie pliku spowoduje, że kompilator przyjmie, że wszystkie funkcje kompozycyjne w pliku są kierowane do powiązanego zastosowania. Na przykład użycie@file:UiComposable
powoduje deklarowanie, że wszystkie funkcje@Composable
są kierowane na aplikację UI tworzenia wiadomości. Funkcja, która musi kierować reklamy na innego dostawcę, musi jawnie dostarczyć adnotację znacznika docelowego miejsca docelowego dla wybranego dostawcy. (I40804) Wprowadziliśmy nowy eksperymentalny, niezależny od platformy, testowy interfejs API:
interface ComposeUiTest
ifun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, których można używać do uruchamiania testów Compose Ui bez konieczności użycia interfejsuTestRule
. Aby przeprowadzić test bez parametruComposeTestRule
, przekaż test jako lambda do metodyrunComposeUiTest
i użyj metod i elementów z zakresuComposeUiTest
odbiorcy, które są takie same jak wComposeContentTestRule
.interface AndroidComposeUiTest
ifun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
związane z Androidem zostają dodane, aby zapewnić dostęp do podstawowej aktywności, podobnie jak w przypadkuAndroidComposeTestRule
. Aby mieć jeszcze większą kontrolę, możesz utworzyć instancjęclass AndroidComposeUiTestEnvironment
samodzielnie.Implementacja na komputery to
class DesktopComposeUiTest
, ale obecnie nie są dostępne żadne funkcje uruchamiania przeznaczone na komputery.Migrację testu z
ComposeTestRule
doComposeUiTest
można wykonać w ten sposób (przykład z Androida). Od:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
Aby:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Obecnie
ComposeContentTestRule
iComposeTestRule
nie wykraczają pozaComposeUiTest
, co oznacza, że funkcji rozszerzeń zComposeUiTest
nie można jeszcze wywoływać za pomocą interfejsuTestRule
. Po przejściuComposeUiTest
na stabilny interfejs APIComposeContentTestRule
iComposeTestRule
zostaną przekształcone zComposeUiTest
. (IB4E90)Nazwa
LineHeightBehavior
została zmieniona naLineHeightStyle
Nazwa
LineVerticalAlignment
została zmieniona naLineHeightStyle.Alignment
Zmienia nazwę
LineHeightTrim
naLineHeightStyle.Trim
Domyślne wartości konstruktora z
LineHeightStyle
zostały usunięte (I582bf, b/181155707)W narzędziach
TextStyle
iSpanStyle
dodaliśmyBrush
, aby umożliwić rysowanie tekstu przy użyciu kolorów gradientowych. (I53869, b/187839528)trimFirstLineTop
trimLastLineBottom
atrybutuLineHeightBehavior
zostało zmienione w jedną wyliczeniową:LineHeightTrim
.LineHeightTrim
mają wartości 4 stanów zdefiniowane za pomocą 2 wartości logicznych:FirstLineTop
,LastLineBottom
, Oba i None (Ifc6a5, b/181155707)Dodano
LineHeightBehavior
do kolekcjiTextStyle
iParagraphStyle
.LineHeightBehavior
określa, czy wysokość wiersza jest stosowana na górze pierwszego i na końcu ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni udostępnionej przez funkcjęTextStyle(lineHeight)
.Za pomocą
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
można na przykład uzyskać działanie podobne do tego, co definiuje CSS.Konfiguracje
trimFirstLineTop
,trimLastLineBottom
działają poprawnie tylko wtedy, gdyincludeFontPadding
ma wartość fałsz. (I97332, b/181155707)Funkcje
PlatformParagraphStyle.lerp
iPlatformSpanStyle.lerp
zostały zmienione na funkcje najwyższego poziomu (I9a268)
Poprawki błędów
- Dokumentacja
PointerInputChange::copy
poprawnie stwierdza, że jest to wersja płytki. (I182f5) - Obsługuj wielokropek, gdy wysokość jest ograniczona i nie mieści się w wszystkich wierszach tekstu (Ie528c, b/168720622)
- Włączono domyślne ustawienia:
includeFontPadding
. Możesz wyłączyć funkcjęincludeFontPadding
za pomocą atrybutuTextStyle.platformTextStyle
. W najbliższej przyszłości zmienimy domyślne zachowanie, ale do tego czasu będziemy mogli lepiej zintegrować ulepszenia wysokości linii (aosp/2058653) i rozwiązać problemy z przycinaniemTextField
. (I01423, b/171394808)
Treści tłumaczone przez użytkowników zewnętrznych
- Wartość
MouseInjectionScope.scroll(delta = someDelta)
jest teraz odwrócona na Androidzie, gdy przewinie się w pionie (jeśli wartość delta jest dodatnia, przewinie się w dół) (Ifb697, b/224992993).
Wersja 1.2.0-alpha08
20 kwietnia 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-alpha08
została zwolniona. Wersja 1.2.0-alfa08 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Funkcje
pluralStringResource
zostały oznaczone jako eksperymentalne, aby umożliwić ewolucję w celu lepszego internacjonalizacji w przyszłości. (If24e4). - Akapit i wiele akapitów akceptują teraz parametr ograniczeń. Zaliczenie
Constraints.maxHeight
jest na razie niemożliwe, ale pozwoli w przyszłości na wykonywanie pewnych obliczeń, na przykład do elipsji na podstawie wysokości. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
akceptuje teraz niestandardową klasę podobną do MutableSet, która nie pozwala na dodawanie nowych elementów. (ICD314).- PointerIcon to teraz interfejs
@Stable
(I9dafe) - Częściowe wykorzystanie (pozycja w dół LUB w pozycji) zostało wycofane w funkcji
PointerInputChange
. Aby w pełni zastosować zmianę, możesz użyć poleceniaconsume()
. ParametrisConsumed
pozwala określić, czy ktoś inny wykorzystał już tę zmianę. - Teraz
PointerInputChange::copy()
zawsze tworzy płytkie kopie. Oznacza to, że po wykorzystaniu jednej z nich kopie tekstuPointerInputChange
zostaną zużyte. Jeśli chcesz utworzyć niepowiązany elementPointerInputChange
, użyj konstruktora. (Ie6be4, b/225669674) - Włącz interoperacyjność zagnieżdżonego przewijania między funkcją tworzenia a widokiem w kierunku Utwórz > Wyświetl. Oznacza to, że element nadrzędny tworzenia wiadomości będzie mógł otrzymywać zagnieżdżone delta przewijania z zagnieżdżonego widoku przewijania. (If7949, b/174348612)
- Nowy
SemanticsProperty testTagsAsResourceId
, którego można użyć, aby zapewnić zgodność Compose z testami UIAutomator zaprojektowanymi dla systemu widoku danych. (I39c20) - Wyświetlaj wszystkie dostępne wagi czcionek systemowych w Androidzie podczas korzystania z funkcji
FontFamily.SansSerif
. Spowoduje to wewnętrznie użycie zastępczych nazw czcionek takich jak bezszeryfowa-średnia w interfejsie API 21–28. Jest to zmiana działania, ponieważ w interfejsach API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992) - Instruktorzy akapitu i wielu akapitów zmienili kolejność argumentów pozycji na przed opcjonalnymi argumentami. (Idafaa)
- W
AndroidFont
jako parametr konstruktora używany jest teraz typefaceLoader. (I2C971)
Wersja 1.2.0-alpha07
6 kwietnia 2022 roku
Usługa androidx.compose.ui:ui-*:1.2.0-alpha07
została zwolniona. Wersja 1.2.0-alfa07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano nową funkcję
Snapshot.withoutReadObservation { ... }
. Umożliwia użytkownikom uruchamianie przekazywanej funkcji lambda bez subskrybowania zmian wartości stanu odczytywanych podczas tego bloku. Może być przydatna w przypadkach, gdy chcesz skorzystać z bezpiecznego zapisu/odczytu wątków bazujących na zrzutach, ale chcesz mieć możliwość odczytania wartości bez potrzeby niepotrzebnej zmiany kompozycji czy ponownych pomiarów. (I9f365, b/214054486) - Właściwość rozszerzenia
consumeWindowInsets
w systemieComposeView
umożliwia deweloperom wyłączenie używania AndroidaWindowInsets
. Umożliwia to osobneComposeViews
w hierarchii do każdego zastosowaniaWindowInsets
bez zakłócania siebie nawzajem. (I0ef08, b/220943142) - Dodano separator dziesiętny w edytorze IME jako alternatywę dla
Keyboard.Number
(KeyboardType.Decimal
). (Iec4c8, b/209835363) PointerEventType.Scroll
iPointerEvent.scrollDelta
to obecnie stabilne interfejsy API (I574c5, b/225669674)- Włącz współpracę Nested Scroll między funkcją wyświetlania i tworzeniem wiadomości na potrzeby współpracujących klas widoku danych. Oznacza to, że funkcja tworzenia może teraz wysyłać delta przewijania do elementu nadrzędnego widoku (współpracującego). (I5d1ac, b/174348612)
- Zaktualizowano
FontFamily.Resolver
, aby zintegrować system z ustawieniem ułatwień dostępu pogrubionego tekstu w całym systemie (I6c1e7) - Ciąg
Font(AssetManager, String, ...)
został wycofany i zastąpiony przezFont(String, AssetManager, ...)
. To jest eksperymentalny interfejs API. (I1c7a4). - Dodaj nowy deskryptor czcionek
Font(DeviceFontFamilyName)
do opcjonalnego wyszukiwania czcionek zainstalowanych przez system podczas łańcuchów zastępczych czcionek. (I30468, b/219754572) - Dodano tymczasową konfigurację zgodności języka
includeFontPadding
w stylu TextStyle/ParagraphStyle.includeFontPadding
można zmienić wTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Jest to tymczasowa opcja konfiguracji umożliwiająca włączenie migracji, która zostanie usunięta. (If47be, b/171394808) - Dodaj rozszerzenie
GoogleFont.Provider.isAvailableOnDevice
, aby uzyskać pomoc przy debugowaniu. (I64e31) - Dodaj konstruktor
GoogleFont.Provider
do użycia z@ArrayRes
(Ic5ee1, b/225984280) Compose GoogleFont
nazywa się terazFont(GoogleFont)
. W przeciwnym razie interfejs API pozostaje stabilny. (I125f2).
Poprawki błędów
- Dodano sprawdzanie lintowania do elementów Materiał/Scaffold, aby upewnić się, że wewnętrzne dopełnienie jest używane (Ifb111).
Wersja 1.2.0-alpha06
23 marca 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-alpha06
została zwolniona. Wersja 1.2.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano działanie semantyczne
RequestFocus
, aby wymagać zaznaczenia na celu, który można zaznaczyć. (I17b71) - Zaktualizowaliśmy analizę analizy obiektów rysowanych wektorowo, aby zapewnić obsługę automatycznego odbicia lustrzanego w celu odwrócenia treści w elemencie
VectorPainter
, jeśli obecny układ to RTL. (I79cd9, b/185760237) Zaktualizowano kolory cieni/otoczenia, aby były parametrami końcowymi klasy
Modifier.graphicsLayer
, aby zapewnić zgodność z interfejsem API (I3f864, b/160665122).W
GraphicsLayerScope
dodaliśmy domyślne implementacje dla koloru cienia/otoczenia, aby zapewnić nienaruszające zmiany w interfejsie APIDodano godzinę wydarzenia do wydarzeń RSB (Ief8ae).
Usługa
FocusOrder
została połączona z usługąFocusProperties
, afocusProperties()
ma teraz wszystkie możliwości usługifocusOrder()
. UsługiFocusOrder
ifocusOrder()
zostały wycofane. PolefocusOrder()
, które akceptuje wartośćfocusRequester
, należy zastąpić modyfikatoremfocusRequester()
w połączeniu z zasadąfocusProperties()
. Dzięki temu modyfikatory lepiej odseparują potencjalne problemy. (I601b7)Uaktualnienie zarówno
RecyclerView
, jak iCompose
spowoduje teraz znacznie większą wydajność przewijania elementów RecyclerView z widokiem tworzenia w dzieciństwie.Dodaj
ViewCompositionStrategy.Default
jako sposób uzyskania wbudowanej strategii domyślnejDodaj
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, która jest nową strategią domyślną i prawidłowo obsługuje pulę kontenerów, takich jak RecyclerView. (If7282).Dodaliśmy obsługę dodawania adnotacji do klas adnotacji przy użyciu elementu @Preview. Był to pierwszy krok do dodania funkcji podglądu łączonego. Takich adnotacji można użyć do opisania metod kompozycyjnych lub innych klas adnotacji, które można uznać za adnotacje pośrednie przy użyciu danego elementu @Preview. (I12eff)
Urządzenia referencyjne dodane do listy urządzeń na potrzeby @Preview (I071c9)
Poprawki błędów
- Zaktualizowaliśmy interfejsy API grafiki wektorowej, tak aby używały prawidłowej adnotacji @VectorComposable zamiast @UiComposable (I942bc).
- Usuń fragment tekstu z
AnnotatedString.Builder.withStyle
(If84d5)
Treści tłumaczone przez użytkowników zewnętrznych
- compose-ui: dodaj do
GraphicsLayerScope
właściwościambientShadowColor
ispotShadowColor
(I1ba1a, b/160665122) - Liczba mnoga jest teraz obsługiwana przez funkcje
pluralStringResource
. (Ib2f23, b/191375123)
Wersja 1.2.0-alpha05
9 marca 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-alpha05
została zwolniona. Wersja 1.2.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Funkcja
TextToolbar
przyjmuje teraz argumenty lambda zamiastActionCallback
. (Ib2eb9, b/197950089) - Zaktualizowano wartość null w podstawowej i kompatybilnej aplikacji, aby dopasować ją do Tiramisu DP2 (I0cbb7)
- Interfejs pomiaru ujawnia teraz właściwośćparentData (I3313f)
Modifier.onPlaced
i interfejsOnPlacedModifier
są teraz stabilne. (IB5482)- Hurra! Animacja tworzenia wiadomości obsługuje teraz ustawienie „Skala czasu trwania animacji” w Opcjach programisty. (I5a4fc, b/161675988)
- Dodano lokalny modyfikator
BeyondBoundsLayout
(If8b51, b/184670295) - Tekst: opcja includeFontPadding jest teraz domyślnie wyłączona. Problemy z przycinaniem wynikające z metody
includeFontPadding=false
są obsługiwane i nie należy stosować przycinania w przypadku wysokich skryptów. (I31c84, b/171394808)
Poprawki błędów
ComposeContentTestRule.setContent
zgłasza terazIllegalStateException
, jeśli spróbujesz ustawić treść, gdy będzie już dostępna. (I888a5, b/199631334)- Naprawiono błąd spowodowany przez zawartość schowka przy odczytywaniu ze schowka na Androidzie. (I06020, b/197769306)
- Popraw próbki przewijania RSB. (I6a596)
Treści tłumaczone przez użytkowników zewnętrznych
- Zaktualizowano, aby korzystać z współrzędnych Kotlinx w wersji 1.6.0 (I3366d)
Wersja 1.2.0-alfa04
23 lutego 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-alpha04
została zwolniona. Wersja 1.2.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
Dodano
ComposableTarget
,ComposableTargetMarker
iComposableOpenTarget
, które umożliwiają raportowanie w czasie kompilacji, kiedy funkcja kompozycyjna jest wywoływana pod kątem kierowania na aplikację, która nie została przez nią zaprojektowana.W większości przypadków adnotacje można wywnioskować dzięki wtyczce kompilatora, więc nie można używać ich bezpośrednio . Przypadki, których nie można wywnioskować, to m.in. utworzenie i użycie niestandardowego zastosowania, abstrakcyjnych funkcji kompozycyjnych (np. metod interfejsu), pól lub zmiennych globalnych, które są obiektami kompozycyjnymi (wywnioskowane są lokalne zmienne i parametry) lub podczas korzystania z funkcji
ComposeNode
albo powiązanych funkcji kompozycyjnych.W przypadku zastosowania niestandardowych funkcje kompozycyjne wywołujące funkcję
ComposeNode
lubReusableComposeNode
muszą dodać adnotacjęComposableTarget
dla funkcji i dowolnych typów parametrów kompozycyjnych lambda. Zalecamy jednak utworzenie adnotacji zawierającej adnotacjęComposableTargetMarker
, a następnie użycie oznaczonej adnotacji zamiast bezpośrednioComposableTarget
. Adnotacja kompozycyjna oznaczona kodemComposableTargetMarker
jest równoważna z adnotacjąComposbleTarget
z pełną i jednoznaczną nazwą klasy atrybutu jako parametrem zastosowania. Przykład użyciaComposableTargetMarker
znajdziesz tutaj:anroidx.compose.ui.UiComposable
. (I38f11)Font(resId, ...)
korzysta teraz ze strategii wczytywania w stabilnym interfejsie API. (Ief3d2).FontLoadingStrategy
to teraz stabilny interfejs API. (I1ee35, b/174162090)Obsługa wczytywania czcionki asynchronicznego w tekście (I77057, b/214587005)
Dodano interfejs API mostka do konwertowania niestandardowych komponentów typu
Font.ResourceLoader
na formatFontFamily.Resolver
. (IA0060).
Poprawki błędów
- Podane
FontFamily.Resolver
są przekazywane do podkompozycji, takich jak Wyskakujące okienko. - Podane
Font.ResourceLoader
są przekazywane do podkompozycji, takich jak Wyskakujące okienko. (I48fa5)
Wersja 1.2.0-alfa03
9 lutego 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-alpha03
została zwolniona. Wersja 1.2.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Metody
notifyFocusedRect
w językachTextInputSession
iTextInputService
zostały wycofane i nie będą wywoływane. Zamiast niego użyj właściwościBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Metodę
destroyDisplayListData
wprowadzono w klasie pośredniejRenderNode
(I1e659, b/216660268) - Dodano nowy interfejs API, który umożliwia wstępny pomiar elementów podrzędnych zestawu
SubcomposeLayout
. (I857ea) Dodano funkcję
movableContentOf
, która konwertuje funkcję kompozycyjnej lambda w lambdę zmieniającą jej stan i odpowiadające im węzły do dowolnej nowej lokalizacji. Gdy poprzednie wywołanie opuszcza kompozycję, stan zostaje tymczasowo zachowywany, a jeśli do kompozycji pojawi się nowe wywołanie funkcji lambda, stan i powiązane z nim węzły zostaną przeniesione do lokalizacji nowego wywołania. Jeśli nie dodasz nowego wywołania, stan jest trwale usuwany, a obserwatorzy otrzymują powiadomienia.Jeśli funkcja lambda
movableContentOf
zostanie wywołana wielokrotnie z tej samej kompozycji, dla każdego wywołania tworzony jest nowy stan i węzły, a gdy wywołania opuszczają kompozycję i dochodzą nowe wywołania, stan przenoszony jest z pierwszego wyjścia do wywołań przychodzących w kolejności, w jakiej zostały wywołane. Wszystkie stany, które nie zostały objęte nowymi wywołaniami, są usuwane na stałe. (IB4850)Usługa
FontFamilyResolver
jest teraz dostępna w aplikacjiLocalFontFamilyResolver.current
Dodano
createFontFamilyResolver(context)
icreateFontFamilyResolver(context, coroutineScope)
, aby tworzyć nowe resolvery FontFamily poza funkcją tworzenia.Akapit i kilka akapitów zajmują teraz
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
zawiera teraz resolver używany w tym układzie. Wycofano goTextLayoutResult.layoutInput.resourceLoader
, ponieważ nie jest już używany. (Id5a45, b/174162090)Obsługa asynchronicznego i opcjonalnego wczytywania czcionek z działaniem zastępczym. Ta ścieżka jest wykorzystywana przez pola Text i TextField i udostępniana przez FontFamily panelu
Obsługa wstępnego wczytywania czcionek za pomocą
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
umożliwia ustawienie globalnego kontekstu współrzędu używanego do wczytywania czcionek asynchronicznych. (I87fe8, b/174162090)Dodaliśmy
AndroidFont
, nowy niskopoziomowy interfejs API do udostępniania nowych typów deskryptorów zasobów czcionek na Androida. Dotyczy to na przykład wczytywania czcionek z backendu w odniesieniu do konkretnej aplikacji, opcjonalnego zlokalizowania czcionek wstępnie zainstalowanych na urządzeniu lub wczytywania czcionki z zasobu, który nie jest dostępny w bieżących fabrykach czcionek.Rozszerzyliśmy interfejs API
Font.ResourceLoaded
, aby obsługiwać opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy bezpośredniego korzystania z tego interfejsu API przez deweloperów aplikacji. Aby dodać nowe typy czcionek, przeczytajAndroidFont
.Funkcja rozszerzenia
Font.AndroidResourceLoader
umożliwia konstrukcję elementuFont.ResourceLoader
poza kompozycją.Dodaliśmy parametr
loadingStrategy
do czcionek opartych na zasobach, aby umożliwić ładowanie asynchroniczne, gdy czcionka zasobów odwołuje się do plików XML dostępnych do pobrania. (Ie5aea, b/174162090)Konstruktor
Typeface(FontFamily)
został wycofany. Wcześniej to rozwiązanie służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku dostępnych do pobrania czcionek to wywołanie może zostać zablokowane na 10 sekund. W zamian użyjFontFamilyResolver.preload
.Interfejs
fontResource(FontFamily): Typeface
został wycofany. Wcześniej to rozwiązanie służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast niego użyjFontFamilyResolver.preload
(If8e7c, b/174162090)Konstruktor
SubcomposeLayoutState
akceptujący obiektmaxSlotsToRetainForReuse
został wycofany. Zamiast tego wprowadziliśmy nowy konstruktor akceptującySubcomposeSlotReusePolicy
– nowy interfejs dający bardziej szczegółową kontrolę nad tym, które przedziały powinny być zachowywane do wykorzystania w przyszłości. (I52c4d)Udostępnia funkcje HSV i HSL w
Color
jako nieeksperymentalny interfejs API. Przestrzeń kolorów Oklab to teraz publiczny interfejs API. (I08fb6, b/180731008)Wycofaliśmy dyrektywę
AndroidComposeTestRule.AndroidComposeStatement
, która nie miała być dostępna w publicznym interfejsie API i w żaden sposób nie wpłynęła. (IBc46b).Zmienianie nazwy wygenerowanej wewnętrznie klasy kt (Ia0b9e, b/174162090)
Usunięto
FontLoadingStrategy.values
(I42a9d, b/174162090)Globalne narzędzie do wczytywania czcionek nazywa się teraz
FontFamilyResolver
. (I4f773, b/174162090)Użyj nowego systemu wczytywania czcionek na komputerach. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
zwracaState<Any>
(I4406c, b/174162090)
Poprawki błędów
- Pola tekstowe będą teraz znajdować się nad klawiaturą, gdy są zaznaczone, a klawiatura jest pokazana, gdy tryb szybkiego wprowadzania danych jest ustawiony na
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Komputer używa lokalnej kompozycji dla aplikacji
FontFamily.Resolver
- Wersja
FontLoader
na komputery została wycofana - Nowa fabryka urządzenia
createFontFamilyResolver
na komputerze (I6bbbb, b/174162090) - Opcja wprowadzania tekstu za pomocą klawiatury programowej nie miga już podczas przechodzenia między polami tekstowymi. (I1bf50, b/187746439)
Wersja 1.2.0-alfa02
26 stycznia 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-alpha02
została zwolniona. Wersja 1.2.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano
Modifier.onRotaryScrollEvent()
iModifier.onPreRotaryScrollEvent()
w przypadku urządzeń do noszenia z obracającym się przyciskiem (I18bf5, b/210748686) - Dodaj eksperymentalne rozszerzenie
View.createLifecycleAwareRecomposer
(I0cde6)
Treści tłumaczone przez użytkowników zewnętrznych
- Funkcja
PointerEvent.scrollDelta.y
jest teraz odwrócona na Androidzie (teraz zwraca 1 zamiast -1, gdy przechylimy kółko myszy w prawo) (Ia9811)
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
Usługa androidx.compose.ui:ui-*:1.2.0-alpha01
została zwolniona. Wersja 1.2.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wycofano:
FontFamily.canLoadSynchronously
. Nie ma ona znaczenia semantycznego. (Ica5ef). - Dodano pole tożsamości do
CompositionData
na potrzeby generowania niezmiennych identyfikatorów w inspektorze układu. (IC116e). - Do listy urządzeń z podglądem (I93232) dodano identyfikatory urządzeń z Wear OS
Aktualizacje zależności
- Teraz zależy od Kotlin
1.6.10
.
Wersja 1.1
Wersja 1.1.1
23 lutego 2022 r.
Usługa androidx.compose.ui:ui-*:1.1.1
została zwolniona. Wersja 1.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw
NullPointerException
pod adresemandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Naprawiono błąd spowodowany przez zawartość schowka przy odczytywaniu ze schowka na Androidzie. (I06020, b/197769306)
- Poprawiono RTL w
LazyVerticalGrid
(aosp/1931080, b/207510535)
Wersja 1.1.0
9 lutego 2022 r.
Usługa androidx.compose.ui:ui-*:1.1.0
została zwolniona. Wersja 1.1.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone 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 mają rozszerzać obszar układu, aby zapewnić zgodność z wytycznymi dotyczącymi ułatwień dostępu Material Design rozmiar docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu interfejs Compose Material ma takie samo zachowanie jak komponenty stylu Material Design, co zapewnia spójne zachowanie w przypadku połączenia widoków i tworzenia wiadomości. Ta zmiana zagwarantuje też, że w przypadku tworzenia UI z użyciem komponentów Compose Material, minimalne wymagania dotyczące ułatwień dostępu docelowych elementów dotykowych będą spełnione.
- Stabilna obsługa kolejki nawigacyjnej
- Przeniesienie niektórych wcześniej eksperymentalnych interfejsów API do wersji stabilnej
- pomoc dotycząca nowszych wersji Kotlin,
Wersja 1.1.0-rc03
26 stycznia 2022 r.
Usługa androidx.compose.ui:ui-*:1.1.0-rc03
została zwolniona. Wersja 1.1.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano, aby obsługiwała Material 1.1.0-rc03
Wersja 1.1.0-rc01
15 grudnia 2021 roku
Usługa androidx.compose.ui:ui-*:1.1.0-rc01
została zwolniona. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto błąd, który powodował brakujące działania związane z przewijaniem ułatwień dostępu (I7cbfb)
SemanticsNodeInteraction.captureToImage()
będzie teraz działać również wtedy, gdyHardwareRenderer.isDrawingEnabled()
ma wartośćfalse
, po włączeniu tej funkcji na czas rozmowy (Idf3d0).
Wersja 1.1.0-beta04
1 grudnia 2021 r.
Usługa androidx.compose.ui:ui-*:1.1.0-beta04
została zwolniona. Wersja 1.1.0-beta04 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizowano, aby była zgodna z platformą Kotlin
1.6.0
Zmiany interfejsu API
- Usunięto wartość null w kolumnie
androidx.core.view
(I7078a, b/204917439) - Dodaliśmy eksperymentalne interfejsy API, które umożliwiają użytkownikom przeglądanie całości danych PointerInputchange lub sprawdzanie, czy zostały wykorzystane. (I2E59D)
- Dodano obsługę zdarzeń kółka przewijania myszy w warstwie UI. (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 optymalizacji pomijania. (Ice799, b/205851704) ComposeNotIdleException
rozciąga się teraz odException
, a nie bezpośrednio zThrowable
. Pamiętaj, że oznacza to, że klauzule przechwytujące, które przechwytywały zapisException
, mogą teraz przechwytywać klauzuleComposeNotIdleException
, co wcześniej nie było możliwe. (I9c217)
Poprawki błędów
- Naprawianie elementów, które nie przesuwają się po zmianie widoczności IME. (I25f2e)
Wersja 1.1.0-beta03
17 listopada 2021 r.
Usługa androidx.compose.ui:ui-*:1.1.0-beta03
została zwolniona. Wersja 1.1.0-beta03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaliśmy nowy modyfikator Modifier.onPlaced, który umożliwia obserwowanie zmian miejsca docelowego. W związku z tym na podstawie zaobserwowanej zmiany miejsca docelowego można wprowadzić dodatkowe zmiany w przesunięciu modyfikatora podrzędnego. (I558fd).
- Usunięto
InjectionScope.flush()
iInjectionScope.dispose()
. Opróżnianie wszystkich zdarzeń i usuwanie zakresu ma teraz miejsce na końcu wywołanej metody meet*Input(), tak jak do tej pory. (I2bed8). - Usunięto
MultiModalInjectionScope.Touch
iMultiModalInjectionScope.Mouse
. Aby wstrzykiwać zdarzenia kliknięcia i myszy w przypadku gestów multimodalnych, możesz używaćMultiModalInjectionScope.touch()
iMultiModalInjectionScope.mouse()
. Oba te tryby akceptują funkcję lambda, która ma zakres odbiornika tego modalności. (Idde18).
Poprawki błędów
- Domyślna wartość właściwości
durationMillis
w poluTouchInjectionScope.swipeWithVelocity
jest teraz obliczana w taki sposób, aby można było wykonać przesunięcie palcem. (19 dB)
Wersja 1.1.0-beta02
3 listopada 2021 r.
Usługa androidx.compose.ui:ui-*:1.1.0-beta02
została zwolniona. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców w celu przewijania w celu wyświetlenia danego elementu (Ib918d, b/195353459)
- Nowe interfejsy API animacji do obsługi narzędzi. Umożliwiają one narzędziu sprawdzanie animacji i ich konfiguracji w przejściach. (I4116e)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano modyfikator.pointerHoverIcon (I95f01).
Wersja 1.1.0-beta01
27 października 2021 roku
Usługa androidx.compose.ui:ui-*:1.1.0-beta01
została zwolniona. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano eksperymentalny interfejs API
BringIntoView
, który umożliwia wysłanie prośby do rodziców, tak aby przewijali oni stronę w celu wyświetlenia danego elementu (Ib918d, b/195353459) - Nowe interfejsy API animacji do obsługi narzędzi. Umożliwiają one narzędziu sprawdzanie animacji i ich konfiguracji w przejściach. (I4116e)
Wersja 1.1.0-alpha06
13 października 2021 r.
Usługa androidx.compose.ui:ui-*:1.1.0-alpha06
została zwolniona. Wersja 1.1.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Usuń
ExperimentalComposeUiApi
z aplikacjiViewRootForInspector
iLayoutInfo.ownerViewId
(I5c2e3) - Dodano przeciążenie bez dzieci w przypadku układów, co zwiększyło wydajność (Ib0d9a)
- Z metod narzędzia Composer, które muszą być wywoływane między modułami, usunięto element
InternalCompilerApi
(I1aa0b). SemanticsNodeInteraction.performSemanticsAction
zwraca teraz wartośćSemanticsNodeInteraction
, dla której wywołano tę funkcję. (I9e5db).- Dodano obiekt LocalInputModeManager CompositionLocal do wykrywania trybu TouchMode i NonTouchMode. (I6a83c, b/175899786)
- Dodano
viewConfiguration: ViewConfiguration
do elementuLayoutInfo
, aby umożliwić konsumentom uzyskiwanie prawidłowej wartości w przypadku np. przekroczenia limitu czasu przytrzymania. (I76ca6).- Dodano
viewConfiguration: ViewConfiguration
doInjectionScope
, aby umożliwić testom dostosowywanie wstrzykiwania danych wejściowych na podstawie takich czynników jak czas oczekiwania na przytrzymanie lub opóźnienie dotknięcia. - Zmieniono domyślny czas trwania przytrzymania oraz dwukrotnego kliknięcia w przypadku wpisywania dotykiem i myszką, tak aby był oparty na wartościach z pola
InjectionScope.viewConfiguration
.
- Dodano
- Implementacja menu ExposedDropdownMenu w oparciu o element ExposedDropdownMenuBox z polem TextField i menu DropdownMenu wewnątrz obiektu (If60b2).
- Do pola PopupWłaściwości dodano atrybut closeOnOutsideClick i zastąpił on wycofaną zasadę closeOnClickOutside. Nowa właściwość otrzymuje pozycję kliknięcia i granice kotwicy, zapewniając dokładniejszą kontrolę nad tym, czy ma być wywoływane czy nie. Pozwala to na przykład zapobiec odrzuceniu reklamy zakotwiczonej po dotknięciu reklamy zakotwiczonej.
- Flagi updateAndroidWindowManagerFlags zostały dodane do elementu PopupWłaściwości, umożliwiając niskopoziomową kontrolę nad flagami przekazywanymi przez wyskakujące okienko do narzędzia Android WindowManager. Parametrem funkcji lambda będą flagi obliczone na podstawie wartości Popupproperty, które skutkują flagami WindowManager, np. „ableable”. Wynikiem funkcji lambda będą ostateczne flagi, które zostaną przekazane do Android WindowManager. Domyślnie flagi updateAndroidWindowManagerFlags pozostawiają flagi obliczone na podstawie parametrów bez zmian. Z tego interfejsu API należy korzystać z rozwagą tylko w sytuacjach, gdy wyskakujące okienko ma określone wymagania dotyczące działania. (I6e9f9).
- Interfejs
Recomposer.state
został wycofany i zastąpiony przezRecomposer.currentState
, aby zmienić jego typ na StateFlow (Ic2ab3, b/197773820) - Dodano
flush()
idispose()
doInjectionScope
. Używaj ich, gdy chcesz natychmiast usunąć wszystkie zdarzenia umieszczone w kolejce i kiedy chcesz pozbyć się zakresu. (Ifb73a). - Dodano funkcję
performScrollToNode(matcher: SemanticsMatcher)
, która przewija kontener, który można przewijać, do treści dopasowanej przez podane dopasowanie. (IC1cb8) InjectionScope
stosuje terazDensity
, co umożliwia łatwe przeliczanie pikseli z pikseli na dp w przypadkuperformTouchInput
i znajomych. (I8fe1f).
Poprawki błędów
- AndroidView przenosi teraz do widoku właściwości LocalLifecycleOwner i LocalSavedStateRegistryOwner do widoku za pomocą elementów ViewTreeLifecycleOwner i ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Rozwiązywanie problemów z obsługą przesuwania w Wear OS (I9387e)
- Domyślny czas między zdarzeniami wprowadzenia danych wejściowych został zmieniony z 10 ms na 16 ms. Może to zmienić wynik testów wykonujących gesty wprowadzania tekstu, np. konkretnego przesuwania. (I829fd)
Wersja 1.1.0-alpha05
29 września 2021 r.
Usługa androidx.compose.ui:ui-*:1.1.0-alpha05
została zwolniona. Wersja 1.1.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano obsługę komunikacji intermodyfikatora (Id5467, b/198826874)
- Do elementu PointerEventChange dodaliśmy eksperymentalne wskaźniki historyczne. (Ic1fd8, b/197553056, b/199921305)
- Dodano
density: Density
ilayoutDirection: LayoutDirection
doLayoutInfo
. Dzięki temu klienci korzystający zLayoutInfo
będą mogli prawidłowo interpretować wymiary i pozycję w widokuLayoutInfo
. (I002f1) - Dodano eksperymentalną obsługę wstrzykiwania zdarzeń myszy. Użyj polecenia
performMouseInput
, aby zacząć wysyłać zdarzenia myszy, lub użyj właściwościMouse
MultiModalInjectionScope
, aby wykonać gest wielomodalnego wprowadzania danych za pomocąperformMultiModalInput
. Dokumentację dostępnego interfejsu API znajdziesz na stronieMouseInjectionScope
. (Iaa4a8, b/190493367)
Poprawki błędów
- Poprawiono obsługę elementów z możliwością przewijania (leniwe i nieleniwe) w odniesieniu do przewijania (I6cdb0).
- Ulepszono:
TouchInjectionScope.swipeWithVelocity
. Teraz akceptuje szerszy zakres zmiennych wejściowych i sugeruje zmiany danych wejściowych, jeśli nie można utworzyć przesunięcia (I40fbe, b/182477143)
Wersja 1.1.0-alfa04
15 września 2021 r.
Usługa androidx.compose.ui:ui-*:1.1.0-alpha04
została zwolniona. Wersja 1.1.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
PointerEvent
ma terazPointerEventType
do obsługi zdarzeń po najechaniu kursorem. (I091fa)- Pozwól dzieciom na akceptowanie danych wejściowych wskaźnika spoza zakresu wejściowego wskaźnika nadrzędnego. Rodzice mogą przechwytywać te wywołania za pomocą właściwości PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655).
- Wycofano reguły
performGesture
iGestureScope
, które zostały zastąpione przez regułyperformTouchInput
iTouchInjectionScope
. (Ia5f3f, b/190493367) - Do
SemanticsNode
dodano elementtouchBoundsInRoot
, który uwzględnia minimalny rozmiar docelowego elementu dotykowego, dzięki czemu deweloperzy mogą zagwarantować, że docelowe elementy dotykowe spełniają minimalne wymagania dotyczące ułatwień dostępu. (I2e14b, b/197751214) - Ponów implementację, którą można sprawdzić (I927bc, b/191017532)
- Zmieniono nazwę parametru inspekcji, aby odpowiadała utworzonemu (I3a482, b/191017532)
Wprowadziliśmy
performTouchInput
iTouchInjectionScope
jako zamiennikperformTouchInput
iTouchInjectionScope
, utorując drogę innym modalnościom (takim jak mysz).TouchInjectionScope
ma te same metody coGestureScope
z wyjątkiem metodmovePointerTo
imovePointerBy
, które zostały zmienione naupdatePointerTo
iupdatePointerBy
. Pozostałe metody są takie same.Działanie strony
TouchInjectionScope
jest niemal identyczne jak w przypadkuGestureScope
z 2 drobnymi szczegółami:- Jeśli wysyłasz zdarzenie „brak”, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia przenoszenia (czyli użyto
updatePointerTo()
, ale niemove()
, a potem wywołanodown()
), poprzednia implementacja przesunęła czas zdarzenia i wysyłała zdarzenie ruchu przed wysłaniem zdarzenia „nie”. Nowa implementacja nadal wysyła zdarzenie przenoszenia, ale nie opóźnia jego terminu w tym konkretnym scenariuszu. - Jeśli podczas wysyłania zdarzenia na zewnątrz wskaźniki zostały przeniesione bez wysyłania zdarzenia przenoszenia (podobnie jak powyżej), poprzednia implementacja przyspieszyła i wysyłała zdarzenie przenoszenia przed wysłaniem zdarzenia up. Nowa implementacja nie działa w żaden sposób: nowe pozycje wskaźników będą odzwierciedlane tylko przez zdarzenie „up”.
Na koniec
TouchInjectionScope
wprowadza nową metodęcurrentPosition(pointerId: Int)
pozwalającą uzyskać bieżącą pozycję podanego wskaźnika. (If1191, b/190493367)- Jeśli wysyłasz zdarzenie „brak”, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia przenoszenia (czyli użyto
Poprawki błędów
- Zezwól na rozszerzenie na obszar docelowego elementu dotykowego poza obszarem klipu, co pozwoli ograniczyć zasięg docelowego elementu dotykowego. (I43e10, b/171509422)
- Dodaliśmy obsługę rozciągania dalekiego przewijania na urządzeniach z Androidem 12. (Iccf3c, b/171682480)
Wersja 1.1.0-alfa03
1 września 2021 roku
Usługa androidx.compose.ui:ui-*:1.1.0-alpha03
została zwolniona. Wersja 1.1.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizowano funkcję Utwórz
1.1.0-alpha03
, aby bazowała na Kotlinie1.5.30
. (I74545)
Zmiany interfejsu API
- Dodano
Modifier.inspectable
do dodawania innych modyfikatorów. (I1909b, b/191017532) - Dodaliśmy interfejs API
BlurredEdgeTreatment
, aby uprościć zamazywanie przypadków użycia za pomocą powszechnie używanych kombinacji flag klipu i TileModes. W większości przypadków użycia polega na wyrenderowaniu rozmytych treści poza granicami oryginalnej treści i zamazaniu obszarów poza te granicami przez zamazanie przezroczystej czerni lub przycinanie treści do granic treści z próbkowaniem najbliższej krawędzi w celu rozmycia, które wykracza poza granice treści. (I6b4b7, b/166927547) - Dodano obsługę funkcji RenderEffect na pulpicie tworzenia wiadomości. Wprowadziliśmy OffsetEffect oraz modyfikator rozmycia, które pozwalają w prosty sposób wprowadzić efekty wizualne rozmycia do części hierarchii kompozycji. (I0f6aa, b/166927547)
- Wprowadzono interfejs RenderEffect API, który można opcjonalnie skonfigurować w
Modifier.graphicsLayer
, aby zmieniał zawartość samej warstwy. Pozwala to rozmyć zawartość elementów kompozycyjnych i podrzędnych w hierarchii kompozycji. (I47c4d, b/166927547) - AwaitPointerEventScope ma teraz funkcję withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Dodano minimalny rozmiar docelowego elementu dotykowego do interfejsu ViewConfiguration na potrzeby semantyki i wprowadzania wskaźnika do celu w celu zapewnienia ułatwień dostępu. (IE861C)
- Dodano obsługę TileMode.Decal, która jest przydatna przy definiowaniu zachowania krawędzi na potrzeby funkcji RenderEffects opartych na rozmyciu. (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
ihasScrollToKeyAction
są teraz stabilnymi interfejsami API (I142ae, b/178483889)- Dodano metodę testową służącą do pobierania granic przyciętych. (I6b28e)
Poprawki błędów
- Usunięto metodę isBounded z BlurredEdgeTreatment, zastępując ją jawnym sprawdzaniem, czy parametr shape ma wartość null. (I85d68)
Wersja 1.1.0-alfa02
18 sierpnia 2021 r.
Usługa androidx.compose.ui:ui-*:1.1.0-alpha02
została zwolniona. Wersja 1.1.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- PointerEvent obsługuje teraz odczytywanie stanu przycisku myszy i stanu modyfikatora klawiatury. (I6310c, b/180075467)
- Gesty wstrzykiwane używają teraz czasu MainTestClock jako źródła danych dla czasu. Bieżący czas wstrzykiwanych zdarzeń w regionie
performGesture
zostanie zainicjowany do bieżącego czasu MainTestClock. (Ifb364, b/192064452) - Dodano konstruktor
DpRect(DpOffset, DpSize)
(I2cf16, b/194219828) - Dodano klasę DpSize (I7abb1, b/194219828)
Poprawki błędów
- Zaktualizowaliśmy analizę pliku XML grafiki wektorowej, aby obsługiwała ColorStateLists jako właściwości odcienia kolorów głównych w obiektach VectorDrawable. (I86915, b/195668138)
Wersja 1.1.0-alpha01
4 sierpnia 2021 r.
Usługa androidx.compose.ui:ui-*:1.1.0-alpha01
została zwolniona. Wersja 1.1.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
RelocationRequester.bringIntoView
akceptuje teraz prostokąt jako parametr, który pozwala nam pokazać część funkcji kompozycyjnej (Ice2c5, b/194330245)AnimatedImageVector
i powiązane z nim interfejsy API znajdują się teraz w nowym moduleandroidx.compose.animation:animation-graphics
. (I60873)- Dodano eksperymentalny modyfikator do obsługi próśb o relokację. (I65a97, b/178211874)
Wprowadzono interfejs BrushPainter API, który umożliwia rysowanie dowolnego pędzla w aplikacji Painter, podobnie jak w przypadku ColorPainter
Zaktualizowaliśmy interfejs Brush API, aby miał parametr rozmiaru wewnętrznego, do którego jest wysyłane zapytanie w narzędziu BrushPainter (Ia2752, b/189466433).
Zaktualizowana metoda DrawScope#drawImage, która korzysta z kodów źródłowych i miejsc docelowych w celu korzystania z opcjonalnego parametruFilterQuality. Przydaje się to w przypadku elementów typu pixel art, które mają być pikselizowane po przeskalowaniu w górę. Zaktualizowaliśmy BitmapPainter i funkcję komponowania obrazu, aby korzystała też z opcjonalnego parametruFilterQuality (Ie4fb0, b/180311607)
Dodano metodę
GestureScope.advanceEventTime
, która daje większą kontrolę nad czasem zdarzeń wykonywanych za pomocą gestów (Ibf3e2).
Poprawki błędów
- Aby zapewnić lepszą obsługę łańcuchów modyfikatorów rysowania, upewnij się, że wywołania implementacji Modifier.paint mają związek z dresContent.
Wcześniej funkcja Modifier.paint oczekiwała wobec węzła liścia w łańcuchu modyfikatorów, jednak w rezultacie uniemożliwia to jego skonfigurowanie w kontenerze kompozycyjnym (np. boks) i dodanie do niego dodatkowych dekoracji, takich jak
Modifier.paint().border()
. Wywołując metodę Modifier.paint wywołaną DrewContent po wyrysowaniu zawartości danego malarza, zapewniamy lepszą spójność działania dzięki wzorcowi modyfikatora. (Ibb2a7, b/178201337, b/186213275) - Okna dialogowe są teraz zgodne z zachowaniem rozmiaru platformy. Aby zastąpić to zachowanie, ustaw
usePlatformDefaultWidth
na wartość Fałsz. (Iffaed, b/192682388) - Przeniesiono
InfiniteAnimationPolicy
do :compose:ui (I5eb09, b/160602714) - Animacja obejmuje przewijanie za pomocą działań semantycznych w przypadku leniwych list i zwykłych komponentów przewijania (Id9066, b/190742024)
Wersja 1.0
Wersja 1.0.5
3 listopada 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.5
została zwolniona. Wersja 1.0.5 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto problem ze śledzeniem awarii w instancjach originStateOf. (Aosp/1792247)
Wersja 1.0.4
13 października 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.4
została zwolniona. Wersja 1.0.4 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano na podstawie usługi Kotlin
1.5.31
Wersja 1.0.3
29 września 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.3
została zwolniona. Wersja 1.0.3 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano na podstawie usługi Kotlin
1.5.30
Wersja 1.0.2
1 września 2021 roku
Usługa androidx.compose.ui:ui-*:1.0.2
została zwolniona. Wersja 1.0.2 zawiera te zatwierdzenia.
Zaktualizowano, aby obsługiwała wersję 1.0.2
Utwórz. Funkcja Compose 1.0.2
jest nadal zgodna z Kotlin 1.5.21
.
Wersja 1.0.1
4 sierpnia 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.1
została zwolniona. Wersja 1.0.1 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano w zależności od systemu Kotlin
1.5.21
.
Wersja 1.0.0
28 lipca 2021 roku
Usługa androidx.compose.ui:ui-*:1.0.0
została zwolniona. Wersja 1.0.0 zawiera te zatwierdzenia.
Główne funkcje 1.0.0
To jest pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu wersji Compose.
Znane problemy
Jeśli korzystasz z Android Studio Bumblebee Canary 4 lub AGP
7.1.0-alpha04
/7.1.0-alpha05
, może dojść do tej awarii:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Aby rozwiązać ten problem, tymczasowo zwiększ wartość parametru minSdkVersion w pliku
build.gradle
do wartości 24 lub nowszej. Ten problem zostanie naprawiony w następnej wersji Androida Studio Bumblebee i AGP7.1
. (b/194289155)
Wersja 1.0.0-rc02
14 lipca 2021 roku
Usługa androidx.compose.ui:ui-*:1.0.0-rc02
została zwolniona. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Okna dialogowe są teraz zgodne z zachowaniem rozmiaru platformy. Aby zastąpić to zachowanie, ustaw
usePlatformDefaultWidth
na wartość Fałsz. (Iffaed, b/192682388)
Wersja 1.0.0-rc01
1 lipca 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-rc01
została zwolniona. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Podziel moduł narzędzi interfejsu na
ui-tooling
iui-tooling-preview
(Iefa28, b/190649014)
Zmiany interfejsu API
- Usunięto wycofane eksperymentalne
FocusManager#moveFocusIn
iFocusManager#moveFocusOut
(I227d7, b/170154986, b/186567354, b/168510304) - Obszar roboczy obsługuje teraz parametr contentDescription, który zwiększa dostępność. (IB547C)
- Nazwa pliku
useDefaultMaxWidth
w:PopupProperties
została zmieniona nausePlatformDefaultWidth
. (I05710) - Okna mogą teraz zajmować całą szerokość ekranu. (I83929, b/190810877)
- Dodaliśmy eksperymentalną obsługę HSV i HSL, (Id7cf8, b/180731008)
Zmiany w działaniu
- Funkcja Utwórz
@Preview
udostępnia teraz obiektLocalActivityResultRegistryOwner
, który umożliwia wyświetlanie podglądu elementów kompozycyjnych korzystających z interfejsów API takich jakrememberLauncherForActivityResult()
zależnych od właściciela. (Ib13d1, b/185693006) - Funkcja Utwórz
@Preview
udostępnia teraz obiektLocalOnBackPressedDispatcherOwner
, który umożliwia wyświetlanie podglądu elementów kompozycyjnych korzystających z interfejsów API takich jakBackHandler
, które zależą od obecnego właściciela. (Ia1c05, b/185693006)
Poprawki błędów
- Przeniesiono
InfiniteAnimationPolicy
do:androidx.compose.ui:ui
(I5eb09, b/160602714) - Tymczasowo usunęliśmy funkcję AnimatedImageVector, aby zmienić strukturę modułu. (I41906, b/160602714)
Wersja 1.0.0-beta09
16 czerwca 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-beta09
została zwolniona. Wersja 1.0.0-beta09 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zmienianie ról enum i LiveRegionMode na klasy wbudowane za pomocą prywatnego konstruktora (Id1890)
- Parametr keyCapitalization jest konwertowany na klasę wbudowaną. (Id5a1c).
- Zmieniono HapticfeedbackType na klasę wbudowaną. (I255ec)
- Modifier.pointerInteropFilter to @ExperimentalComposeUiApi. (Iede6c).
- TextWyrównaj, FontSynthesis i TextDirection są teraz klasami wbudowanymi. (I212fe)
- Ustawienie TextOverflow zostało zmienione na klasę wbudowaną. (I433af).
- FontStyle to klasa wbudowana. (I9e48b).
Poprawki błędów
- Główne stałe to na razie @ExperimentalComposeUiApi. Podczas przetwarzania kodu można deklarować stałe prywatne przed stabilizacją. (Ia5d48).
- Testy tworzenia wiadomości można teraz uruchamiać w Robolectric. Do tej pory zidentyfikowaliśmy te ograniczenia:
- Nie ma natywnej mapy bitowej, więc zasada
ImageBitmap()
prowadzi do wyjątku NullPointerException. - Nie ma rysunków, więc
captureToImage()
będzie zawsze czekać na następne przejście (tj. na zakleszczenie). - Nie wczytano czcionki, więc każdy tekst zostanie zmierzony nieprawidłowo. Wszystkie znaki mają stałą wysokość około 20 pikseli i szerokość 1 piksela.
ComposeTestRule.waitUntil {}
nie uruchamia głównego wątku podczas oczekiwania, dzięki czemu jest on taki sam jakComposeTestRule.mainClock.advanceTimeUntil {}
W przyszłości zauważymy więcej ograniczeń. (I284fa)
- Nie ma natywnej mapy bitowej, więc zasada
Dodane reguły profilu
Ta wersja dodaje reguły profilu do następujących modułów tworzenia wiadomości (I14ed6):
- androidx.compose.animation,
- androidx.compose.animation-core,
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material,
- androidx.compose.material-ripple,
- androidx.compose.runtime,
- androidx.compose.ui,
- androidx.compose.ui.geometry,
- androidx.compose.ui.graphics,
- androidx.compose.ui.tekst
- androidx.compose.ui.tekst
- androidx.compose.ui.jednostka
- androidx.compose.ui.util,
Co to są reguły profilu?
Reguły profilu dla biblioteki określa się w pliku tekstowym
baseline-prof.txt
znajdującym się w katalogusrc/main
lub podobnym. Plik określa regułę w każdym wierszu, gdzie reguła w tym przypadku jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest elementem nadrzędnym w przypadku czytelnego dla człowieka formatu profilu ART, który jest używany, gdy używaszadb shell profman --dump-classes-and-methods ...
. Reguły te mogą kierować reklamy na metody lub klasy w jednej z dwóch form.Reguła metody będzie miała następujący wzorzec:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Reguła klasy będzie miała następujący wzorzec:
<CLASS_DESCRIPTOR>
<FLAGS>
to co najmniej jeden ze znakówH
,S
iP
wskazujących, czy ta metoda ma być oznaczona jako „Przebojowa”, „Uruchomienie” lub „Po uruchomieniu”.<CLASS_DESCRIPTOR>
to deskryptor klasy, do której należy wybrana metoda. Na przykład klasaandroidx.compose.runtime.SlotTable
miałaby deskryptorLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
to podpis metody. Zawiera nazwę, typy parametrów i typy zwracanych metod. Na przykład metodafun isPlaced(): Boolean
wLayoutNode
ma podpisisPlaced()Z
.Aby jedna reguła obejmowała wiele metod lub klas, mogą one zawierać symbole wieloznaczne (
**
,*
i?
).
Do czego służą reguły?
Metoda z flagą
H
wskazuje, że jest to metoda „hot” i należy ją skompilować wcześniej.Metoda z flagą
S
wskazuje, że jest ona wywoływana przy uruchamianiu i należy ją skompilować z wyprzedzeniem, by uniknąć kosztów kompilacji i interpretacji podczas uruchamiania.Metoda z flagą
P
wskazuje, że jest to metoda, która jest wywoływana po uruchomieniu.Klasa znajdująca się w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona na stercie, aby uniknąć kosztów wczytywania klasy.
Jak to działa?
- Biblioteki mogą definiować reguły, które będą spakowane w artefaktach AAR. Kiedy powstaje aplikacja, która zawiera te artefakty, reguły te są łączone ze sobą, a scalone reguły służą do utworzenia kompaktowego binarnego profilu ART, który jest charakterystyczny dla aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja jest instalowana na urządzeniach, w celu z wyprzedzeniem skompilowania określonego podzbioru aplikacji w celu zwiększenia jej wydajności, zwłaszcza przy pierwszym uruchomieniu. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.
Wersja 1.0.0-beta08
2 czerwca 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-beta08
została zwolniona. Wersja 1.0.0-beta08 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wyliczenie
NestedScrollSource
zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290) - Nazwa usługi
FocusManager.clearFocus(forcedClear = true)
została zmieniona naFocusManager.clearFocus(force = true)
(Ia0c41) - Zrefaktoryzowano użycia enum do klas wbudowanych, aby uniknąć problemów z pełnymi instrukcjami związanymi z dodawaniem nowych wartości wyliczeniowych. (I2b5eb)
- Usuń
@ExperimentalComposeUiApi
z kontaPopupProperties
. (I01fa6). - Pole
PointerType
zostało zmienione z wyliczenia na klasę wbudowaną (If5058) - Właściwości ContentDescription i semantyka tekstu nie są już pojedynczymi wartościami, lecz listami. Dzięki temu można je scalić w postaci, w jakiej są zamiast konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania umożliwiające wykorzystanie tych zmian (Ica6bf, b/184825850)
- Metoda
Modifier.focusModifier()
została wycofana i zastąpiona przezModifier.focusTarget()
(I6c860) - Funkcje
Modifier.onSizeChanged()
iModifier.onGloballyPositioned()
nie są już wbudowane (I727f6, b/186109675) - Wyliczenie
KeyboardType
zostało zastąpione klasą wbudowaną. (I73045, b/187055290) - Zastąpiono enum
FocusState
interfejsemFocusState
(Iccc1a, b/187055290) - Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
- Obiekt
PlaceholderVerticalAlign
jest konwertowany na klasę w treści strony. (If6290). - TextUnitType jest klasą wbudowaną. (I4cba9)
- Funkcje
AnnotatedString.withAnnotation
to teraz ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a).- Konstruktor TextUnit z ustawieniem TextUnitType to teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
Poprawki błędów
- Naprawiliśmy błąd wprowadzony w wersji beta07, polegający na tym, że elementy LazyColumn/wiersze były częściowo wyświetlane po przewinięciu (I8c9ac, b/188566058).
- Teraz
detectDragGesures
,detectVerticalGestures
idetectHorizontalGestures
automatycznie uwzględniają zmianę pozycji, więc nie trzeba wywoływać metody change.consumePositionChange w wywołaniach zwrotnych onDrag (I42fc4, b/185096350, b/187320697). - Naprawiono parametry LayoutModifiers zawierające linie wyrównania. Naprawiono błąd, który powodował, że element nadrzędny nie był ponownie mierzony, gdy zmieniały się wiersze wyrównania elementów podrzędnych. (I4401f, b/174315652)
- Pole
Modifier.onGloballyPositioned()
zostało zmienione tak, aby po zastosowaniu wszystkich modyfikatorów raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu. Oznacza to, że teraz kolejność modyfikatorów wpływa na to, jakie współrzędne będą podawane w raportach. (Ieb67d, b/177926591)
Wersja 1.0.0-beta07
18 maja 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-beta07
została zwolniona. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano interfejs
ViewRootForInspector
do użycia inspektora (Ib70df) SubcomposeLayoutState
obsługuje teraz ustawianie liczby przedziałów wielokrotnego użytku. Układ zachowa maksymalną liczbę aktywnych przedziałów, zamiast je wyrzucać, aby wykorzystać ponownie przedział, gdy następnym razem będziemy potrzebować nowego (Ieb981).- Wyliczenie KeyEventType jest zastępowane klasą wbudowaną. (Id670a, b/187055290)
- Wyliczenie
FocusDirection
zostało zastąpione klasą wbudowaną. (Ib6d03, b/187055290, b/184086802) - Wprowadziliśmy możliwość wciągania stanu SubcomposeLayout, co pozwala wstępnie komponować treść w elemencie wymaganym (wymagany jest identyfikator boksu reklamowego). Przyspieszyłby on kolejny pomiar, ponieważ następnym razem, gdy spróbujemy utworzyć element z podanym identyfikatorem boksu, nie będzie potrzebna kompozycja. (I42580, b/184940225)
- Dodano uchwyt wyboru klipu (Iff80d, b/183408447)
- Usunęliśmy nieużywane interfejsy API związane z obsługą Inspektora układu. (I2ac78).
Poprawki błędów
- LazyColumn/Row będzie teraz przechowywać do 2 wcześniej widocznych elementów aktywnych (nieusuniętych), nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie korzystać z aktywnych kompozycji podrzędnych, gdy trzeba będzie utworzyć nowy element, który usprawnia przewijanie. (IE5555)
TextGeomerticTransform
iTextDecoration
naAnnotatedString
będą stosowane zgodnie z oczekiwaniami. (I61900, b/184760917)
Wersja 1.0.0-beta06
5 maja 2021 roku
Usługa androidx.compose.ui:ui-*:1.0.0-beta06
została zwolniona. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozwiązywanie konfliktów z gestem nawigacji (I1145e)
@ComposeCompilerApi
nie jest już@RequiresOptIn
(Iab690)- Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i ich elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
- Dodano
SemanticsActions.ScrollToIndex
, aby przewijać listę ze indeksowanymi elementami do elementu o określonym indeksie orazSemanticsProperties.IndexForKey
, aby uzyskać indeks elementu na liście z elementami z kluczami. Oba działania są implementowane przez LazyList.- Dodano funkcję
SemanticsNodeInteraction.performScrollToIndex
, która przewija listę do podanego indeksu, orazSemanticsNodeInteraction.performScrollToKey
, która przewija listę do elementu z danym 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 i Deskryptor pliku (I5d382)
- Dodano interfejs API ułatwień dostępu
error
umożliwiający oznaczenie węzła zawierającego nieprawidłowe dane wejściowe (I12997, b/180584804, b/182142737) - Dodano przeciążenia
Font()
do ładowania czcionek z zasobów oraz plików i deskryptorów FileDescriptor (I43007). - Obsługa zapisu w polu AdnotatedString w polu
TextFieldValue.Saver
. Do aplikacjiAnnotatedString.Builder
(I8cbdc, b/178446304) dodano funkcjeaddTtsAnnotation
i z funkcjami narzędziowymi dotyczącymi adnotacji - Dodano funkcję konstruktora TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
Wersja 1.0.0-beta05
21 kwietnia 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-beta05
została zwolniona. Wersja 1.0.0-beta05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano eksperymentalne
FocusManager.moveFocus(In)
iFocusManager.moveFocus(Out)
(Ic5534, b/183746743) - Dodano eksperymentalny interfejs API
performTextInputSelection
(I2dcbb, b/178510628) - Interfejs
InputEventCallback
został wycofany. Nie można było użyć interfejsu w żadnym publicznym interfejsie API i nie było go również w kodzie. (I34a02, b/184003208) - Funkcja
TextLayoutResult/createTextLayoutResult
została wycofana. To nieużywana funkcja publiczna, dodana do testów. Nie wykonuje ona żadnych działań, których można użyć w interfejsach API tworzenia tekstu. Funkcja została wycofana i później zostanie usunięta. (I80413)
Poprawki błędów
- Naprawiono czynności związane z przewijaniem ułatwień dostępu
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
iaccessibilityActionScrollDown
. Zamiast przewijać do końca elementu przewijanego, przewija on teraz o 1 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.
Usługa androidx.compose.ui:ui-*:1.0.0-beta04
została zwolniona. Wersja 1.0.0-beta04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zmień nazwy
hideSoftwareKeyboard
ishowSoftwareKeyboard
wSoftwareKeyboardController
odpowiednio nahide()
ishow()
.- Udostępnij pełny interfejs CompositionLocal dla kontrolera Local SoftwareKeyController, aby umożliwić jego skonfigurowanie (jest to szczególnie przydatne w testach) (I579a6).
- Interfejs LiveRegion Accessibility API został dodany. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadomią użytkownika o zmianach (Idcf6f, b/172590946)
- Wprowadzenie elementu TextOverflow.Visible. (IC8f89)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że elementy w polu
LazyColumn
/LazyRow
znajdujące się na krawędziach były nieprawidłowo umiejscowione po szybkim przesunięciu (Ie4d13, b/183877420). - Funkcja
AndroidViewBinding
teraz prawidłowo usuwa fragmenty, które zostały powiększone za pomocą metodyFragmentContainerView
, gdy obiektAndroidViewBinding
jest usuwany z hierarchii tworzenia wiadomości. (Ib0248, b/179915946) AndroidViewBinding
teraz prawidłowo zagnieżdża fragmenty nadające się za pomocąFragmentContainerView
, gdyComposeView
znajduje się w elemencieFragment
. Rozwiązano problemy z zapisywaniem i przywracaniem stanu tych fragmentów. (I70eb0, b/179915946)- Tworzenie powiązań widoku danych zależy teraz od fragmentu
1.3.2
i od teraz konsekwentnie pokazuje fragmenty powiększone przezFragmentContainerView
po zmianie konfiguracji. (I0743d, b/179915946)
Wersja 1.0.0-beta03
24 marca 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-beta03
została zwolniona. Wersja 1.0.0-beta03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Odroczone sprawdzanie zależności ViewTree obiektu ComposeView (I8dbbf, b/182466548)
- Do funkcji
swipeUp
/swipeDown
/swipeLeft
/swipeRight
wGestureScope
dodaliśmy opcjonalne parametrystartX
/endX
istartY
/endY
. (I49e2d, b/182063305)
Wersja 1.0.0-beta02
10 marca 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-beta02
została zwolniona. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano nowy interfejs API kompozycji
LocalSoftwareKeyboardController
, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (I5951e, b/168778053) - Dodano nowy interfejs API kompozycji
LocalSoftwareKeyboardController
, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (I84472, b/168778053) - Usunięto te komponenty (
SemanticsMatcher
):hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Oznaczono
SemanticsMatchers
jako @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(IA600C)
- Dodano te elementy (
SemanticsMatcher
):hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Poprawki błędów
- Egzekwuj ograniczenia dotyczące publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
androidx.compose.ui:ui
nie zależy już od AppCompat ani Fragment. Jeśli w swojej aplikacji używasz obiektu ComposeView i fragmentu lub AppCompat, sprawdź, czy używasz AppCompat 1.3 lub nowszego / fragmentu 1.3 lub nowszego – te wersje są niezbędne do prawidłowego ustawienia cyklu życia i zapisanych właścicieli stanu wymaganych dla ComposeView. (I1d6fa, b/161814404)- Usunięto problem z uszkodzonym kodem
rememberSaveable { mutableStateOf(0) }
występującym w miejscu docelowym w nawigacji. (I1312b, b/180042685, b/180701630) - Dodano nowy interfejs API kompozycji
LocalSoftwareKeyboardController
, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (I658b6, b/168778053) - Usunięto rzadki wyjątek NoSuchElementWyjątek w tagu
ComposeRootRegistry
tearDownRegistry()
(Iddce1)
Wersja 1.0.0-beta01
24 lutego 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-beta01
została zwolniona. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.
To jest pierwsza wersja beta Compose 1.0.0.
Zmiany interfejsu API
- Oddzwanianie onStart zostało dodane do
detectDragGestures
(I67269, b/179995594) - Modyfikatory dopasowujące wymiary do elementów wewnętrznych nie są już eksperymentalne. (I15744)
- Nazwa MeasureBlocks została zmieniona na MeasurePolicy, a interfejs jest teraz ciekawym interfejsem. Zaktualizowaliśmy lub uprościliśmy interfejsy Layout API pod kątem MeasurePolicy. (Icab48, b/167662468, b/156751158)
- Pole
InteractionState
zostało zastąpione elementem[Mutable]InteractionSource
- Interfejsy odpowiadają za wysyłanie / zbieranie zdarzeń interakcji.
- Zamiast przekazywać
interactionState = remember { InteractionState() }
do komponentów takich jakButton
czyModifier.clickable()
, użyjinteractionSource = remember { MutableInteractionSource() }
. - Zamiast:
Interaction.Pressed in interactionState
użyj funkcji rozszerzeń w InteractionSource, takich jak InteractionSource.collectIsPressedAsState(). - W złożonych przypadkach możesz użyć parametru InteractionSource.interactions do obserwowania strumienia interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Dodanie interfejsu AccessibilityMananger i interfejsu LocalAccessibilityMananger w kompozycji CompositionLocals (I53520).
- Usunięto wycofane metody LayoutCoordinates. Użyj funkcji zamiast właściwości positionInParent i boundsInParent (I580ed, b/169874631, b/175142755)
- Aliasy typów zastąpione podstawowymi typami:
ColorStop
to terazPair<Float, Color>
SpanStyleRange
to teraz „AnnotatedString.RangeParagraphStyleRange
to terazAnnotatedString.Range<ParagraphStyle>
StringAnnotation
to terazAnnotatedString.Range<String>
- (I8dd1a)
- Utworzono nową sesję TextInputSession na potrzeby sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, np. CoreTextField. (I8817f, b/177662148)
- Obiekt Placeable staje się widoczny w pomiarach rozmiaru, co reprezentuje rozmiar, do którego rzeczywiście zmierza układ podrzędny. Ten rozmiar może nie uwzględniać ograniczeń pomiarów. (Ib2729, b/172560206, b/172338608)
- Dodaj modyfikator selectGroup, który umożliwia oznaczanie kolekcji kart lub opcji na potrzeby ułatwień dostępu (Ie5c29)
Pole
defaultFactory
dla obiektówcompositionLocalOf
istaticCompositionLocalOf
jest teraz wymagane, a nie opcjonalne.Ta zmiana usuwa potencjalny błąd typu w przypadku typów niedopuszczających wartości null, w których nie podano domyślnej wartości fabrycznej. Wcześniej w przypadku typu niedopuszczającego wartości null konieczne było odniesienie do wartości null.
W przypadku typów dopuszczających wartości null domyślną wartością fabryczną jest
{ null }
.Nie zalecamy używania zasobów lokalnych z typami niezawierającymi wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda
defaultFactory
powinna zgłosić wyjątek. Zwrócenie wyjątku oznacza jednak, że konsumenci z okolicy są w bezpośrednim stopniu uzależnieni od jego zapewnienia, a system typów nie jest egzekwowany. (Ifbd2a).Wycofane metody z modułów interfejsu zostały usunięte (I646f6)
Zmieniono nazwy modyfikatorów rozmiaru. Zmieniono nazwę modyfikatora.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwę metody Modifier.preferredWidth/preferredHeight/preferredSize na szerokość/wysokość/rozmiar. (I5b414)
Modifier.tapGestureFilter
został(a) usunięty(a). Użyj w zamian zasadyModifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)częściowe wykorzystanie zostało usunięte z systemu wprowadzania danych wskaźnika. Zalecanym sposobem koordynowania częściowego konsumpcji jest Modifier.nested Scroll. (IE9c9b)
Orientacja została przeniesiona do pakietu podstawowego. Przeniesiono aplikację VelocirtTracker z obszaru ui.gesture do witryny ui.input.pointer. (Iff4a8, b/175294473)
imageResource i vectorResource są teraz funkcjami rozszerzenia odpowiednio w elementach towarzyszących ImageBitmap i ImageVector. Usunięto
load{Image,Vector,Font}Resource
funkcje. (I89130)Usunięto klasę AnimationClockObservable i jej podklasy. Element AnimatedFloat został usunięty. (Icde52, b/177457083)
Nazwa dostawców została zmieniona na CompositionLocalProvider
- Konstruktor Kompozycja nie akceptuje już kluczowego parametru i został wycofany.
- Parametr currentCompositeKeyHash został przekształcony w kompozycyjną właściwość najwyższego poziomu zamiast funkcji kompozycyjnej najwyższego poziomu.
- CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- Interfejs ComposableLambda został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
- Interfejs ComposableLambdaN został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
- Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
- metoda scalania zasady SnapshotMutationPolicy nie jest już eksperymentalna
- Funkcja @TestOnly najwyższego poziomu clearRoots została usunięta. Już nie jest to konieczne.
- Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
- Element Composer.collectKeySourceInformation został usunięty. Już nie jest to konieczne.
- Metody isJoinedKey, JoinKeyLeft i joinKeyRight zostały usunięte. Nie są już potrzebne.
- Różne interfejsy API najwyższego poziomu zostały przeniesione i porządkowane w różne pliki. Ze względu na semantykę klas plików Kotlin spowoduje to naruszenie zgodności plików binarnych, ale nie źródła, więc nie powinno stanowić problemu dla większości użytkowników.
- (I99b7d, b/177245490)
Element
ComponentActivity.setContent()
został usunięty z polecenia compose:ui. Użyj tego, który oferujeandroidx.activity:activity-compose:1.3.0-alpha01
. ElementyviewModel()
iLocalViewModelStoreOwner
zostały usunięte z elementu compose:ui. Użyj tych z ofertyandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)Modifier.scrollable został przerobiony. Teraz używa interfejsu Scrollable zamiast klasy ScrollableController (I4f5a5, b/174485541, b/175294473)
Usunięto obsługę CustomEvens z PointerInputModifier (I02707, b/175294473)
SnapshotStateObserver nie jest już funkcją eksperymentalną (Id2e6a)
usunęliśmy niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932),
Parametry LongPressStepFilter i DoubleClickStepFilter zostały usunięte. Użyj funkcji Modifier.pointerInput z funkcjami pomocniczymi, np.DetectionTapSteps (I2fedf, b/175294473)
Usunęliśmy zrefaktoryzowane zastosowania interfejsu String.format API w różnych metodachtoString, aby nie wykorzystywać go wewnętrznie. (Id1290).
Usunięto asercje dp (I798d2)
Usunięto plik androidx.compose.runtime:runtime-dispatch (I55feb).
Działania związane z tekstem automatycznie sprawdzają zaznaczenie (I13777, b/179648629)
Usunięto
runBlockingWithManualClock
(I15cdc, b/179664814)Pozycja przewinięcia w modyfikatorze.vertical Scroll()/vertical Scroll() obecnie przedstawia się za pomocą liczb całkowitych (I81298).
Nazwa FlingConfig została zmieniona na FlingBehavior i umożliwia teraz dostosowanie animacji zawieszenia, a nie wstępnie zdefiniowanego spadku. (I02b86, b/175294473)
Dodano funkcję pomocniczą, która pomaga ustawić to samo działanie dla wszystkich wywołań zwrotnych ImeAction (I63447, b/179226323)
Usunęliśmy wywołanie zwrotne SoftwareKlawiaturaController ze wszystkich pól tekstowych. Wkrótce zostanie zastąpione nowym interfejsem API. (IAe869, b/168778053)
Style FontSpan i FontWeigthStyleSpan nie są już używane i zostały usunięte. (IE5b56, b/177423444)
W interfejsie Material API wprowadzono te zmiany:
- Do górnego/dolnego paska aplikacji dodano parametr contentPadding, aby umożliwić dostosowanie domyślnego dopełnienia.
- Zmieniono kolejność parametrów w TleDScaffold, aby zachować zgodność z wytycznymi interfejsu API dotyczącymi parametrów, które powinny znajdować się przed parametrami opcjonalnymi.
- Parametr
icon
w elemencie bottomNavigationItem został przeniesiony zaselected
ionClick
. - Nazwa parametru
alwaysShowLabels
w elemencie bottomNavigationItem została zmieniona naalwaysShowLabel
. - Zmieniono nazwę parametrów
bodyContent
niektórych komponentów nacontent
. - Zmieniono kolejność parametrów w kolumnie
ButtonDefaults.buttonColors()
. Należy pamiętać, że ze względu na to, że typ parametrów nie uległ zmianie, nie spowoduje to błędu w kodzie. Upewnij się, że używasz parametrów nazwanych lub ręcznie zaktualizujesz kolejność. W przeciwnym razie kod nie będzie działać tak samo jak poprzednio. - Do grupy reklam
darkColors()
dodano parametrsecondaryVariant
. Ten kolor jest zwykle taki sam jak kolorsecondary
w ciemnym motywie, ale zapewnia spójność i dodatkowe możliwości dostosowania. - Usunięto klasę ElevationDefaults i animmateElevation() z publicznej platformy interfejsu API, ponieważ nie były one powszechnie używane ani przydatne.
- Zmieniono nazwę
onValueChangeEnd
wSlider
naonValueChangeFinished
i ustawiłem ją na wartość null. - Nazwa parametru
text
w komórceSnackbar
została zmieniona nacontent
w celu zachowania spójności. - Dodano parametr
contentPadding
do elementuDropdownMenuItem
, aby umożliwić dostosowanie domyślnego dopełnienia, oraz ustawieniecontent
jako rozszerzenia w witrynieRowScope
. - Nazwa
ModalDrawerLayout
została zmieniona naModalDrawer
. - Nazwa
BottomDrawerLayout
została zmieniona naBottomDrawer
. - (I1cc66).
Poprawki błędów
- Dodano interfejs API umożliwiający korzystanie z zasobów AnimatedVectorDrawable w usłudze Compose. Użyj animowanegoVectorResource, aby wczytać plik XML
<animated-vector>
jako obiekt AnimatedImageVector i animować go za pomocą PaintterFor (I8ea91). - Dodaliśmy nowy lokalny interfejs API do kompozycji Local SoftwareKlawiaturaController, aby zastąpić poprzedni interfejs SoftwareKlawiaturaController w polu TextField. (I658b6, b/168778053)
Wersja 1.0.0-alfa12
10 lutego 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-alpha12
została zwolniona. Wersja 1.0.0-alfa12 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Usunięto obsługę grup widoków danych z UiApplier. Wycofane elementy kompozycyjne emitView zostały usunięte. (Ifb214).
- Modifier.pointerInput wymaga teraz zapamiętywania klawiszy, aby wskazywać, kiedy współprogram wykrywania danych wejściowych wskaźnika ma zostać uruchomiony ponownie w przypadku nowych zależności. (I849cd)
- Zmieniono nazwę CompositionReference na CompositionContext (I53fcb).
- Nazwa granic została zmieniona na DpRect (I4b32a).
- Testowanie aktualizacji: funkcja hasText() sprawdza w polu tekstowym zarówno dane wejściowe, jak i teksty etykiet, wskazówek i zastępczych (Iab803)
- Funkcje kompozycyjne viewModel() i LocalViewModelStoreOwner zostały przeniesione do folderu androidx.lifecycle.viewmodel.compose. Aby jej użyć, musisz teraz dodać oddzielną zależność androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alfa01. (I7a374)
- Zezwalaj na działanie dopuszczające wartości null w AccessibilityAction, etykieta zmień działanie w AccessibilityAction i CustomAccessibilityAction z CharSequence na String (I0dc82)
- Aby lepiej dopasować konwencje nazewnictwa do obrazów ImageBitmap i ImageVector, nazwa komponentu ImagePainter została zmieniona na BitmapPainter na równoległe narzędzie VectorPainter. (Iba381, b/174565889)
- Lepsze interfejsy API do testowania podłańcucha z podłańcuchem jako argumentem (Icbe78)
- Dodano obiekt
Modifier.focusOrder()
, który akceptuje obiekt FocusRequester bez określania niestandardowej kolejności zaznaczenia jako wartości lambda. Jest to przydatne, gdy trzeba określić tylko odwołanie, a nie niestandardowy fokus dla elementu kompozycyjnego (I4f52a, b/179180978) - Element KomponentActivity.setContent został przeniesiony do folderu androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416).
- Usunęliśmy metody niszczenia i copy() z kilku klas, w których były one rzadko używane. (I26702, b/178659281)
- Wyskakujące okienko zostało przeniesione do konkretnej platformy. Nazwa AndroidPopupWłaściwości została zmieniona na PopupWłaściwości, a element
isFocusable
został przeniesiony do parametrufocusable
w elemenciePopupProperties
(Ieeea5). - Okno zostało przeniesione, aby było związane z konkretną platformą. Zmieniono nazwę AndroidDialog Właściwości na DialogWłaściwości. (I4ef69, b/179138130)
- Komponent LayoutNode został wewnętrzny (I8a7b1, b/175103944)
- Parametr Constraints.enforce został zastąpiony przez Constraints.constrain. (I8B8EA).
- Zasób loadFontResource został wycofany. Używaj zamiast niego fontResource. Elementy graficzne, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Użyj narzędzia PaintterResource. (I6B809)
- Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz wartości lambda zwracające liczby zmiennoprzecinkowe zamiast bezpośrednich wartości zmiennoprzecinkowych. (If4a35, b/178657186)
- Dodano semantykę EditableText do oznaczania możliwego do edytowania tekstu wejściowego pola tekstowego na potrzeby ułatwień dostępu oraz odpowiadające jej metody testowe do sprawdzania semantyki (I8e07a).
- Przyznano właściwość WłaścicielLayer/OwnerScope/OwnerSnapshotObserver wewnętrzny (I4ffaf, b/175103944)
- Nazwa funkcji toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)
- Nazwa IntBounds została zmieniona na IntRect, a interfejs API został ulepszony. (I1f6ff)
- Zaktualizowaliśmy interfejs Snapshot API, aby zwiększyć spójność z wytycznymi dotyczącymi interfejsu API oraz ukryć wewnętrzne klasy implementacji w publicznym interfejsie API. (Id9e32)
- Dodano działania semantyczne rozwijania i zwijania. Dodano elementy rozwijana i połówkowa w stanie ModallowerSheetState (Ib5064)
- Interfejs Modifier.dragStepFilter został wycofany. Użyj w zamian zasady
Modifier.pointerInput { detectDragGestures (...)}
. Możesz też użyć metody Modifier.draggable, aby przeciągać jedną oś (I0ba93, b/175294473) - Zmieniono nazwy Ambientów, aby pasowały do nazwy Ambient -> CompositionLocal. Lokalizatory nosiły wcześniej nazwę AmbientFoo, a teraz CompositionLocals – LocalFoo. (I2d55d)
- Wycofane pole BaseTextField zostało usunięte. Użyj w zamian pola BasicTextField. (I71368)
- Zaznaczenie zostało przeniesione do podstawy. (I7892B)
- Podobnie jak poprzednio usunęliśmy funkcję
state { 0 }
kompozycyjną, a teraz promujemy jej użycie, takie jakremember { mutableStateOf(0) }
, usuniemy funkcjęsavedInstanceState { 0 }
kompozycyjną. Zamiast niego użyj parametrurememberSaveable { mutableStateOf(0) }
. Zostanie on automatycznie zapisany i przywrócony, jeśli typ użyty w MutableState może być przechowywany w pakiecie. Jeśli do tej pory przekazywano obiekt wygaszacza niestandardowego, teraz musisz użyć nowego przeciążenia funkcji meetSaveable, które zawiera parametrstateSaver
. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Dodano semantykę haseł w ułatwieniach dostępu (I231ce)
- Dodano ProgressBarRangeInfo.Indeterminate, aby zaznaczyć nieokreślone paski postępu w ułatwieniach dostępu (I6fe05).
- Narzędzia
emptyContent()
i(@Composable () -> Unit).orEmpty()
zostały wycofane, ponieważ nie mają już pozytywnego wpływu na wydajność ani wartość (I0484d) - Parametry
snapshotFlow
iwithMutableSnapshot
nie są już eksperymentalne (I6a45f) - Rekompozycje można teraz zamknąć. Zamknięte rekompozytory będą kontynuować ponowne komponowanie, dopóki nie zakończą się uzupełniające podrzędne kompozycje. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (IB6d76)
- Nazwa UiSavedStateRegistry została zmieniona na SaveableStateRegistry, a AmbientUiSavedStateRegistry została zmieniona na AmbientSaveableStateRegistry i teraz przeniosła do pakietu androidx.compose.runtime.saveable. (I30224)
- Nazwa artefaktu androidx:compose:runtime:runtime-saved-instance-state została zmieniona na androidx:compose:runtime:runtime-saveable (I6dcac).
- Wiele starych, wycofanych interfejsów API z pakietu UI zostało usuniętych. (I2f2dc)
- Artefakt compose:runtime-dispatch został wycofany. MonotonicFrameClock znajdziesz teraz w polecenia compose:runtime, a AndroidUiDispatcher – w compose:ui. (IB5c36)
- Outline.* – klasy nie są już klasami danych (I4879e, b/178001427)
- Element
view.captureToImage()
został usunięty bez zamiennika. (I7fcd2). - Wprowadzenie interfejsu ColorMatrix API służącego do modyfikowania wartości RGB treści źródłowych Zrefaktoryzowanego interfejsu ColorFilter API do tworzenia interfejsu zgodnego z implementacją PathEffect. (Ica1e8),
- Dodano parametr layout Direction do klasy createOutline w kształcie. Pozwala to tworzyć kształty uwzględniające kierunek układu. (I57c20, b/152756983)
- Parametr onImeActionPerformed został wycofany. Użyj jego działania (If0bbd, b/179071523).
- Wprowadziliśmy współrzędny element kontekstu
InfiniteAnimationPolicy
, który będzie stosowany w nieskończoność animacji. Domyślnie żadna zasada nie jest instalowana, chyba że przeprowadzasz testy z użyciemComposeTestRule
. (I50ec4, b/151940543) - Usunięto element canDrag z folderu Modifier.scrollable. (Id66e7, b/175294473)
- Zmieniono nazwę wartości LayoutCoordinates.parentCoordinates na LayoutCoordinates.parentLayoutCoordinates, aby umożliwić dodanie nowej właściwości „parentCoordinates”. Właściwość nadrzędnyCoordinates oferuje teraz LayoutCoordinates modyfikatora nadrzędnego. Dzięki temu będzie można używać funkcji onSizeChanged() i onGloballyPositioned() (Idfbfd, b/177926591)
- Parametry tapTrackingFilter, DoubleTapStepFilter, longPressConsentFilter i PressIndicaitonTrackingFilter zostały wycofane. Użyj w zamian funkcji Modifier.clickable lub Modifier.pointerInput z funkcją wykrywaniaTapSteps. (I6baf9, b/175294473)
- Parametr unregisterProvider SaveableStateRegistry został usunięty. RejestratorProvider() zwraca teraz obiekt SaveableStateRegistry.Entry, którego można użyć do wyrejestrowania (Ic4274, b/178583739).
- Zapamiętano nazwę savedInstanceState(), aby korzystały z ! (I1366e, b/177338004)
- Usunięto CoreText i CoreTextField z publicznego interfejsu API.
- Usunięto wycofane przeciążenie komponentu SelectionContainer
- (I99c19).
- Testy, w których funkcja Compose jest używana w hierarchii dodawanych lub usuwanych bezpośrednio w usłudze WindowManager, są teraz bardziej stabilne. (IE81ed, b/175765614)
- Usunięto element Recomposer.current(). [Abstract]ComposeView teraz domyślnie to stworzone leniwie, ograniczone do okna Rekompozycje, którymi zarządza ViewTreeLifecycleOwner dla okna. Rekompozycja i animacje z FrameNanos są wstrzymywane na czas zatrzymania cyklu życia hosta. (I38e11)
- Funkcja Recomposer.runningRecomposers udostępnia teraz globalny przepływ StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwację bieżącego stanu kompozycji w trakcie tego procesu. Preferuj ten interfejs API przy użyciu interfejsu Recomposer.current(), który jest teraz wycofany. (If8ebe).
- Saver, listSaver(), mapSaver(), autoSaver przeniesiono z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6).
- Polecenia EditCommand akceptują ciąg znaków AnnotatedString. Jest to jednak zmiana dostępna tylko w interfejsie API, a edycja tekstu z wieloma stylami nie jest jeszcze wdrożona. (I4c3ea).
- Funkcje Czas działania i Czas trwania zostały usunięte. (Ib9bf4, b/177420019)
- Funkcja CompositionData.asTree() i powiązane z nią interfejsy API zostały przeniesione do osobnego modułu ui-tooling-data i oznaczone jako eksperymentalne (Ic95b8).
- Nazwy parametrów RounderCornerForm, CutCornerPosition i CornerBasedForm zostały zmienione z lewej/prawej na początek/koniec, by zapewnić obsługę automatycznego odbicia lustrzanego kształtu w kierunku rtl. Funkcje absolutRounderCornerangle i absoledCutCornerForm zostały wprowadzone w przypadkach, gdy automatyczne odbicie lustrzane nie jest potrzebne. (I61040, b/152756983)
Interfejs API, na który kierowana jest wtyczka kompilatora Compose, został przekonwertowany tak, aby wykorzystywał interfejs zamiast konkretnej klasy. Interfejs nie używa już parametru type.
To zmiana wewnętrzna, która nie powinna wpływać na zgodność kodu źródłowego, ale jest zmianą binarnej. (I3b922, b/169406779)
Usuń niezamierzoną publiczną funkcję StringBuilder.deleteAt (Id6ed9)
Poprawki błędów
- Obiekty ComposeView umieszczone w hierarchiach widoków, które są elementami podrzędnymi innej kompozycji, zawierają teraz kompozycje podrzędne ich elementów nadrzędnych (I92883)
- Zaktualizowaliśmy interfejs API imageFromResource funkcji tworzenia, aby ponownie używać rysowanej pamięci podręcznej zasobu podczas wczytywania obiektów ImageBitmap. (If3627, b/178751994)
Wersja 1.0.0-alfa11
28 stycznia 2021 roku
Usługa androidx.compose.ui:ui-*:1.0.0-alpha11
została zwolniona. Wersja 1.0.0-alfa11 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Element WithConstraints został przetworzony pod nazwą BoxWithConstraints i przeniesiony do pliku Foundation.layout. (I9420b, b/173387208)
- Interfejs Key.DPadUp został wycofany. Użyj klawisza Key.DirectionUp. (Iab335, b/177954892)
- Interfejs właściciela dostępny od teraz wewnętrznie. (If8e35).
- Dodano interfejs API FocusManager.movefoka() do automatycznego przenoszenia zaznaczenia. (I045cb, b/177681839)
- Zmienia element PopupPositionProvider, aby używać współrzędnych zależnych od okna, a nie globalnych. Zmienia nazwę obiektuparentGlobalBounds na AnchorBounds i zmienia parametr windowGlobalBounds na „ windowSize: IntSize” (I2994a).
- Czas trwania i czas działania zostaną zastąpione długimi milisekundami, a ten krok eliminuje zależność danych wejściowych wskaźnika do tych klas. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner został dodany podobnie jak do dotychczasowych AmbientLifecycleOwner i AmbientViewModelStoreOwner (I9a3e8, b/176756365).
- Zaktualizowaliśmy interfejs API grafiki wektorowej, aby obsługiwał analizę barwienia zastosowanego do głównego poziomu grafiki wektorowej. (Id9d53, b/177210509)
- Dodano parametr ToolType do pola PointerInputChange, aby rozróżniać urządzenia (Iac787, b/175142755)
- Nazwa AmbientWindowManager została zmieniona na AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- Wycofaliśmy globalne metody współrzędnych i wprowadziliśmy nowe metody oparte na współrzędnych w oknach. (IEE284).
- Dodano modyfikator.toolingGraphicsLayer, który po włączeniu inspekcji dodaje modyfikator warstwy graficznej. (I315df)
- Element FocusRequester.createRefs jest teraz oznaczony jako eksperymentalna, ponieważ może się zmienić. (I2d898, b/177000821)
- Nazwa Semantics PropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. Nazwa stateDescriptionRange została zmieniona na progressBarRangeInfo. Nazwa Accessibility ScrollState została przemianowana na ScrollAxisRange. Nazwa levelAccessibility ScrollState została zmieniona na level ScrollAxisRange. Nazwa verticalAccessibility powiązanych z nią została zmieniona na vertical ScrollAxisRange. (Id3148).
- Usunięto metodę PointerInputData i zmodyfikowaliśmy ją, aby dodać do niej wszystkie pola PointerInputData. Obiekty PointerInputEvent i PointerInputEventData są wewnętrzne, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
- Zaktualizowaliśmy gęstość implementacji GraphicsLayerScope, aby obsługiwała konwersje dp na nieprzetworzone piksele. (Ied528, b/176819695)
- Zaktualizowaliśmy interfejs matrix API, aby nadawała dużą kolejność wierszy i dostarczała stałe indeksu w celu wspomagania konwersji między różnymi reprezentacjami macierzy, aby zapewnić zgodność logiki konwersji platformy między SkMatrix i Matrix4 wewnętrznie. (I432e6)
- Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).
- Przenieśliśmy String.fintPrecedingBreak i String.fingFollowingBreak do InternalTextApi. (I657C4)
- Adres androidx.compose.ui.util.isSurrogatePair został usunięty z publicznego interfejsu API. (IA9494).
- Zmieniono nazwę TransformedText.transformText na TransformedText.text.
- TransformedText nie jest już klasą danych (Ie672a)
- Element
data class
został usunięty z tych klas:- Treść wbudowanego tekstu
- LocaleList (I605c7)
- Te klasy nie są już klasami danych:
- Ciąg z adnotacjami
- Styl akapitu
- Styl spanu
- Styl tekstu
- Waga czcionki
- Ozdobniki tekstu
- TextGeometricTransform
- Indeks tekstowy
- Wynik układu tekstu
- TextLayoutInput (Iaff99),
- Zmieniliśmy VisualTransformation, by stała się praktycznym interfejsem (I3bba4)
- Dodano typ parametru odwołania do funkcji (I5e1bd).
- Dodaj przekształcone granice do węzła InspectorNode (Ice42f)
Poprawki błędów
- Interfejsy onCommit, onDispose i onActive zostały wycofane i zastąpione interfejsami SideEffect i DiposableEffect (If760e).
Zmiany w funkcjach fabrycznych dla czcionek, rodziny czcionek i kroju czcionki
- Dodano funkcje fabryczne, które zaczynają się od wielkiej litery.
- Wycofanie wcześniejszych funkcji fabrycznych, używając małych i pierwszych liter
- Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
- Ukryto konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
- Zmieniono nazwę Font.asFontFamily na Font.toFontFamily (I42aa7).
Dodano
ComposeContentTestRule
, który rozszerza zakresComposeTestRule
i definiuje zasadęsetContent
, która została usunięta zComposeTestRule
. Dodaliśmy metodę fabrycznącreateEmptyComposeRule()
, która zwracaComposeTestRule
i nie uruchamia za Ciebie aktywności. Użyj tej opcji, jeśli chcesz uruchomić aktywność podczas testu, np. za pomocą narzędziaActivityScenario.launch
(I9d782, b/174472899)animateAsState to teraz animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)
Do obrazów i ikon został dodany parametr Opis treści. Służy do opisania usług ułatwień dostępu (I2ac4c).
Usuń parametr displaySize, ponieważ powinien się unikać. Zwykle lepiej jest użyć funkcji onRoot() lub rozmiaru co najmniej okna. (I62db4).
OnSizeChanged zgłaszał rozmiar zawartości układu. Raportuje teraz rozmiar na swoim miejscu w łańcuchu modyfikatorów. (I36b78, b/177562900)
Interfejs emit() API i wszystkie przeciążenia zostały wycofane i mają nazwę ComposeNode. Interfejsy API są identyczne, ale mają inną nazwę, aby zachować zgodność z konwencjami nazewnictwa stosowanymi w funkcji tworzenia wiadomości (I4137b).
TextFieldValue akceptuje ciąg AnnotatedString. Jest to jednak zmiana dostępna tylko w interfejsie API, a edycja tekstu z wieloma stylami nie jest jeszcze wdrożona.
- Z parametrów konstruktora EditBuffer usunięto parametr
initial
. (I326d5)
- Z parametrów konstruktora EditBuffer usunięto parametr
Nieprawidłowo i kompozytoryzacja() zostały wycofane. Zastąpiono je odpowiednio recomposeScope i ReminderCompositionReference. (I583a8)
Ciąg AnnotatedString został zmieniony tak, aby był dłuższy niż kotlin.CharSequence. Dlatego długość i sekwencja podsekwencji są teraz funkcjami instancji, a funkcje rozszerzeń zostały usunięte. (Iaf429).
PamiętajObserver, która zastąpiła funkcję CompositionLifecycleObserver, a zasada CompositionLifecycleObserver została wycofana.
Metoda
RememberObserver
zastępuje metodęCompositionLifecycleObserver
ze zmodyfikowaną semantyką i nowymi nazwami. Zmiana na nowy interfejs API można wprowadzić mechanicznie w przypadku obiektów, które są zapamiętane tylko raz, co jest i nadal jest zalecane. Jeśli jednak odniesienie w kompozycji zostało zapamiętane więcej niż raz, funkcjaonRemembered
jest wywoływana dla każdego odwołania, w którym elementonEnter
jest wywoływany tylko raz. FunkcjaonEnter
była wywoływana wiele razy, jeśli obiekt był używany w podkompozycjach, np.WithConstraints
iScaffold
sprawiły, że gwarancja pojedynczego wywołaniaonEnter
była zawodna i został usunięty dlaRememberObserver
.RememberObserver
dodaje elementonAbandoned
, który jest wywoływany, jeśli wystąpienieRememberObserver
jest zwracane z wywołania zwrotnego przekazanego doremember
, ale nie jest zapamiętywane w stanie kompozycji i dlatego nigdy nie zostanie wywołane przezonRemembered
. Może się tak zdarzyć, jeśli wyjątek kończy kompozycję przed ukończeniem lub gdy kompozycja została odrzucona, ponieważ stan produkował kompozycję, która nie jest już aktualna lub nie jest już potrzebna. Jeśli instancjaRememberObserver
zgodnie z powyższą rekomendacją dotyczącą referencji śledzi zasób zewnętrzny (zarównoonForgotten
, jak ionAbandoned
), oznacza to, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte prace lub zasoby przydzielone wonRemembered
, obiektonAbandoned
może zostać zignorowany, ponieważ nie będzie wywoływany po wywołaniu funkcjionRemembered
. (I02c36)Wycofano operacje arytmetyczne między co najmniej 2 jednostkami tekstowymi. Wycofano funkcje TextUnit.Sp i TextUnit.Em zamiast funkcji rozszerzeń, takich jak Int.sp i Int.em. (I48369)
Zasoby w bibliotekach bez jawnie zadeklarowanych zasobów publicznych (np. za pomocą pliku public.xml) są teraz domyślnie prywatne. (Ia1dcc, b/170882230)
Przewijane kolumny/wiersz zostały wycofane. Korzystanie z ScrollableColumn jest mniej wydajne niż LazyColumn w przypadku dużej ilości przewijanych treści, ponieważ LazyColumn umożliwia tylko tworzenie, pomiar i rysowanie widocznych elementów. Aby uniemożliwić użytkownikom korzystanie z nieefektywnych metod, zdecydowaliśmy się wycofać elementy ScrollableColumn i ScrollableRow i promować wykorzystanie metod LazyColumn i LazyRow. Użytkownicy mogą zdecydować, że nie potrzebują leniwego działania, i użyją modyfikatorów bezpośrednio w ten sposób: Column(Modifier.vertical Scroll(remember ScrollState())) (Ib976b, b/170468083).
Nowa metoda fabryczna
items(count: Int)
dla zakresu LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
iitemsIndexed(items: List)
to teraz funkcje rozszerzeń, więc trzeba je importować ręcznie, gdy są używane. Nowe przeciążenia rozszerzeń dla tablic:items(items: Array)
iitemsIndexed(Array)
(I803fc, b/175562574)Użyj ImeAction.None zamiast ImeAction.NoAction
- Użyj ImeAction.Default zamiast ImeAction.Unspecified (Ie1bcc)
Wykorzystanie narzędzia TestCoroutineDispatcher w testowaniu (I532b6)
Zmieniono nazwę TextInputService.onStateUpdated na updateState (Id4853)
Przejście na podstawie definicji przejścia zostało wycofane (I0ac57)
Element TextUnitType.Inherit (dziedzicz) został usunięty. Użyj wartości TextUnitType.Unspecified. (I9ff64).
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
Usługa androidx.compose.ui:ui-*:1.0.0-alpha10
została zwolniona. Wersja 1.0.0-alfa10 zawiera te zatwierdzenia.
Zmiana niezbędna
Zmiana struktury wewnętrznego interfejsu API kompilatora umożliwia grupowanie zmian w węzłach wygenerowanych w wyniku kompozycji do fazy „wprowadzania zmian” po zakończeniu wszystkich funkcji
@Composable
.Jest to niezgodna z działaniem zmiana, która może mieć wpływ na kod aplikacji, ponieważ węzły nie są już dostępne z wewnętrznych i eksperymentalnych interfejsów API do czasu zastosowania zmian. Zwykle można to obejść, umieszczając kod z takimi zależnościami w kompozycji
SideEffect
, aby opóźnić wykonanie kodu do momentu utworzenia i zainicjowania węzłów. (I018da)
Zmiany interfejsu API
- Dodano funkcję Modifier.focusOrder(), która może służyć do określania niestandardowej kolejności przechodzenia między elementami ostrości (I90cf5, b/175899543, b/170155556, b/170155429).
- Usunęliśmy wycofaną metodę skupiającą się na obserwatorium skupienia się na onFocusChanged lub onFocusEvent (I3ecb9, b/175156387)
- Zmiany w interfejsie EditOperations API
- Zmieniono nazwę operacji EditOperation na EditCommand
- Dodano sufiks polecenia dla konkretnych implementacji EditOperation
- Pole EditCommand nie jest już klasami danych.
- Zmieniono nazwę funkcji EditOperation.process na applyTo
- Zmieniono nazwę detektora zdarzeń wejściowych nainputEventCallback
- (I0a366)
- Usunięto nieużywane obiekty PxSquared, PxCubed i PxInverse. Zmieniono Size.center() na właściwość. (I973f7)
- Moduł ui-test będzie teraz mógł konfigurować tworzenie modułów redukcji dla testowanych interfejsów użytkownika (Ibebd8).
- zmodyfikowano Prędkość, aby uwzględnić części składowe i operacje matematyczne. (IB0447)
- Zmieniliśmy nazwę
@ExperimentalTesting
na@ExperimentalTestApi
, aby była zgodna z podobnymi eksperymentalnymi adnotacjami interfejsu API (Ia4502, b/171464963) - Nazwa Color.useOrElse() została zmieniona na Color.takeOrElse() (Ifdcf5).
- Usunęliśmy nieużywane klasy DpInverse, DpSquared i DpCubed. (I4d62b)
- Nazwa ograniczenia#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c).
- Dodaj wywołanie zwrotne, aby powiadamiać właściciela o zmianie granic węzła układu. (I72fd1)
- W przypadku klas wbudowanych ze stałą nieokreśloną dodawane są wartości atrybutów isSpecified, isUnspecified i useOrElse. (I93f7b, b/174310811)
Rozwiń interfejsy API ComposeView, aby umożliwić recykling widoków opartych na ComposeView i usuwanie ich kompozycji w celu późniejszego odtworzenia. Dodaj interfejsy API umożliwiające instalowanie i wykrywanie zasobów Rekompozytorów ograniczonych do okna oraz obiektów CompositionReferences do tworzenia kompozycji podrzędnych.
Dodano funkcję ViewCompositionStrategy, która pozwala skonfigurować strategię usuwania kompozycji w obiektach [Abstract]ComposeViews. Domyślnym działaniem jest usuwanie po odłączeniu okna. (I860ab)
Usunięto publiczny interfejs API Any.identityHashCode() (I025d7).
Usunęliśmy interfejs toStringAsFixed i zastąpiliśmy nim bezpośrednio String.format. (Iaba6b)
Dodaj przełącznik do podstawowego pliku Strings.kt (I4a5b7, b/172366489)
Przeniesienie obiektu natywnego do modułu interfejsu i przekształcenie go w moduł wewnętrzny. Zaktualizowane użycie natywnego użycia klasy natywnej oznacza, że w implementacjach używana jest metoda „to MyClass”. (I4f734)
Modifier.focus() i Mmodifier.focusRequester() zostały wycofane. Użyj w zamian metod Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
Wprowadzono opcję SelectionRegistrar.notifySelectableChange, aby powiadamiać użytkowników o aktualizacjach Selectable (Zaznaczanie) w usłudze SelectionManager. (I6ff30, b/173215242)
Wprowadzono właściwość Outline.bounds, która umożliwia uzyskanie prostokąta ograniczającego dla różnych implementacji konspektów. (I16e74, b/175093504)
Wycofano TestUiDispatcher. Użyj Dispatchers.Main (Ic171f, b/175385255)
ImeOptions i keyOptions nie są już klasą danych (I3c898, b/168684531).
Zmiany w interfejsie VisualTransformation API
- Zmieniono nazwę OffsetMap na OffsetMapping
- Zmieniono nazwę OffsetMapping.identityOffsetMap na OffsetMapping.Identity
- Transformacja hasła nie jest już klasą danych.
- Przeniesiono OffsetMapping do własnego pliku
- (I0bdf3).
Zmieniono nazwę pozycji na DpOffset i usunęliśmy getRange() (Ib2dfd).
Zmieniono funkcję Dp.isFinite() na wartość Dp.isFinite (I50e00)
Poprawki błędów
- Rekompozytor udostępnia teraz przepływ w bieżącym stanie, co pozwala monitorować jego aktywność i aktywność powiązanych efektów. (Ifb2b9).
- Dostęp do natywnego zdarzenia keyEvent można teraz uzyskać przez keyEvent.nativeKeyEvent (I87c57, b/173086397)
- Metoda
animate()
została zastąpiona przezanimateAsState()
, która zwracaState<T>
zamiastT
. Zwiększa to wydajność, ponieważ zakres unieważniania można zawęzić do miejsca, w którym odczytywana jest wartość stanu. (IB179e) - Dodaj interfejs API roli Semantics i rolę jako parametr do klikalnego, możliwego do wyboru i przełączenia interfejsu SemanticsModifier. Zmieniono Modifier.progressSemantics, tak aby Slider mógł z niego korzystać. (I216cd)
- Nowy interfejs API
Animatable
oparty na współudziale, który zapewnia wzajemną wyłączność wśród animacji.- Nowa specyfikacja DecayAnimationSpec z obsługą wielowymiarowej animacji rozkładu
- (I820f2, b/168014930)
Wersja 1.0.0-alpha09
16 grudnia 2020 roku
Usługa androidx.compose.ui:ui-*:1.0.0-alpha09
została zwolniona. Wersja 1.0.0-alfa09 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wycofana funkcja KeyEvent.Alt została usunięta. Zamiast niej użyj klucza KeyEvent.isAltPressed. (IdD695).
- Modifier.keyInputFilter i Modifier.previewKeyInputFilter został wycofany z użycia: Modifier.onKeyEvent i Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
- Interfejs Modifier.focusObserver został wycofany. Użyj metody Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- W przypadku zawieszania interfejsów API danych wejściowych wskaźnika zmieniliśmy nazwę HandlePointerInputScope na AwaitPointerEventScope i HandlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755).
- Autofill API to teraz eksperymentalny interfejs API, który wymaga włączenia (I0a1ec)
- Dodanie deklaracji dotyczących zniszczenia w celu utworzenia instancji FocuSRequester (I35d84, b/174817008)
- AccessibilityLabel została zmieniona na contentDescription. Wartość ułatwień dostępu została zmieniona na stateDescription. (I250f2)
- Zdarzenia niestandardowe zostały usunięte z interfejsu API do wprowadzania danych wejściowych wskaźnika (Ia54d5, b/175142755)
- Wprowadziliśmy kilka nowych funkcji w Rejestrze wyboru i przemianowaliśmy parametr onPositionChange na nazwę notificationPositionChange. (Ifbaf7).
- Więcej użytkowników LayoutNode, które oznaczyliśmy jako wewnętrzne (I443c6)
- Narzędzie LayoutInfo zostało wprowadzone do użytku w narzędziach i testach (I9b190)
- AndroidOwner jest wewnętrzny (Ibcad0, b/170296980)
- Usunięto adnotację ExperimentalPointerInput (Ia7a24).
- Dodano zagnieżdżony system przewijania. Więcej informacji znajdziesz na stronie Modifier.nested Scroll (I36e15, b/162408885).
- Parametr subcomposeInto(LayoutNode) został zmieniony na wewnętrzny (Id724a)
Interfejs
Applier
został zmieniony, aby uprościć tworzenie drzew w widoku od dołu, a nie od góry.Nazwa metody
insert()
została zmieniona nainsertTopDown()
.Dodano nową metodę:
insertBottomUp()
.Stosuje on węzły do edytowanego drzewa przy użyciu funkcji
insertTopDown()
lubinsertBottomUp()
, w zależności od tego, co sprawdza się lepiej.Niektóre drzewa, np.
LayoutNode
iView
, są znacznie efektywniejsze w budowaniu od dołu niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, który trzeba było kopiować do każdego narzędzia, które wymagało oddolnej struktury w celu zwiększenia skuteczności. W przypadku tej zmiany właściwośćApplier
zastępuje zasadęinsertBottomUp()
, aby utworzyć drzewo od dołu do góry, i zastąpienieinsertTopDown()
, aby utworzyć drzewo od dołu. (Icbdc2)Do właściwości AndroidDialogWindow dodano właściwości disableOnBackPress i merchantOnClickOutside. Pozwalają one określić, kiedy w oknie dialogowym ma być wywoływana funkcja lambda onWaitRequest. (If5e17).
Dodano interfejs PaintterResource API do obsługi nieprzezroczystych obiektów Painter pochodzących z formatów zasobów zrastrowanych (np. PNG) lub plików VectorDrawable. Konsumenci nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponentach lub modyfikatorach malarstwa. (I2c703, b/173818471)
Dodaliśmy modyfikator.clearAndSetSemantics, aby wyczyścić semantykę elementów podrzędnych i ustawić nowe. (I277ca)
Przeniesiono ContentDrawScope do modułu interfejsu ui-graphics, aby korzystać z modułu DrawScope. (Iee043, b/173832789)
Wprowadziliśmy interfejs API PathEffect, który pozwala tworzyć różne wzory kreślonych kształtów. Wycofaliśmy NativePathEffect. Zastąpiliśmy oczekiwaną/rzeczywistą implementacją PathEffect. (I5e976, b/171072166)
Dodaliśmy interfejsy IdlingResource do Compose jako wariant bezczynnych zasobów Espresso obsługiwany przez Compose. Można je zarejestrować i wyrejestrować za pomocą reguły ComposeTestRule (I433f3).
Usunięto globalną (wyrejestrowaną) rejestrację ComposeIdlingResource i globalną (wycofaną) rejestrację zegarów w ComposeIdlingResource (I32660).
Poprawki błędów
- Funkcje lambda w modyfikatorach przesunięcia zwracają teraz wartość IntOffset, a nie liczbę zmiennoprzecinkową. (Ic9ee5, b/174137212, b/174146755)
Usunięto interfejsy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia wiadomości.
Interfejsy CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API, którego można używać do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do stosowania poza interfejsem ui-tooling API, ponieważ dostarczają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c)
Zrefaktoryzowano ShaderBrush, aby leniwie utworzyć instancję cieniowania, gdy dostępne są informacje o rozmiarze środowiska rysowania. Przydaje się to przy definiowaniu gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania funkcji kompozycyjnej, bez konieczności wdrażania niestandardowych implementacji DrawModifier.
Wycofaliśmy interfejsy API konstruktora funkcji gradientu. W obiekcie Gradient zastąpiliśmy metody fabryczne. (I511fc, b/173066799)
Wycofano LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Użyj LazyColumn i LazyRow (I5b48c)
Wycofana wersja BuildCompat.isAtLeastR (Idb37e)
Dodaliśmy funkcję fabryczną buildAnnotatedString, która pozwala utworzyć obiekt AnnotatedString. Wycofano funkcję konstruktora adnotatedString. (Idfe0b)
Usunęliśmy metody rozszerzeń w liczbach zmiennoprzecinkowych i podwójnych, aby konwertować wartości na radiany. Przeniesiona do funkcji prywatnej w implementacji PathParser, która była jedynym miejscem, w którym jest używana (I25f52)
Wersja 1.0.0-alpha08
Grudzień 2, 2020
Usługa androidx.compose.ui:ui-*:1.0.0-alpha08
została zwolniona. Wersja 1.0.0-alfa08 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaj działanie semantyczne Odrzuć (I2b706)
- Przeniesiono interfejsy API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierExit.kt, który zawiera aliasy typów i metody pomocnicze, które pomagają w migracji z wycofanych interfejsów API do obecnych. (Id6044, b/173834241)
- W odpowiedzi na opinie interfejsu API zmieniliśmy też nazwę Modifier.drawLayer na Modifier.graphicsLayer. W odpowiedzi na opinie interfejsu API zaktualizowaliśmy też powiązane klasy na GraphicsLayer. (I0bd29, b/173834241)
- Dodaliśmy nowe metody placeable.placeWithLayer() i placeable.placeRelativeWithLayer(), które umożliwiają umieszczanie elementu podrzędnego z warstwą graficzną do rysowania w niestandardowych układach i modyfikatorach układu. Dzięki temu możemy najpierw zoptymalizować ponowne rysowanie treści, dzięki czemu nie musimy ponownie rysować treści dziecka (Ibd8f6, b/170296989, b/171493718, b/173030831).
- Element
<T>
został usunięty z deklaracji SubcomposeLayout. Możesz go użyć bez określania typu. (IB60c8) - W drewnie dodaliśmy
interfejs API Modifier.scale/rotate.
- Nazwa
Modifier.drawOpacity
została zmieniona naModifier.alpha
- Nazwa
Modifier.drawShadow
została zmieniona naModifier.shadow
(I264ca, b/173208140)
- Nazwa
- Sprawia, że pola czasu działania i pozycji PointerInputData nie mają wartości null. (Id468a).
- MaterialTheme ustawia teraz prawidłowe kolory uchwytów wyboru i tła zaznaczenia. Aplikacje niematerialne mogą ręcznie używać elementów AmbientTextSelectionColors, aby dostosowywać kolory używane do zaznaczenia. (I1e6f4, b/139320372, b/139320907)
- Dodano obiekt WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywny, oraz obiekt WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
- Zaktualizowaliśmy TransformOrigin API, aby miał składnię destrukcyjną, która zwracała wartości
pivotFractionX
ipivotFractionY
jakocomponent1
icomponent2
(If43c4, b/173586560) - Dodano sprawdzanie nazw i pozycji parametrów kompozycyjnych lambda w celu sprawdzenia spójności z wytycznymi dotyczącymi tworzenia wiadomości.
Zgodnie ze sprawdzaniem lintowania i wskazówkami przenieśliśmy też niektóre interfejsy API z użyciem nazwy
children
jako nazwy końcowej lambdy docontent
. (Iec48e). - Dodano interfejs API sprawdzający, czy podczas wysyłania kluczowego zdarzenia zostały naciśnięte klawisze modyfikujące Alt, Ctrl, Meta lub Shift. (I50ed9)
- Dodano nowe obciążenie typu
Modifier.drawLayer()
. Zajmuje to nowy blok lambda w elemencie GraphicsLayerScope, gdzie definiujesz parametry warstwy w sposób, który umożliwia pominięcie ponownej kompozycji i przekazywania jej po zmianie stanu. DrawLayerModifier jest obecnie na wewnętrznym etapie przygotowań do migracji logiki do metody placeable.placeWithLayer() rozwiązania LayoutModifier (I15e9f, b/173030831) - Wycofany komponent Ambient został wycofany z sufiksem
Ambient
i zastąpił je nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi interfejsu Ambients i Compose API. (I33440) - Przeniesiono
androidx.compose.ui.text.Typeface
do:androidx.compose.ui.text.font.Typeface
(Ic2b81) - Nazwa argumentu mergeAllDescendants została zmieniona na scalanie potomnych. (IB6250)
- Nowy wykrywacz gestów przeciągania do zawieszania wejściowego interfejsu API, w tym blokowanie orientacji. (Icef25).
- Zmieniliśmy nazwę komponentu VectorAsset na ImageVector. Przeniesiono komponent VectorAsset na Builder, aby stał się wewnętrznym klasą ImageVector, zgodnie z wytycznymi dotyczącymi interfejsu API. Dodano alias typu VectorAssetBuilder do połączenia z obiektem ImageVector.Builder w przypadku zgodności. (Icfdc8)
- Zmieniliśmy nazwę komponentu ImageAsset i powiązane metody na ImageBitmap. (Ia2d99)
- Dodaj parametr zIndex do parametru „place()” komponentu PlacesScope, aby Modifier.zIndex() działa teraz jako funkcja LayoutModifier, a każdy układ niestandardowy może ustawiać wartości zIndex dla elementów podrzędnych bezpośrednio w bloku miejsca docelowego (I711f7, b/171493718)
- Przeniesiono właściwości semantyki podstawowej do interfejsu użytkownika (I6f05c)
- Wycofywanie elementu Place(Offset) i placeRelative(Przesunięcie) Użyj przeciążeń z przesunięciami liczby całkowitej (I4c5e7)
- Poprzednio wycofane interfejsy API zostały usunięte: usunięto parametr Modifier.onPositioned, użyj modułu Modifier.onGloballyPositioned. Usunięto modyfikator.onDraw, użyj Modifier.onDrawBehind. Usunięto modyfikator.plus. Użyj polecenia Modifier.then. Kolor. Usunięto ustawienie. Użyj wartości Kolor.Nieokreślony. Klasa PxBounds została usunięta. Zamiast niej użyj Rect. (IE9d02, b/172562222)
- Interfejs Wyrównania został zaktualizowany i działa. (I46a07, b/172311734)
- Wykrywanie gestów do kliknięcia, dwukrotnego dotknięcia, przytrzymania i wskaźnika naciśnięcia zostało dodane za pomocą nowego wskaźnika zawieszania. Dodaliśmy też kilka narzędzi, które ułatwiają programistom pisanie własnych wzorców do wykrywania gestów. (I00807).
- Nazwa konta
id
została zmieniona nalayoutId
w domenieLayoutIdParentData
. Nazwa „Measurable.id
” została zmieniona naMeasurable.layoutId
. (Iadbcb, b/172449643) - Nowy detektor gestów wielodotykowych, w tym pomoce do wykrywania obracania, powiększania i przesuwania. (IC459d).
- Wprowadziliśmy interfejsy SweepGradientShader i SweepGradientBrush API. (Ia22c1).
- Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest obecnie w fazie eksperymentalnej (I6ef86, b/171378521)
Dodaj interfejsy API do przewijania opartego na współrzędnych:
Dodaje interfejsy LazyListState.snapToItem i LazyListState.smooth ScrollBy, a także interfejsy API niższego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania, który kontroluje przewijanie, które czeka na zakończenie przewijania przed jego zwróceniem. (IE5642)
W podstawie musi być dodana funkcja Modifier.focusable. Umożliwia dodanie do komponentu zachowania, które można zaznaczyć, zachowując przy tym prawidłową semantykę i ułatwienia dostępu. (I41eb9, b/152525426, b/162865824)
Podaj domyślne implementacje metod i właściwości w regule AnimationClockTestRule, którą można delegować do jej
clock
(I7ea3d, b/173399709)AndroidComposeTestRule może teraz akceptować niestandardowe programy uruchamiające aktywność (Ib8288, b/153623653, b/154135019)
Interfejs TextUkładResult.getLineVisibleEnd został wycofany. Zastąpienie TextLayoutResult.getLineEnd zawiera teraz nowy parametr availableEnd. (I73282)
Zaktualizowano TextFieldValue API
- ustawił wartość pola TextFieldValue.composition tylko do odczytu
- usunięto wyjątek dla nieprawidłowego zakresu wyboru (I4a675, b/172239032)
Obsługa TtsAnnotation w mechanizmie zamiany tekstu na mowę. (I54cc6)
Nowe interfejsy API do uruchamiania animacji w współrzędnych (Ied662)
Poprawki błędów
- Nazwa parametru wyrównania Box została zmieniona na contentWyrównajment. (I2C957)
- Zmieniono nazwy modyfikatorów przesunięciaPx na przesunięcie. Wykorzystują teraz parametry lambda zamiast stanu State. (Ic3021, b/173594846)
- Dodano parametr resetInput do usługi TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Dodano sprawdzanie lintowania parametrów modyfikatora w funkcjach kompozycyjnych. Ten lint sprawdza nazwy, typ zwracany, wartość domyślną i kolejność parametru pod kątem spójności ze wskazówkami dotyczącymi tworzenia wiadomości. (If493b).
- Tymczasowo dodano opcję pozwalającą, by zegar TestAnimationClock był wywoływany przez MonotonicFrameClock (I1403b, b/173402197)
- Dodano otokę kroju czcionki na Androidzie. Krój czcionki Androida można wczytać za pomocą funkcji
typeface
, np.typeface(Typeface.DEFAULT)
. Nazwa została też zmieniona ztypefaceFromFontFamily()
natypeface()
(I52ab7) - Dodano sprawdzanie lintowania w celu sprawdzenia, czy funkcje fabryczne modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, co pozwala na płynne łączenie ich w łańcuchy. (I07981).
- Usuń stary moduł testowania interfejsu i jego złącza (I3a7cb)
- Rekompozytor nie akceptuje już klasy EmbeddingContext. Wymagane zależności harmonogramu są pobierane z programu EffectsCoroutineContext. Interfejs FrameManager został wycofany. Integracje z platformą powinny zainicjować własną globalną obsługę zrzutów. (I02369)
- Przekazuj informacje o stylu do węzła ułatwień dostępu. (If5e8d).
- Nazwa elementu TextUnit.Inherit została zmieniona na TextUnit.Nieokreślona, aby zachować spójność z innymi jednostkami. (Ifce19).
Interfejs tworzenia wiadomości w wersji 1.0.0-alfa07
11 listopada 2020 roku
Usługa androidx.compose.ui:ui-*:1.0.0-alpha07
została zwolniona. Wersja 1.0.0-alfa07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wprowadziliśmy klasę wbudowane ScaleFactor do reprezentowania współczynników skali dla osi poziomej i pionowej niezależnie od siebie na potrzeby niejednolitych przypadków użycia skalowania.
- Dodano metodę computeScaleFactor do ContentScale
- Dodano funkcję ContentScale.FillBounds do wykonywania niejednolitego skalowania w celu rozciągnięcia granic atrybutu src tak, aby w pełni zająć miejsce docelowe.
- Dodaliśmy metody operatorów do obliczania parametrów ScaleFactor z parametrami Size.
- (IC96a6, b/172291582)
- Dodane zostały fabryki BiasWyrównaj i BiasabsPercentageDopasowaniement do tworzenia wyrównań. (IAC836, b/169406772)
- Pozwól deweloperowi wymusić usunięcie zaznaczenia. (I90372)
- Naprawiono błąd, przez który nie rysowano podwyższenia w widokach w widoku tworzenia. (If7782).
- Utworzono interfejs API onDrawBehind w ContentDrawScope, aby dopasować konwencję nazewnictwa do metody Modifier.drawBehind. (I4fc3a, b/171955269)
- Dodanie obsługi odległości kamery w celu uzupełnienia przekształceń 3D rotationX/rotationY w interfejsach API warstwy. (I40213, b/171492100)
- Dodano element SelectionContainer bez wywołania zwrotnego (Ibfadb)
- Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Elementu SubcomposeLayout można teraz używać bez dodawania elementu @OptIn (I708ad)
- FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
- Usunięto przezroczystość z modyfikatora DrShadow(), ponieważ była myląca. (I82c62, b/171624638)
- Element MeasureResult został przeniesiony z obiektu MeasureScope. (Ibf96d, b/171184002)
- Kilka symboli związanych z układem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
- Usunięto wycofaną wartość FocusState2 (I686cb, b/168686446)
- ZIndexModifier jest teraz wewnętrzny (I1808b, b/171493718)
- Zaktualizowaliśmy typ zwracania metody lerp w parametrach rozmiaru, aby zwracał niepusty rozmiar w celu uniknięcia niepotrzebnego pudełka. (IB0044)
- Dodano TestMonotonicFrameClock do testowania kodu, który korzysta z mechanizmu MonotonicFrameClock Compose do oczekiwania na zdarzenia klatki kompozycji przy użyciu metody runBlockTest kotlinx-coroutines (I4402f).
- Usunięto AccessibilityScope.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
- Sekcja CapToBitmap została przeniesiona do tagu scanToImage. (I86385)
- Foundation.Text została wycofana i zastąpiona materiałem material.Text. Informacje o podstawowym, nieopiniowanym interfejsie API tekstowym, który nie przetwarza wartości z motywu, znajdziesz na stronie androidx.compose.foundation.BasicText. (If64cb).
- Zaktualizuj pola TextFields, aby akceptować KlawiaturaOptions (Ida7f3)
- Zmień nazwę KlawiaturaOptions na ImeOptions (I82f36).
- Przeniesiono KlawiaturaType i ImeAction do KlawiaturaOptions (I910ce).
- Jako alternatywę dla określania elementów otoczenia dodano metodę ProvideDefault jako alternatywę dla elementów otoczenia. Można jej używać do określania wartości otoczenia, które będą ustawiane tylko wtedy, gdy nie podano jeszcze żadnej wartości otoczenia. (Id6635, b/171024925)
- Pole BaseTextField zostało wycofane. Użyj w zamian pola BasicTextField. (I896eb)
- Przedstawienie modułu ui-test-junit4 (Ib91f8).
- Nazwa „
relativePaddingFrom
” została zmieniona napaddingFrom
. Dodaliśmy modyfikatorpaddingFromBaseline
, który ułatwia określanie odległości od granic układu do punktów odniesienia tekstu. (I0440a, b/170633813) - Nazwa LaunchedTask została zmieniona na LaunchedEffect, aby zachować spójność z interfejsami API SideEffect i DiposableEffect. Aby zachęcić do stosowania sprawdzonych metod, metoda LaunchedEffect bez parametrów tematu jest niedozwolona. (Ifd3d4).
- Wprowadzono zasoby kompozycyjne, które są ponownie komponowane po zaktualizowaniu konfiguracji. (I6387c, b/167352819)
- Funkcja rekompozycji wymaga teraz CoroutineContext podczas budowy (Ic4610)
- Sumuj wartości
zIndex
, gdy zastosowano kilka wartościModifier.zIndex()
. Wcześniej wygrywała pierwsza. (Ic514c, b/170623936) - Zmiany w wewnętrznej implementacji SlotTable, które nie powinny mieć wpływu na publiczny interfejs API. (If9828).
- Dodano opcję autokorekty IME dla klawiatury (I57b8d)
- Plik androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb)
- Usunięto KlawiaturaOptions.toImeOptions z publicznego interfejsu API. (IC2e45).
Treści tłumaczone przez użytkowników zewnętrznych
- Wyłączona publikacja wewnętrznego artefaktu androidx.compose.ui:ui-text-android (Ib93fa)
Wersja 1.0.0-alpha06
28 października 2020 r.
Usługa androidx.compose.ui:ui-*:1.0.0-alpha06
została zwolniona. Wersja 1.0.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Funkcja Rekompozytor jest teraz elementem CompositionReference oraz prawidłowym elementem nadrzędnym kompozycji. Bezpośrednie przekomponowanie jest teraz wymagane w mniejszej liczbie miejsc. (I4036f)
- Zrezygnuj z metody VectorPainter i zamiast niej użyj komponentu PamiętajVectorPainter, aby lepiej wskazać, że interfejs kompozycyjny interfejs API wewnętrznie wykorzystuje funkcję „zapamiętuj” w celu zachowywania danych w różnych kompozycjach. (Ifda43).
- Zaktualizowaliśmy interfejs Modifier.drawWithCache API, aby udostępnić ContentDrawScope jako zakres odbiorcy zamiast DrawScope. Umożliwi to implementacjom zmianę kolejności poleceń rysowania. Jest to przydatne w przypadkach użycia mieszania/kolorowania, w których najpierw muszą zostać wyrenderowane piksele treści, aby odpowiedni algorytm trybu mieszania został zastosowany prawidłowo. (IE7ec8).
- Przenieś obiekt SimpleContainer do PopupTestUtils.kt (I78c57).
- ConsumedData nie jest już klasą danych. Szczegółowe informacje znajdziesz na stronie https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
- Popraw pozycję uchwytu RTL. (I6e1e0).
- Zrefaktoryzowano interfejsy DrawScope i ContentDrawScope zamiast klas abstrakcyjnych.
- Utworzono implementację CanvasDrawScope dla DrawScope
- Zrefaktoryzowane implementacje narzędzia DrrawScope w zamian za pomocą CanvasScope
- Utworzyliśmy DrawContext, aby opakowywać zależności DawScope
- Usunięto wycofane metody w DrawScope (I56f5e)
- Niezgodna z zasadami: usunęliśmy wartość zwracaną z metody
PointerInputFilter.onPointerEvent(...)
, ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o wykorzystaniu. Zamiast zwracać dane z metodyPointerInputFilter.onPointerEvent(...)
, możesz teraz po prostu zmodyfikować dane o wykorzystaniu przekazywanej wartości PointerEvents. (I6acd0). - Opracowano interfejsy MeasureScope i IntrinsicMeasureScope. (I1a087, b/170461665)
- Funkcja scalania dla AdjustLine została ukryta. (I9da1a, b/170612900, b/170611568)
- Dodaj możliwość podawania informacji inspektora w modyfikatorze utworzonym (Idee08, b/163494569)
- Do menu wyboru dodano opcję SelectAll (Ief02b).
- Zaktualizowaliśmy narzędzie DrawTransform.rotate, tak aby przyjęło domyślny parametr przestawny o wartości środkowej, aby pasował do dokumentacji.
- Zaktualizowano metodę DrawScope.rotateRad, tak aby przetwarzała przesunięcie dla punktu przestawnego, aby pasowało do innych metod przekształcania.
- Wycofano przeciążenie DrawScope.rotateRad, które przyjmowało elementy zmiennoprzecinkowe dla współrzędnych x i y osi czasu.
- (Iffcbb, b/170434992)
Poprawki błędów
- Sprawdzanie lint interfejsu API dla MissingGetterMatchingBuilder jest włączone dla androidx (I4bbea, b/138602561)
- Dodaj test. (I6b8ae),
- Włącz przejścia w ComposeTestRule. Usuń tę opcję, by włączyć migający kursor z reguły ComposeTestRule. (If0de3).
- Dodano opcję IME dla wielkich liter (I8ac38).
- Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
- Przenieś obiekt SimpleContainer do PopupTestUtils.kt (I65c3e).
- Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlić sposób jego używania w usłudze Compose. Zaktualizowaliśmy dokumentację, by wskazać, że ujemne promienie narożników są zaciśnięte do zera. (I130c7, b/168762961)
- poprawiono współpracę z Androidem dzięki dalszemu wysyłaniu zdarzeń MotionEvents do podrzędnych widoków Androida, które zwracają wartość false dla zdarzeń onTouchEvent w przypadku wszystkich działań oprócz
ACTION_DOWN
(I94c5a, b/170320973). - Box został przekształcony w funkcję wbudowaną. (Ibce0c, b/155056091)
Treści tłumaczone przez użytkowników zewnętrznych
- Obsługuj różne języki w usługach
AnnotatedString.capitalize
iAnnotatedString.decapitalize
(I4aa7f)
Wersja 1.0.0-alpha05
14 października 2020 r.
Usługa androidx.compose.ui:ui-*:1.0.0-alpha05
została zwolniona. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaj DSL do określania informacji o inspektorze (Ic9a22)
- Przenieś do tekstu przytrzymanie. (Iff2bc)
- eksperymentalny modyfikator zawieszenia danych wejściowych (Ia77d2),
- Dodano działania ułatwień dostępu Kopiuj/wklej/wytnij (I6db4f)
- Usunięto publiczny konstruktor dla właściciela Androida (Iacaef).
- Wyskakujące okienka i okna dialogowe dziedziczą teraz flagę FLAG_SECURE z okna nadrzędnego. Dodaliśmy też opcję bezpośredniego konfigurowania (I64966, b/143778148, b/143778149)
Dane o wykorzystaniu można teraz zmieniać. Poza tym wywołania funkcji rozszerzeń, które obecnie wykorzystują dane, nie zwracają już nowej wartości PointerInputChange, tylko zmieniają podany parametr PointerInputChange.
Jest to pierwszy krok w dwuetapowym procesie, który ma na celu zapewnienie zmiennych danych PointerEvent w taki sposób, że innych danych wskaźników nie można edytować przez kod użytkownika. Drugim krokiem będzie usunięcie zwracanego typu
List<PointerInputChange>
z tabeliPointerInputFilter.onPointerEvent(...)
. (Id067e)Wyłącz zaznaczanie w tekście i wersję demonstracyjną. (IE7E97).
Made onGloballyPositioned (Wykonano je na całym świecie) w funkcji wbudowanej (I15830)
Nazwa OnPositionedModifier została zmieniona na OnGloballyPositionedModifier, a nazwa onPositioned() została zmieniona na onGloballyPositioned(). (I587e8, b/169083903).
Do właściwości właściciela dodano właściwość hasPendingMeasureOrLayout. Informuje ona, czy właściciel ma jakieś oczekujące prace nad układem. (I3d9f8, b/169038599)
Dodano interfejs API do automatycznego usuwania zaznaczenia (Ie1dc2, b/161487952)
Czcionka
PointerInputFilter.onPointerInput(...)
została usunięta. W ich miejscu powinna być używana wartośćPointerInputFilter.onPointerEvent(...)
. (I6f04a)Zmiany rozmiaru
- Usunięto parametr Size.getFlipped
- Usunięto rozmiar.rem
- Usunięto Size.truncDiv (Ief44d, b/169790720)
W ramach standaryzacji wartości w klasach wbudowanych zmień nazwę Kolor.Unset na Kolor. Nieokreślona, aby zachować spójność z innymi klasami wbudowanych (I97611, b/169797763).
Wprowadzono tekst TextOverflow.None. Gdy nadmiarowe ma wartość Brak, tekst nie obsługuje już nadmiarowych elementów i zgłasza rzeczywisty rozmiar do LayoutNode. (I175c9, b/158830170)
Nazwa parametru zakresu w obiekcie AnnotatedString.Builder.addStringAnnotation została zmieniona na tag, by zapewnić spójność interfejsu API. (I7c8cb)
Poprawki błędów
- Wydajność przewijania w przypadku LazyColumn/Row zwiększa się, ponieważ podczas każdego przewijania ma mniej pracy w subkompozycji. Do klasy kompozycji dodano nową metodę hasInvalidations(). Nazwa metody hasPendingChanges() z Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- Zaktualizowano Size.Nieokreślone parametry na Float.NaN, a nie Float.POSITIVE_INFINITY. Zaktualizowaliśmy implementacje narzędzia Painter, aby umożliwić sprawdzanie pod kątem rozmiarów nieokreślonych i nieskończonych. (I95a7e)
- Kolejność wywołań funkcji Place() w układach niestandardowych 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 wycinki klas na Androida, które są dostępne na starszych platformach, aby w miarę możliwości nie używać odczuć. (IA1790).
- Usunięty błąd: jeśli wyświetlana klawiatura oprogramowania powodowała tłumaczenie aplikacji, współrzędne wejściowe wskaźnika były nieprawidłowe. (Ic4cec, b/163077821)
Wersja 1.0.0-alpha04
1 października 2020 roku
Usługa androidx.compose.ui:ui-*:1.0.0-alpha04
została zwolniona. Wersja 1.0.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano element WłaścicielScope, aby umożliwić gromadzenie zakresów obserwacji układu i rysunków, gdy przestają one działać. (Ic4cf8).
- Dodano funkcje OnRemeasuredModifier i onSizeChanged() do odbierania wywołania zwrotnego po ponownym zmierzeniu układu treści i zmianie rozmiaru. (I657cf, b/154108792)
- Dodaj działanie semantyki długiego kliknięcia (I6281b, b/156468846)
- Zmieniono ustawienia FocusManagera na prywatne. (I7872f)
Zaktualizowaliśmy implementację, by utworzyć dedykowaną implementację DrawCacheModifier zamiast dodawać opcjonalne właściwości w DawModifier.
Zaktualizowana dokumentacja różnych metod (Ibd166)
Ustaw TextRange w tekście, aby uniknąć tworzenia obiektów. (Id034b)
Nie można już odczytywać danych PlacementScope#parentWidth i placementScope#parentLayoutDirection z bloku miejsc docelowych układu niestandardowego. (Icc1ae, b/168295623)
do właściwości semantyki dodaj parametr Accessibility ScrollState. (Ifeda9).
Wprowadzenie modułu Modifier.drawWithCache do tworzenia obiektu rysunku, który warunkowo odtwarza zależności zależne od informacji o rozmiarze i stanie (I376dc).
Ograniczenia akapitu zostały usunięte. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712).
Poprawki błędów
- Zaktualizowano wiele interfejsów Graphics API.
- Zaktualizowaliśmy interfejsy API skalowania i obrotu przekształcania, aby wykorzystywały pojedynczy parametr Offset do reprezentowania współrzędnych przestawnej zamiast osobnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowaliśmy dokumentację dotyczącą promieni eliptycznych. Oprócz eliptycznego
- Dodaliśmy dokumentację wskazującą, że publiczny konstruktor dla wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale wystąpienie obiektów Radius należy tworzyć za pomocą ich konstruktorów funkcji.
- Usunęliśmy interfejsy RoundRect API do wysyłania zapytań dotyczących górnych praw, dolnych, dolnej, środkowej części itp.
- Wycofano Rect.shift na rzecz Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect
- Usunęliśmy metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
- Nazwa RoundRect.longestSide została zmieniona na RoundRect.maxDimensions
- Zmieniono nazwę RoundRect.shortestSide na RoundRect.mindimension
- Zmieniono RoundRect.center na właściwość, a nie funkcję
- Zaktualizowaliśmy konstruktor RoundRect, który wykorzystuje właściwości typu Radius zamiast poszczególnych parametrów dla wartości promieni x/y.
- Usunęliśmy interfejsy Size API, które zakładały, że jest to prostokąt o źródle wartości 0,0
- Do interfejsu Radius dodano interfejs API destrukcyjny.
- Przenieśliśmy różne funkcje rozszerzenia RoundRect na właściwości
- (I8f5c7, b/168762961)
- Fundament.Box został wycofany. Zamiast niej użyj elementu Foundation.layout.Box. (IE5950, b/167680279)
- Nazwa stosu została zmieniona na Box. Dotychczasowa wersja Box zostanie wycofana i zastąpi nową nową wersją na stronie compose.foundation.layout. Działanie nowego pola to układanie elementów podrzędnych jedna nad drugą, jeśli ma ona kilka elementów podrzędnych. Różni się to od poprzedniej skrzynki, która działała podobnie jak kolumna. (I94893, b/167680279)
- Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać do pola ozdoby lub dopełnienie, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.splash) (Ibae92, b/167680279)
- Zaktualizowano wiele interfejsów Graphics API.
- Zaktualizowaliśmy interfejsy API DrawScope z metodami przekształcania o zakresie wskazującym, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po wywołaniu wywołania zwrotnego
- Zaktualizowaliśmy dokumentację dotyczącą clipPath, aby odwoływały się do ścieżki zamiast zaokrąglonego prostokąta
- Poprawiono odstępy w dokumentacji dla prawego parametru w clipPath
- Zmieniliśmy nazwę DrawScope.drawCanvas na DrawIntoCanvas i usunęliśmy parametr rozmiaru.
- Zmieniono nazwę parametrów Dx/dy w metodzie wstawienia na poziomą i pionową
- Dodano przeciążenie wektora, które zapewnia tę samą wartość wstawienia do wszystkich 4 progów
- Usunęliśmy dokumentację metody wstawiania, która wskazuje, że wstawienie zostanie zastosowane do wszystkich 4 stron,
- Zaktualizowano dokumentację klasy Rect
- Zaktualizowaliśmy komentarze do parametrów Rect, aby pasowały do stylu kdoc
- Usunięto elementy Rect.join i Rect.expandToInclude
- Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
- (If086a, b/167737376)
- Adnotacja rootAnimationClockFactory, uzyskania włączone
- Usuń element SelectionContainer z góry, aby wyłączyć wybór domyślny i uniknąć nieoczekiwanego zachowania. Można użyć elementu SelectionContainer, aby zapakować zawartość, którą należy zaznaczyć. (I8dfe0, b/158459594)
Wersja 1.0.0-alpha03
16 września 2020 roku
Usługa androidx.compose.ui:ui-*:1.0.0-alpha03
została zwolniona. Wersja 1.0.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Usuń działania semantyczne polegające na przewijaniu do przodu i do tyłu. Dodaliśmy kroki w AccessibilityRangeInfo. (Ia47b0).
- Usunięto
onInvalidate()
zOwner
– unieważnienie uchwytówOwnedLayer
. (Ica72b, b/162061312) W interfejsie Size API usunęliśmy metody operatorów, które wykorzystują parametry Offset. Rezultaty tych działań są niejasne, a ich typ jest nieoczekiwany. Np. czy rozmiar – przesunięcie powinno zwracać przesunięcie lub wynik rozmiaru z różnicą?
Usunięto też wycofane metody dotyczące klasy Size. (Iec902, b/166514214)
Poprawki błędów
- Poprawiono nieprawidłowe rysowanie elementów LazyColumn, co w niektórych warunkach również powodowało awarie. (Ibcf17, b/163066980, b/165921895)
- Funkcje DpConstraints i interfejsy API korzystające z nich zostały wycofane. (I90cdb, b/167389835)
- Przeniesiono
createAndroidComposeRule
iAndroidInputDispatcher
zandroidx.ui.test.android
doandroidx.ui.test
(Idef08, b/164060572) - Spójnie przemianowaliśmy zastosowania grawitacji, aby wyrównać lub wyrównać interfejsy API układu. (I2421a, b/164077038)
- Dodano onNode i inne metody globalne w ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (IEAE36).
Wersja 1.0.0-alpha02
Wrzesień 2, 2020
Usługa androidx.compose.ui:ui-*:1.0.0-alpha02
została zwolniona. Wersja 1.0.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- usuń wywołanie zwrotne w celu powiadamiania właściciela o zmianie granic węzła układu. (If654e, b/166106882)
- Dodaliśmy obsługę parametrów typu wypełnienia w ścieżkach graficznych wektorowych, aby umożliwić obsługę wycięć kształtów zgodnie z regułami wypełniania ścieżek w przypadku nawet zerowej lub niezerowej wartości. (I43dd2)
- Czas działania i szybkość działania są teraz klasami wbudowanymi (I48f4a)
- Czas trwania jest teraz w formie zajęć w tekście (I565eb)
- Dodaj wywołanie zwrotne, aby powiadamiać właściciela o zmianie granic węzła układu. (IC40b3).
Rozwiązaliśmy problem polegający na tym, że konstruktor funkcji prostokąta z odsunięciem i promieniem generował prostokąt w kolejności lewo, prawo, góra, dół, a nie lewo, góra, prawo i dół.
Usunęliśmy wycofane metody towarzyszące w Rect na rzecz konstruktorów funkcji.
Dodano testy weryfikujące metody w Rect.kt (I08460, b/165822356)
Poprawki błędów
- Dodaliśmy MutableRect – prostokąt, który można modyfikować. (I71bd2, b/160140398)
- Matrix4 została zastąpiona matrycą. Wszystkie pozostałe części pakietu Vectormath zostały usunięte. (Ibd665, b/160140398)
Zmieniła się konwencja wywoływania funkcji kompozycyjnych. To jest zmiana binarna, która powoduje niezgodność. Wszystkie biblioteki muszą zostać ponownie skompilowane, aby działały z tą wersją wtyczki kompilatora kompilatora.
Ta zmiana nie powoduje zmiany powodującej niezgodność na poziomie źródła, ponieważ jedynymi interfejsami API, które uległy zmianie, są interfejsy API kompilatora, dla których jednoznacznie wyraziła na to zgodę. (I7afd2, b/158123185)
Usunięto awarię, która mogła wystąpić, gdy wysyłanie do PointerInputFilter powodowało synchroniczne usuwanie obiektu PointerInputFilter. (I58f25)
Wersja 1.0.0-alpha01
26 sierpnia 2020 r.
Usługa androidx.compose.ui:ui-*:1.0.0-alpha01
została zwolniona. Wersja 1.0.0-alfa01 zawiera te zatwierdzenia.
Wersja 0.1.0-dev
Wersja 0.1.0-dev17
19 sierpnia 2020 r.
Usługa androidx.compose.ui:ui-*:0.1.0-dev17
została zwolniona. Wersja 0.1.0-dev17 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Interfejs
emitView
został wycofany. Jeśli to możliwe, do przesyłania wyświetleń w funkcji tworzenia wiadomości używaj zamiast tegoAndroidView
. Bezpośrednie tworzenie widoków i grup widoków nie będzie w przyszłości obsługiwane, chyba że będą one pozostawione w drzewie kompozycji (gdy będzie to możliwe w AndroidView). (I29b1e, b/163871221) - Interfejs
FocusState2
został wycofany i zastąpiony przez regułęFocusState
(Ia8b79, b/160822876, b/160923332) - Wycofane przeciążenia AndroidView zostały usunięte. (I946b9, b/163802393)
- Niestandardowe źródła danych mogą teraz zadeklarować, że co najmniej 1 z nich można pominąć i ponownie skomponować niezależnie od emisji. (Ibbd13).
Zmieniliśmy klasy wektorów, tak aby nie były już klasami danych, ponieważ do kompozycji używana jest ta sama instancja obiektu.
Dodano flagę mutableStateOf dla elementu VectorPainter do warunkowego ponownego rysowania w przypadku zmiany zawartości wektora.
Zrefaktoryzowana instancja Vector Komponent, która będzie częścią VectorPainter, ponieważ jest ponownie używana w różnych kompozycjach.
zaktualizowaliśmy pola GroupKomponent i Ścieżka komponentów, aby można było zmieniać ich pola nazw (Ieae45, b/151378808).
Usunięto:
onChildPositioned
iOnChildPositionedModifier
. W układzie podrzędnym deweloperzy powinni zamiast tego używać właściwościonPositioned
iOnPositionedModifier
. (I4522e, b/162109766)Przesunięcie stało się klasą wbudowaną (Iaec70)
do komponentu SelectionContainer (I4aada, b/161487952) dodano parametr modyfikatora.
Usunięto wycofaną funkcję FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Do tabeli
SemanticsPropertyKey
dodano funkcję lambda (mergePolicy
). Pozwala to zdefiniować niestandardową zasadę łączenia semantyki mergeAllDescendants. Domyślną zasadą jest użycie wartości nadrzędnej, jeśli już istnieje, lub wartości podrzędnej. (Iaf6c4, b/161979921)Ograniczenia są teraz klasą wbudowaną (I88736)
Dodano element FocusManager, który usuwa typową logikę fokusu z AndroidComposeView (I528ef, b/161487952, b/162206799)
Zaktualizowano nazwy PointerEventPass w wersji alfa. (Ifda6f).
IntOffset jest teraz klasą wbudowaną (Iac0bf).
IntSize jest teraz klasą wbudowaną (I2bf42)
Nazwa usługi
PlacementScope.placeAbsolute()
została zmieniona naPlacementScope.place()
, a poprzednia nazwa (PlacementScope.place()
) naPlacementScope.placeRelative()
. W efekcie metodaPlacementScope.place()
nie będzie już automatycznie dublować położenia w kontekstach od prawej do lewej. Jeśli chcesz, użyjPlacementScope.placeRelative()
. (I873ac, b/162916675)AlertDialog używa teraz FlowRow do obsługi przycisków (I00ec1, b/161809319, b/143682374)
Udostępniliśmy narzędzia testowe niepubliczne, ponieważ nie znajdują się w tych miejscach. Zostaną upublicznione w przyszłości. (I32ab1)
refaktoryzowana organizacja kodu wejściowego wskaźnika. (IE3f45)
Wycofane PxBounds na rzecz Rect. Zaktualizowano wszystkie przypadki użycia PxBounds w polu „PxBounds” i dodano odpowiednie wycofanie/zastąpienie adnotacjami, aby wspomóc migrację. (I37038, b/162627058)
Usunięto wycofane zdarzenie KeyEvent2. Zamiast tego użyj zdarzenia KeyEvent. (Ied2d0, b/162097587)
KeyEvent ma właściwość Unicode, która umożliwia uzyskanie znaku Unicode wygenerowanego przez określoną kombinację stanu klucza i meta klucza (If3afc).
Udostępnił interfejs API DelayUp i powiązane z nim klasy, ponieważ bardzo prawdopodobne jest, że ulegną zmianie. (I56d6f)
Usunęliśmy 2 elementy PointerEventPass, które nie są już potrzebne. (I3dd9d)
Dodaj parametr color [kolor], shadow i Textdecoration do Paragraph.paint. Ta funkcja jest przydatna, by uniknąć niepotrzebnego odtwarzania akapitu. (I81689)
Poprawki błędów
- Usunięto wywołania zwrotne onFocusChanged z TextField. Zamiast niej użyj metody Modifier.focusObserver. (I51089, b/161297615)
- Interfejs Modifier.drawBorder został wycofany. Zamiast niego użyj metody Modifier.granic. Klasa danych obramowania została zastąpiona przez BorderStroke (I4257d, b/158160576)
Usunięto wycofane wywołania FrameManager.
Wewnętrzne interfejsy API tworzenia wiadomości zostały zmienione, aby zmniejszyć obciążenie związane ze śledzeniem obiektów stanu, takich jak
mutableStateof()
(I80ba6)Funkcje Vertical Scroller oraz Level Scroller zostały usunięte. Zamiast niej użyj komponentu ScrollableColumn/Row. Usunięto modyfikator.drawBackground. Użyj pliku Modifier.background (I73b0d, b/163019183)
Awaria, gdy element zapisujący stan został naprawiony w pętli for. Teraz ten sam klucz jest dozwolony w tabeli savedInstanceState(), więc interfejs API UiSavedStateRegistry jest teraz dostosowany do tego nowego wymogu (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
Funkcja kompozycyjna
state { ... }
została wycofana i zastąpiła jawne wywołaniaremember { mutableStateOf(...) }
, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem. Dopasowanie do wzorcaby mutableStateOf()
w przypadku przekazywania właściwości klas. (IA5727).Zmieniliśmy nazwę parametru RRect na RoundRect, by lepiej dopasować ją do wzorców nazewnictwa tworzenia kompozycji Utworzyliśmy podobne konstruktory funkcji do konstruktorów funkcji RRect i wycofanych konstruktorów funkcji RRect (I5d325)
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
Usługa androidx.compose.ui:ui-*:0.1.0-dev16
została zwolniona. Wersja 0.1.0-dev16 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Funkcja OnChildPositioned została wycofana. Użyj w zamian elementu OnPositioned w elemencie podrzędnym. (I87f95, b/162109766)
- Metoda setViewContent została wycofana. Zamiast niej należy używać parametru setContent. (I7e497, b/160335130)
- Dodano interfejs AndroidViewBinding API do rozszerzania i komponowania zasobów szablonu w oparciu o ViewBinding. (I081C6)
- Kluczowe zdarzenie2 zostało zastąpione zdarzeniem KeyEvent (I2d770, b/162097585)
- Dodano obsługę alternatywnego klucza sprzętowego (I9036b).
- Interfejs FocusManager został wycofany. Użyj w zamian metod Modifier.focus(), Modifier.focusObserver() i Modifier.focusRequester(). (I74ae4, b/162211322)
- loadVectorResource obsługuje atrybuty trimPath (I808fe)
- Przenieś okno do interfejsu użytkownika (I47fa6)
- Usunęliśmy 2 elementy PointerEventPass, które nie są już potrzebne. (I33ca7).
- Wdrożyliśmy PointerInteropModifier, który umożliwia otrzymywanie zdarzeń MotionEvents i korzystanie z funkcji tworzenia wiadomości tak, jakby to było w przypadku implementacji interfejsu Android View. (Ieb08c)
- Usunięto wycofany modyfikator tagów. Zamiast niego użyj pola layoutId. (Idaa05, b/162023919)
- Interfejsy API do obsługi tekstu od prawej do lewej zostały zaktualizowane. Dodano parametr LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Modifier.rtl oraz Modifier.ltr zostały usunięte. (I080B3)
- Przycinanie ścieżki pomocy 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 wycofaliśmy obecne. (I5bcfd)
- Interfejs Modifier.plus został wycofany. Użyj interfejsu Modifier.then. Pole „To” daje silniejszy sygnał określający kolejność, ale uniemożliwia też wpisanie słowa
Modifier.padding().background() + anotherModifier
, które przerywa łańcuch i jest trudniejsze do odczytania (Iedd58, b/161529964). - Dodano podklasy widoku ComposeView do hostowania treści elementu Compose w hierarchii widoków. (I46357)
Row
iColumn
są teraz funkcjami wbudowanymi, więc znacznie zmniejszają wymagania związane z ich używaniem. (I75c10)- Element SubcomposeLayout został dodany. Jest to element podstawowy niskiego poziomu, który umożliwia tworzenie elementów podrzędnych podczas pomiaru, jeśli chcemy użyć niektórych wartości dostępnych dopiero później podczas pomiaru składu drzewa podrzędnego. Na przykład element WithConstraints nie jest implementowany za pomocą metody SubcomposeLayout. (I25cc8)
- Dodano
SemanticsNode.positionInRoot
, aby uzyskać położenie węzła SemanticsNode względem poziomu głównego hierarchii Compose (Icdf26, b/161336532). - Zdarzenia MotionEvents były przekazywane z Androida, do Compose, a następnie Androida. (I14be8, b/158034713)
- Usunięto wyskakujące okienko. (I00430).
- Stała pozycja wyskakującego okienka na wyświetlaczu z wycięciem. (Idd7dd)
- Dodaj działanie związane z ułatwieniami dostępu, aby uzyskać wynik TextLayoutResult (I9d6e6)
- Dodano parametr RemeasurementModifier. Umożliwia on synchroniczne pomiary układu. Ponowne pomiary i przekaźniki są zazwyczaj wykonywane automatycznie, ale używamy tego parametru w elementach LazyColumnItem podczas przewijania. (I5f331, b/160791058)
- Usunięto polecenie getLineEllipsisOffset/getLineEllipsisCount. Użyj metody getLineVisibleEnd/getLineEnd/isLineEllippped. (I85aa2).
- Dla celów związanych ze sprawdzonymi metodami dodaj znaczniki/adnotacje. (I66b20)
- udostępnić więcej interfejsów API wierszy w TextLayoutResult. (I79bd2)
- Wbudowane konwertery wektorowe służące do konwersji takich jednostek są teraz dostępne w programie Foo.VectorConverter, np. Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter (I3e273).
Poprawki błędów
- Naprawianie ogólnych poprawek interfejsu API (I077bc)
- Usuń nieużywany interfejs OffsetBase
- Wyrównuje klasy Offset i IntOffset, aby mieć spójny interfejs API
- Zmień nazwę IntOffset.Origin na IntOffset.Zero, by była zgodna z interfejsem Offset API
- Przeniesiono metodę natywnego Canvas z interfejsu Canvas, aby zachęcić konsumentów do tworzenia własnych instancji Canvas
- Utworzono stub klasy EmptyCanvas do refaktoryzacji DrawScope jako parametr niepusty zamiast lateinit i zapewnia niedodawanie pola do wartości null
- Zmieniono nazwę wyliczeń ClipOp na sprawy Pascal
- Zmieniono nazwę enumów filtraJakość na typ Pascal
- Zmieniono nazwę wyliczeń Stroke Join na Case Pascal
- Zmieniono nazwę wyliczeń PointMode na typ Pascal
- Zmieniono nazwy enum PaintingStyle na przypadek Pascala
- Zmieniono nazwę wyliczeń PathFillType na przypadek Pascal
- Zmieniono nazwę wyliczeń StrokeCap na przypadki Pascal
- zaktualizowaliśmy implementację DrawCache tak, aby nie używała już parametrów Lateinit,
- Zaktualizowano metodę DrawScope, by nie używała już leniwego przekazywania w przypadku wewnętrznych parametrów FillPaint i slidePaint
- Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box i zmniejszania nakładu pracy
- Zaktualizowaliśmy klasę Outline tak, aby dodać do niej adnotacje @stałe.
- Zaktualizowaliśmy narzędzie PathNode, aby dodać adnotacje @Stałe dla każdej instrukcji ścieżki
- Zaktualizowaliśmy składnię wektorową, aby usunąć zbędne warunkowe kontrole równości, ponieważ funkcja tworzenia wiadomości już je obsługuje
- Wycofane metody konstruktora towarzyszącego Prostokąt na rzecz konstruktorów funkcji
- zaktualizowaliśmy klasy i konstruktory funkcji Brush, używając interfejsów API @Immutable i @Stable.
- Zaktualizowano enum VertexMode na PascalCase
- Zaktualizowano metodę DrawScope selectPaint, która warunkowo zastępuje parametry kreski w malowaniu, jeśli uległy zmianie
- Zaktualizowaliśmy rozmiar, by dodać interfejs API destrukcyjny; zmień nazwę UnspecifiedSize na Nieokreślony i usunęliśmy nieużywane metody
- Zaktualizowaliśmy wykorzystanie interfejsu compose BlendMode API, aby poprawnie mapować tryby BlendModes i PorterDuff na platformie Androida w zależności od poziomu interfejsu API. Wprowadzono interfejs BlendMode#isSupported API, który umożliwia sprawdzenie, czy urządzenie przed użyciem funkcji BlendMode obsługuje. (I0ef42).
- Dodano parametr LazyItemScope dla parametru itemContent list Lazy. Udostępnia modyfikatory wypełniające maksymalny rozmiar elementu nadrzędnego, co rozwiązuje przypadek użycia, gdy element powinien wypełniać widoczny obszar, a zwykła metoda Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
- Czcionka
SemanticsNodeInteraction.performPartialGesture
została usunięta. UżyjSemanticsNodeInteraction.performGesture
. (Id9b62) - Nazwa „
LazyColumnItems
” została zmieniona naLazyColumnFor
. Nazwa usługiLazyRowItems
została zmieniona naLazyRowFor
(I84f84) - Pakiet
foundation.shape.corner
został przeniesiony do:foundation.share
(I46491, b/161887429) - Nazwa
AndroidComposeTestRule
została zmieniona nacreateAndroidComposeRule
. (I70aaf) - Do
TextLayoutResult
dodano więcej interfejsów API. (Id7e04). - Nazwa materiału
FilledTextField
została zmieniona naTextField
, a podstawowy elementTextField
został zmieniony naBaseTextField
, aby ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676) - Nazwa Modifier.drawBackground została zmieniona na Modifier.background (I13677).
Wersja 0.1.0-dev15
22 lipca 2020 r.
Usługa androidx.compose.ui:ui-*:0.1.0-dev15
została zwolniona. Wersja 0.1.0-dev15 zawiera te zatwierdzenia.
Aktualizacja zależności
- Aby używać funkcji Compose
0.1.0-dev15
, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany interfejsu API
- FocusModifier został wycofany i zastąpiony przez Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState i FocusSzczegółState zostały wycofane i zastąpione FocusState2 (I46919, b/160822875, b/160922136)
- Dodano modyfikator umożliwiający obserwowanie zmiany stanu zaznaczenia. (I05866, b/160924455, b/160923326)
- Dodano modyfikator umożliwiający zmianę zaznaczenia (I8dd73, b/161182057, b/160924778)
- Aktywuj menu paska narzędzi, aby prawidłowo wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955).
- Usługi semantyczne z jedną wartością używają teraz stylu wywoływania.
Na przykład zapis „semantyka { hide = true }” będzie teraz zapisany jako:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Dodaliśmy modyfikator.fokus, który zastępuje FocusModifier. (Ib852a, b/160924778)
- Dodaj FloatingToolbar do wyboru pola tekstowego. (IE8b07)
- Dodaliśmy eksperymentalną adnotację API dla interfejsu API związanego z wprowadzaniem klucza (I53c0a).
- Dodaliśmy eksperymentalną adnotację do API do wszystkich interfejsów API związanych z fokusem (I53b24, b/160903352)
- Dodano FocusState2, który zastąpi FocusdetailState (I0a3ba, b/160822595)
- Dodano adnotację ExperimentalFocus, która jest adnotacją @OptIn w interfejsie Focus API. (I1544b, b/160820961)
- Dodano klasę jednostki IntBounds, która reprezentuje granice liczby całkowitej liczby pikseli od układu. Interfejs API obiektu PopupPositionProvider został zaktualizowany, aby go używać. (I0d8d0, b/159596546)
- Aktualizator wymaga teraz metody clear() do usuwania kompozycji (Ibe697)
- Zdarzenie KeyEvent zostało wycofane i zastąpione przez zdarzenie KeyEvent2 (I68730)
- Do narzędzi do znajdowania testów dodano nową opcjonalną flagę useUnmergedTree. (I2ce48).
- Made LayoutNode – eksperymentalny interfejs API (I4f2e9)
Do różnych typów klas wbudowanych dodaliśmy metody kopiowania, takie jak:
- Przesunięcie
- Rozmiar
- Promień
- Ruch
TransformOrigin
Wycofana metoda obiektu towarzyszącego Size.copy preferuje metodę kopiowania instancji (Ife290, b/159905651)
Wyskakujące okienka, okna i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
TextDirection został zmieniony na resolvedTextDirection (I3ff38)
Z bloku miary funkcji Layout() usunięto parametr kierunku układu. Kierunek układu jest jednak dostępny w wywołaniu zwrotnym w obiekcie zakresu pomiaru (Ic7d9d)
Refactor SelectionHandles do ponownego użycia. (I420e0)
Element klikalny został usunięty. Użyj metody Modifier.clickable (I84bdf)
Tag TestTag i semantyka zostały usunięte. Użyj zamiast niego Modifier.testTag i Modifier.semantics (I15ff0, b/158841414)
Przed tą zmianą wtyczka kompilatora kompilatora przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli w funkcji @Composable występowało (I5205a, b/158123804).
Nazwa Modifier.tag została zmieniona na Modifier.layoutId, aby uniknąć pomyłek z modyfikatorem.testTag. (I995f0)
Pozycje całkowite linii wyrównania zwrócone z Placeable#get(alignmentLine) nie mają teraz wartości null. Jeśli nie ma wiersza wyrównania, którego dotyczy zapytanie, funkcja wyrównania wejściowa zostanie zwrócona. (I896c5, b/158134875)
Do funkcji kompozycyjnej AndroidView dodano parametr modyfikujący. (I48a88, b/158746303)
Funkcja Semantics() została wycofana. Użyj w zamian funkcji Modifier.semantics(). (I72407, b/158841414)
Dodanie funkcji viewModel() composable, która umożliwia tworzenie lub pobieranie już utworzonych modeli ViewModel w podobny sposób, jak ma to miejsce w przypadku aktywności lub fragmentu (I5fdd1).
Zastąpiliśmy wartość IntPx wartością IntPxPosition (Parametr IntPxPosition) wartością IntOffset. IntPxSize zastąpiono wartością IntSize. (IB7b44)
Aby skonsolidować liczbę klas używanych do przedstawiania informacji o rozmiarze, ustandaryzuj użycie klasy Size zamiast PxSize. Dzięki temu w klasie wbudowanej można umieścić 2 wartości zmiennoprzecinkowe w postaci długiej do pakowania 2 wartości liczb zmiennoprzecinkowych, które reprezentują szerokość i wysokość reprezentowane przez liczbę zmiennoprzecinkową. (IC0191).
Aby skonsolidować liczbę klas używanych do przedstawiania informacji o pozycji, ustandaryzuj użycie klasy Offset zamiast PxPosition. Dzięki temu w klasie wbudowanej można umieścić 2 wartości zmiennoprzecinkowe za pomocą funkcji „long” (długie) do reprezentowania przesunięcia x i y reprezentowanego jako liczby zmiennoprzecinkowe. (I3ad98).
Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli wyłącznie typów Dp i typów podstawowych. Cała klasa Px została usunięta (I3ff33).
Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I086f4).
Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Id3434).
Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I97a5a).
Tag TestTag został wycofany. Użyj w zamian metody Modifier.testTag. (If5110, b/157173105)
Domyślna, bezobsługowa implementacja metody ParentDataModifier#modifyParentData została usunięta – było to równoważne z brakiem implementacji interfejsu. (I0deaa)
Usługa ScaleFit została wcześniej wycofana. Zamiast tego użyj ContentScale. (Ifbc5b).
Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I19d02).
Dodano komponent Menu z menu w materiale UI, czyli implementacji menu w stylu Material Design. (I9bb3d).
Usunięto wycofaną funkcję LayoutTag(). Zamiast niej użyj metody Modifier.tag(). Usunięto nieużywaną metodę Modifier.matchParent(). Zamiast niej użyj metody Modifier.matchParentSize(). (If8044).
Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I57bff).
Wycofanie metody Modifier.semantics pozwala na użycie komponentów wysokiego poziomu. (I4cfdc)
Skonsolidowano implementacje CanvasScope, dzięki czemu powstaje tylko DrawScope i ContentDrawScope. Nazwa obiektu CanvasScope została zmieniona na DrawScope. Zaktualizowaliśmy DrawScope, aby wdrożyć interfejs Density i udostępnić interfejs LayoutDirection Usunięta podklasa DrawScope w ContentDrawScope Zaktualizowaliśmy aplikację Painter i painterModifier, aby nie utrzymywała już właściwości RTL, ponieważ DrawScope udostępnia ją już bez ręcznego podawania jej właściwości (I1798e)
DoubleTapTouchFilter przedstawia teraz element SingleTapStepFilter do zaznaczenia na drzewie. (If92b1).
Zaktualizowaliśmy interfejs Adjust API i dodaliśmy obsługę dopasowania bezwzględnego (które nie jest automatycznie dublowane w kontekście protokołu Rtl) (I38cd3)
Interfejs API modyfikatorów DrawLayer został zmieniony: zmieniono nazwę outline shape na „ shape” i ma wartość domyślną Rectangleangle, a teraz nie ma wartości „null”; zmieniono nazwę clipToOutline na klip; plik clipToOutline został usunięty, ponieważ jest taki sam jak w przypadku klipu == true z zasadą Rectangleangle (I7ef11, b/155075735)
Zaktualizowano interfejsy API tworzenia wyższego poziomu, które udostępniają obiekt Canvas do wyświetlania obiektu CanvasScope. Dzięki temu konsumenci nie muszą utrzymywać własnych obiektów Paint. Klienci, którzy nadal potrzebują dostępu do obiektu Canvas, mogą skorzystać z metody rozszerzenia dropCanvas, która powoduje wywołanie zwrotne do poleceń rysowania na podstawie obiektu Canvas. (I80afd).
Zmieniono końcowy interfejs API WithConstraints lambda. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń oraz właściwości layoutDirection zapewnia właściwości minWidth, maxWidth, minHeight i maxHeight w Dp (I91b9a, b/149979702)
Nazwa UkładModifier2 została zmieniona na LayoutModifier. (Id29f3).
Usunięto wycofany interfejs LayoutModifier. (I2a9d6)
Wewnętrzne funkcje pomiarowe w usługach Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia wewnętrzny interfejs API zapytań z niejawnie rozpowszechnianym kierunkiem układu. (Id9945).
Elementy podrzędne Układu i LayoutModifier można mierzyć w innym kierunku układu. (IBD731)
Dodano nową funkcję Modifier.zIndex(), aby kontrolować kolejność rysowania elementów podrzędnych w tym samym układzie nadrzędnym. Właściwość wysokości w DrawLayerModifier została zmieniona na shadowElevation i nie kontroluje już kolejności rysowania. Zmieniła się kolejność parametrów w przypadku DrawShadow. Wysokość jest teraz pierwszym parametrem, a kształt to drugi, z domyślnym kształtem prostokąta. (I20150, b/152417501)
Usunięto parametr onSizeChange i onPositionChange w sekcji Właściciel. (I5c718)
Dodano ograniczenia2, czyli kopię ograniczeń, która obsługuje tylko wartości Int, a nie IntPx. Wartość IntPx zostanie usunięta, a wszystkie ograniczenia dotyczące liczb całkowitych zaczną być traktowane jako piksele, tak jak w przypadku Androida.
- Dodaliśmy też funkcję IntSize, która z czasem zastąpi IntPxSize. (I4b43a)
Wyrównanie wyrównania można utworzyć z użyciem dowolnych wartości. Dodano wyrównania 1D. (IA0c05)
LineToSiblings akceptuje teraz obiekty zmierzone zamiast obiektu Placeable. (I5788D)
-
- Nazwa ScaleFit została zmieniona na ContentScale
- Przeniesiono ContentScale z modułu ui-graphics na moduł ui-core, aby umieścić go w tym samym module co wyrównanie interfejsu API.
- Nazwa FillMaxDimensions została zmieniona na Przytnij
- Nazwa FillMinDimensions została zmieniona na Fit
- Zmieniliśmy nazwę dopasowania na Wewnątrz, by lepiej dostosować
- Odpowiedniki ImageView.ScaleType
- Dodaliśmy dokumentację, która wskazuje, że kombinacja crop i wyrównania.Center pozwala uzyskać ten sam wynik co ImageView.ScaleType.CENTER_CROP i Fit użytego z funkcją Adjust.Center, która zapewnia taki sam wynik jak obiekt ImageView.ScaleType.FIT_CENTER Inside used with wyrównanie.Center zapewnia taki sam wynik jak ImageView.ScaleType.CENTER_INSIDE
Obsługa modyfikatorów rysowania. (I0aaf9).
Opublikowany interfejs API do zwiększania liczby wyświetleń w Androidzie z kodu XML. Więcej szczegółów znajdziesz w prezentacji ViewInCompose. (I42916)
Ulepszenie interfejsu API DrawModifier:
- Zmieniono zakres odbiorcy dla metody Draw() ContentDrawScope
- Usunięto wszystkie parametry z dresz()
- Interfejs DrawScope jest taki sam jak poprzednia wersja CanvasScope
- ContentDrawScope ma metodę DrawContent() (Ibaced, b/152919067)
W przypadku współrzędnych układu dodano elementy positionInParent i boundsInParent. (Icacdd, b/152735784)
DrawLayerModifier i drawLayer() domyślnie mają wartość false (fałsz). (I0eb8b, b/152810850)
Zmieniono nazwę elementu LayoutResult na MeasureResult. (Id8c68).
Dodano LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac).
Zastąpienie operatora modyfikatora plus funkcjami rozszerzeń fabrycznych (I225e4).
Dodaliśmy właściwości przesunięcia X/Y, które umożliwiają odsunięcie listy wyświetlanych poleceń rysowania dla danej warstwy. Przydaje się to przy przenoszeniu treści w odpowiedzi na animacje lub zdarzenia dotyku. (I8641C)
Dodano parametry przestawne X i przestawne do interfejsów API warstw, aby obsługiwać obracanie i skalowanie wokół określonego punktu w warstwie (Icf7c3)
Dodaj OnPositionedModifier i OnChildPositionedModifier, aby zastąpić funkcje kompozycyjne OnPositioned i OnChildPositioned. (I2ec8f).
Dodano LayerModifier – modyfikator, który umożliwia dodanie RenderNode do układu. Umożliwia ustawienie przycinania, przezroczystości, obrotu, skalowania i cieni. Spowoduje to zastąpienie RepaintBoundary. (I7100d, b/150774014)
Wykonano propagację kierunku układu z węzła nadrzędnego do elementów podrzędnych. Dodano modyfikator kierunku układu. (I3D955)
Komponent stosu obsługuje kierunkowość od prawej do lewej (Ic9e00)
Wstępna obsługa protokołu Rtl w układzie tworzenia wiadomości (Ia5519)
Interfejsy Density i DensityScope zostały połączone w jeden interfejs. Zamiast trybu nieaktywnego() możesz teraz używać obiektu DensityAmbient.current. Zamiast opcji Gęstość(gęstość) tylko za pomocą(gęstości) (I11cb1)
Zmieniliśmy parametry LayoutCoordinates, by móc użyć funkcji providedWyrównajmentLines, a nie Mapa, a funkcja LayoutCoordinates wdrożyła operator get() zamiast pobierać wartość. Ułatwia to modyfikatorom modyfikowanie jednej lub większej liczby wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
LayoutCoordinates nie ma już właściwości pozycji. Właściwość pozycji nie ma sensu przy uwzględnianiu elementów LayoutModifiers, rotacji lub skalowania. Do obliczania przekształceń z jednego LayoutCoordinate na inny programiści powinni używać koordynatorów nadrzędnych i podrzędnych (childToLocal()).
Funkcja LayoutCoordinates używa właściwości rozmiaru IntPxSize, a nie PxSize. W przypadku układów stosuje się rozmiary w pikselach całkowitych, więc we wszystkich rozmiarach układów należy używać liczb całkowitych, a nie wartości zmiennoprzecinkowych. (I9367b)
Ulepszenia interfejsu API ograniczeń (I0fd15)
Utworzono interfejs CanvasScope API, który opakowuje obiekt Canvas, aby udostępniać bezstanową, deklaratywnej powierzchni interfejsu API do rysowania. Przekształcenia są zawarte w oddzielnym zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wektora. Nie wymaga od konsumenta zachowania własnego obiektu stanu renderowania umożliwiającego konfigurowanie operacji rysowania.
- Dodaliśmy CanvasScopeSample oraz zaktualizowaliśmy aplikację w wersji demonstracyjnej, aby dodać demonstrację grafiki deklaratywnej (Ifd86d).
Usunęliśmy nieużywany interfejs MaskFilter API, ponieważ w większości przypadków nie jest zoptymalizowany pod kątem akceleracji sprzętowej (I54f76).
Rectangleangle zostały przeniesione z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Wszystkie przypadki użycia koloru, które mogą przyjmować wartości null w interfejsie API, zastąpiono wartością niedopuszczającą wartości null i ustawiono wartość Color.Unset zamiast wartości null (Iabaa7).
Dodaj do ImagePainter dodatkowy opcjonalny parametr prostokątny, by umożliwić rysowanie podsekcji bazowego komponentu ImageAsset (I0ea9e).
Dodaliśmy nieskonfigurowany kolor, by reprezentować wartość bez ustawienia bez czarnych pasów. (If901a).
Dodaliśmy metody rozszerzeń Canvas.rotate i Canvas.scale, które umożliwiają wykorzystywanie opcjonalnych współrzędnych przestawności na potrzeby przekształceń. Domyślnie są one ustawione jako lewy górny róg bieżącego tłumaczenia obszaru roboczego.
Przenieśliśmy też obiekt Canvas.rotateRad jako metodę rozszerzenia spójności (Ibaca6).
Stworzyliśmy interfejs PixelMap API do obsługi zapytania o informacje o pikselu z ImageAsset. (I69ad6).
Zmieniliśmy nazwę toFrameworkRect/toFrameworkRectF naAndroidRect/toAndroidRectF, by zapewnić zgodność z konwencją nazewnictwa konwersji obiektów w interfejsie tworzenia i interfejsach API platformy Android, na których są tworzone. Zaktualizowaliśmy też dokumentację tych interfejsów API (I86337)
Dodaliśmy interfejs VectorPainter API, aby zastąpić dotychczasowy interfejs subcomposition API dla grafiki wektorowej. Wynikem składni podrzędnej jest obiekt VectorPainter, a nie DrawModifier. Wycofaliśmy wcześniejsze funkcje kompozycyjne DrawVector i zastąpiliśmy VectorPainter.
Zmieniono nazwę interfejsu Image(Painter) API na PaintBox(Painter) Utworzono wektorową kompozycję kompozycyjną, która zachowuje się jak obiekt kompozycyjny Obraz, z wyjątkiem obiektu VectorAsset zamiast obiektu ImageAsset (I9af9a, b/149030271)
Zmieniliśmy nazwę obrazu na ImageAsset, by lepiej rozróżnić dane obrazu od przyszłej funkcji kompozycyjnej obrazu wykorzystywanej do tworzenia układu i rysowania treści. _Body:Utworzono metodę rozszerzenia w android.graphics.Bitmap, Bitmap.asImageAsset(), w celu utworzenia komponentu ImageAsset przydatnego do połączenia tworzenia tradycyjnych aplikacji na Androida z platformą tworzenia (Id5bbd).
Dodano element TextDirection.Content (I48f36)
dodany operator Textdecoration.plus (I0ad1a),
Pole
Force
zostało usunięte z wartości wyliczeniowych TextDirectionAlgorithm (Icc944)Algorytm kierunku tekstu zmienił nazwę na TextDirection (I75ce8)
Implementuje LongPressAndDrag do wyboru pola tekstowego. (I17919)
Dodano AdnotatedString.getStringAdnotacje, które zwracają wszystkie adnotacje w zakresie. (I1fa00).
Zmieniono nazwę pakietu Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c).
Kursor pola tekstowego ma migającą animację (Id10a7)
Zmiana w interfejsie API: nazwa AnnotatedString(builder: Builder) została zmieniona na annotatedString(builder: Builder). (IA6377).
Zmiana w interfejsie API: nazwa AnnotatedString.Item została zmieniona na AnnotatedString.Range. (I2d44d)
Zmieniono nazwę AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)
Teraz można ukryć lub pokazać klawiaturę programową za pomocą kontrolera SoftwarekeyController obsługiwanego przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051)
Dodano operator plus dla stylu (Tekst/Akapit/span), który przekazuje funkcję scalania(). (Ia1add)
Plik FontWeight.lerp już nie działa. To nadal klasa danych. (I521c2).
Konstruktor FontWeight jest teraz publiczny i nie jest już klasą danych. (Id6b1f).
Dodaj metody getLineStart, getLineEnd, getEllipsisOffset i getEllipsisCount do TextLayoutResult (Ibc801)
Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec).
Usunięto nieużywaną klasę Size, ponieważ w używanym module ui-geometry znajduje się zduplikowana klasa Size. (I1B602).
Dodaliśmy AdapterList – komponent listy przewijanej, który tylko tworzy i rozkłada widoczne elementy. Znane obecnie problemy polegają na tym, że tryb ten działa tylko pionowo i nie obsługuje w pełni wszystkich przypadków zmian w elementach podrzędnych. (IB351b)
Dodaj dopełnienie, obramowanie, kształt i parametr tła do Box (I05027, b/148147281)
Poprawki błędów
- Nazwa wywołania zwrotnego onFocusChange w polach tekstowych została zmieniona na onFocusChanged (Ida4a1)
- Interfejsy Vertical Scroller oraz Horiziontal Scroller zostały wycofane. Użyj interfejsu ScrollableColumn i ScrollableRow, aby mieć wbudowane funkcje i parametry związane z kolumnami/wierszami, lub modyfikatorami.vertical Scroll i Mmodifier.vertical Scroll, aby umożliwić ich użycie własnemu elementowi. Natomiast ScrollerPosition został wycofany i zastąpiony przez ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
- Nazwa
runOnIdleCompose
została zmieniona narunOnIdle
(I83607) - Zmieniono nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Nazwy wszystkich interfejsów API „findXYZ” zostały zmienione na onNodeXYZ. Nazwy wszystkich interfejsów API doXYZ zostały zmienione na „performXYZ”. (I7f164)
- Interfejs tworzenia wiadomości można teraz tworzyć w grupach ViewGroup bez konieczności tworzenia nowej kompozycji. Zobacz przykład: ViewInteropDemo. (I9ab0b, b/160455080)
- Do funkcji MutableVector dodano sortowanie z funkcjami sortWith i deleteRange (Icccf7).
- Zaimplementuj uchwyty zaznaczania metodą przeciągania, aby zmienić wybór pola tekstowego. (I27032)
- Usunięto klasę wbudowanej Shadera, która opakowała klasę oczekiwaną NativeShader. Zmieniono nazwę NativeShader na Shader. Opakowana klasa wbudowana Shadera nie dodała nic wartościowego do platformy interfejsu API i była klasą wbudowaną, więc użyj bezpośrednio klasy NativeShader. (I25e4d)
Zrefaktoryzowano narzędzie PainterModifier, aby nie udostępniało już skalowania na podstawie podanych ograniczeń i parametru ContentScale. Implementacje narzędzia Painter polegają na samodzielnym skalowaniu rysunków w zależności od rozmiaru obiektu DrawScope, do którego rysowane są obiekty.
Rozwiązaliśmy problem polegający na tym, że rozmiar mapy bitowej pamięci podręcznej VectorPainter był dostosowywany do rozmiaru domyślnego, a nie wybranego rozmiaru.
Zaktualizowaliśmy ImagePainter, aby skalował swoją zawartość, zamiast polegać na module PainterModifier. (I6Ba90)
dodaj funkcję najwyższego poziomu withFrameNanos do czasu animacji (Ie34c5)
Adnotacja @Nieśledzona została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e).
Metody androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Obiekty kompozycyjne TextField, PhlledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
Rozwiązaliśmy problem polegający na tym, że wysyłanie danych wejściowych wskaźnika powodowało awarię, jeśli wskaźnik PointerInputFilters został usunięty przez subkompozycję podczas dysptach. Zostało to już rozwiązane. (I1f48b, b/157998762)
Rozwiązaliśmy problem, który powodował, że wysyłanie danych wejściowych wskaźnika powodowało awarię, jeśli podczas usuwania elementów PointerInputFilters zostały usunięte elementy składowe. Zostało to już rozwiązane. (Iab398, b/157998762)
Zmieniono klasę Radius na klasę wbudowaną. Usunięto metody tworzenia elementów towarzyszących na rzecz konstruktora funkcji z domyślnym parametrem, aby promień na osi Y był zgodny z obowiązkowym parametrem promienia osi X.
Zaktualizowaliśmy parametr DrawScope.drawRoundRect, tak aby korzystał z pojedynczego parametru Radius zamiast 2 osobnych wartości zmiennoprzecinkowych promienia wzdłuż osi x i y (I46d1b).
Funkcja kompozycyjna „Przetwórz ponownie” nie jest już przydatną abstrakcją. Większość zmian kompozycji powinna następować w wyniku przypisań MutableState. W innych przypadkach zalecamy użycie funkcji
invalidate
do aktywowania przekomponowania bieżącego zakresu. (Ifc992).Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Iede0b).
Zmienia strategię generowania kodu w kompilatorze Compose. Przed tą zmianą kompilator komponował przekształcanie wywołań funkcji kompozycyjnych. W wyniku tej zmiany przekształcamy treść funkcji kompozycyjnej i zostajemy bez zmian (w większości przypadków).
Oznacza to, że większość logiki komunikującej się ze środowiskiem wykonawczym tworzenia zachodzi na początku treści funkcji, a nie w lokalizacji wywołania.
Powinna to być zmiana zgodną ze źródłem w przypadku całego korzystania z funkcji tworzenia wiadomości. W związku z tą zmianą większość użytkowników narzędzia do tworzenia wiadomości nie będzie musiała aktualizować żadnego kodu.
Aby ułatwić ten proces, zmienił się podpis JVM wszystkich funkcji kompozycyjnych. Funkcja kompozycyjna akceptująca pojedynczy parametr jest przekształcana w funkcję akceptującą 3 parametry. Dodatkowe parametry to Composer, czyli liczba całkowita „klucz”, czyli liczba całkowita maska bitowa używana do rozpowszechniania metadanych za pomocą wywołań.
Funkcja Utwórz przekształca teraz także domyślne argumenty w funkcję kompozycyjną. Odbywa się to bez dodatkowego syntetycznego przeciążenia samej funkcji, więc ta zmiana spowoduje zdefiniowanie mniejszej liczby funkcji.
Znane, zamierzone zmiany w zachowaniu wynikające z tego:
- Niektóre rozmowy są pomijane tam, gdzie wcześniej nie były
- Wyrażenia kompozycyjne w domyślnych wyrażeniach argumentów są teraz prawidłowo subskrybowane i obsługiwane
Wprowadziliśmy kilka optymalizacji: 1. Wyniki porównań parametrów są przekazywane na wykresie wywołań do innych funkcji kompozycyjnych. Zmniejszy to liczbę porównań w czasie działania, zmniejszy rozmiar tabeli przedziałów i będzie więcej pomijać funkcji kompozycyjnych, które nie były wcześniej pomijane2. Parametry, które podczas kompilacji zostaną uznane za „statyczne”, nie są już porównywane ani przechowywane w środowisku wykonawczym. Zmniejsza to liczbę porównań i rozmiar tabeli przedziałów. 3. Kontroluj strukturę przepływu treści funkcji do zminimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli przedziałów i zmniejsza ilość pracy środowiska wykonawczego. 4. Nieużywane parametry dyspozytora i odbiorcy w funkcji nie są uwzględniane przy określaniu możliwości pominięcia funkcji, jeśli nie są one używane w jej treści.
Większość zmian powodujących niezgodność dotyczy interfejsów API, na które kompilator jest kierowany bezpośrednio. Nie wpłynie to na typowe użycie funkcji tworzenia wiadomości: 1. Usunięto polecenie Composer::startExpr. 2. Narzędzie Composer::endExpr zostało usunięte. 3. Interfejs Composer::call został wycofany. 4. Przeciążenia inne niż różne (
key
) zostały usunięte. Od tej pory używaj wersjivararg
. 5. Adnotacja przestawna została wycofana. Użyjkey
jako zamiennika. 6. ZakresUpdateScope::updateScope został zmieniony, tak aby obejmował funkcję Function3, a nie Function1. 7. Zaktualizowaliśmy funkcję restartableFunction i restartableFunctionN, aby uwzględnić dodatkowe parametry czasu kompilacji (I60756, b/143464846)Usunięto wycofane modyfikatory UkładWyrównaj. (I10877)
Usunięto funkcję RepaintBoundary na rzecz DrawLayerModifier (I00aa4).
Elementy FloatingActionButton i Clickable mają teraz osobny parametr
enabled
. Zmieniono nazwy niektórych parametrów przycisku lub ich kolejność. (I54b5a)Zastąpiliśmy ButtonStyle różnymi funkcjami i usunęliśmy przeciążenie tekstu (ciągami znaków). Informacje o wykorzystaniu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)
Zmiany w interfejsie API nieaktywnym. Szczegóły znajdziesz w logu i dokumentacji
Ambient<T>
(I4c7ee, b/143769776)Zmieniliśmy działanie domyślnego kierunku tekstu TextDirection, który jest określany przez LayoutDirection. Oznacza to, że jeśli w polu LayoutDirection jest ustawiona wartość RTL, domyślnym ustawieniem TextDirection będzie RTL. Wcześniej to TextDirection.ContentOrLtr/Rtl (I4e803).
Naprawiono błąd: gdy grubość i styl czcionki są zagnieżdżone w obiekcie AnnotatedString, tekst nie jest prawidłowo renderowany. (I77a9d)
Dodaje często używane parametry do funkcji Text(). Jeśli tworzysz lokalny styl tekstu, aby przekazywać niewielką liczbę tych parametrów, np. Text(style = TextStyle(text wykonane = Textalign.Center)), możesz teraz po prostu podać parametry bezpośrednio: Text(textalign = Text wykonane.Center) (I82768)
Nazwa modułu ui-android-text została zmieniona na ui-text-android (I68cbe).