Interfejs tworzenia wiadomości
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
Zapoznaj się z dokumentacją interfejsu API dotyczącą wszystkich pakietów tworzenia
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
7 sierpnia 2024 r. | 1.6.8 | - | 1.7.0-beta07 | - |
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 wersji;
notatek.
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 usłudze 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ć repozytorium Google Maven do w projektach AI. Zapoznaj się z repozytorium Google Maven. .
Dodaj zależności artefaktów, których potrzebujesz w pliku build.gradle
aplikacji lub modułu:
Odlotowy
dependencies { implementation "androidx.compose.ui:ui:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.
Zobacz dokumentację narzędzia Issue Tracker. .
Wersja 1.7
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-beta07
została zwolniona. Wersja 1.7.0-beta07 zawiera te zatwierdzenia.
Poprawki błędów
- Powiązane z tekstem funkcje
SemanticsNodeInteraction
performTextReplacement
,performTextInput
iperformTextClearance
będą teraz powodować błędy asercji, gdy zostaną one wywołane w trybie tylko do odczytuTextFields
. (I4ae8f).
Wersja 1.7.0-beta06
24 lipca 2024 r.
Usługa androidx.compose.ui:ui-*:1.7.0-beta06
została zwolniona. Wersja 1.7.0-beta06 zawiera te zatwierdzenia.
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 Outline w
GraphicsLayer
, aby wykorzystywały parametry zmiennoprzecinkowe zamiast int. W klasach wbudowanych przesunięcia i rozmiaru (I2fb03, b/333863462) usunęliśmy już istniejące nieokreślone stałe wartościUnsetOffset/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żony tagLazyRows
). Ta zmiana powinna zmniejszyć liczbę klatek na sekundę podczas przewijania w przypadku tych elementów (LazyLists
). 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 podejścia. (I60ec7). - Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
LazyColumn
będzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)- Źródła „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 kółkiem 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ę rejestrów
GraphicsLayer#buildLayer
, tak aby odzwierciedlały 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 za pomocą oficjalnego interfejsu API Androida (
ScrollCaptureCallback
). Ta funkcja jest eksperymentalna i obecnie może 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órych można używać do rysowania w innych miejscach, 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 interfejsu
ui-test
interfejsDeviceConfigurationOverride
API, aby umożliwić korzystanie z niego lokalnie zastępujące zachowanie testowanej treści, np. określając dostępne rozmiar, język, kierunek układu, skalę czcionki czy motyw.
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.
Usługa androidx.compose.ui:ui-*:1.6.1
została zwolniona. 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 deweloperom 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 parametry lambda do przetwarzania zdarzeń przeciągania. dodano funkcję fabrycznąDragAndDropTarget
w celu odbierania 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 w narzędziu 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). - Zmieniono klasę
LoremIpsum
(PreviewParameterProvider
) na otwartą. (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ę po drzewie modyfikatora w górę i w dół 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 > 100% w ustawieniach systemowych, mały tekst zwiększy się normalnie, a już duży tekst tylko trochę się powiększy. Ponadto wysokość wierszy określona w SP będzie automatycznie dostosowywana do zamierzonej wysokości skali 100%. Więcej informacji znajdziesz w artykule Sprawdzone metody 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 zawartość w zależności od rozmiaru kontenera animacji w trakcie wprowadzania/wyjścia wyjdź z animacji.
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 z wyprzedzeniem może ominąć animację (np.animację umieszczenia elementu,AnimatedVisibility
itp.) i obliczyć rozmiar i pozycję elementu 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ć blokady takie jak: – Uszkodzone testy zrzutów 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
) do wskazywania, czy bieżący pomiar jest przebiegiem pozytywnie. (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 funkcji
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
została zmieniona z prawda na fałsz po zaznaczeniu. (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 pozbawione pola 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
- Ulepszenia przekazywania dostępu (
Modifier.Node
) 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ć uprawnienia. (I69513) - Dodano parametry
onReset
ionRelease
do funkcji kompozycyjnejAndroidViewBinding
. Jest to odbicie lustrzane kompozycjiAndroidView
i włączenie obsługi 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 zasada
intermediateMeasurePolicy
, która wykorzystuje ponownie zasadę pomiaru z przebiegu z wyprzedzeniem, zezwala podtypomSubcomposeLayout
bez przedziałów warunkowych, takim jakScaffold
,TabRow
iBoxWithConstraints
, domyślnie na działanie 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 stanie bezczynności (np. za pomocą
waitForIdle
). Może to mieć wpływ na testy, które rejestrują poszczególne klatki 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, co pozwala prawidłowo obsługiwać zgłoszenie w przypadku ponownego użycia obiektuLayout
(np. jako elementuLazyColumn
). 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 tutaj:ComposeTestRule
. (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 stanie bezczynności (np. za pomocą
waitForIdle
). Może to mieć wpływ na testy, które rejestrują poszczególne klatki 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
ma 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że to służyć do wychwytywania nieobsłużonych wyjątków podczas asynchronicznego wczytywania czcionek. (Ibb481, b/261435386) - Interfejs API
Font.loadingStrategy
jest teraz stabilny. (I5937c, b/261435386) - Interfejs API
GoogleFont
jest teraz stabilny. (Ic90b0, b/261435386) 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 wieloma 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. - Do konstruktora i funkcji fabrycznej
TestMonotonicFrameClock
dodano opcjonalny parametronPerformTraversals: (Long) -> Unit
w celu uruchamiania kodu po wywołaniach zwrotnychwithFrameNanos
, ale przed wznowieniem działania wywołującego współrzędne. (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
. Dzięki temu widok niestandardowy może lepiej reagować na ograniczenia przewijania, zwłaszcza 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
dodano 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 jako liczby wierszy (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 wtedy, gdy utworzysz implementację niestandardowego okna lub wyskakującego okienka 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
aby okna dialogowe obsługiwałyWindowInsets
. (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ń wariantów 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) - refaktoryzowana stała i nazwy parametrów w polu
KeyInjectionScope
, aby uwzględnić sufiks „Millis” gdzie jednostkami tych stałych i parametrów są milisekundy. (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 daje to poprawę wydajności o współczynnik 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 brać pod uwagę delta, a nie pozycje, co zagwarantuje, że prędkość zostanie prawidłowo obliczona we wszystkich przypadkach, nawet jeśli element docelowy się przesuwa (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 pomiar lub układ po wyliczeniu.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, które umożliwiają 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 by 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óbowała ona wczytywać czcionki dla tekstu
StyleSpans
, który prowadzi do awarii, jeśli usuniętoFontFamily.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 być kierowana na innego autora aplikacji, musi jawnie dostarczyć adnotację znacznika docelowego miejsca docelowego użytkownikowi. (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 interfejsu Composer bez konieczności korzystania zTestRule
. Aby przeprowadzić test bezComposeTestRule
, zdaj test jako lambda w parametrzerunComposeUiTest
i użyj metody i członków w zakresie odbiorcyComposeUiTest
, które są te same co wComposeContentTestRule
.interface AndroidComposeUiTest
ifun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
na Androidzie to: dodano, aby zapewnić dostęp do bazowej aktywności, podobnie jakAndroidComposeTestRule
Aby mieć jeszcze większą kontrolę, możesz utworzyć instancjęclass AndroidComposeUiTestEnvironment
samodzielnie.Implementacja na komputery to
class DesktopComposeUiTest
, ale nie ma Obecnie dostępne są funkcje uruchamiania przeznaczone specjalnie dla komputerów stacjonarnych.Można przeprowadzić migrację testu z pakietu
ComposeTestRule
doComposeUiTest
w ten sposób (przykład: Android). 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
atrybutu PoleLineHeightBehavior
zostało zmienione w pojedynczą wyliczenie:LineHeightTrim
.LineHeightTrim
mają wartości 4 stanów zdefiniowane za pomocą 2 wartości logicznych:FirstLineTop
,LastLineBottom
, oba i brak (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)
.Można na przykład uzyskać działanie podobne do tego, jakie stosuje CSS definiuje za pomocą funkcji
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Konfiguracje
trimFirstLineTop
,trimLastLineBottom
działają poprawnie tylko wtedy, gdyincludeFontPadding
ma wartość fałsz. (I97332, b/181155707)Funkcje
PlatformParagraphStyle.lerp
iPlatformSpanStyle.lerp
zostaną zmienione na funkcje najwyższego poziomu funkcje (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 zezwala 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 kopiePointerInputChange
zostaną zużyte. Jeśli chcesz utworzyć nieograniczonyPointerInputChange
, użyj konstruktora. (Ie6be4, b/225669674) - Włącz interoperacyjność zagnieżdżonego przewijania między opcjami tworzenia i widoku w kierunku tworzenia wiadomości > 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 konieczności niepotrzebnej zmiany kompozycji czy ponownych pomiarów. (I9f365, b/214054486) - Właściwość rozszerzenia
consumeWindowInsets
ComposeView
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 zawartości obiektu
VectorPainter
w przypadku bieżącego układu. kierunek: od prawej do lewej. (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 zamiast:ActionCallback
(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 stabilniej. (IB5482)- Hurra! Obsługa animacji tworzenia wiadomości „Skala czasu trwania animatora” w Opcji programisty. (I5a4fc, b/161675988)
- Dodano lokalny modyfikator
BeyondBoundsLayout
(If8b51, b/184670295) - Tekst: opcja includeFontPadding jest teraz domyślnie wyłączona.
obsługiwane są problemy z przycinaniem wynikające z funkcji
includeFontPadding=false
i nie powinny być przycinane w przypadku wysokich skryptów. (I31c84, b/171394808)
Poprawki błędów
ComposeContentTestRule.setContent
wyrzuci terazIllegalStateException
, jeśli próbujesz ustawić treści, gdy jest już treści. (I888a5, b/199631334)- Naprawianie awarii spowodowanej przez zawartość schowka przy odczytywaniu z do 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óry umożliwia raportowanie w czasie kompilacji funkcja kompozycyjna jest nazywana kierowaniem na aplikację, do której nie była potrzebna stworzonych z myślą o użytkownikach.W większości przypadków adnotacje można wywnioskować na podstawie sposobu tworzenia kompilatora, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Przypadki, których nie można wywnioskować, to na przykład utworzenie za pomocą abstrakcyjnego narzędzia kompozycyjnego (takiego jak metod interfejsu), pola lub zmienne globalne, które są kompozycyjne lambda (wnioskowane zmienne i parametry lokalne), lub gdy używasz funkcji
ComposeNode
lub powiązanych funkcji kompozycyjnych.W przypadku aplikacji niestandardowych funkcje kompozycyjne wywołujące
ComposeNode
lubReusableComposeNode
muszą dodaćComposableTarget
adnotacji dla funkcji i dowolnych kompozycyjne typy parametrów lambda. Zalecane jest jednak aby utworzyć adnotację z adnotacjąComposableTargetMarker
, a oznaczona adnotacja będzie używana zamiastComposableTarget
. Adnotacja kompozycyjna oznaczony za pomocą atrybutuComposableTargetMarker
jest odpowiednikiem funkcjiComposbleTarget
z pełną i jednoznaczną nazwą atrybutu jako parametr aplikacji. Na przykład za pomocą funkcjiComposableTargetMarker
zobacz: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 elementy
FontFamily.Resolver
są przekazywane do podkomponentów takich jak Wyskakujące okienko. - Podane elementy
Font.ResourceLoader
są przekazywane do podkomponentów 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
notifyFocusedRect
metod w:TextInputSession
i FunkcjeTextInputService
zostały wycofane i nie będą wywoływane. UżywajBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874)- Data wprowadzenia:
destroyDisplayListData
metoda na 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ę kompozycyjną do funkcji lambda zmieniającej jej stan, oraz do odpowiednich węzłów. do dowolnej nowej lokalizacji. Gdy poprzednie połączenie zostanie zakończone kompozycja, stan zostaje tymczasowo zachowywany, a w przypadku nowego wywołania do lambda wchodzi do kompozycji, a potem do stanu, węzłów, są przenoszone do lokalizacji nowego wywołania. Jeśli nie ma nowego połączenia Po dodaniu stan zostaje trwale usunięty i pamiętaj, że obserwatorzy powiadomienia.Jeśli funkcja lambda
movableContentOf
jest wywoływana wiele razy w tym samym dla każdego wywołania są tworzone nowy stan oraz węzły, gdy opuszczają kompozycję i dochodzą nowe wywołania, stan zostaje przeniesiony od pierwszego dzwonienia po wprowadzanie połączeń w kolejności, w jakiej są wywoływane. Wszystkie stany, w których nie zgłoszono praw do nowych połączeń, zostaną usunięte na stałe. (IB4850)Usługa
FontFamilyResolver
jest teraz dostępna w aplikacjiLocalFontFamilyResolver.current
Dodano:
createFontFamilyResolver(context)
icreateFontFamilyResolver(context, coroutineScope)
, aby utworzyć nowe resolvery FontFamily inne niż użycie funkcji tworzenia wiadomości.Akapit i kilka akapitów zajmują teraz
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
zawiera teraz resolvera używanego dla tego układu, wycofaneTextLayoutResult.layoutInput.resourceLoader
, ponieważ nie jest już używany. (Id5a45, b/174162090)Obsługa asynchronicznego i opcjonalnego wczytywania czcionek (z opcjami zastępczymi) zachowanie użytkownika. Ta ścieżka jest wykorzystywana przez pola Text i TextField oraz ujawniana Program do rozpoznawania rodzin czcionek
Obsługa wstępnego wczytywania czcionek za pomocą
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
umożliwia ustawienie globalny kontekst współzależności używany do wczytywania czcionek asynchronicznych. (I87fe8, b/174162090)Dodano
AndroidFont
, nowy niskopoziomowy interfejs API do obsługi nowych typów deskryptorów zasobów czcionek na Androidzie. Na przykład ładowanie czcionek z: backend związany z określoną aplikacją z opcjonalną lokalizacją zainstalowanych czcionek. na urządzeniu lub ładuję czcionkę z zasobu, który nie został dostarczony przez aktualną Fabryki czcionek.Rozwinięto interfejs API
Font.ResourceLoaded
, aby obsługiwał opcjonalny i asynchroniczny podczas wczytywania czcionki. Nie zalecamy używania tej metody przez deweloperów aplikacji bezpośrednio API. Aby dodać nowe typy czcionek, przeczytajAndroidFont
.Funkcja rozszerzenia
Font.AndroidResourceLoader
zezwala elementuFont.ResourceLoader
poza kompozycją.Dodano parametr
loadingStrategy
do czcionek opartych na zasobach, aby zezwolić wczytywanie asynchroniczne, gdy czcionka zasobu odwołuje się do plików XML dostępnych do pobrania. (Ie5aea, b/174162090)Konstruktor
Typeface(FontFamily)
został wycofany. To było poprzednio używane do wstępnego wczytywania czcionek, co może potrwać do 10 sekund. dostępne do pobrania czcionki. W przypadku dostępnych do pobrania czcionek ta rozmowa może zostać zablokowana przez 10 użytkowników sek. W zamian użyjFontFamilyResolver.preload
.Interfejs
fontResource(FontFamily): Typeface
został wycofany. To było poprzednio używane do wstępnego wczytywania czcionek, co może potrwać do 10 sekund. dostępne do pobrania czcionki. 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 nieeksperymentalna API. Przestrzeń kolorów Oklab to teraz publiczny interfejs API. (I08fb6, b/180731008)Wycofano:
AndroidComposeTestRule.AndroidComposeStatement
, który nie miał być publiczny i nie wpłynął na Twoje zmiany tak czy inaczej. (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 przechowywane nad klawiaturą, gdy się znajdują
zaznaczony, a klawiatura jest widoczna, gdy włączony jest tryb programowego wprowadzania tekstu.
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) - Rodzaj klawiatury programowej nie migocze już po zmianie 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 eksperyment
View.createLifecycleAwareRecomposer
rozszerzenie (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
. Ta usługa ma nie mają znaczenia semantycznego. (Ica5ef). - Do interfejsu
CompositionData
dodano pole tożsamości na potrzeby generowania 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
w:androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Naprawianie awarii spowodowanej przez zawartość schowka przy odczytywaniu z do 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, by 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ą do porównywania pod kątem równości i kwalifikują się do pomijania optymalizacji. (Ice799, b/205851704) ComposeNotIdleException
rozszerza teraz zasięg naException
bezpośrednio z usługiThrowable
. Pamiętaj, że oznacza to, że klauzule typu „catch” które złapałyException
, mogą teraz złapaćComposeNotIdleException
, 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
- Dodano nowy modyfikator Modifier.onPlaced, który zezwala zmiany miejsca docelowego. Dodatkowe zmiany w: przesunięcia modyfikatora podrzędnego można więc określić w oparciu o zaobserwowaną zmianę miejsca docelowego. (I558fd).
- Usunięto:
InjectionScope.flush()
iInjectionScope.dispose()
Opróżnianie wszystkich wydarzeń i utylizacja zakres ma teraz miejsce na końcu wywołanej metody generate*Input(), takiej jak wcześniej. (I2bed8). - Usunięto:
MultiModalInjectionScope.Touch
iMultiModalInjectionScope.Mouse
Aby wstrzykiwać przycisk dotykowy i mysz dla gestów multimodalnych, których możesz teraz używaćMultiModalInjectionScope.touch()
iMultiModalInjectionScope.mouse()
. Oba te warunki akceptują funkcję lambda, która ma zakres odbierający tę modalność. (Idde18).
Poprawki błędów
- Wartość domyślna parametru
durationMillis
w WartośćTouchInjectionScope.swipeWithVelocity
jest teraz obliczana w taki sposób, że przesunięcie palcem jest wykonalne. (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. Mówiąc konkretnie, ani przy użyciu narzędzi do sprawdzania animacji. ich konfiguracje w Przejścia. (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. Mówiąc konkretnie, ani przy użyciu narzędzi do sprawdzania animacji. ich konfiguracje w Przejścia. (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
zViewRootForInspector
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 są następujące:
InternalCompilerApi
wymagane, aby były wywoływane między modułami (I1aa0b) SemanticsNodeInteraction.performSemanticsAction
zwraca teraz elementSemanticsNodeInteraction
, który wywołał funkcję. (I9e5db).- Dodano obiekt LocalInputModeManager CompositionLocal do wykrywania trybu TouchMode i NonTouchMode. (I6a83c, b/175899786)
- Element
viewConfiguration: ViewConfiguration
został dodany do listyLayoutInfo
aby umożliwić konsumentom uzyskanie odpowiedniej wartości na przykład po przytrzymaniu . (I76ca6)- Użytkownik
viewConfiguration: ViewConfiguration
został dodany do listyInjectionScope
, aby umożliwić testom dostosowywanie wstrzykiwania danych wejściowych na podstawie na przykład przytrzymanie, czas oczekiwania czy spadek dotyku. - Zmieniono domyślny czas trwania przytrzymania w obu przypadkach
dotykiem i myszą, aby opierać się na wartościach
InjectionScope.viewConfiguration
- Użytkownik
- 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 obiektu PopupWłaściwości, umożliwiając niskopoziomową kontrolę nad flagami przekazywanymi przez wyskakujące okienko do narzędzia WindowManager Androida. Parametrem funkcji lambda będą flagi obliczone na podstawie wartości PopupWłaściwości, które powodują wystąpienie flag WindowManager, np. które można zaznaczyć. 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
. Skorzystaj gdy chcesz opróżnić wszystkie znajdujące się w kolejce wydarzenia i gdy i chcą pozbyć się zakresu. (Ifb73a). - Dodano element
performScrollToNode(matcher: SemanticsMatcher)
, który przewija przewijany kontener do treści pasującej przez dla danego dopasowania. (IC1cb8) InjectionScope
stosuje terazDensity
, dzięki czemu możesz: łatwo konwertuje między px i dp wperformTouchInput
i dp. (I8fe1f).
Poprawki błędów
- AndroidView propaguje teraz funkcję LocalLifecycleOwner oraz LocalSavedStateRegistryOwner do widoku przez 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 zmieniono z 10 ms na 16 ms. Może to zmienić wynik testów za pomocą gestów, np. przesunięcia palcem. (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
do interpretowania wymiarów i pozycji wyświetlanych w poluLayoutInfo
bez obaw. (I002f1) - Dodano eksperymentalną obsługę wstrzykiwania zdarzeń myszy. Używaj
performMouseInput
, aby zacząć wysyłać zdarzenia myszy lub wysyłać zdarzenia myszy za pomocą właściwościMouse
usługiMultiModalInjectionScope
podczas multimodalny gest wprowadzania z użyciem funkcjiperformMultiModalInput
. ZobaczMouseInjectionScope
, aby wyświetlić dokumentację dostępnego interfejsu API. (Iaa4a8, b/190493367)
Poprawki błędów
- Poprawiono obsługę ułatwień dostępu (leniwe i leniwe) nieleniwe) w odniesieniu do przewijania (I6cdb0)
- Ulepszono:
TouchInjectionScope.swipeWithVelocity
. Teraz akceptuje szerszy zakres zmiennych wejściowych i proponuje zmiany dane wejściowe, 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
. (I091fa)- Pozwól dzieciom na akceptowanie danych wejściowych wskaźnika poza: granice wejściowe wskaźnika nadrzędnego. Rodzice mogą je przechwycić wywołania z właściwością PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
- Wycofano reguły
performGesture
iGestureScope
, które zawierają zostały zastąpione przezperformTouchInput
iTouchInjectionScope
. (Ia5f3f, b/190493367) - Element
touchBoundsInRoot
został dodany do elementuSemanticsNode
zawiera minimalny rozmiar docelowego elementu dotykowego, dzięki czemu deweloperzy może sprawić, że docelowe elementy dotykowe będą spełniać 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)
Wprowadzono
performTouchInput
iTouchInjectionScope
jako zamiennik dlaperformTouchInput
iTouchInjectionScope
, brukowanie a przez inne modalności (takie jak mysz).Funkcja
TouchInjectionScope
ma te same metody coGestureScope
, z z wyjątkiemmovePointerTo
imovePointerBy
, które zostały zmieniono nazwę naupdatePointerTo
iupdatePointerBy
. Wszystkie inne metody są takie same.Działanie funkcji
TouchInjectionScope
jest prawie takie samo jakGestureScope
z 2 drobnymi szczegółami:- W przypadku wysyłania zdarzenia braku aktywności, gdy wskaźniki były przenoszone bez
wysyła zdarzenie ruchu (innymi słowy, użytkownik
updatePointerTo()
został ale niemove()
, a następnie funkcjadown()
jest wywoływana), poprzedni implementacja przesunie w czasie zdarzenia i wyśle zdarzenie przeniesienia przed wysłaniem zdarzenia wyłączenia. Nowa implementacja nadal wysyła parametr przenieść wydarzenie, ale nie opóźnia jego czasu w tym konkretnym - W przypadku wysyłania zdarzenia na górę, gdy wskaźniki były przenoszone bez wysyłając zdarzenie przenoszenia (podobnie jak powyżej), poprzednia implementacja przesunie w czasie wydarzenia i wyśle zdarzenie ruchu przed wysłaniem . Nowa implementacja nie zapewnia żadnego z tych korzyści: nowe pozycje wskaźniki będą widoczne tylko w przypadku zdarzenia „up”.
Na koniec
TouchInjectionScope
przedstawia nową metodęcurrentPosition(pointerId: Int)
, aby uzyskać bieżącą pozycję dany wskaźnik. (If1191, b/190493367)- W przypadku wysyłania zdarzenia braku aktywności, gdy wskaźniki były przenoszone bez
wysyła zdarzenie ruchu (innymi słowy, użytkownik
Poprawki błędów
- Zezwalaj na rozszerzenie zakresu docelowego elementu dotykowego poza zakres klipu w obszarze klipu, aby określić minimalny docelowy element dotykowy. (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) - Dodano interfejs API
BlurredEdgeTreatment
aby uprościć zamazywanie przypadków użycia najczęściej używane kombinacje flag klipu oraz TileModes. Większość przypadków użycia pozwalając na wyrenderowanie rozmytych treści, poza granicami oryginalnej treści i zamazanie obszarów poza granicami z przezroczystą czernią lub klipsem, do granic treści, próbkując najbliższą krawędź dla jąder, które wykraczają poza treści granic. (I6b4b7, b/166927547) - Dodano obsługę obiektu RenderEffect na pulpicie tworzenia wiadomości. Wprowadzenie funkcji OffsetEffect, a także używając modyfikatora rozmycia, wprowadzenie efektów wizualnych rozmycia do części hierarchii kompozycji. (I0f6aa, b/166927547)
- Wprowadzono interfejs RenderEffect API
które można opcjonalnie skonfigurować na
element
Modifier.graphicsLayer
do zmiany zawartość samej warstwy. Ten mogą być rozmyte i dziecięce kompozycje w hierarchii. (I47c4d, b/166927547) - AwaitPointerEventScope ma teraz funkcję withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (IE861C)
- Dodanie obsługi TileMode.Decal co jest przydatne przy definiowaniu krawędzi dla 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 od BlurredEdgeTreatment na korzyść jawnego sprawdzenia, czy kształt 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 czytanie stanu przycisku myszy i stanu modyfikatora klawiatury. (I6310c, b/180075467)
- Wstrzykiwane gesty używają teraz czasu MainTestClock jako
źródłem prawdy dla czasu. Obecny czas wstrzykniętych zdarzeń w:
Pole
performGesture
zostanie zainicjowane do bieżącego czasu Zegar Główny. (Ifb364, b/192064452) - Dodano konstruktor
DpRect(DpOffset, DpSize)
(I2cf16, b/194219828) - Dodano klasę DpSize (I7abb1, b/194219828)
Poprawki błędów
- Zaktualizowana grafika wektorowa w formacie XML analizowanie na potrzeby obsługi ColorStateLists jako Właściwości odcienia koloru głównego 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 są teraz w nowej wersjiandroidx.compose.animation:animation-graphics
. (I60873)- Dodano eksperymentalny modyfikator do obsługi próśb o relokację. (I65a97, b/178211874)
Wprowadzenie interfejsu BrushPainter API który umożliwia rysowanie dowolnego pędzla w ramach programu Painter, podobnego do ColorPainter
Zaktualizowano rozmiar interfejsu Brush API, aby dodać rozmiar wewnętrzny parametr, którego dotyczy zapytanie w BrushPainter (Ia2752, b/189466433)
Zaktualizowano metodę DrawScope#drawImage, która pochłania źródłowe i docelowe prostokąty , aby wykorzystać opcjonalną jakość . Przydaje się to na Pixelu dzieło sztuki, które ma być pikselizowane skalowany w górę i uwydatnić grafikę w formacie pikselowym. Zaktualizowana BitmapPainter + możliwość komponowania obrazu aby wykorzystać opcjonalną filtrującą jakość Parametr (Ie4fb0, b/180311607)
Dodano metodę
GestureScope.advanceEventTime
, aby podać więcej sterowanie czasem zdarzeń za pomocą gestów (Ibf3e2);
Poprawki błędów
- Aby lepiej obsługiwać łańcuchy
modyfikatory, upewnij się, że implementacja Modifier.paint
w przypadku wywołania showsContent.
Wcześniej w węźle liścia występował błąd Modifier.paint
łańcuch modyfikatorów, uniemożliwiając tym samym
jej konfiguracji w kontenerze kompozycyjnym (np. w pudełku).
lub dodać inne ozdoby, takie jak
Modifier.paint().border()
Dzięki użyciu Modifier.paint należy wywołać metodę DrawContent po narysowaniu zawartości danego argumentu Mamy większą spójność zachowań. wzorem 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 środowiska 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 dla: ułatwienia dostępu. (IB547C)
- Nazwa pliku
useDefaultMaxWidth
w:PopupProperties
została zmieniona nausePlatformDefaultWidth
. (I05710) - Okna mogą teraz zajmować całą szerokość ekranu. (I83929, b/190810877)
- Dodano eksperymentalną obsługę kolorów HSV i HSL reprezentacji. (Id7cf8, b/180731008)
Zmiany w działaniu
- Funkcja Utwórz
@Preview
zawiera teraz:LocalActivityResultRegistryOwner
, która umożliwia Ci aby wyświetlić podgląd elementów kompozycyjnych korzystających z takich interfejsów API,rememberLauncherForActivityResult()
, które są zależne tego właściciela. (Ib13d1, b/185693006) - Funkcja Utwórz
@Preview
zawiera teraz:LocalOnBackPressedDispatcherOwner
, która umożliwia Ci aby wyświetlić podgląd elementów kompozycyjnych, które korzystają 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
- Zmień role enum i LiveRegionMode na klasy wbudowane z prywatnym konstruktorem (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 w tekście zajęcia. (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. Konsumpcja może zadeklarować stałe prywatne przed stabilizacją. (Ia5d48).
- Testy tworzenia wiadomości można teraz uruchamiać w Robolectric. Poniżej
Dotychczasowe ograniczenia to:
- Nie ma natywnej mapy bitowej, więc tag
ImageBitmap()
prowadzi do NullPointerException. - Nie ma rysunku, więc
captureToImage()
będzie bez końca czekać następne podanie (tj. zakleszczenie). - Nie wczytano czcionki, więc każdy tekst zostanie zmierzony nieprawidłowo. Wszystkie mają stałą wysokość około 20 pikseli i szerokość 1 piksela.
ComposeTestRule.waitUntil {}
nie uruchamia wątku głównego podczas oczekiwania, co sprawia, że jest on taki sam jakComposeTestRule.mainClock.advanceTimeUntil {}
W przyszłości planujemy określić więcej ograniczeń. (I284fa)
- Nie ma natywnej mapy bitowej, więc tag
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 ona popularna. i należy ją skompilować z wyprzedzeniem.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 charakterystycznego dla danej aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja jest zainstalowana na urządzeniach, w celu z wyprzedzeniem skompilowania określonego podzbioru aplikacji w celu poprawy 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) - Zrefaktoryzowane wykorzystanie enum do klas wbudowanych w celu uniknięcia zawierają dokładne informacje o tym, kiedy stwierdzenia, nowe wartości wyliczeniowe. (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ż dostępne pojedyncze wartości, ale listy. Dzięki temu można je scalić w niezmienionej formie konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które pozwalają na korzystanie z zmiany (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)
AnnotatedString.withAnnotation
funkcje są ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a).- Konstruktor TextUnit z obiektem TextUnitType jest 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) - Daje możliwość wciągnięcia stanu SubcomposeLayout, co umożliwia wstępne komponowanie treści w elemencie wymaganym slotId, co przyspieszy przejście następnego wskaźnika, ponieważ następnym razem, gdy spróbujemy przesłać elementy z podanym identyfikatorem boksu, nie będzie już 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
na kanaleAnnotatedString
zostanie zastosowany 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 element
SemanticsActions.ScrollToIndex
, aby przewijać listę z do elementu z określonym indeksem orazSemanticsProperties.IndexForKey
, aby uzyskać indeks elementu na liście z elementami z kluczem. Oba działania są implementowane przez LazyList.- Dodano element
SemanticsNodeInteraction.performScrollToIndex
, który przewija listę do podanego indeksu,SemanticsNodeInteraction.performScrollToKey
, który przewija listę do element o podanym kluczu. (I4fe63, b/178483889, b/161584524)
- Dodano element
- Dodano element ownerViewId do elementu GraphicLayerInfo (I19f62).
- Dodano przeciążenia Font() do wczytywania czcionek z zasobów, File i FileDescriptor (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 wczytania czcionek z zasobów, File and FileDescriptor (I43007), - Obsługa zapisu w AdnotatedString
TextFieldValue.Saver
DodanoaddTtsAnnotation
z funkcjami narzędziowymi adnotacji,AnnotatedString.Builder
(I8cbdc, b/178446304) - Dodano funkcję konstruktora TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
Wersja 1.0.0-beta05
21 kwietnia 2021 r.
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 korzystać z interfejsu w żadnej publiczny interfejs API; i nie było go w ogóle w kodzie. (I34a02, b/184003208) - Wycofano:
TextLayoutResult/createTextLayoutResult
. To nieużywana funkcja publiczna, która została dodana do testów. Funkcja nie wykonuje żadnych działań, których można użyć dla Interfejsy API tworzenia tekstu. Funkcja została wycofana i będzie zostaną później usunięte. (I80413)
Poprawki błędów
- Naprawiono
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
iaccessibilityActionScrollDown
przewijanie elementów ułatwień dostępu. Zamiast przewijać do końca będzie przewijany o 1 ekran w danym kierunku. (Ieccb0) - pliki AndroidManifest z komponentów ui-test-manifest oraz Narzędzie ui-tooling-data jest 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
- Włącz zmianę nazwy
hideSoftwareKeyboard
ishowSoftwareKeyboard
SoftwareKeyboardController
–hide()
ishow()
.- Udostępnij pełny interfejs CompositionLocal dla Oprogramowanie Local SoftwarekeyController, które umożliwia jego ustawienie (zwłaszcza 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). - Aplikacja
AndroidViewBinding
jest teraz prawidłowo usuwana fragmenty, które zostały powiększone przezFragmentContainerView
, gdy elementAndroidViewBinding
jest usuwany z okna tworzenia wiadomości w hierarchii. (Ib0248, b/179915946) AndroidViewBinding
jest teraz prawidłowo zagnieżdżony fragmenty, które zostały powiększone przezFragmentContainerView
, gdyComposeView
znajduje się w:Fragment
, naprawia problemy z zapisaniem i przywróceniem ich stanu fragmenty. (I70eb0, b/179915946)- Tworzenie powiązań widoków danych zależy teraz od
Fragment
1.3.2
i obecnie konsekwentnie pokazuje fragmenty rozszerzane za pomocąFragmentContainerView
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)
- Dodano opcjonalne parametry
startX
/endX
istartY
/endY
do funkcjiswipeUp
/swipeDown
/swipeLeft
/swipeRight
wGestureScope
. (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 nową lokalną kompozycję
LocalSoftwareKeyboardController
Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I5951e, b/168778053) - Dodano nową lokalną kompozycję
LocalSoftwareKeyboardController
Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (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 @EksperymentalTestApi: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 nową lokalną kompozycję
LocalSoftwareKeyboardController
Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I658b6, b/168778053) - Usunięto rzadki wyjątek NoSuchElementWyjątek w
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 tekstem[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)
- dodać interfejs AccessibilityMananger, LocalAccessibilityMananger in 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)
defaultFactory
dlacompositionLocalOf
i ParametrstaticCompositionLocalOf
jest teraz wymagany zamiast opcjonalnie.Ta zmiana usuwa potencjalny błąd typu dla wartości niepustej bez domyślnych ustawień fabrycznych. Wcześniej to zwróciłoby wartość null dla typu niedopuszczającego wartości null.
W przypadku typów dopuszczających wartości null zalecamy podanie parametru
{ null }
jako domyślnego fabryki.Nie zalecamy używania zasobów lokalnych z typami niedopuszczającymi wartości null, chyba że można określić rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda
defaultFactory
powinna zgłosić wyjątek. Jednak zrobić wyjątek oznacza, że konsumenci lokalnie korzystają pośrednia zależność od podanego źródła, która nie jest egzekwowana według systemu typów. (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 rozszerzeń z komponentami towarzyszącymi ImageBitmap i ImageVector. Usunięto
load{Image,Vector,Font}Resource
funkcje. (I89130)AnimationClockObservable i podklasy zostały zmienione usunięto. 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 ClearRoots @TestOnly najwyższego poziomu 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)
Usunięto interfejs API String.format refaktoryzowanych zastosowań w różnych Metody toString, które nie powinny być wykorzystywane String.format 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)
Dodaliśmy funkcję pomocniczą, która przydaje się ustaw to samo działanie dla wszystkich wywołań zwrotnych ImeAction (I63447, b/179226323)
Usunięto wywołanie zwrotne SoftwareKlawiaturaController z całego tekstu które zostaną wkrótce 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 daje większą spójność i zwiększa 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żywaj
LivelyVectorResource, aby wczytać plik XML
<animated-vector>
jako obiekt AnimatedImageVector i animować go. z malarkąFor (I8ea91) - Dodano nową lokalną kompozycję klawiatury lokalnej Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (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ętania klawiszy, aby wskazać, kiedy współrzędna wykrywania danych wejściowych wskaźnika powinna zostać uruchomiona ponownie 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)
- Metody viewModel() composable i LocalViewModelStoreOwner zostały przeniesione na adresy androidx.lifecycle.viewmodel.compose. Aby jej użyć, musisz teraz dodać oddzielną zależność androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
- Zezwalaj na działanie dopuszczające wartości null w AccessibilityAction, zmień działanie etykieta w sekcjach AccessibilityAction i CustomAccessibilityAction – CharSequence na ciąg znaków (I0dc82)
- Aby lepiej dopasować nazwy w formatach ImageBitmap i ImageVector Nazwa ImagePainter została zmieniona na BitmapPainter równolegle do obiektu VectorPainter. (Iba381, b/174565889)
- Lepsze interfejsy API do testowania podłańcucha z podłańcuchem jako argumentem (Icbe78)
- Dodano element
Modifier.focusOrder()
, który akceptuje żądanie FocusRequester bez określania niestandardowe skupienie się na funkcji lambda. To jest przydatne kiedy wystarczy podać odwołanie ale nie niestandardowe fokus dla utworów kompozycyjnych (I4f52a, b/179180978) - Element KomponentActivity.setContent został przeniesiony do androidx.activity.compose.setContent w . (Icf416).
- Metody zniszczenia i copy() zostały usunięte z i 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. Zamiast tego użyj fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Użyj narzędzia PaintterResource. (I6B809)
- Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambda zwracają liczby zmiennoprzecinkowe zamiast bezpośrednich wartości liczb 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)
- Interfejs Snapshot API został zaktualizowany, aby zwiększyć spójność z wytyczne dotyczące interfejsu API oraz ukrywanie wewnętrznych klas implementacji. z publicznego interfejsu API. (Id9e32)
- Dodano działania semantyczne rozwijania i zwijania. Dodane rozwinięcie i połowie rozwinięcia w elemencie ModalbottomSheetState (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 dźwięków otoczenia, tak aby pasowały do otoczenia -> Zmiana nazwy elementu 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) snapshotFlow
iwithMutableSnapshot
już nie są eksperymentalna (I6a45f)- Rekompozycje można teraz zamknąć. Zamknięte ponownie kompozycje kontynuować ponowne kompozycje, aż kogutyny podrzędne kompozycji zostaną zakończone. 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 można teraz znaleźć w poleceniach compose:runtime Aplikację AndroidUiDispatcher znajdziesz w polecenia compose:ui. (IB5c36)
- Outline.* – klasy nie są już klasami danych (I4879e, b/178001427)
- Element
view.captureToImage()
został usunięty bez zamiennika. (I7fcd2). - Użyto wprowadzonego interfejsu ColorMatrix API do modyfikowania wartości RGB treści źródłowej Zrefaktoryzowany interfejs API ColorFilter na i dopasuj implementację do klasy 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)
- Interfejs onImeActionPerformed został wycofany. użyj Klawiatura Actions (If0bbd, b/179071523)
- Wprowadzono kontekst współprogramu
InfiniteAnimationPolicy
który będzie stosowany w nieskończonych animacjach. Domyślnie nie zasada jest zainstalowana, chyba że przeprowadzasz testy z zastosowaniemComposeTestRule
. (I50ec4, b/151940543) - Usunięto element canDrag z folderu Modifier.scrollable. (Id66e7, b/175294473)
- Zmieniono nazwę LayoutCoordinates.parentCoordinates na LayoutCoordinates.parentLayoutCoordinates, Właściwość nadrzędnyCoordinates. Właściwość nadrzędnyCoordinates oferuje teraz LayoutCoordintes modyfikatora nadrzędnego. Dzięki temu bardziej kompletnych przypadków użycia onSizeChanged() oraz 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ą wykrywania gestów. (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 usługa Compose jest używana w hierarchiach, które są są teraz bardziej stabilne. (IE81ed, b/175765614)
- Usunięto polecenie Recomposer.current(). [Abstract]ComposeView teraz domyślnie tworzone są leniwie, ograniczone do okna Rekompozycje oparte na metodzie ViewTreeLifecycleOwner dla okna. Zmiana kompozycji Znaczniki animacji oparte na mechanizmie withFrameNanos są wstrzymywane, a cykl życia hosta jest wstrzymywany. zatrzymuje się. (I38e11)
- Recomposer.runningRecomposers oferuje teraz globalny przepływ StateFlow tylko do odczytu, aby obserwować stan kompozycji w cały proces. Wolę ten interfejs API od Recomposer.current(), który jest teraz wycofane. (If8ebe).
- Saver, listSaver(), mapSaver(), autoSaver przeniesiono z androidx.compose.runtime.savedinstancestate na androidx.compose.runtime.saveable (I77fe6).
- Polecenia EditCommand akceptują ciąg znaków AnnotatedString. Jest to jednak zmiana wprowadzona tylko w interfejsie API, a edycja tekstu w wielu stylach nie jest zostały już wdrożone. (I4c3ea).
- Funkcje Czas działania i Czas trwania zostały usunięte. (Ib9bf4, b/177420019)
- Przeniesiono CompositionData.asTree() i powiązane z nimi interfejsy API do oddzielenia modułu ui-tooling-data i oznaczonego jako eksperymentalny (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 absoluteRounderCorner shape i absoledCutCornerPosition zostały wprowadzone w przypadkach, gdy automatyczne odbiór lustrzane nie jest potrzebne. (I61040, b/152756983)
Interfejs API, na który kierowana jest wtyczka kompilatora Compose została zmieniona tak, aby używała interfejsu zamiast konkretnej klasy. Interfejs nie będzie już używał type.
To jest zmiana wewnętrzna, która nie powinna mieć wpływu na źródło jest to zmiana powodująca niezgodność kodu binarnego. (I3b922, b/169406779)
Usuń niezamierzoną publiczną funkcję StringBuilder.deleteAt (Id6ed9)
Poprawki błędów
- Obiekty ComposeView umieszczone w hierarchii widoków, które są elementami podrzędnymi inna kompozycja zawiera teraz kompozycje podrzędne ich przodków (I92883)
- Zaktualizowano element imageFromResource tworzenia wiadomości Interfejs API do ponownego wykorzystania pamięci podręcznej zasobów 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 przez długie milisekundy, i eliminuje zależność od danych wejściowych wskaźnika. zajęcia. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner został dodany podobnie jak do dotychczasowych AmbientLifecycleOwner i AmbientViewModelStoreOwner (I9a3e8, b/176756365).
- Zaktualizowano grafikę wektorową Interfejs API do obsługi analizy barwienia zastosowane do podstawy 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)
- Wycofanie metod globalnych współrzędnych i nowych metod współrzędnych opartych na oknie. (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 parametru stateDescriptionRange została zmieniona na progressBarRangeInfo. Nazwa Accessibility ScrollState została zmieniona na ScrollAxisRange. Nazwa levelAccessibility ScrollState została zmieniona na level ScrollAxisRange. Nazwa pionowości ScrollState została zmieniona na vertical ScrollAxisRange. (Id3148).
- Usunięto dane PointerInputData i zmodyfikowano PointerInputChange wszystkie pola PointerInputData. Utworzono zdarzenie PointerInputEvent i PointerInputEventData, bo nie są używane dowolny publiczny interfejs API. (Ifff97, b/175142755)
- Zaktualizowana implementacja GraphicsLayerScope gęstość na potrzeby obsługi konwersji dp nieprzetworzone piksele. (Ied528, b/176819695)
- Zaktualizowano interfejs matrix API, aby śledził wiersz porządkowanie dużych i zapewnienie stałych indeksów konwersji między różnymi reprezentacje macierzy pasujące do platformy logika konwersji między SkMatrix a 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)
- Usunięto klasę
data class
z tych zajęć:- 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.
- Wycofane poprzednie funkcje fabryczne zapisane małymi literami pierwsze litery
- Nowe funkcje fabryczne zwracają wartość FontFamily zamiast podklasy
- Ukryto konstruktory podklas, aby mogły tylko w ramach funkcji fabrycznych.
- Zmieniono nazwę Font.asFontFamily na Font.toFontFamily (I42aa7).
Data
ComposeContentTestRule
, która obejmuje okres próbnyComposeTestRule
i definiuje zasadęsetContent
, która została usunięta zComposeTestRule
Dodano metodę fabrycznącreateEmptyComposeRule()
zwracającyComposeTestRule
i nie uruchamia aktywności dla do Ciebie. Użyj tej opcji, jeśli chcesz uruchomić aktywność w trakcie testu. np. przy użyciuActivityScenario.launch
(I9d782, b/174472899)animateAsState to teraz animateFooAsState, typu 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 jest to lepiej użyć rozmiaru co najmniej onRoot() lub rozmiaru okna. (I62db4).
OnSizeChanged raportował rozmiar szablonu treści. Raportuje teraz rozmiar w swojej pozycji w łańcuch 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 wprowadzona tylko w interfejsie API, a edycja tekstu w wielu stylach nie jest zostały już wdrożone.
- 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 podsekwencja są teraz funkcjami instancji, i funkcje rozszerzeń. (Iaf429).
ZapamiętaneObserver zastępują CompositionLifecycleObserver. , a funkcja CompositionLifecycleObserver została wycofana.
RememberObserver
zastępujeCompositionLifecycleObserver
ze zmodyfikowaną semantyką i o zmienionych nazwach. Przejście na nowy interfejs API może odbywać się automatycznie w przypadku obiektów, które są zapamiętywane tylko raz, czyli są i nadal są co jest zalecane. Jeśli jednak plik referencyjny był zapamiętane więcej niż raz w kompozycjionRemembered
to nazwa dla każdego odwołania, w którym elementonEnter
jest wywoływany tylko raz.onEnter
została wywołana wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jakWithConstraints
iScaffold
, tworząc singielonEnter
gwarancja połączenia jest niewiarygodna i została usunięta w przypadkuRememberObserver
Funkcja
RememberObserver
dodaje metodęonAbandoned
, która jest wywoływana, jeśli Z powodowanego wywołania zwrotnego jest zwracanaRememberObserver
instancja doremember
, ale nie został zapamiętany w stanie kompozycji i dlatego nigdy nie zostanie wywołana funkcjaonRemembered
. Może to spowodować występują, jeśli wyjątek zakończy kompozycję przed zakończeniem lub kompozycja jest odrzucana, ponieważ stan generuje kompozycja dla nie jest już aktualna lub w inny sposób przestaje być aktualna niezbędną. Jeśli wystąpienieRememberObserver
następujące po singlu powyższa rekomendacja pozwala śledzić zasób zewnętrznyonForgotten
ionAbandoned
wskazują, że nie jest już potrzebny. Jeśli obiekt śledzi pracę rozpoczęte lub przydzielone zasoby w:onRemembered
,onAbandoned
można zignorować, ponieważ nie zostanie wywołana, jeślionRemembered
jest . (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 bezpośrednio zadeklarowanych zasobów publicznych (np. przez 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 wymagają 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 elementu 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 kompilatora Interfejs API umożliwia grupowanie zmian w wygenerowanych węzłach w wyniku kompozycji w „zastosuj zmiany” faza kompozycji, po wszystkich funkcjach
@Composable
.To fragment treści behawioralnych która może mieć wpływ na kod aplikacji jako węzłów wewnętrznych i eksperymentalnych interfejsów API po wprowadzeniu zmian. zastosowano. Zwykle można temu zapobiec, kodu z takimi zależnościami w
SideEffect
kompozycyjny, aby opóźnić wykonanie do czasu utworzenia węzłów. zainicjowano. (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)
- EditOperations API Zmiany
- 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)
- w module ui-test będzie można skonfigurować tworzenie Rekompozycje dla testowanych interfejsów (Ibebd8)
- Zmodyfikowano prędkość, aby obejmowała składowe i matematyczne operacji. (IB0447)
- Zmieniono nazwę
@ExperimentalTesting
na@ExperimentalTestApi
na spójne 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)
- Dodano element jest określony, nieokreślony i useOrElse dla klas wbudowanych ze stałą nieokreśloną. (I93f7b, b/174310811)
Rozwiń interfejsy API ComposeView, by umożliwić recykling widoki oparte na kompozycji, pozostawianie kompozycji w celu ich ponownego utworzenia; później. Dodaj interfejsy API do instalowania i wykrywania rekompozytorów ograniczonych do okna i CompositionReferences do tworzenia kompozycji podrzędnych.
Dodanie strategii ViewCompositionStrategy, która umożliwia skonfigurowanie usuwania kompozycji [Abstract]ComposeViews; domyślne działanie to usunięcie odłączenie okna. (I860ab)
Usunięto publiczny interfejs API Any.identityHashCode() (I025d7).
Usunięto element toStringAsFixed Interfejs API z zaletą użycia String.format bezpośrednio. (Iaba6b)
Dodaj przełącznik do podstawowego pliku Strings.kt (I4a5b7, b/172366489)
Przeniesiono klasę natywny do interfejsu użytkownika i udostępniono go do użytku wewnętrznego. Zaktualizowano przypadki użycia natywnego klasy w równa się implementacji do użycia „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 Outline.bounds do uzyskania prostokąta ograniczającego na potrzeby różnych implementacji konspektów. (I16e74, b/175093504)
Wycofano TestUiDispatcher. Użyj Dispatchers.Main (Ic171f, b/175385255)
ImeOptions i KeyboardOptions nie są już klasą danych (I3c898, b/168684531)
Zmiany w interfejsie VisualTransformation API
- Zmieniono nazwę 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 usunięto getRange() (Ib2dfd).
Zmieniono funkcję Dp.isFinite() na wartość Dp.isFinite (I50e00)
Poprawki błędów
- Funkcja ponownego komponowania ujawnia teraz przepływ w bieżącym stanie, co pozwala monitorowania jego aktywności i aktywności związanych z nimi skutków. (Ifb2b9).
- Dostęp do natywnego zdarzenia keyEvent można teraz uzyskać przez keyEvent.nativeKeyEvent (I87c57, b/173086397)
- Ciąg
animate()
został zastąpiony tekstemanimateAsState()
, , który zwracaState<T>
zamiastT
. Dzięki temu skuteczności, ponieważ można zawęzić zakres unieważniania w którym odczytywana jest wartość State. (IB179e) - Dodaj interfejs API roli Semantics i Rolę jako parametr do klikalny, wybierany i włączany SemanticsModifier. Zmieniono Modifier.progressSemantics, aby Slider mógł z niego korzystać. (I216cd)
- Nowy interfejs API
Animatable
oparty na współudziale, który zapewnia wzajemną wyłączność między animacjami.- 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
- Wycofany klucz KeyEvent.Alt został usunięty. 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)
- Zmieniono nazwę na potrzeby zawieszania interfejsów API wejściowych wskaźnika HandlePointerInputScope do 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. Zmieniono nazwę ułatwień dostępu 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)
- Układ LayoutInfo został wprowadzony do użycia w ramach narzędzi i testów (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)
Zmieniono interfejs
Applier
, aby uprościć buduj drzewa od dołu, a nie od góry.Nazwa metody
insert()
została zmieniona nainsertTopDown()
.Dodano nową metodę:
insertBottomUp()
.Stosowany sposób wstawia węzły do edytowanego drzewa przy użyciu
insertTopDown()
lubinsertBottomUp()
w zależności od który jest skuteczniejszy.Niektóre drzewa, takie jak
LayoutNode
iView
, są znacznie większe efektywniej tworzyć reklamy od dołu do góry niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, była skopiowana do każdego podmiotu, który wymagał przeprowadzenia oddolnej i zwiększania wydajności. W związku z tą zmianąApplier
zastępujeinsertBottomUp()
, aby utworzyć drzewo od dołuinsertTopDown()
, aby utworzyć drzewo od góry. (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 z dowolnego z zrasteryzowanych formatów zasobów (np. PNG) lub VectorDrawables. Konsumenci nie mają już aby z wyprzedzeniem określić typ zasobu i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w funkcjach kompozycyjnych lub modyfikatorów do malowania obrazów. (I2c703, b/173818471)
Do czyszczenia elementów podrzędnych dodano modyfikator.clearAndSetSemantics semantykę i wyznaczać nowe wartości. (I277ca)
Przeniesiono ContentDrawScope do grafiki UI z DrawScope. (Iee043, b/173832789)
Wprowadzono interfejs graficzny PathEffect w celu uzyskania różnych wzorów na kreślonych kształtach. Wycofane użycie NativePathEffect na korzyść oczekiwanej/rzeczywistej implementacji obiektu PathEffect. (I5e976, b/171072166)
Dodano interfejsy IdlingResource do funkcji Compose jako kompozycje obsługiwany wariant bezczynnych zasobów Espresso. Można je zarejestrować i wyrejestrowano za pomocą reguły ComposeTestRule (I433f3).
Usunięto globalną (wyrejestrowaną) rejestrację zasobów ComposeIdlingResource oraz globalna (wycofana) rejestracja 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. Zostały one oznaczone jako Poprzednio InternalComposeAPI. Teraz są wewnętrzne do modułu tworzenia wiadomości.
Atrybuty CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API do wyodrębniania informacje o kompozycji. Są one publiczne, ale nie przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ zapewniają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c);
Refaktoryczny ShaderBrush na leniwie twórz instancję cieniowania, informacje o rozmiarze rysunku i środowisko. Przydaje się to do definiowania gradientów zajmują pełne granice rysowania funkcji kompozycyjnej w momencie kompozycji, bez konieczności na wdrożenie niestandardowych implementacji DrawModifier.
Wycofane interfejsy API konstruktora funkcji gradientu na metodę fabryczną obiektu Gradient. (I511fc, b/173066799)
Wycofano LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Użyj LazyColumn i LazyRow (I5b48c)
Wycofana wersja BuildCompat.isAtLeastR (Idb37e)
Dodano w kolejności funkcję fabryczną buildAnnotatedString, aby utworzyć obiekt AdnotatedString. Wycofany ciąg z adnotacjami za pomocą funkcji konstruktora. (Idfe0b)
Usunięte metody rozszerzeń dla liczby zmiennoprzecinkowej i liczby zmiennoprzecinkowej, aby przekonwertować wartości na radiany. Przeniesiona do funkcji prywatnej w implementacji PathParser w którym był jedynym miejscem, w którym jest używany (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 androidx.compose.ui do androidx.compose.ui.draw. Utworzono plik DrawModifierated.kt w uwzględnij aliasy typów/metody pomocnicze, aby ułatwić migracji z wycofanych do bieżących API. (Id6044, b/173834241)
- Nazwa Modifier.drawLayer została zmieniona na Modifier.graphicsLayer Zaktualizowaliśmy też powiązane klasy w GraphicsLayer zgodnie z Opinia o interfejsie API. (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) - Dodano Modifier.scale/rotate
interfejsów API jako udogodnień w DrewLayer.
- Nazwa
Modifier.drawOpacity
została zmieniona naModifier.alpha
- Nazwa
Modifier.drawShadow
została zmieniona naModifier.shadow
(I264ca, b/173208140)
- Nazwa
- Zwiększenie czasu działania PointerInputData pola pozycji nie mogą mieć wartości null. (Id468a).
- MaterialTheme ustawia teraz prawidłowe kolory uchwytów wyboru i tła zaznaczenia. Aplikacje niematerialne mogą ręcznie używać 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 z wywołaniem zwrotnym onWindowFocusChanged. (I53b2a, b/170932874)
- Zaktualizowano TransformOrigin API
mają destrukcyjną składnię, która zostanie zwrócona
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, używając 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()
. W nowym elemencie GraphicsLayerScope definiuje się blok lambda, w którym definiujesz parametry warstwy w sposób, który pozwala na pominięcie ponownej kompozycji i przekazywania informacji o 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 użytkownika
androidx.compose.ui.text.Typeface
doandroidx.compose.ui.text.font.Typeface
(IC2b81) - Nazwa argumentu semantyka mergeAllDescendants została zmieniona na mergeDescendants. (IB6250)
- Nowy detektor gestów przeciągania – zawieszanie wskaźnika wejściowy interfejs API, w tym blokowanie orientacji. (Icef25).
- Zmieniono nazwę zasobu wektorowego na ImageVector Przeniesiono zasób VectorAsset do Builder i zmieniono jego nazwę na być wewnętrznym klasą ImageVector zgodnie z Wytyczne dotyczące interfejsu API. Dodano alias typu VectorAssetBuilder do do pliku ImageVector.Builder dla zgodności. (Icfdc8)
- Zmieniono nazwy komponentu ImageAsset oraz powiązane z ImageBitmap. (Ia2d99)
- Dodaj parametr zIndex dla parametru „place()” obiektu PlacesScope, aby funkcja Modifier.zIndex() działa teraz jako funkcja LayoutModifier, a każdy układ niestandardowy może ustawiać zIndexes dla swoich 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 w całości (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 oraz oznaczenie prasy zostały dodane za pomocą nowego wskaźnika zawieszania. dane wejściowe. Dodaliśmy również kilka narzędzi, które ułatwiają korzystanie które pozwalają programistom na 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: pomagają wykrywać obrót, powiększenie i przesuwanie. (IC459d).
- Wprowadzenie SweepGradientShader interfejsów API oraz SweepGradientBrush. (Ia22c1).
- Kontrola czasu w testach (TestAnimationClock i jego zastosowania) to teraz w fazie eksperymentalnej (I6ef86, b/171378521)
Dodaj interfejsy API do przewijania opartego na współrzędnych:
Dodaje parametry LazyListState.snapToItem i LazyListState.smooth ScrollBy, a także elementy niższego poziomu Interfejsy API do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania i kontrolują przewijanie który czeka na zakończenie przewijania przed 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 AnimationClockTestRule, który można delegować do jego
clock
(I7ea3d, b/173399709)AndroidComposeTestRule może teraz akceptować niestandardową aktywność programy uruchamiające (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ą na na podstawie zegara MonotonicFrameClock (I1403b, b/173402197)
- Dodano otokę kroju czcionki na Androidzie. Aby załadować Androida,
Krój pisma 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)
- Recomposer nie akceptuje już elementu EmbeddingContext; wymagane zależności harmonogramu są pobierane z programu EffectsCoroutineContext. Interfejs FrameManager został wycofany. integracje platformy powinny zostać zainicjowane własnej globalnej obsługi zrzutów dysku. (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
- Wprowadzona funkcja ScaleFactor
klasa śródtekstowa reprezentująca skalę
czynniki wpływające na orientację poziomą i pionową
osie niezależne od siebie w kolejności
na potrzeby niejednolitych zastosowań skalowania.
- Do metody computeScaleFactor dodano metodę computeScaleFactor Skala treści
- Dodano funkcję ContentScale.FillBounds do wykonania. niejednolite skalowanie w celu rozciągnięcia źródła które w pełni zajmują miejsce docelowe.
- Dodano metody operatorów do obliczeń Parametry ScaleFactor z parametrami Size.
- (IC96a6, b/172291582)
- Dodane zostały fabryki BiasWyrównaj i BiasabsBackground wyrównania, które służą 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 jako uzupełnienie transformacji 3D rotacji X/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(). są niejasne. (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)
- Zaktualizowano typ zwrotu lerp metody na parametry rozmiaru do zwrócenia niepusty rozmiar w celu uniknięcia zbędnych bokserskie. (IB0044)
- Dodano TestMonotonicFrameClock do testowania kodu, który opiera się na Element MonotonicFrameClock dla tworzenia wiadomości dla oczekiwania na zdarzenia ramki kompozycji za pomocą funkcji RunBlockTest kotlinx-coroutines-test (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 obrazu 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ę KeyboardOptions na ImeOptions (I82f36).
- Przeniesiono KeyboardType i ImeAction do KeyboardOptions (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ść w interfejsach API SideEffect i DiposableEffect. LaunchedEffect bez Parametry tematu są niedozwolone w celu promowania sprawdzonych metod. (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 powinno 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 parametrem CompositionReference i elementu nadrzędnego kompozycji. Bezpośrednie przekomponowanie jest teraz wymagane w mniejszej liczbie miejsc. (I4036f)
- Wycofanie VectorPainter z korzyścią na lepsze radzenia sobie z. wskazują, że interfejs API kompozycyjny jest wewnętrzny Wykorzystywane jest słowo „zapamiętanie” zachowywania danych w kompozycje. (Ifda43).
- Zaktualizowano interfejs API Modifier.drawWithCache w celu udostępnienia ContentDrawScope jako zakresu odbiorcy zamiast DrawScope, umożliwia zmianę kolejności produktów polecenia rysowania. Jest to przydatne do mieszania/ przypadki użycia, w których piksele treści zostaną wyrenderowane jako pierwsze w kolejności algorytm trybu mieszania. (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 DrawScope i
ContentDrawScope jako interfejsy
zamiast klas abstrakcyjnych
- Implementacja CanvasDrawScope została utworzona z DrawScope
- Zrefaktoryzowane implementacje DrawScope, aby używać obiektu CanvasScope
- Utworzono element DrawContext w celu zawijania zależności dla DrawScope
- 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 funkcjiPointerInputFilter.onPointerEvent(...)
, możesz teraz po prostu zmodyfikować dane o wykorzystaniu przekazywanego zdarzenia 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).
- Zaktualizowano element DrawTransform.rotate
domyślny parametr przestawny o wartości środka
i dokumentacja.
- Zaktualizowano parametr DrawScope.rotateRad, aby przyjmować przesunięcie dla aby dopasować inne metody przekształcania.
- Wycofane przeciążenie DrawScope.rotateRad, które wykorzystało dla współrzędnych x i y osi obrotu.
- (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 zasadzie ComposeTestRule; usuń opcję włącz migający kursor w ComposeTestRule. (If0de3).
- Dodano opcję IME dla wielkich liter (I8ac38).
- Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
- Przenieś obiekt SimpleContainer do PopupTestUtils.kt (I65c3e).
- Zmieniono nazwę Radius API na Promień narożnika ułatwiający ekspresowanie jak jest on używany w tworzeniu. Zaktualizowaliśmy dokumentację, aby 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 plik 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 wykorzystują nie zwracają już nowej wartości PointerInputChange, ale zamiast tego mutować podaną wartość PointerInputChange.
To pierwszy etap dwuetapowego procesu umożliwiać zmienność danych PointerEvent w taki sposób, danych wskaźnika nie można edytować za pomocą kodu użytkownika. Drugim krokiem będzie usunięcie
List<PointerInputChange>
zwraca typ zwracany przezPointerInputFilter.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, aby automatycznie usuwać zaznaczenie (Ie1dc2, b/161487952)
Użytkownik
PointerInputFilter.onPointerInput(...)
został usunięty. 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 ustawnych dla klas wbudowanych, zmień nazwę Kolor.Usuń ustawienie na Kolor.Nieokreślony w celu zachowania spójności z innymi klasami wbudowanych (I97611, b/169797763)
Wprowadzono tekst TextOverflow.None. Gdy ustawienie overflow ma wartość Brak, tekst nie obsługuje już przepełnienia 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. Dodano nową metodę hasInvalidations() dla klasy kompozycji. Nazwa metody hasPendingChanges() z Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- Zaktualizowany rozmiar.Nieokreślony jako Float.NaN, a nie Liczba zmiennoprzecinkowa.POSITIVE_INFINITY. Zaktualizowano implementacje Paintera do Sprawdź pod kątem rozmiaru.Dodatkowo nieokreślony jako rozmiarów 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).
- Dodano fragmenty do zajęć na Androidzie, które są włączone starszych platform, by w miarę możliwości unikać odczuć. (IA1790).
- Usunięto błąd: jeśli wyświetlenie klawiatury programowej sprawiało jeśli aplikacja ma tłumaczyć, współrzędne wejściowe wskaźnika staną się niepoprawnie. (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ć zbieranie tych danych: a nawet lunety obserwacyjne układów i rysunków, stracił ważność. (Ic4cf8).
- Dodano funkcję OnRemeasuredModifier i onSizeChanged() do otrzymasz wywołanie zwrotne po ponownym pomiarze układu treści. rozmiar się zmienił. (I657cf, b/154108792)
- Dodaj działanie semantyki długiego kliknięcia (I6281b, b/156468846)
- Zmieniono ustawienia FocusManagera na prywatne. (I7872f)
Implementacja została zaktualizowana, aby utworzyć dedykowana implementacja DrawCacheModifier zamiast dodawać opcjonalne właściwości w DrawModifier.
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).
Wprowadzono modyfikator.drawWithCache umożliwia tworzenie obiektu rysowania warunkowo odtwarza zależności które zależą od informacji o rozmiarze/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 API związanych z grafiką
- Zaktualizowano skalę i obrót interfejsów API transformacji, aby wykorzystać Parametr przesunięcia reprezentujący tabelę przestawną współrzędna zamiast osobnej liczby zmiennoprzecinkowej dla współrzędnych x/y w DrawScope i DrawTransform
- Usunięto elementy Rect.expandToInclude i Rect.join metod
- Zaktualizowaliśmy dokumentację dotyczącą promienia o owalu. oprócz orbitreka
- Dodaliśmy dokumentację, by wskazać publiczny konstruktor dla wbudowanego promienia klasa nie powinna być wywoływana bezpośrednio, Wystąpienia obiektów o określonym promieniu powinny być tworzone przez ich konstruktory funkcji
- Usunęliśmy interfejsy RoundRect API do wysyłania zapytań dotyczących górnego prawa, dolny róg, dolny środek itp.
- Wycofano Rect.shift na rzecz Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect
- Usunięto element 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ę
- Zaktualizowano konstruktor RoundRect, który wykorzystuje właściwości Radius zamiast poszczególnych parametrów dla wartości promieni x/y.
- Usunięto interfejsy Size API, które zakładały, że jest to prostokąt z nazwą origin 0,0
- Do interfejsu Radius dodano interfejs API destrukcyjny.
- Przeniesiono różne funkcje rozszerzenia RoundRect 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 jeden nad drugim, jeśli ma 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 dekoracje lub dopełnienie, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.splash) (Ibae92, b/167680279)
- Zaktualizowano wiele interfejsów API związanych z grafiką
- Zaktualizowano interfejsy API DrawScope z zakresem metod transformacji, aby wskazać, że przekształcenie jest stosowane tylko w wywołanie zwrotne i usunięte po wywołaniu
- Zaktualizowaliśmy dokumentację klipPath, aby odnosiła się do ścieżki zamiast zaokrąglonego prostokąta
- Poprawiono odstępy w dokumentacji dla prawego parametru w klipPath
- usunięto parametr rozmiaru
- Zmieniono nazwę parametrów Dx/dy w metodzie wstawienia na w poziomie i w pionie
- Dodano przeciążenie wektorowe, które zapewnia ten sam wartość wcięcia do wszystkich 4 granic
- Usunięto dokumentację metody wstawiania wskazującą, które wcięcie zostanie zastosowane do wszystkich 4 stron,
- Zaktualizowano dokumentację klasy Rect
- Zaktualizowano komentarze do parametrów prostokąta, aby pasowały do dokumentu kdoc styl
- Usunięto elementy Rect.join i Rect.expandToInclude
- Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
- (If086a, b/167737376)
- Adnotacja rootAnimationClockFactory, wyraźnesEnabled, blinkingCursorEnabled i textInputServiceFactory z @WidoczneForTesting ustaw wewnętrzny interfejs API i ukryj jego dokument kdoc (I554eb, b/168308412)
- 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. Dodane kroki w AccessibilityRangeInfo. (Ia47b0).
- Usunięto:
onInvalidate()
z:Owner
–OwnedLayer
obsługuje unieważnianie. (Ica72b, b/162061312) Usunięto metody operatorów rozmiaru Interfejs API, który wykorzystuje parametry Offset. wynik tych działań jest niejasny a typ wyniku jest nieoczekiwany, tych kwestii. Np. należy podać rozmiar – odsunięcie zwrot przesunięcie lub wynik rozmiaru z tą 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 jako obecne globalne słowa kluczowe 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)
- Dodano obsługę typu Filltype parametry na ścieżkach grafiki wektorowej obsługuje wycięcia kształtów na podstawie na reguły wypełniania ścieżek, czyli nawet nieparzyste czy inne niż zero. (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 z konstruktorem funkcji prostokątnych z przesunięciem i promieniem utworzy prostokąt w kolejność lewa, prawa, góra, dół zamiast lewo, góra, prawo, dół.
Usunięto wycofane metody kreacji towarzyszącej z prostokąta w na konstruktory 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ą. Pozostałe części z pakietu vectormath. (Ibd665, b/160140398)
Konwencja wywoływania funkcji kompozycyjnych ma została zmieniona. To jest zmiana binarna, która powoduje niezgodność. Wszystkie biblioteki muszą być skompilować ponownie, by współpracował z tą wersją wtyczki kompilatora compose.
Ta zmiana nie powoduje zmiany powodującej niezgodność na poziomie źródła, ponieważ tylko interfejsy API, które uległy zmianie, są interfejsami API kompilatora wyrazić zgodę. (I7afd2, b/158123185)
Naprawiono awarię, która mogła wystąpić, gdy: wysłanie do PointerInputFilter może spowodować należy usunąć synchronicznie pole 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 emisji mogą teraz zadeklarować, że co najmniej jeden z detektorów można pominąć i ponownie skomponować niezależnie od emisji. (Ibbd13).
Klasy wektorów zostały zmienione i nie są już używane są klasami danych, ponieważ ta sama instancja obiektu do kompozycji.
Dodano flagę mutableStateOf do metody VectorPainter warunkowego ponownego rysowania, jeśli zawartość zmiany wektorowej.
Zrefaktoryzowana instancja VectorKomponent zostanie ustawiona część VectorPainter, ponieważ jest używana ponownie w różnych kompozycjach.
Zaktualizowano składniki grupy i ścieżki aby ich pola nazw były zmienne (Ieae45, b/151378808)
Usunięto:
onChildPositioned
iOnChildPositionedModifier
. Deweloperzy powinni używać interfejsówonPositioned
iOnPositionedModifier
w układzie podrzędnym. (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
). Może to być służy do definiowania niestandardowej zasady semantyki mergeAllDescendants scalanie. Domyślną zasadą jest używanie wartości nadrzędnej, jeśli jest już używana obecny, w przeciwnym razie wartość potomna. (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)
Niektóre narzędzia testowe zostały wyłączone publiczne, bo ich nie ma tam, gdzie się znajdują i posiadania. Zostaną upublicznione w przyszłości. (I32ab1)
Zrefaktoryzowana organizacja danych wejściowych wskaźnika w kodzie. (IE3f45)
Wycofane pułapki PxBound w na korzyść Rect. Zaktualizowano wszystkie przypadki użycia z PxBounds z prostokątem i dodanym właściwe wycofanie/zastąpienie adnotacji, które pomagają migracji danych. (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).
Utworzono zdarzenie niestandardowe DelayUp i powiązanych klas, aby włączyć interfejs API, najprawdopodobniej ulegnie zmianie. (I56d6f)
Usunięto 2 elementy PointerEventPass, które już nie są niezbędną. (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 do tworzenia wiadomości zostały zmienione, by zmniejszyć ilość śledzenie 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ąpiona wyraźne wezwania do działania (remember { mutableStateOf(...) }
) w celu uniknięcia wątpliwości. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji stanu management i pasuje do wzorcaby mutableStateOf()
klasy przekazania usługi. (IA5727).Zmieniono nazwę RRect na RoundRect aby lepiej dopasować je do wzorców nazewnictwa. Utworzono podobne konstruktory funkcji do RRect i wycofanej funkcji RRect konstruktory (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żywaj ustawienia OnPositioned na koncie dziecka. (I87f95, b/162109766)
- Metoda setViewContent została wycofana. Zamiast niego należy użyć 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)
- Usunięto 2 elementy PointerEventPass, które już nie są niezbędną. (I33ca7).
- Wdrożenie funkcji PointerInteropModifier, możliwość otrzymywania zdarzeń MotionEvents i interakcji z funkcją Compose jak w przypadku implementacji widoku Androida. (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. „To” ma silniejszy sygnał dotyczący kolejności, ale nie pozwala też na wpisanie słowa
Modifier.padding().background() + anotherModifier
, które przerywa łańcuch i jest trudniejsze do odczytania (Iedd58, b/161529964). - Dodawanie [Abstract]Wyświetlanie podklas wyświetlania ComposeView do hostowania Compose w hierarchii widoków. (I46357)
- Funkcje
Row
iColumn
są teraz znacznie wbudowane i zmniejsza koszty 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ć pozycję Węzeł SemanticsNode położony względem głównego poziomu hierarchii Compose (Icdf26, b/161336532) - Zdarzenia MotionEvents zaliczone do końca przez Androida, stronę Compose z powrotem na 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 RemeasurementModifier. umożliwia 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 metodę getLineEllipsisOffset/getLineEllipsisCount. Używaj getLineVisibleEnd/getLineEnd/isLineElliptyk. (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 umożliwiające konwersję jednostki Google są teraz dostępne za pomocą programu Foo.VectorConverter. np. Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter itp. (I3e273)
Poprawki błędów
- Naprawianie ogólnych poprawek interfejsu API (I077bc)
- Usuń nieużywany interfejs OffsetBase
- Wyrównuje klasy Offset i IntOffset, które mają mieć spójna platforma API
- Zmień nazwę IntOffset.Origin na IntOffset.Zero aby zachować spójność z interfejsem Offset API
- Metodę natywnego Canvas usunięto z Canvas aby ułatwić konsumentom tworzenie własne instancje Canvas
- Utworzono wycinek klasy EmptyCanvas do refaktoryzacji DrawScope, aby był parametrem niepustym, a nie Lateinit i zapewnić brak wartości pola jako wartość 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
- Implementacja DrawCache została zaktualizowana i nie jest już dostępna używanie parametrów Lateinit
- Zaktualizowano metodę DrawScope, aby nie używała już leniwego przekazywania dostępu dla parametrów wewnętrznych FillPaint i StrikePaint
- Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box przy mniejszym nakładzie pracy
- Zaktualizowaliśmy klasę Outline tak, aby dodać do niej adnotacje @stałe.
- Zaktualizowano obiekt PathNode, aby dodać adnotacje @Stałe dla: instrukcja dla każdej ścieżki
- Zaktualizowano składnię wektorową, aby usunąć zbędne elementy sprawdzanie warunkowe pod kątem równości, ponieważ funkcja tworzenia wiadomości już obsługuje ich
- Wycofane metody konstruktora kreacji towarzyszącej w formacie prostokąta konstruktorów funkcji
- Zaktualizowano klasy i konstruktory funkcji pędzla za pomocą Interfejsy API @Immutable i @Stable
- Zaktualizowano enum VertexMode na PascalCase
- Metodę DrawScope selectPaint zmieniono na warunkowo nadpisać parametry kreski, jeśli mają zmieniono
- Zaktualizowano rozmiar, aby dodać interfejs API destrukcyjny; zmień nazwę Nieokreślony rozmiar na nieokreślony i usunięte nieużywane metody
- Zaktualizowano wykorzystanie interfejsu compose BlendMode API poprawne mapowanie między platformą Androida BlendModes i PorterDuff w zależności od poziomu interfejsu API. Wprowadzono BlendMode#isSupported API do działania jako zapytanie pozwalające określić, czy tryb BlendMode jest obsługiwana przez urządzenie przed jego użyciem. (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)
- Użytkownik
SemanticsNodeInteraction.performPartialGesture
został usunięty. UżywajSemanticsNodeInteraction.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 podstawowyTextField
został zmieniony naBaseTextField
, by 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ć narzędzia Compose w wersji
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 „semantyka { hide = true }”. jest 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)
- Wnioskodawca wymaga teraz metody clear() do usuwania kompozycje (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)
Dodano metody kopiowania do różnych typy klas, w tym:
- Przesunięcie
- Rozmiar
- Promień
- Ruch
TransformOrigin
Wycofana metoda obiektu towarzyszącego Size.copy korzyść metody 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, wyświetli się parametr AdjustLine.Nieokreślony. (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 format IntPx wartością Int. Zastąpiono pozycję IntPxPosition z IntOffset. IntPxSize zastąpiono wartością IntSize. (IB7b44)
Aby skonsolidować liczba klas używanych do reprezentowania informacje o rozmiarach, standaryzowanie na podstawie użycia klasy Size rozmiaru PxSize. Zapewnia to korzyści klasy wbudowanej, aby wykorzystać długi do pakowania 2 wartości zmiennoprzecinkowych do reprezentowania szerokość i wysokość w postaci liczby zmiennoprzecinkowej. (IC0191).
Aby skonsolidować liczba klas używanych do reprezentowania pozycjonowanie, standaryzowanie na użycie klasy Offset pozycji PxPosition. Zapewnia to korzyści klasy wbudowanej, aby wykorzystać długi do pakowania 2 wartości zmiennoprzecinkowych reprezentujących x i odsunięcia y są przedstawione w postaci liczby zmiennoprzecinkowej. (I3ad98).
Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i podstawowych parametrów pikseli. Cała klasa Px została usunięta (I3ff33).
Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I086f4).
Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (Id3434).
Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (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)
Poprzednio wycofane ScaleFit jako usunięto. Zamiast tego użyj ContentScale. (Ifbc5b).
Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (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ąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I57bff)
Wycofanie metody Modifier.semantics pozwala na użycie komponentów wysokiego poziomu. (I4cfdc)
Skonsolidowane implementacje CanvasScope więc teraz będą tylko DrawScope, ContentDrawScope Nazwa obiektu CanvasScope została zmieniona na DrawScope. Zaktualizowano obiekt DrawScope, aby zaimplementować gęstość i podaj kierunek układu Usunięto podklasę DrawScope w ContentDrawScope Painter i PainterModifier zostały zaktualizowane nie mają już właściwości RTL, ponieważ DrawScope zapewnia już bez ręcznego podawania (I1798e)
Teraz DoubleTapTouchFilter identyfikuje filtr SingleTapStepFilter po drugiej stronie drzewa. (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ę interfejsu outline prawdopodobnie na „ shape” i ma wartość domyślną Rectangleangle, a teraz nie może mieć wartości null. klipToOutline został zmieniony na klip; klipToBounds usunięto, ponieważ jest taki sam jak w przypadku klipu == true z parametrem Prostokąt (I7ef11, b/155075735).
Zaktualizowano wyższy poziom a także tworzyć interfejsy API, które udostępniają obiekt Canvas i udostępnić CanvasScope. Spowoduje to usunięcie że konsumenci muszą utrzymywać własnych obiektów Paint. Dla konsumentów, którzy nadal potrzebują dostępu do Canvas mogą korzystać z rozszerzenia DrawCanvas, , która powoduje wywołanie zwrotne do problemu za pomocą poleceń rysowania Obszar roboczy. (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 – kopię Ograniczenia, która obsługuje tylko wartości ograniczeń Int, a nie IntPx. IntPx zostanie usunięty, a wszystkie ograniczenia dotyczące liczb całkowitych będą stosowane jak w Androidzie.
- 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 UI-Graphics do UI Core moduł do umieszczenia w tym samym module co ustawienie Wyrównanie 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ę wskazującą, że kombinacja przycinanie i wyrównywanie. ImageView.ScaleType.CENTER_CROP i Fit użycie z funkcją Wyrównanie.Center przynosi taki sam wynik jak ImageView.ScaleType.FIT_CENTER Wewnątrz używana z Wyrównaniem.Center zapewnia to samo wynik w formacie 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() są teraz domyślne w ramach clipToBounds i ClipToOutline na false. (I0eb8b, b/152810850)
Zmieniono nazwę elementu LayoutResult na MeasureResult. (Id8c68).
dodano LayoutModifier2 – nowy interfejs API do definiowania modyfikatorów układu; wycofany komponent LayoutModifier (If32ac),
Zastąpienie operatora modyfikatora plus funkcjami rozszerzeń fabrycznych (I225e4).
Dodano do obsługi właściwości translacji X/Y odsunięcie listy wyświetlanych poleceń do rysowania dla danej warstwy. Przydaje się to do przenoszenia treści w reakcji na animacje lub zdarzenia dotyku. (I8641C)
Dodano parametry tabeli przestawnej i przestawnej do interfejsów Layer API w celu obsługi rotacji i skalowania w pobliżu określonego punktu w warstwie (Icf7c3).
Dodaj OnPositionedModifier i OnChildPositionedModifier w celu zastąpienia funkcji kompozycyjnych OnPositioned i OnChildPositioned funkcji. (I2ec8f).
Dodano LayerModifier, modyfikator, który pozwala przez dodanie obiektu RenderNode dla układu. Umożliwia ustawienie przezroczystość, obrót, skalowanie i cienie. 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 kierunek 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)
Zmieniono współrzędne LayoutCoordinates, aby utworzyć providedWyrównajmentLines ustawić zamiast mapy zestaw, a funkcja LayoutCoordinates wdrożyła funkcję get(). Dzięki temu dla modyfikatorów do modyfikowania jednej lub kilku wartości w zestawie bez podczas tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
LayoutCoordinates nie ma już właściwości pozycji. nie ma sensu w przypadku tagów LayoutModifiers, obracania czy skalowania. Zamiast tego programiści powinni używać współrzędnych nadrzędnych. i podrzędnyToLocal(), aby obliczyć przekształcenie z jednego Układ współrzędnych.
Funkcja LayoutCoordinates używa właściwości rozmiaru IntPxSize zamiast Rozmiar Px. Układy używają liczb całkowitych w pikselach, więc układy mają wszystkie rozmiary. należy używać liczb całkowitych, a nie zmiennoprzecinkowych. (I9367b)
Ulepszenia interfejsu API ograniczeń (I0fd15)
Utworzono interfejs CanvasScope API, który opakowuje Obiekt Canvas wyświetlający bezstanowy obiekt deklaratywny interfejs API do rysowania. Przekształcenia są uwzględnione w zakresie odbiorcy i własnych informacji o rozmiarze jest również ograniczony do odpowiednich granic wstawienia. Nie wymaga od konsumenta zachowania własnego stanu wyrenderowania do konfigurowania operacji rysowania.
- Dodano próbkę CanvasScope i zaktualizowano aplikację w wersji demonstracyjnej, aby dodać grafikę deklaratywnej wersja demonstracyjna (Ifd86d)
Usunięto nieużywany interfejs MaskFilter API ponieważ ma ograniczone wykorzystanie i nie jest zoptymalizowany do akceleracji sprzętowej w większości przypadków użycia (I54f76)
Rectangleangle zostały przeniesione z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Zastąpiono wszystkie przypadki użycia koloru dopuszczalnego w interfejsie API na nie dopuszcza wartości null i użyj wartości Color.Unset zamiast null (Iabaa7).
Podaj dodatkowy opcjonalny prostokąt do obsługi formatu ImagePainter rysowanie podsekcji komponentu z obrazem (I0ea9e)
Dodano nieskonfigurowany kolor do reprezentowania wartości bez ustawienia barwy bokserskie. (If901a).
Dodano Canvas.rotate i Metody rozszerzenia Canvas.scale do wykorzystuj opcjonalne współrzędne przestawne dla przekształcenia danych. Te domyślne w lewym górnym rogu bieżące tłumaczenie obszaru roboczego.
Przeniesiono również obiekt Canvas.rotateRad na metoda rozszerzenia zapewniająca spójność (Ibaca6)
Utworzono interfejs PixelMap API do obsługi wysyłania zapytań o informacje o pikselach z ImageAsset. (I69ad6).
Nazwa została zmieniona naFrameworkRect/toFrameworkRectF na toAndroidRect/toAndroidRectF, aby dopasować konwencję nazewnictwa konwersji obiektów między tworzeniem wiadomości a Androidem interfejsów API platformy, na których są tworzone. Zaktualizowane dokumentacji dotyczącej tych interfejsów API (I86337)
Interfejs VectorPainter API został dodany do zastąp istniejący interfejs API subcomposition API dla grafiki wektorowej. Wynik subkompozycji jest obiektem VectorPainter, a nie DrawModifier. Wycofany poprzedni DrawVector kompozycje na rzecz VectorPainter.
Zmieniono nazwę interfejsu Image(Painter) API na PaintBox(Painter) Utworzyliśmy wektorową kompozycję wektorową, która działa jak Obraz można komponować, ale nie za pomocą obiektu VectorAsset komponentu z obrazem (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:Utworzyliśmy metodę rozszerzenia na android.graphics.Bitmap Bitmap.asImageAsset(), by utworzyć instancję ImageAsset przydaje się do łączenia tradycyjnych funkcji Androida tworzenie aplikacji za pomocą platformy 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 dla 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ć/pokazać klawiaturę programową za pomocą SoftwareKlawiaturaController jest dostarczana przez onTextInputStarted wywołanie zwrotne (I8dc44, b/151860051)
Dodano operator plus dla stylu (Tekst/Akapit/span), który deleguje do funkcji merge(). (Ia1add)
Plik FontWeight.lerp już nie działa. Jest 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ę rozmiaru ponieważ istnieje zduplikowana klasa rozmiaru w module ui-geometry, ich konsumpcja. (I1B602).
Dodaliśmy AdapterList, komponent listy przewijanej, który tylko tworzy i układa widoczne elementy. Znane problemy pamiętaj, że jest tylko pionowa i nie obsługuje wszystkich przypadków zmian w jego elementach potomnych. (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. Parametr ScrollerPosition został wycofany i zastąpiony tagiem 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. Wszystkie Nazwy interfejsów API findXYZ zostały zmienione na onNodeXYZ. Nazwy wszystkich interfejsów API doXYZ zostały zmienione na XYZ. (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 wbudowaną klasę Shadera, która opakowano klasę oczekiwania NativeShader Zmieniono nazwę NativeShader na Shader. Opakowana klasa wbudowana Shadera nie może dodawać do interfejsu API żadnych wartościowych elementów. i była klasą wbudowaną, więc użyj NativeShader bezpośrednio w klasie. (I25e4d)
Refaktoryzator PainterModifier nie będą już udostępniać skalowania na podstawie podane ograniczenia i ContentScale . Implementacje narzędzia Painter są skalowalne, na podstawie danego rozmiaru do rysowania rysunków DrawScope.
Rozwiązaliśmy problem z pamięcią podręczną usługi VectorPainter rozmiar bitmapy został zmniejszony do domyślnego rozmiaru zamiast konkretnego rozmiaru.
Zaktualizowano ImagePainter, aby skalować niż korzystanie z narzędzia PainterModifier, zrobić to w jej imieniu. (I6Ba90)
dodaj funkcję najwyższego poziomu withFrameNanos do czasu animacji (Ie34c5)
Adnotacja @Nieśledzona została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e).
androidx.ui.foundation.TextFieldValue i Interfejs androidx.ui.input.EditorValue został wycofany. Pole tekstowe Obiekty kompozycyjne FilledTextField i CoreTextField, które korzysta z funkcji ten typ też jest wycofany. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
Rozwiązaliśmy problem z wpisywaniem danych przez wskaźnik dyspozytor spowoduje wypadek, jeśli Filtry PointerInputFilters zostały usunięte (za pośrednictwem ) subkompozycja w trakcie dysptachu. Zostało to już rozwiązane. (I1f48b, b/157998762)
Rozwiązaliśmy problem, który powodował, że wysyłanie danych wejściowych wskaźnika było powoduje awarię, jeśli PointerInputFilters zostały usunięte za pomocą subkompozycja w trakcie dysptachu. Zostało to już rozwiązane. (Iab398, b/157998762)
Zmieniona klasa promienia na inline. Usunięto tworzenie kreacji towarzyszącej z zastosowaniem konstruktora funkcji z domyślnym parametrem określającym promień wzdłuż osi Y należy dopasować do wartości .
Zaktualizowano plik DrawScope.drawRoundRect do przetworzenia jeden parametr „Radius” zamiast 2 osobnych, wartości zmiennoprzecinkowe promienia wzdłuż osi x i y oś (I46d1b)
Funkcja kompozycyjna Rekomponuj 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 tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (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”. liczba całkowita maski bitowej 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
Prace te obejmowały kilka optymalizacji: 1. Wyniki porównań parametrów są przekazywane na wykresie wywołań do innych funkcji kompozycyjnych. Spowoduje to zmniejszenie liczby porównań w czasie działania i zmniejszenie rozmiaru tabeli przedziałów oraz częstsze pomijanie funkcji kompozycyjnych, które nie były wcześniej pomijane. 2. 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 nakład pracy w środowisku wykonawczym 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 będzie to miało wpływu na typowe użycie funkcji tworzenia wiadomości: 1. Usunięto narzędzie Composer::startExpr 2. Pole 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 oczekiwano funkcji 3 zamiast Function1 7. Zaktualizowano 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)Zmieniono zachowanie domyślnego kierunku tekstu do określenia wg LayoutDirection. Np. Jeśli LayoutDirection to RTL, domyślny TextDirection to RTL. Wcześniej 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, w którym przekazujesz niewielką liczbę takich parametrów, np. Text(style = TextStyle(text wykonane = Text Adjust.Center)), możesz teraz po prostu podać parametry bezpośrednio: Text(textalign = Textalign.Center) (I82768)
Nazwa modułu ui-android-text została zmieniona na ui-text-android (I68cbe).