Interfejs tworzenia wiadomości

Podstawowe elementy interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu.
Najnowsza aktualizacja Wersja stabilna Kandydat do wydania Wersja Beta Wydanie alfa
26 czerwca 2024 r. 1.6.8 - 1.7.0-beta04 -

Struktura

Narzędzie Compose to połączenie 7 identyfikatorów grup Maven w ramach usługi androidx. Każda grupa zawiera docelowy podzbiór funkcji, z których każda ma własny zestaw informacji o wersji.

W tej tabeli opisano grupy i linki do poszczególnych zestawów informacji o wersji.

GrupaOpis
compose.animation,Twórz animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników.
compose.buildrPrzekształcaj funkcje @Composable i optymalizuj funkcje za pomocą wtyczki kompilatora Kotlin.
compose.foundationTwórz aplikacje w Jetpack Compose, używając gotowych do użycia elementów składowych, i rozbuduj podstawy, aby tworzyć własne elementy systemu.
compose.material,Twórz interfejsy Jetpack Compose z gotowymi do użycia komponentami Material Design. Jest to punkt wejścia wyższego poziomu w Composer, który ma dostarczać komponenty pasujące do tych opisanych na www.material.io.
compose.material3,Twórz interfejsy Jetpack Compose z komponentami Material Design 3, które stanowią kolejną wersję Material Design. Material 3 ma zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczne kolory, i został zaprojektowany tak, aby był spójny z nowym stylem wizualnym i interfejsem systemu na Androidzie 12.
compose.runtime,Podstawowe elementy składowe modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka kompilatora Compose.
compose.ui,Podstawowe elementy interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu.

Deklarowanie zależności

Aby dodać zależność w Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.

W pliku build.gradle aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:

Odlotowy

dependencies {
    implementation "androidx.compose.ui:ui:1.6.8"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.6.8")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego numeru

Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.

Wersja 1.7

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 na IsEditable i SemanticsPropertyReceiver.editable na isEditable. Właściwość jest teraz wartością logiczną i zawsze jest określana przez pola tekstowe. (I8acd8),
  • Zmień nazwę parametru testu porównawczego ułatwień dostępu. (I3d440)
  • Zaktualizowany interfejs API do określania stylu linków: TextLinkStyles jest teraz częścią konstruktora LinkAnnotation i metody AnnotatedString.fromHtml (I90b2b). Usunięto również TextDefaults z materiału (I5477b)

Poprawki błędów

  • Zmieniono nazwę LayoutCoordinates.introducesFrameOfReference na LayoutCoordinates.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 na performCustomAccessibilityActionWithLabel, a performCustomAccessibilityActionWhere na performCustomAccessibilityActionWithLabelMatching. (I5387f)
  • AnnotatedString.hasEqualsAnnotations to teraz hasEqualAnnotations (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 tematycznych LinkAnnotations 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 na introducesFrameOfReference. Zwróć uwagę, że teraz efekt jest odwrotny, co oznacza, że domyślnie większość elementów LayoutCoordinates 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 funkcji positionInLocalFrameOfReference(...). Lub positionInLocalLookaheadFrameOfReference w sklepie LookaheadScope. (Ifc5f7).
  • LookaheadScope interfejs API został stabilny (I21507)
  • Zgodnie z opiniami Rady ds. interfejsów API zmień parametr lambda działania dotyczący elementu getScrollViewportLength. (IBC74a)
  • Zaktualizowaliśmy interfejsy API interfejsu GraphicsLayer Outline, aby korzystać z parametrów zmiennoprzecinkowych zamiast int. W klasach wbudowanych typu przesunięcia i rozmiaru (I2fb03, b/333863462) usunęliśmy już istniejące nieokreślone stałe stałe na podstawie przesunięcia i rozmiaru.UnsetOffset/UnsetSize IntSize
  • Podczas wstrzykiwania danych wejściowych myszą podczas testów zasady MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick() i MouseInjectionScope.longClick() akceptują teraz parametr button: MouseButton, dzięki czemu mają one bardziej uniwersalne zastosowanie. Wartością domyślną w przypadku wszystkich metod jest MouseButton.Primary. (I31a23, b/190493367, b/261439695)
  • Nazwa onClicked została zmieniona na onClick w domenie LinkInteractionListener. (Iaa35c).
  • Zmień nazwę TextInclusionStrategy.isInside na isIncluded. Ustaw zwracany typ funkcji Paragraph/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żone LazyRows). Ta zmiana powinna zmniejszyć liczbę klatek podczas przewijania w przypadku tych elementów typu 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 API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) i LazyListPrefetchStrategy#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 pole AnnotatedString z elementem LinkAnnotation 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 gest JoinOrSplit w przypadku aplikacji BasicTextField (Ie6e13, b/325660505)
  • FocusProperties.enter i FocusProperties.exit nie są już eksperymentalne. FocusDirection.Enter i FocusDirection.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ą funkcji Placeable.PlacementScope.withDirectManipulationPlacement. Podobnie szablon, który często zmienia położenie swoich elementów podrzędnych, może teraz umieszczać je za pomocą elementu withDirectManipulationPlacement (np. domyślnie zaimplementowane przewijanie). Zwiększa to intuicyjność animacji approachLayout, umożliwiając rozróżnianie przesunięcia i zasady bezpośrednio przy animowaniu sposobu animacji. (I60ec7).
  • Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
  • LazyColumn będzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)
  • Źródła „Przeciągnij i przesunięcie” (NestedScroll) zostały zastąpione przez reguły UserInput i SideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, do których teraz należą animacje (efekt boczny) oraz pokrętło myszy i klawiaturę (UserInput). (I40579)
  • ApproachLayoutModifierNode i Modifier.approachLayout są teraz stabilne. Zastąpiły je odpowiednio nowe wersje isMeasurementApproachInProgress() i isPlacementApproachInProgress(), które zastąpią odpowiednio stare isMeasurementApproachComplete() i isPlacementApproachComplete().
  • Usunięto wycofany modyfikator intermediateLayout. (I3E91C).
  • Zmień nazwę rekordu GraphicsLayer#buildLayer, aby odzwierciedlała metody rozpoczęcia/endRecording interfejsów API opartych na liście Displaylist, takich jak RenderNode i Picture.
  • Zaktualizowano rememberGraphicsLayer, aby korzystać z: rememberObserver. (I312c1, b/288494724, b/330758155)
  • Interfejs UrlAnnotation został wycofany. Użyj interfejsu LinkAnnotation.Url. Jeśli korzystasz z motywów Material Design, użyj obiektu TextDefaults, 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 na AnnotatedString.Companion.fromHtml. (I43dcd)
  • Dodano argumenty stylu (linkStyle, focusedLinkStyle, hoveredLinkStyle) i detektor interakcji z linkiem do metody parseAsHtml. Podczas analizowania ciągu z tagami HTML z tagami <a> metoda tworzy LinkAnnotation.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 oraz LinkInteractionListener. Dodaj tę adnotację do elementu AnnotatedString, aby uzyskać hiperlink. Wartości focusedState lub hoveredState 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żyj LocaleList.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 format AnnotatedString. Pamiętaj, że nie wszystkie tagi są obsługiwane, na przykład nie będzie jeszcze można wyświetlać list punktowanych. (I84d3d, I30626, b/139326648)
  • Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania w usłudze Compose przy użyciu oficjalnego interfejsu API Androida (ScrollCaptureCallback). Ta funkcja jest eksperymentalna i może obecnie nie obsługiwać wszystkich przypadków poprawnie. Z tego powodu jest ono domyślnie wyłączone. Aby wyrazić zgodę, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość true. (I2b055, b/329296471)

Zmiany interfejsu API

  • Rola fun ClipEntry.getMetadata() została zmieniona na: val ClipEntry.clipMetadata. (I50155)
  • Usunięto funkcje ClipboardManager.getClipMetadata i ClipboardManager.hasClip. Użyj clipEntry.getMetadata(), aby odczytać metadane bieżącego wpisu. Sprawdź też, czy wynik funkcji ClipboardManager.getClip ma wartość null, czy nie, aby dowiedzieć się, czy schowek ma bieżący klip. (I50498)
  • Możesz teraz przekazywać obiekty GraphicsLayer do funkcji placeable.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 pliku GraphicsLayer. 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 na ComposeRect (I39925, b/325660505)
  • Wszystkie parametry KeyboardOptions domyślnie mają teraz nieokreśloną wartość. Dodano metodę KeyboardOptions.merge.
  • Nazwa KeyboardOptions.autoCorrect została zmieniona na autoCorrectEnabled i ma wartość null (null), gdzie wartość null nie została określona. (Ia8ba0, b/295951492)
  • Wariant BasicTextField(state) i BasicSecureTextField używają teraz polecenia KeyboardActionHandler zamiast KeyboardActions 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 elemencie GraphicsLayer można wykonać bez ponownego rejestrowania listy wyświetlania. W przeciwieństwie do zasady Modifier.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 rozszerzenia DrawScope.drawLayer(GraphicsLayer). (I7a7c0)
  • Podziel restrictedConstraints() na 2 metody: fitPrioritizingWidth() i fitPrioritizingHeight() (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 i drawWithCache w celu zapewnienia dostępu do funkcji GraphicsContext w ramach dostępu w zakresie, który automatycznie wyczyści GraphicsLayer 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ługa PlatformTextInputTestOverride została wycofana. (I862ed, b/322680547)
  • Dodano funkcję rozszerzenia GraphicsLayer.setOutline(Outline). (IB81f4).
  • Wprowadź konstruktor funkcji GraphicsContext, aby utworzyć fabrykę do tworzenia instancji GraphicsLayer (Ib98d6, b/288494724)
  • Przedstawione są interfejs API GraphicsLayer, który zapewnia deweloperską elastyczność w rejestrowaniu poleceń rysowania, które można wykorzystać do rysowania w innym miejscu, a także do stosowania różnych efektów wizualnych. (I80245, b/288494724)
  • Podaj funkcję Paragraph#getRangeForRect, która zwraca zakres tekstu uwzględniony w danym obszarze prostokąta. (Iee516, b/325660505)
  • Usunięto eksperymentalne zastąpienie funkcji BasicText z onLinkClicked 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ź interfejs GraphicsContext, który będzie zawierał zależności grafiki, w tym możliwość tworzenia instancji GraphicsLayer 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 do lifecycle-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 Androida View bez lokalnego odczytu kompozycji. (I40768)
  • Nowy interfejs API Path.reverse() do odwrócenia kierunku ścieżki (I36348)
  • W programie KeyboardOptions dodano hintLocales, aby umożliwić w narzędziu TextFields 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 metody Locale, 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 format FlowRow/Column w MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnej wersji FlowRow i FlowColumn, które oprócz debiutu ContextualFlowRow i ContextualFlowColumn 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 kolei FlowRow i FlowColumn są idealne w przypadku niewielkiej liczby elementów, która nie przekracza 100 elementów. Ważne: aby zachować obecne zachowanie w funkcjach FlowRow i FlowColumn, w których wszystkie elementy są złożone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw overflow na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Zapoznaj się z usługami ContextualFlowRowSample i FlowRowSample, 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 metody inspectableProperties() w ModifierNodeElement, 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 flagami WindowManager.LayoutParams. (Ibb33e, b/312485503)
  • Wprowadzono DelegatableNode.requireLayoutCoordinates(), aby umożliwić uzyskiwanie obecnej wartości LayoutCoordinates elementu Modifier.Node bez konieczności zastępowania parametru onPlaced i samodzielnego zapisywania współrzędnych w usłudze. (IA8657).
  • Wprowadzono DelegatableNode.currentLayoutCoordinates, aby umożliwić uzyskiwanie obecnej wartości LayoutCoordinates elementu Modifier.Node bez konieczności zastępowania parametru onPlaced i samodzielnego zapisywania współrzędnych w usłudze. (Iaebaa)
  • BasicTextField2 i powiązane z nim interfejsy API w ramach pakietu androidx.compose.foundation.text2 zostały przeniesione do androidx.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 API DeferredTargetAnimation 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 z Path. (I63d04)
  • Dodano punkty PathHitTest i Path.contains(Offset), aby sprawdzić, czy Path 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ści firstBaseline i lastBaseline 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 i SemanticsActions.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 parametr usePlatformDefaultWidth, 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ść semantyczna isOpaque. (I8c583, b/317966058, b/246056649)
  • Usunięto metodę originalEventPosition z metody kopiowania w publicznym interfejsie API PointerInputChange. (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 i ParagraphStyle. (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 atrybuty ClipEntry i ClipMetadata, aby umożliwić obsługę dowolnych treści, takich jak obrazy.
  • Dodaje do ui-test interfejs DeviceConfigurationOverride API, aby umożliwić lokalne zastępowanie działania testowanej treści, np. określenie dostępnego rozmiaru, języka, kierunku układu, skali czcionki lub motywu.

Wersja 1.6

Wersja 1.6.8

12 czerwca 2024 r.

Usługa androidx.compose.ui:ui-*:1.6.8 została zwolniona. Wersja 1.6.8 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono niespójności w skalowaniu czcionek, gdy skala czcionki jest mniejsza niż najniższa zdefiniowana tabela. W tym przypadku dokonamy interpolacji między liniową skalą 1x a najniższą zdefiniowaną tabelą, aby rozmiar czcionki zwiększał się monotonicznie wraz ze wzrostem skali. (Icbae3)

Wersja 1.6.7

1 maja 2024 r.

Usługa androidx.compose.ui:ui-*:1.6.7 została zwolniona. Wersja 1.6.7 zawiera te zatwierdzenia.

Wersja 1.6.6

17 kwietnia 2024 r.

Usługa androidx.compose.ui:ui-*:1.6.6 została zwolniona. Wersja 1.6.6 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawia rzadką awarię BasicTextField.

Wersja 1.6.5

3 kwietnia 2024 r.

Usługa androidx.compose.ui:ui-*:1.6.5 została zwolniona. Wersja 1.6.5 zawiera te zatwierdzenia.

Wersja 1.6.4

20 marca 2024 r.

Usługa androidx.compose.ui:ui-*:1.6.4 została zwolniona. Wersja 1.6.4 zawiera te zatwierdzenia.

Wersja 1.6.3

6 marca 2024 roku

Usługa androidx.compose.ui:ui-*:1.6.3 została zwolniona. Wersja 1.6.3 zawiera te zatwierdzenia.

Wersja 1.6.2

21 lutego 2024 r.

Usługa androidx.compose.ui:ui-*:1.6.2 została zwolniona. Wersja 1.6.2 zawiera te zatwierdzenia.

Wersja 1.6.1

7 lutego 2024 r. Została udostępniona aplikacja androidx.compose.ui:ui-*:1.6.1. Wersja 1.6.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem ze zgodnością wsteczną w funkcjach SemanticsPropertyReceiver.performImeAction i SemanticsActions.PerformImeAction. (Ie0bb2, b/322269946)
  • Układy zwracają teraz błąd podczas pomiaru, gdy zwracany jest nietypowo duży rozmiar. Ten rodzaj błędu występuje zwykle wtedy, gdy pomiar bezpośrednio używa ograniczeń maksymalnych bez sprawdzania funkcji Constraints.Infinity. Sprawdzanie pomoże programistom znaleźć problemy z niewłaściwym rozmiarem układu zamiast z układem, który go zawiera. (I339a9)

Wersja 1.6.0

24 stycznia 2024 r.

Usługa androidx.compose.ui:ui-*:1.6.0 została zwolniona. Wersja 1.6.0 zawiera te zatwierdzenia.

Wersja 1.6.0-rc01

10 stycznia 2024 r.

Usługa androidx.compose.ui:ui-*:1.6.0-rc01 została zwolniona. Wersja 1.6.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Zoptymalizowana implementacja grafiki wektorowej w celu poprawy wydajności przez ograniczenie dodatkowych zmian kompozycji.

Wersja 1.6.0-beta03

13 grudnia 2023 r.

Usługa androidx.compose.ui:ui-*:1.6.0-beta03 została zwolniona. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.

Nowe funkcje

  • Teraz można odłączyć instancję LayoutCoordinates bez odłączania węzła. Chroń się przed tym w inspektorze układu tworzenia (If693).

Poprawki błędów

  • PlatformImeOptions to teraz konkretna klasa, a nie interfejs. (If40a4).
  • Naprawiliśmy dodatkowe zmiany kompozycji w dół, które występowały, gdy wartości LocalSoftwareKeyboardController i LocalTextInputService 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ące DragAndDropTarget 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 jednostki maximumFlingVelocity. (I8adc7).
  • Nazwa urządzenia onDragAndDropStart w fabryce urządzenia DragAndDropModifierNode została zmieniona na acceptDragAndDropTransfer.Element acceptsDragAndDropTransfer został dodany do modyfikatora dragAndDropTarget, aby można go było zaakceptować z sesji metodą „przeciągnij i upuść”. Ta funkcja lambda zwraca realną wartość DragAndDropTarget, jeśli interesuje Cię sesja przeciągania i upuszczania. Zastąpiły one inne lambda do przetwarzania zdarzeń przeciągania. Dodaliśmy funkcję fabryczną DragAndDropTarget, która umożliwia odbieranie danych z sesji przeciągania i upuszczania (Iebf3a).
  • Usunięto DragAndDropInfo jako typ DragAndDropModifierNode.drag teraz zawiera parametry funkcji transferData, rozmiar dekoracji i przeciąganie elementów lambda DrawScope

    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ądzenia DragAndDropModifierNode została zmieniona na onDragAndDropStart, aby lepiej poinformować, że podana wartość DragAndDropTarget jest ważna tylko w przypadku danej sesji przeciągania i upuszczania

    Karta DragAndDropEventType została usunięta (I645b1)

  • Nazwa PlatformTextInputModifierNode.runTextInputSession została zmieniona na establishTextInputSession. (I03cd0).

  • Poprawia możliwe do przemierzenia nazwy interfejsów API węzłów, aby były bardziej zrozumiałe. (IA4474).

  • Zastąp OriginalText przez TextSubstitution. (Ifa5a8).

  • Nazwa PlatformTextInputModifierNode.textInputSession została zmieniona na runTextInputSession. (IE9c6b)

  • Elementy podrzędne elementu SubcomposeLayout (i układy takie jak LazyColumn), które są zachowywane do ponownego wykorzystania w przyszłości, są uznawane za wyłączone. Wprowadzono nowy testowy interfejs API assertIsDeactivated() 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 i FocusDirection.Out, a zamiast nich używają FocusDirection.Enter i FocusDirection.Exit (I2f660)

  • Interfejsy API Material SwipeToReveal (w przypadku kart i elementów) do tworzenia tych przedziałów korzystają teraz z interfejsu API opartego na przedziałach (zgodnie z zaleceniem funkcji Compose), a nie instancji opartych na klasach danych. Jest to niezwykła zmiana. Przykłady korzystania z nowego interfejsu API znajdziesz w prezentacji i przykładowym kodzie. (IA8943).

  • Konstruktor FontStyle(int) został wycofany. Zamiast niego użyj konstruktora FontStyle.Normal lub FontStyle.Italic. (I66610).

  • Zmieniono nazwę interfejsu FontScalable na FontScaling (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ów effectContext 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 elemencie Modifier.dragAndDrawSource na drawDragDecoration, a parametr rozmiaru DragAndDropInfo na dragDecorationSize. (Id0e30, b/303904810)
  • Przedstaw SemanticsNodeInteraction.isDisplayed() i SemanticsNodeInteraction.isNotDisplayed(), aby sprawdzić, czy pasujący węzeł jest widoczny, bez potwierdzania go. (I2c196, b/302100809)
  • Wprowadzono specjalną wartość Unspecified w polach TextAlign, TextDirection, Hyphens i LineBreak w polach ParagraphTextStyle, 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 stylu TextStyle oraz w stylu akapitu, aby akceptować wspomniane parametry jako typy inne niż zero. (I4197e, b/299490814)
  • Dodaj przeciążenie GoogleFont do odczytu elementu GoogleFont z XML. (If8f59).
  • Zmienił(a) rolę LoremIpsum PreviewParameterProvider w zajęcia otwarte. (I41bf5, b/266918816, b/300116360)

Poprawki błędów

  • FontFamilyResolver używa teraz Dispatchers.Main do obsługi zarządzania pamięcią podręczną. (IE8dd9)
  • Obecnie AndroidViewBinding synchronicznie usuwa Fragment instancje powiększone przez uwzględnienie FragmentContainerView w układzie jako części elementu onRelease za pomocą parametru commitNow (zamiast funkcji commit, 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 modyfikator dragAndDropTarget do odbierania sesji metodą „przeciągnij i upuść”. (Ib7828, b/286038936)
  • Dodano kolekcje ColorList i ColorSet, które pozwalają uniknąć alokacji. (I744bd)
  • Dodano tymczasową flagę DisableNonLinearFontScalingInCompose, aby wyłączyć nieliniowe skalowanie czcionek. Dodaj DisableNonLinearFontScalingInCompose = true do testów, jeśli potrzebujesz czasu na ich wyczyszczenie. Ta flaga zostanie usunięta z interfejsu Compose w wersjach 1.6.0-beta01. (IC9486)

Poprawki błędów

  • Zoptymalizowano analizowanie elementów rysowalnych wektorów XML. (Ibb015),

Wersja 1.6.0-alpha06

20 września 2023 r.

Usługa androidx.compose.ui:ui-*:1.6.0-alpha06 została zwolniona. Wersja 1.6.0-alfa06 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodatkowe optymalizacje ikon Material. (I3E08D)
  • Dodano możliwość poruszania się w górę i w dół drzewa modyfikatora w celu znalezienia podobnych węzłów. (I2d234).
  • Dodano wywołanie zwrotne onRestoreFailed() do modyfikatora focusRestorer() (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 kategorii PreviewScreenSizes (Ib61d3)

Zmiany w działaniu

  • Funkcja tworzenia wiadomości używa teraz nieliniowego skalowania czcionek, aby poprawić czytelność i dostępność. Gdy skala czcionki w ustawieniach systemowych przekracza 100%, rozmiar małego tekstu jest normalnie powiększony, a już już duży – tylko trochę. Ponadto wysokość wierszy określona w SP będzie automatycznie dostosowywana do zamierzonej wysokości skali 100%. Aby dowiedzieć się więcej, zapoznaj się ze sprawdzonymi metodami skalowania czcionek (I11518).

Wersja 1.6.0-alpha05

6 września 2023 r.

Usługa androidx.compose.ui:ui-*:1.6.0-alpha05 została zwolniona. Wersja 1.6.0-alfa05 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Włącz przechwytywanie treści w usłudze AndroidComposeViewAccessibilityDelegateCompat. (IB2969).
  • Prędkości przesunięcia w komponentach widoku danych, takich jak ScrollView i RecyclerView, są ograniczone do ViewConfiguration.ScaledMaximumFlingVelocity. Narzędzie Utwórz zawiera teraz własną wersję funkcji maximumFlingVelocity, która ma teraz zastosowanie do języka Draggable. (IBF974).
  • Dodaje początkowe rusztowanie, które obsługuje interfejsy API przeciągania i upuszczania platformy. (If84ce).
  • Dodaj deviceId do kampanii RotaryScrollEvent (Iba3bf)
  • Zaktualizowano interfejs ui-tooling Devices API, aby uwzględnić nowsze urządzenia (Ib25b4)

Wersja 1.6.0-alpha04

23 sierpnia 2023 r.

Usługa androidx.compose.ui:ui-*:1.6.0-alpha04 została zwolniona. Wersja 1.6.0-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano metodę dezaktywacji funkcji ReusableComposition, która usuwa obserwacje, ale pozostawia węzły na swoim miejscu. Dezaktywowaną kompozycję można ponownie aktywować, wywołując funkcję setContent. (Ib7f31)
  • Dodaj interfejs ReusableComposition do zarządzania cyklem życia i ponownym używaniem podkompozycji. (I812d1, b/252846775)
  • Aplikacja Modifier.focusGroup została awansowana do stabilnych interfejsów API. (I7ffa3).
  • Do różnych interfejsów API grafiki dodano adnotacje Androidax, które określają ColorInt, FloatRange, IntRange, Size i inne. (I70487, b/290950582)
  • Zaktualizowaliśmy interfejs API ColorFilter, aby dodać konkretne podklasy w celu lepszego sprawdzania parametrów. (I5fe29)
  • Wprowadź bibliotekę wear-tooling-preview, aby wyświetlić listę prawidłowych urządzeń do noszenia, których można używać w podglądach w interfejsie (Ib036e)
  • Utworzono interfejs FontScalable do obsługi części dotyczącej skalowania czcionek w interfejsie Gęstość. (I2cf3f).

Wersja 1.6.0-alpha03

9 sierpnia 2023 r.

Usługa androidx.compose.ui:ui-*:1.6.0-alpha03 została zwolniona. Wersja 1.6.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Nowy typ przejścia wejścia/wyjścia, który skaluje treść na podstawie rozmiaru kontenera animowanego w animacji wejścia i wyjścia. LookaheadScope Funkcje kompozycyjne i interfejs są teraz stabilne. (Ifb2ce)
  • Dodano obsługę konfigurowania usługi privateImeOptions (Idb772)

Poprawki błędów

  • PopupPositionProvider.calculatePosition automatycznie zaktualizuje pozycję wyskakującego okienka po zmianie stanu odczytywanego w obliczeniach. (I676a1, b/292257547)
  • Poprawiono pola tekstowe przedstawiające klawiaturę i można je było edytować, gdy readOnly ma wartość prawda. Rozwiązaliśmy też problem z klawiaturą, która nie wyświetlała się, gdy zasada readOnly 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 i LocalSoftwareKeyboardController nie są już eksperymentalne. LocalSoftwareKeyboardController to teraz także prawidłowa wartość CompositionLocal. (I4c364)
  • Wersje LookaheadLayout i LookaheadLayoutScope zostały wycofane w kilku wersjach i teraz usunięte. Zastępcze interfejsy API to LookaheadScope, 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 funkcji AndroidView zostanie odroczone do momentu dołączenia widoku, a nie wywoływane po zastosowaniu kompozycji wprowadzającej AndroidView. Rozwiązano błąd, który powodował, że wywołanie zwrotne update 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 element LazyList w przebiegu przebiegu z wyprzedzeniem może ominąć animację (np.animację umieszczenia elementu, AnimatedVisibility itp.) i obliczyć rozmiar i pozycję z wyprzedzeniem w przypadku wszystkich elementów podrzędnych. Po upływie tego czasu dzieci LazyList mogą samodzielnie poruszać się w rzeczywistości, tak jak widać to na ekranie.

Zmiana działania: domyślnie parametr includeFontPadding ma wartość false (fałsz)

includeFontPadding ma teraz wartość domyślną (21d806) w funkcji tworzenia wiadomości.

includeFontPadding to starszy atrybut, który określa, czy w pierwszym i ostatnim wierszu tekstu ma być dodawane dodatkowe dopełnienie, aby zmieścić znaki, które mogą sięgać powyżej lub poniżej linii bazowych tekstu.

Zaktualizowanie tej wersji Compose spowoduje zmianę sposobu renderowania wszystkich tekstów w interfejsie przez usunięcie dodatkowego dopełnienia u góry pierwszego i ostatniego wiersza każdego wyświetlanego tekstu.

W zależności od wymagań interfejsu użytkownika i używanych danych dotyczących czcionek zmiany powinny być minimalne. Mogą jednak wystąpić takie blokady jak: – uszkodzony test zrzutu ekranu; W razie potrzeby napraw interfejs i ponownie wygeneruj złote obrazy. - Tekst jest nieco niewłaściwie wyrównany. Usuń wszystkie niestandardowe dopełnienia wykluczające lub dodaj dopełnienie, jeśli jest wymagane.

Możesz wyrazić zgodę na includeFontPadding, używając tekstu PlatformTextStyle w przypadku każdego SMS-a:

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

Możesz włączyć includeFontPadding w przypadku wszystkich swoich tekstów, konfigurując style Material. Pamiętaj, że nazwy parametrów mogą się różnić w zależności od wersji M2–M3.

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /* … */,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /* … */
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

Więcej informacji o funkcji Utwórz includeFontPadding znajdziesz w dokumentacji dla deweloperów i w tym poście na blogu.

Jeśli w związku z tą zmianą wystąpią problemy lub błędy, zgłoś błąd za pomocą narzędzia do rejestrowania problemów.

Zmiany interfejsu API

  • Pomoc: InputConnection#requestCursorUpdates (I0c69b)
  • Dodano FocusRequester.saveFocusedChild i FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318)
  • Dodaj typ ResourceResolutionException do opakowań zgłaszanych przy próbie wczytania zasobów mapy bitowej z opisem ścieżki zasobu, której nie udało się wczytać. (I19f44, b/230166331, b/278424788)
  • Zoptymalizowany dostęp pod kątem wydajności i alokacji pamięci. (Iede48).
  • Dodano właściwości i działania semantyczne do obsługi tłumaczenia tekstu. (I4a6bc).
  • Nowa usługa w usłudze IntrinsincMeasureScope i jej implementacje (np. MeasureScope), która wskazuje, czy bieżący pomiar jest przekazany dalej. (I7a812)
  • Zaktualizowaliśmy interfejs API DrawScope, aby wprowadzić możliwość ponownego kierowania renderowania na inny obszar roboczy z inną gęstością/układem i rozmiarem.
  • Zaktualizowano DrawContext, aby obsługiwał konfigurację gęstości i kierunku układu oraz umożliwiał konfigurowanie obszaru roboczego. (Ie1f9b, b/225408150)
  • Dodano funkcję Paragraph#fillBoundingBoxes do obliczania ramek ograniczających znaki. (If30ee).
  • Dodano zestaw typowych właściwości MultiPreviews (Ia5a27).

Poprawki błędów

  • Dodano interfejs FocusTargetModifierNode, którego można używać do tworzenia niestandardowych FocusTarget. (I9790e)
  • Zmieniono nazwę parametrów fallback* w konstruktorze TextMeasurer na default*. (I940a5)
  • Nazwa SemanticsPropertyReceiver.performImeAction została zmieniona na onImeAction, a SemanticsActions.PerformImeAction na OnImeAction. (I8E841)
  • Dodaje kółko myszy, aby odróżnić przewijanie myszą od przeciągania w przypadku przewijania zagnieżdżonego (w szczególności w języku NestedScrollConnection). (Ie57e4)
  • Dodano interfejs API asComposePaint, aby zastąpić toComposePaint, ponieważ zwrócony obiekt opakowuje oryginalny obiekt android.graphics.Paint (I22b4c).
  • Wycofać funkcję SemanticsProperties.imeAction i zastąpić ją nowym parametrem SemanticsActions.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łaszania AssertionError dla przesunięcia poza granicami, teraz zwracają IllegalArgumentException, tak jak ma to miejsce w przypadku MultiParagraph. (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 zasada readOnly po zaznaczeniu została zmieniona z „prawda” na „fałsz”. (I34a19, b/246909589)

Wersja 1.5.0

9 sierpnia 2023 r.

Usługa androidx.compose.ui:ui-*:1.5.0 została zwolniona. Wersja 1.5.0 zawiera te zatwierdzenia.

Wersja 1.5.0-rc01

26 lipca 2023 r.

Usługa androidx.compose.ui:ui-*:1.5.0-rc01 została zwolniona. Wersja 1.5.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który występował, gdy plik SubcomposeLayout był używany w aplikacji movableContentOf().

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 instancji android.graphics.Paint w funkcji Compose

Poprawki błędów

  • Dodano interfejs API asComposePaint, aby zastąpić toComposePaint, ponieważ zwrócony obiekt opakowuje oryginalny obiekt android.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 poziomu MeasureScope), 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 przemierzania TalkBack (niższe wartości znajdują się przed nim). (I9a81b, b/186443263)
  • Zmieniamy nazwę właściwości Semantyka isContainer na isTraversalGroup (I121f6).
  • ColorProducer ma teraz operator fun invoke zamiast produce (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 na toAndroidColorSpace (I4f547)
  • Zmień nazwę ColorLambda na ColorProducer. (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 na TextRange.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) i MultiParagraph.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 aplikacji AnnotatedString można teraz otwierać przy użyciu usług ułatwień dostępu takich jak TalkBack. (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 metod DrawScope.drawText, Paragraph.paint i MultiParagraph.paint, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508)
  • Zmień nazwę Font.MaximumAsyncTimeout na Font.MaximumAsyncTimeoutMillis. Tylko zmiana nazwy. (I07af5).
  • Zaktualizowano wartości DPI @Preview urządzeń referencyjnych (Id6151, b/254528382)
  • Dodaj do obiektu BasicText parametry brush i alpha, aby umożliwić sprawne animowanie lub ustawianie pędzla tekstu.
  • Zdefiniuj wolne od pól typy lambda dla liczby zmiennoprzecinkowej, liczby zmiennoprzecinkowej, długiej, całkowitej i krótkiej w polach :ui:ui-unit (I6f18d, b/246961787)

Poprawki błędów

  • Usunięto wiele przydziałów ze śledzenia prędkości wskaźnika (I26bae).
  • Mniej przydziałów w zarządzaniu układami i danymi wprowadzania wskaźnika (I5333a)
  • Optymalizowanie wykorzystania pamięci wektorowej i renderowania pierwszych klatek (I2f3c6)
  • Usunięto przydziały podczas rysowania linii i punktów w Canvas (I9f535).
  • Dodaj dokumentację dla AndroidFont.fontVariationSettings (I7d9e2)

Treści tłumaczone przez użytkowników zewnętrznych

  • Większa wydajność i mniej przydziałów w interfejsach API Vector (I906cb)

Wersja 1.5.0-alpha04

10 maja 2023 r.

Usługa androidx.compose.ui:ui-*:1.5.0-alpha04 została zwolniona. Wersja 1.5.0-alfa04 zawiera te zatwierdzenia.

Nowe funkcje

  • Modifier.NodeUdoskonalenia w zakresie przekazywania dostępu Dodano ulepszone przekazywanie dostępu do innych instancji Modifier.Node z DelegatingNode. Można to zrobić za pomocą interfejsów API delegate i undelegate. 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 interfejs DelegatingNode jednoznacznie je zastąpi. (67352bc)

Zmiany interfejsu API

  • Przedstaw NestedScrollModifierNode, element NestedScroll Modifier.Node, do którego można przekazać dostęp. (I69513)
  • Dodano parametry onReset i onRelease do funkcji kompozycyjnej AndroidViewBinding, ponieważ jest to odbicie lustrzane kompozycyjnego AndroidView i włączono obsługę ponownego użycia widoku przy użyciu funkcji ViewBinding. (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) i MultiParagraph.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 w LookaheadScope: SubcomposeLayouts, które nie mają przedziałów warunkowych (np.TabRow, Scaffold, BoxWithConstraints itp.), teraz dobrze współdziałają z animacjami typu „Spojrzenie w górę”.

Zmiany interfejsu API

  • Nowa domyślna wartość intermediateMeasurePolicy, która wykorzystuje ponownie zasadę pomiaru z przebiegu z wyprzedzeniem, zezwala podtypom SubcomposeLayout bez przedziałów warunkowych, takim jak Scaffold, TabRow i BoxWithConstraints, domyślnie na współpracę z podglądem z wyprzedzeniem. (Id84c8).
  • Rekompozytor utworzony dla okna Androida będzie teraz blokować wywołania withFrameNanos, a nie całą kompozycję, gdy otrzyma powiadomienie ON_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 elementu withFrameNanos 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 ustawienia includeFontPadding 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 implementacji Modifier.Node. (IC4933).
  • Elementy UrlAnnotation w aplikacji AnnotatedString można teraz otwierać przy użyciu usług ułatwień dostępu takich jak TalkBack. (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ład Modifier.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 funkcji TalkBack podczas koncentracji na elemencie android.widget.Spinner. (I177e5, b/236159001)
  • Za pomocą PlatformTextStyle(emojiSupportMatch) możesz teraz opcjonalnie wyłączyć przetwarzanie emotikonów w przypadku pojedynczego akapitu. (Ia7100, b/139326806)
  • Testy interfejsu Android Compose będą teraz uruchamiać przekazywanie układu dla każdej klatki podczas wykonywania klatek w celu stanu bezczynności (np. za pomocą waitForIdle). Może to mieć wpływ na testy poszczególnych klatek animacji układu. (I8ea08, b/222093277)
  • W polu TextStyle dodano eksperymentalną funkcję TextMotion, która pozwala określić tekst jako Static(default) lub Animowany. Użyj wartości TextMotion.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 parametr onReset. 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 przypadku LazyRows i LazyColumns 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ędziu BasicTextField 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 i performTextSelection używają teraz SemanticsActions. (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ługi ModifierNodeElement. (I2256b)
  • Dodano nowe wywołanie zwrotne Modifier.Node.onReset(), które pozwala zresetować część stanu lokalnego, aby umożliwić prawidłowe obsługę zgłoszenia, gdy Layout będzie używany ponownie (np. jako element LazyColumn). Naprawiono FocusTargetModifierNode, aby prawidłowo resetować stan skupienia. (I65495, b/265201972)
  • Dodaliśmy parametr BlendMode do metod DrawScope.drawText, Paragraph.paint i MultiParagraph.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 na release() (I4667a)
  • Do ComposeTestRule dodano waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists i waitUntilDoesNotExist jako eksperymentalny interfejs API. Rozszerzyliśmy interfejs API waitUntil, aby akceptował dopasowania i dowolną liczbę węzłów. Więcej informacji znajdziesz na stronie ComposeTestRule. (Ifa1b9, b/226934294)
  • Zmień nazwę Font.MaximumAsyncTimeout na Font.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 i create*ComposeRule, które akceptują parametry CoroutineContext. Kontekst zostanie użyty w kompozycji testowej i wszelkich wywołaniach LaunchedEffect i rememberCoroutineScope() 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 parametr usePlatformDefaultWidth. (IC4048).
  • Dodano funkcję do pozycji obliczeń i tangensa w odległości na ścieżce – przy użyciu funkcji PathMeasure.getPosition() i PathMeasure.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 pobiera String jako tekst. (I47b2d, b/242705342)
  • Interfejsy API LineBreak i Hyphens w TextStyle zostały przekształcone w interfejsy API stabilne. (Ic1e1d).

Treści tłumaczone przez użytkowników zewnętrznych

  • Metody notifyFocusedRect w TextInputSession i TextInputService 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ład Modifier.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 funkcji TalkBack's podczas korzystania z pola android.widget.Spinner. (I177e5, b/236159001)
  • Za pomocą PlatformTextStyle(emojiSupportMatch) możesz teraz opcjonalnie wyłączyć przetwarzanie emotikonów w przypadku pojedynczego akapitu. (Ia7100, b/139326806)
  • Testy interfejsu Android Compose będą teraz uruchamiać przekazywanie układu dla każdej klatki podczas wykonywania klatek w celu stanu bezczynności (np. za pomocą waitForIdle). Może to mieć wpływ na testy poszczególnych klatek animacji układu. (I8ea08, b/222093277)
  • W polu TextStyle dodano eksperymentalną funkcję TextMotion, która pozwala określić tekst jako Static(default) lub Animowany. Użyj wartości TextMotion.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 funkcji drawText elementem size: Size, który będzie wbudowany z innymi funkcjami DrawScope. size ma domyślną wartość Size.Unspecified, co nie powinno zmieniać poprzedniego działania domyślnego. (Icd27d).
  • Usunięto wycofany eksperymentalny konstruktor czcionek. (I8a724, b/261435386)
  • Klasa danych narzędzia UI Group zawiera teraz pole isInline, które wskazuje, czy grupa dotyczy wywołania wbudowanej funkcji kompozycyjnej. Jeśli isInline to true, 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 atrybutem variationSettings jest teraz stabilnym interfejsem API i można go używać do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807)
  • Interfejs API createFontFamilyResolver jest teraz stabilny. Można go użyć, aby wychwytywać nieobsłużone wyjątki podczas asynchronicznego wczytywania czcionek. (Ibb481, b/261435386)
  • Interfejs API Font.loadingStrategy jest teraz stabilny. (I5937c, b/261435386)
  • Interfejs API GoogleFont jest teraz stabilny. (Ic90b0, b/261435386)
  • TextUnit(float, TextUnitType) to teraz stabilny interfejs API. (I90c84, b/261561612)
  • pluralStringResource to teraz stabilny interfejs API. (I09849, b/261439703)

Wersja 1.4.0-alpha03

7 grudnia 2022 r.

Usługa androidx.compose.ui:ui-*:1.4.0-alpha03 została zwolniona. Wersja 1.4.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Usuwam plik ExperimentalComposeUiApi z kampanii PointerIcon (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 elementu Scrollable 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 na Offscreen, by wskazać, że obiekt graphicsLayer będzie zawsze renderowany w buforze pośrednim (I47dc1).
  • Przeciążenie układów z kilkoma boksami na treści jest teraz stabilne (I10566, b/248294649)
  • Dodaliśmy nowe, eksperymentalne interfejsy API PerfettoTrace.record {} i PerfettoTraceRule 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łuje withFrameNanos lub withFrameMillis, i ma logikę poza wywołaniem zwrotnym przekazywaną do tych funkcji, które być może trzeba przenieść w obrębie wywołań zwrotnych. Przykłady znajdziesz w zmianach testowych animacji w tej liście zmian.
  • Dodano opcjonalny parametr onPerformTraversals: (Long) -> Unit do konstruktora i funkcji fabrycznej TestMonotonicFrameClock w celu uruchamiania kodu po wywołaniach zwrotnych withFrameNanos, ale przed wznowieniem współrzędnych elementów wywołujących. (Idb413, b/254115946, b/222093277, b/255802670)
  • Dodano emotikon emojiCompat do tworzenia wiadomości (Ibf6f9, b/139326806)
  • Dodano nowy parametr tapety w elemencie @Preview z obsługą dynamicznych kolorów (I9f512)

Poprawki błędów

  • Powiadomienia o zastosowaniu zrzutu są teraz wysyłane, gdy Recomposer zakończy stosowanie zmian. (Iad6c0, b/222093277)
  • Wprowadzono zmiany w captureToImage, aby umożliwić robienie zrzutów ekranu obejmujących wiele okien. Jest to przydatne podczas testów na zrzutach ekranu, w których używane są wyskakujące okienka tworzenia wiadomości. (I169C5)

Aktualizacje zależności

  • Interfejs tworzenia wiadomości i materiał tworzenia wiadomości zależą teraz od cyklu życia wersji 2.5.1. (I05ab0, b/258038814)

Wersja 1.4.0-alpha02

9 listopada 2022 r.

Usługa androidx.compose.ui:ui-*:1.4.0-alpha02 została zwolniona. Wersja 1.4.0-alfa02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Zaktualizowano GraphicsLayerScope, aby udostępnić bieżący rozmiar elementu graphicsLayer. 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ści graphicsLayer. Automatyczne zachowuje domyślne zachowanie, które wewnętrznie korzysta z warstwy po zastosowaniu wersji alfa lub funkcji RenderEffect/Overscroll. Zawsze wprowadza bufor poza ekranem, w którym ModulateAlpha nie będzie wykorzystywać bufora poza ekranem, a zamiast tego będzie modulować każdą z zarejestrowanych instrukcji rysowania w tabeli graphicsLayer. W przypadku użycia funkcji RenderEffect/Overscroll użycie funkcji ModulateAlpha nadal będzie korzystać z bufora poza ekranem (I25e82, b/256382834)
  • Do elementu Modifier.Node dodano element invalidateSubtree(), 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 do rememberNestedScrollInteropConnection. Może to pomóc w lepszym reagowaniu na ograniczenia przewijania, szczególnie w niestandardowych widokach (np.ModalBottomSheetDialog). (I9e107).
  • Dodano interfejs ObserverNode, którego mogą używać implementacje Modifier.Node, które muszą powiadamiać o zmianie odczytanej przez nich wartości (I5728b, b/247716483)
  • Do Paint dodaliśmy nowy konstruktor, który akceptuje natywny element android.graphics.Paint. Dodaliśmy też funkcję rozszerzenia toComposePaint(), 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 oraz TextField i OutlinedTextField, który umożliwia ustawienie minimalnej wysokości komponentu w zależności od liczby linii (I4af1d).

Wersja 1.4.0-alpha01

24 października 2022 r.

Usługa androidx.compose.ui:ui-*:1.4.0-alpha01 została zwolniona. Wersja 1.4.0-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano nową metodę (awaitEachGesture()) do wykrywania gestów. Jej działanie jest podobne do forEachGesture(), ale pętla gestów działa w całości w obrębie AwaitPointerEventScope, więc zdarzenia nie mogą zostać utracone między iteracjami.
  • Funkcja forEachGesture() została wycofana i zastąpiona awaitEachGesture(), 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ów TextStyle i SpanStyle, 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 elementu AnnotatedString i przecinających się stylów.
  • Dodano parametr DrawStyle do funkcji malowania Paragraph i MultiParagraph, 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 dla Modifier.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ń wersji wght i ital, zamiast tego będą używać ustawienia platformy dla wczytywanych elementów Typeface. (Ia7a6d, b/246989332)
  • Naprawiliśmy wyciek pamięci (LazyColumn) – funkcja onModifierLocalsUpdated 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 z constraints: Constraints w metodzie TextMeasurer.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 kompozycyjnym Dialog. (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 i FocusDirection.Out zostały wycofane i zastąpione elementami FocusDirection.Enter oraz FocusDirection.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) i FocusManager.moveFocus(Exit). (I5f3f9, b/183746982)
  • Za pomocą aplikacji FocusRequester.Cancel możesz teraz anulować zaznaczenie. Elementu FocusRequester.Cancel można używać we wszystkich tych właściwościach zaznaczenia: w górę, w dół, w lewo, w prawo, dalej, wstecz, początek, koniec, Enter i zakończenie. (IB300F)

Wersja 1.3.0-beta01

24 sierpnia 2022 r.

Usługa androidx.compose.ui:ui-*:1.3.0-beta01 została zwolniona. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Refaktoryzacja węzła modyfikatora

Warstwa, która obsługuje instancje Modifier/Modifier.Element i koordynuje ich działanie w środowisku LayoutNodes, została w dużej mierze zmodyfikowana. Obecny refaktoryzacja nie miała wpływu na publiczny interfejs API żadnego z wielu modyfikatorów w Compose i można go traktować tylko jako zmianę w ramach implementacji. Mimo to jest to ważna zmiana z różnych powodów. (IE4313).

Podsumowanie zmian

Dodane eksperymentalne interfejsy API Modifier.Node zapewniają abstrakcję, która pozwala utrzymać stan instancji, która zostanie zachowana w cyklu życia węzła układu i zostanie przydzielana według węzła układu i przy użyciu odpowiedniego elementu Modifier.Element, który go wygenerował.

Ogólnie rzecz biorąc, ta abstrakcja stanowi alternatywny mechanizm tworzenia modyfikatorów stanowych bez korzystania z mechaniki interfejsu API Modifier.composed.

Ryzyko

Ta zmiana jest ściśle zgodna z wcześniejszymi wersjami i ma być zgodna wstecznie w zakresie obserwowalnego zachowania. Mimo to istnieje kilka podsystemów składających się na ten refaktoryzację, których nie dało się dotknąć, i prawdopodobnie zachowanie zmieniło się w sposób, który nie został uwzględniony w naszych testach i nie został jeszcze wykryty i naprawiony.

Zachowaj ostrożność podczas uaktualniania do tej wersji. Jeśli uważasz, że ta sytuacja coś się Tobie zmieniło, daj nam znać.

Eksperymentalne interfejsy API

Dodaliśmy różne eksperymentalne interfejsy API, wszystkie związane z nową koncepcją „węzła modyfikatora”. Modyfikator.Węzeł jest tworzony w wyniku

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

Niezwykła zmiana w działaniu

Maksymalna obsługiwana wysokość w oknach i wyskakujących okienkach została zmniejszona do 8 dp.

Maksymalna obsługiwana wysokość okien dialogowych tworzenia wiadomości i wyskakujących okienek została zmniejszona z 30 dp do 8 dp. Ta zmiana dotyczy zarówno niestandardowych okien dialogowych, jak i wyskakujących okienek z elementami interfejsu użytkownika. Ta zmiana ma na celu usunięcie błędu związanego z ułatwieniami dostępu na Androidzie w wersji starszej niż S oraz zagwarantowanie, że usługi ułatwień dostępu w tych oknach będą mogły wchodzić w interakcje z treściami w oknie lub wyskakującym okienku.

Ta zmiana będzie miała na Ciebie wpływ tylko w przypadku tworzenia implementacji niestandardowych okien lub wyskakujących okienek z wysokością wyższą niż 8 dp. Rozważ obniżenie wysokości okna lub wyskakującego okienka. Jeśli chcesz zrezygnować z tego nowego sposobu, rozważ utworzenie własnego okna lub wyskakującego okienka z ustawioną wysokością. Nie jest to zalecane, ponieważ może to negatywnie wpływać na ułatwienia dostępu. To deweloper musi zadbać o to, aby dolna część okna lub wyskakującego okienka była możliwa do interakcji i czytelna dla usług ułatwień dostępu.

Zmiany interfejsu API

  • Rozwiązaliśmy problem, który powodował, że usługa painterResource nie aktualizowała się po zmianie konfiguracji (I58e73, b/228862715)
  • Funkcja rememberTextMeasurer nie przyjmuje już parametrów FontFamily.Resolver, Density ani LayoutDirection. Użyj konstruktora TextMeasurer, aby podać niestandardowe wartości tych parametrów. (Ia1da3).
  • Dodano właściwość DialogProperties.decorFitsSystemWindows, która umożliwia obsługę WindowInsets przez okna. (I57742, b/229378542)
  • Przeniesiono konstruktory czcionek z powrotem do oryginalnego pliku kotlin, aby zachować zgodność binarną. Bez zmian w porównaniu z ostatnią wersją stabilną. (Ieb2f3)
  • Z kilku definicji „równa się” usunięto zbędny operator – nie działa to. (I6c309)
  • FontVariation.Setting to zamknięty interfejs, który umożliwia przyszłe interfejsy API ograniczania zakresu. (I11021, b/143703328)
  • Dodaj CompositionGroup.findParameters do SlotTree.kt. Dzięki temu narzędzia mogą pobierać parametry obiektu CompositionGroup 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 w PlacementScope. 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 typu LayoutCoordinates na drugi. (Ic5ab1, b/238632578)
  • Wycofaliśmy zasadę SemanticsModifier.id i przenieśliśmy identyfikator semantyczny do LayoutInfo.semanticsId. (IAC808, b/203559524)
  • Czcionki zasobów obsługują teraz ustawianie ustawień odmian czcionek (API w wersji 26 lub nowszej). (I900dd, b/143703328)
  • Obsługa zmiennych czcionek w DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Konstruktory czcionek akceptują teraz listę elementów FontVariation.Setting do konfigurowania czcionek zmiennych na urządzeniach O+. (I11a9d, b/143703328)
  • Dodaj interfejs API FontVariation do definiowania i używania czcionek zmiennych. (I3c40c, b/143703328)
  • Konstruktor LineHeightStyle.Alignment jest teraz publiczny (eksperymentalny) (I4bbbe, b/235876330)
  • Akapit jest teraz zdefiniowany w przypadku Androida i komputerów. (Id387e, b/239962983)
  • Akapit interfejsu jest teraz zapieczętowanym akapitem interfejsu. Nie ma możliwości użycia podklasyfikacji akapitu. Jeśli ta zmiana Cię dotyczy, zalecamy skontaktowanie się z nami. (If5247, b/239962983)
  • Usunięto adnotacje eksperymentalne z PlatformTextStyle i LineHeightStyle. (I64bef).
  • Wycofaj TextInputService.show|hideSoftwareKeyboard. Użyj zamiast niego SoftwareKeyboardController w kodzie aplikacji i TextInputSession 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 i MutableRect obsługują teraz składnię in usługi Kotlin do wywoływania funkcji contains. (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 to pressKeys, keysDown i keysUp. (I81d77)
  • Przekształciliśmy stałe i parametry w polu KeyInjectionScope, aby uwzględnić sufiks „Millis”, gdzie jednostki tych stałych i parametrów są wyrażone w milisekundach. (Iabef5).
  • Do elementu EditCommand dodano metodę toStringForLog(), która ułatwia rozwiązywanie problemów z edytowaniem tekstu. (I53354, b/228862731)
  • W DrawScope dodaliśmy funkcję rozszerzenia drawText, która umożliwia rysowanie tekstu o różnych stylach w elementach kompozycyjnych i modyfikatorach działających w elemencie DrawScope, takim jak Canvas i drawBehind. (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 w BasicText, niezależnie od środowiska wykonawczego Compose. (I17101)
  • Dodaj mapTree do SlotTree.kt. Dzięki temu narzędzia mogą zbadać obiekt SlotTree bez wcześniejszego tworzenia kopii w pamięci, tak jak robi to drzewo. W inspektorze układu zwiększa to wydajność o ok. 10. (I5e113).
  • Zmieniliśmy format podglądu tworzenia wiadomości tak, aby był przechowywany w binarnych plikach wyjściowych, aby umożliwić programistom pisanie i wykorzystywanie ponownie adnotacji MultiPreview z bibliotek. (I85699, b/233511976)

Poprawki błędów

  • Przy dodawaniu zdarzeń InputEventChange do trackera Velocity będziemy teraz uwzględniać delta, a nie pozycje, co zagwarantuje, że prędkość zostanie prawidłowo obliczona we wszystkich przypadkach, nawet jeśli element docelowy jest przesuwany (Icea9d, b/216582726, b/223440806, b/227709803).
  • Rozwiąż problem z NPE powodowanym przez tag AnnotatedString.toUpperCase przy obecności adnotacji. (I0aca2, b/210899140)

Wersja 1.3.0-alpha01

29 czerwca 2022 r.

Usługa androidx.compose.ui:ui-*:1.3.0-alpha01 została zwolniona. Wersja 1.3.0-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Nowy obiekt LookaheadLayout, który obsługuje przejście z wyprzedzeniem przed rzeczywistym wskaźnikiem lub układem. Pozwala to na wstępne obliczenie układu po jego zmianie, a jednocześnie umożliwia użycie obliczonego wcześniej rozmiaru lub pozycji do animowania rozmiaru i pozycji w kierunku celu, a wymiary lub układy z wyprzedzeniem mogą używać tych obliczonych wartości. SubcomposeLayouts nie są jeszcze obsługiwane, ale zostaną udostępnione w nadchodzącej wersji. (I477f5)
  • Dodaj opcjonalny parametr alfa do rodzaju pędzla w atrybutach TextStyle i SpanStyle, aby zmienić przezroczystość całego obiektu Text. (Ic2fac, b/234117635)
  • Wprowadziliśmy typ adnotacji UrlAnnotation i powiązane z nim metody, aby umożliwić obsługę linków TalkBack w AnnotatedString. (I1c754, b/231495122)
  • Przeniesienie funkcji narzędziowych do środowiska wykonawczego (I4f729)

Poprawki błędów

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 i FocusProperties
    • Lepsze działanie klawiatury fizycznej lub pilota do telewizora
  • 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 tym RenderEffect
  • 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 i withKeysToggled. 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 do KeyInjectionScope, 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ążenia Modifier.scrollable, które je akceptują.
  • Eksperymentalna funkcja LocalOverScrollConfiguration została przeniesiona z foundation.gesture do pakietu podstawowego i ma nazwę LocalOverscrollConfiguration (If19fb, b/204650733)
  • Zmień nazwę runComposeUiTestWithoutActivity {} na runEmptyComposeUiTest {}, tak aby została wyrównana do createEmptyComposeRule() (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 oraz isCapsLockOn i znajomych do grupy KeyInjectionScope. 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ści key MultiModalInjectionScope podczas multimodalnego wprowadzania danych za pomocą performMultiModalInput. Dokumentację interfejsu API znajdziesz na KeyInjectionScope. (IC5000, b/229831515)
  • Dodaj nowy plik GoogleFont.Provider.AllFontsListUri, aby pobrać kanoniczne źródło internetowe czcionek Google Fonts obsługiwane przez Androida.
  • Popraw komunikaty o błędach, które są ponownie wyświetlane, gdy GoogleFonts nie załaduje się podczas tworzenia wiadomości. (I0416C)

Poprawki błędów

  • Przy dodawaniu zdarzeń InputEventChange do trackera prędkości będziemy teraz brać pod uwagę delta, a nie pozycje, co zagwarantuje, że we wszystkich przypadkach prędkość zostanie prawidłowo obliczona (I51ec3, b/216582726, b/223440806, b/227709803).
  • Ustawienie Show Layout Bounds będzie teraz stosowane do funkcji kompozycyjnych natychmiast po przełączeniu go na kafelku Szybkich ustawień bez konieczności opuszczania aktywności i ponownego dołączania do niej. (I843d5, b/225937688)
  • Wyszukiwanie ciągu tekstowego dotyczącego ułatwień dostępu nie uruchamia wczytywania czcionek. Wcześniej próbowano wczytywać czcionki dla języka StyleSpans, co prowadziło do awarii, jeśli zastąpiono FontFamily.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 i DeleteSurroundingTextInCodePointsCommand 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 na DisposeOnDetachedFromWindowOrReleasedFromPool, 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 obiektu LazyList, gdy układ elementów wykracza poza widoczne granice (Ifabfb, b/184670295)
  • Wersje Modifier.composed z kluczem są teraz stabilnym interfejsem API (Ie65e4, b/229988420)
  • Uprościliśmy interfejs API rememberNestedScrollConnection, aby umożliwić uzyskiwanie informacji o bieżącym widoku danych za pomocą lokalnych kompozycji (I67ca7)
  • Adnotacji @ComposableTarget i adnotacji oznaczonych przez @ComposableTargetMarker można teraz używać w zakresie pliku przy użyciu prefiksu @file. Użycie adnotacji docelowej w zakresie pliku spowoduje, że kompilator przyjmie, że wszystkie funkcje kompozycyjne w pliku są kierowane do powiązanego zastosowania. Na przykład użycie @file:UiComposable powoduje deklarowanie, że wszystkie funkcje @Composable są kierowane na aplikację UI tworzenia wiadomości. Funkcja, która musi kierować reklamy na innego dostawcę, musi jawnie dostarczyć adnotację znacznika docelowego miejsca docelowego dla wybranego dostawcy. (I40804)
  • Wprowadziliśmy nowy eksperymentalny, niezależny od platformy, testowy interfejs API: interface ComposeUiTest i fun runComposeUiTest(block: ComposeUiTest.() -> Unit), których można używać do uruchamiania testów Compose Ui bez konieczności użycia interfejsu TestRule. Aby przeprowadzić test bez parametru ComposeTestRule, przekaż test jako lambda do metody runComposeUiTest i użyj metod i elementów z zakresu ComposeUiTest odbiorcy, które są takie same jak w ComposeContentTestRule.

    interface AndroidComposeUiTest i fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) związane z Androidem zostają dodane, aby zapewnić dostęp do podstawowej aktywności, podobnie jak w przypadku AndroidComposeTestRule. Aby mieć jeszcze większą kontrolę, możesz utworzyć instancję class AndroidComposeUiTestEnvironment samodzielnie.

    Implementacja na komputery to class DesktopComposeUiTest, ale obecnie nie są dostępne żadne funkcje uruchamiania przeznaczone na komputery.

    Migrację testu z ComposeTestRule do ComposeUiTest można wykonać w ten sposób (przykład z Androida). Od:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    Aby:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • Obecnie ComposeContentTestRule i ComposeTestRule nie wykraczają poza ComposeUiTest, co oznacza, że funkcji rozszerzeń z ComposeUiTest nie można jeszcze wywoływać za pomocą interfejsu TestRule. Po przejściu ComposeUiTest na stabilny interfejs API ComposeContentTestRule i ComposeTestRule zostaną przekształcone z ComposeUiTest. (IB4E90)

  • Nazwa LineHeightBehavior została zmieniona na LineHeightStyle

  • Nazwa LineVerticalAlignment została zmieniona na LineHeightStyle.Alignment

  • Zmienia nazwę LineHeightTrim na LineHeightStyle.Trim

  • Domyślne wartości konstruktora z LineHeightStyle zostały usunięte (I582bf, b/181155707)

  • W narzędziach TextStyle i SpanStyle dodaliśmy Brush, aby umożliwić rysowanie tekstu przy użyciu kolorów gradientowych. (I53869, b/187839528)

  • trimFirstLineTop trimLastLineBottom atrybutu LineHeightBehavior zostało zmienione w jedną wyliczeniową: LineHeightTrim. LineHeightTrim mają wartości 4 stanów zdefiniowane za pomocą 2 wartości logicznych: FirstLineTop, LastLineBottom, Oba i None (Ifc6a5, b/181155707)

  • Dodano LineHeightBehavior do kolekcji TextStyle i ParagraphStyle. LineHeightBehavior określa, czy wysokość wiersza jest stosowana na górze pierwszego i na końcu ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni udostępnionej przez funkcję TextStyle(lineHeight).

    Za pomocą LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) można na przykład uzyskać działanie podobne do tego, co definiuje CSS.

  • Konfiguracje trimFirstLineTop, trimLastLineBottom działają poprawnie tylko wtedy, gdy includeFontPadding ma wartość fałsz. (I97332, b/181155707)

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

Poprawki błędów

  • Dokumentacja PointerInputChange::copy 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ą atrybutu TextStyle.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 przycinaniem TextField. (I01423, b/171394808)

Treści tłumaczone przez użytkowników zewnętrznych

  • Wartość MouseInjectionScope.scroll(delta = someDelta) jest teraz odwrócona na Androidzie, gdy przewinie się w pionie (jeśli wartość delta jest dodatnia, przewinie się w dół) (Ifb697, b/224992993).

Wersja 1.2.0-alpha08

20 kwietnia 2022 r.

Usługa androidx.compose.ui:ui-*:1.2.0-alpha08 została zwolniona. Wersja 1.2.0-alfa08 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Funkcje pluralStringResource zostały oznaczone jako eksperymentalne, aby umożliwić ewolucję w celu lepszego internacjonalizacji w przyszłości. (If24e4).
  • Akapit i wiele akapitów akceptują teraz parametr ograniczeń. Zaliczenie Constraints.maxHeight jest na razie niemożliwe, ale pozwoli w przyszłości na wykonywanie pewnych obliczeń, na przykład do elipsji na podstawie wysokości. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akceptuje teraz niestandardową klasę podobną do MutableSet, która nie pozwala na dodawanie nowych elementów. (ICD314).
  • PointerIcon to teraz interfejs @Stable (I9dafe)
  • Częściowe wykorzystanie (pozycja w dół LUB w pozycji) zostało wycofane w funkcji PointerInputChange. Aby w pełni zastosować zmianę, możesz użyć polecenia consume(). Parametr isConsumed pozwala określić, czy ktoś inny wykorzystał już tę zmianę.
  • Teraz PointerInputChange::copy() zawsze tworzy płytkie kopie. Oznacza to, że po wykorzystaniu jednej z nich kopie tekstu PointerInputChange zostaną zużyte. Jeśli chcesz utworzyć niepowiązany element PointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)
  • Włącz interoperacyjność zagnieżdżonego przewijania między funkcją tworzenia a widokiem w kierunku Utwórz > Wyświetl. Oznacza to, że element nadrzędny tworzenia wiadomości będzie mógł otrzymywać zagnieżdżone delta przewijania z zagnieżdżonego widoku przewijania. (If7949, b/174348612)
  • Nowy SemanticsProperty testTagsAsResourceId, którego można użyć, aby zapewnić zgodność Compose z testami UIAutomator zaprojektowanymi dla systemu widoku danych. (I39c20)
  • Wyświetlaj wszystkie dostępne wagi czcionek systemowych w Androidzie podczas korzystania z funkcji FontFamily.SansSerif. Spowoduje to wewnętrznie użycie zastępczych nazw czcionek takich jak bezszeryfowa-średnia w interfejsie API 21–28. Jest to zmiana działania, ponieważ w interfejsach API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992)
  • Instruktorzy akapitu i wielu akapitów zmienili kolejność argumentów pozycji na przed opcjonalnymi argumentami. (Idafaa)
  • W AndroidFont jako parametr konstruktora używany jest teraz typefaceLoader. (I2C971)

Wersja 1.2.0-alpha07

6 kwietnia 2022 roku

Usługa androidx.compose.ui:ui-*:1.2.0-alpha07 została zwolniona. Wersja 1.2.0-alfa07 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano nową funkcję Snapshot.withoutReadObservation { ... }. Umożliwia użytkownikom uruchamianie przekazywanej funkcji lambda bez subskrybowania zmian wartości stanu odczytywanych podczas tego bloku. Może być przydatna w przypadkach, gdy chcesz skorzystać z bezpiecznego zapisu/odczytu wątków bazujących na zrzutach, ale chcesz mieć możliwość odczytania wartości bez potrzeby niepotrzebnej zmiany kompozycji czy ponownych pomiarów. (I9f365, b/214054486)
  • Właściwość rozszerzenia consumeWindowInsets w systemie ComposeView umożliwia deweloperom wyłączenie używania Androida WindowInsets. Umożliwia to osobne ComposeViews w hierarchii do każdego zastosowania WindowInsets 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 i PointerEvent.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 przez Font(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ć w TextStyle(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ę teraz Font(GoogleFont). W przeciwnym razie interfejs API pozostaje stabilny. (I125f2).

Poprawki błędów

  • Dodano sprawdzanie lintowania do elementów Materiał/Scaffold, aby upewnić się, że wewnętrzne dopełnienie jest używane (Ifb111).

Wersja 1.2.0-alpha06

23 marca 2022 r.

Usługa androidx.compose.ui:ui-*:1.2.0-alpha06 została zwolniona. Wersja 1.2.0-alfa06 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano działanie semantyczne RequestFocus, aby wymagać zaznaczenia na celu, który można zaznaczyć. (I17b71)
  • Zaktualizowaliśmy analizę analizy obiektów rysowanych wektorowo, aby zapewnić obsługę automatycznego odbicia lustrzanego w celu odwrócenia treści w elemencie VectorPainter, jeśli obecny układ to RTL. (I79cd9, b/185760237)
  • Zaktualizowano kolory cieni/otoczenia, aby były parametrami końcowymi klasy Modifier.graphicsLayer, aby zapewnić zgodność z interfejsem API (I3f864, b/160665122).

  • W GraphicsLayerScope dodaliśmy domyślne implementacje dla koloru cienia/otoczenia, aby zapewnić nienaruszające zmiany w interfejsie API

  • Dodano godzinę wydarzenia do wydarzeń RSB (Ief8ae).

  • Usługa FocusOrder została połączona z usługą FocusProperties, a focusProperties() ma teraz wszystkie możliwości usługi focusOrder(). Usługi FocusOrder i focusOrder() zostały wycofane. Pole focusOrder(), które akceptuje wartość focusRequester, należy zastąpić modyfikatorem focusRequester() w połączeniu z zasadą focusProperties(). Dzięki temu modyfikatory lepiej odseparują potencjalne problemy. (I601b7)

  • Uaktualnienie zarówno RecyclerView, jak i Compose 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ślnej

  • Dodaj 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ści ambientShadowColor i spotShadowColor (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 interfejs OnPlacedModifier są teraz stabilne. (IB5482)
  • Hurra! Animacja tworzenia wiadomości obsługuje teraz ustawienie „Skala czasu trwania animacji” w Opcjach programisty. (I5a4fc, b/161675988)
  • Dodano lokalny modyfikator BeyondBoundsLayout (If8b51, b/184670295)
  • Tekst: opcja includeFontPadding jest teraz domyślnie wyłączona. Problemy z przycinaniem wynikające z metody includeFontPadding=false są obsługiwane i nie należy stosować przycinania w przypadku wysokich skryptów. (I31c84, b/171394808)

Poprawki błędów

  • ComposeContentTestRule.setContent zgłasza teraz IllegalStateException, jeśli spróbujesz ustawić treść, gdy będzie już dostępna. (I888a5, b/199631334)
  • Naprawiono błąd spowodowany przez zawartość schowka przy odczytywaniu ze schowka na Androidzie. (I06020, b/197769306)
  • Popraw próbki przewijania RSB. (I6a596)

Treści tłumaczone przez użytkowników zewnętrznych

  • Zaktualizowano, aby korzystać z współrzędnych Kotlinx w wersji 1.6.0 (I3366d)

Wersja 1.2.0-alfa04

23 lutego 2022 r.

Usługa androidx.compose.ui:ui-*:1.2.0-alpha04 została zwolniona. Wersja 1.2.0-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano ComposableTarget, ComposableTargetMarker i ComposableOpenTarget, które umożliwiają raportowanie w czasie kompilacji, kiedy funkcja kompozycyjna jest wywoływana pod kątem kierowania na aplikację, która nie została przez nią zaprojektowana.

    W większości przypadków adnotacje można wywnioskować dzięki wtyczce kompilatora, więc nie można używać ich bezpośrednio . Przypadki, których nie można wywnioskować, to m.in. utworzenie i użycie niestandardowego zastosowania, abstrakcyjnych funkcji kompozycyjnych (np. metod interfejsu), pól lub zmiennych globalnych, które są obiektami kompozycyjnymi (wywnioskowane są lokalne zmienne i parametry) lub podczas korzystania z funkcji ComposeNode albo powiązanych funkcji kompozycyjnych.

    W przypadku zastosowania niestandardowych funkcje kompozycyjne wywołujące funkcję ComposeNode lub ReusableComposeNode muszą dodać adnotację ComposableTarget dla funkcji i dowolnych typów parametrów kompozycyjnych lambda. Zalecamy jednak utworzenie adnotacji zawierającej adnotację ComposableTargetMarker, a następnie użycie oznaczonej adnotacji zamiast bezpośrednio ComposableTarget. Adnotacja kompozycyjna oznaczona kodem ComposableTargetMarker jest równoważna z adnotacją ComposbleTarget z pełną i jednoznaczną nazwą klasy atrybutu jako parametrem zastosowania. Przykład użycia ComposableTargetMarker znajdziesz tutaj: anroidx.compose.ui.UiComposable. (I38f11)

  • Font(resId, ...) korzysta teraz ze strategii wczytywania w stabilnym interfejsie API. (Ief3d2).

  • FontLoadingStrategy to teraz stabilny interfejs API. (I1ee35, b/174162090)

  • Obsługa wczytywania czcionki asynchronicznego w tekście (I77057, b/214587005)

  • Dodano interfejs API mostka do konwertowania niestandardowych komponentów typu Font.ResourceLoader na format FontFamily.Resolver. (IA0060).

Poprawki błędów

  • Podane FontFamily.Resolver są przekazywane do podkompozycji, takich jak Wyskakujące okienko.
  • Podane Font.ResourceLoader są przekazywane do podkompozycji, takich jak Wyskakujące okienko. (I48fa5)

Wersja 1.2.0-alfa03

9 lutego 2022 r.

Usługa androidx.compose.ui:ui-*:1.2.0-alpha03 została zwolniona. Wersja 1.2.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Metody notifyFocusedRect w językach TextInputSession i TextInputService zostały wycofane i nie będą wywoływane. Zamiast niego użyj właściwości BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Metodę destroyDisplayListData wprowadzono w klasie pośredniej RenderNode (I1e659, b/216660268)
  • Dodano nowy interfejs API, który umożliwia wstępny pomiar elementów podrzędnych zestawu SubcomposeLayout. (I857ea)
  • Dodano funkcję movableContentOf, która konwertuje funkcję kompozycyjnej lambda w lambdę zmieniającą jej stan i odpowiadające im węzły do dowolnej nowej lokalizacji. Gdy poprzednie wywołanie opuszcza kompozycję, stan zostaje tymczasowo zachowywany, a jeśli do kompozycji pojawi się nowe wywołanie funkcji lambda, stan i powiązane z nim węzły zostaną przeniesione do lokalizacji nowego wywołania. Jeśli nie dodasz nowego wywołania, stan jest trwale usuwany, a obserwatorzy otrzymują powiadomienia.

    Jeśli funkcja lambda movableContentOf zostanie wywołana wielokrotnie z tej samej kompozycji, dla każdego wywołania tworzony jest nowy stan i węzły, a gdy wywołania opuszczają kompozycję i dochodzą nowe wywołania, stan przenoszony jest z pierwszego wyjścia do wywołań przychodzących w kolejności, w jakiej zostały wywołane. Wszystkie stany, które nie zostały objęte nowymi wywołaniami, są usuwane na stałe. (IB4850)

  • Usługa FontFamilyResolver jest teraz dostępna w aplikacji LocalFontFamilyResolver.current

  • Dodano createFontFamilyResolver(context) i createFontFamilyResolver(context, coroutineScope), aby tworzyć nowe resolvery FontFamily poza funkcją tworzenia.

  • Akapit i kilka akapitów zajmują teraz FontFamily.Resolver

  • TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolver używany w tym układzie. Wycofano go TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)

  • Obsługa asynchronicznego i opcjonalnego wczytywania czcionek z działaniem zastępczym. Ta ścieżka jest wykorzystywana przez pola Text i TextField i udostępniana przez FontFamily panelu

  • Obsługa wstępnego wczytywania czcionek za pomocą FontFamilyResolver.preload

  • FontFamilyResolver.setAsyncLoadContext umożliwia ustawienie globalnego kontekstu współrzędu używanego do wczytywania czcionek asynchronicznych. (I87fe8, b/174162090)

  • Dodaliśmy AndroidFont, nowy niskopoziomowy interfejs API do udostępniania nowych typów deskryptorów zasobów czcionek na Androida. Dotyczy to na przykład wczytywania czcionek z backendu w odniesieniu do konkretnej aplikacji, opcjonalnego zlokalizowania czcionek wstępnie zainstalowanych na urządzeniu lub wczytywania czcionki z zasobu, który nie jest dostępny w bieżących fabrykach czcionek.

  • Rozszerzyliśmy interfejs API Font.ResourceLoaded, aby obsługiwać opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy bezpośredniego korzystania z tego interfejsu API przez deweloperów aplikacji. Aby dodać nowe typy czcionek, przeczytaj AndroidFont.

  • Funkcja rozszerzenia Font.AndroidResourceLoader umożliwia konstrukcję elementu Font.ResourceLoader poza kompozycją.

  • Dodaliśmy parametr loadingStrategy do czcionek opartych na zasobach, aby umożliwić ładowanie asynchroniczne, gdy czcionka zasobów odwołuje się do plików XML dostępnych do pobrania. (Ie5aea, b/174162090)

  • Konstruktor Typeface(FontFamily) został wycofany. Wcześniej to rozwiązanie służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku dostępnych do pobrania czcionek to wywołanie może zostać zablokowane na 10 sekund. W zamian użyj FontFamilyResolver.preload.

  • Interfejs fontResource(FontFamily): Typeface został wycofany. Wcześniej to rozwiązanie służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast niego użyj FontFamilyResolver.preload (If8e7c, b/174162090)

  • Konstruktor SubcomposeLayoutState akceptujący obiekt maxSlotsToRetainForReuse został wycofany. Zamiast tego wprowadziliśmy nowy konstruktor akceptujący SubcomposeSlotReusePolicy – nowy interfejs dający bardziej szczegółową kontrolę nad tym, które przedziały powinny być zachowywane do wykorzystania w przyszłości. (I52c4d)

  • Udostępnia funkcje HSV i HSL w Color jako nieeksperymentalny interfejs API. Przestrzeń kolorów Oklab to teraz publiczny interfejs API. (I08fb6, b/180731008)

  • Wycofaliśmy dyrektywę AndroidComposeTestRule.AndroidComposeStatement, która nie miała być dostępna w publicznym interfejsie API i w żaden sposób nie wpłynęła. (IBc46b).

  • Zmienianie nazwy wygenerowanej wewnętrznie klasy kt (Ia0b9e, b/174162090)

  • Usunięto FontLoadingStrategy.values (I42a9d, b/174162090)

  • Globalne narzędzie do wczytywania czcionek nazywa się teraz FontFamilyResolver. (I4f773, b/174162090)

  • Użyj nowego systemu wczytywania czcionek na komputerach. (I9ce5c, b/174162090)

  • FontFamily.Resolver.resolve zwraca State<Any> (I4406c, b/174162090)

Poprawki błędów

  • Pola tekstowe będą teraz znajdować się nad klawiaturą, gdy są zaznaczone, a klawiatura jest pokazana, gdy tryb szybkiego wprowadzania danych jest ustawiony na ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Komputer używa lokalnej kompozycji dla aplikacji FontFamily.Resolver
  • Wersja FontLoader na komputery została wycofana
  • Nowa fabryka urządzenia createFontFamilyResolver na komputerze (I6bbbb, b/174162090)
  • Opcja wprowadzania tekstu za pomocą klawiatury programowej nie miga już podczas przechodzenia między polami tekstowymi. (I1bf50, b/187746439)

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

Usługa androidx.compose.ui:ui-*:1.2.0-alpha02 została zwolniona. Wersja 1.2.0-alfa02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano Modifier.onRotaryScrollEvent() i Modifier.onPreRotaryScrollEvent() w przypadku urządzeń do noszenia z obracającym się przyciskiem (I18bf5, b/210748686)
  • Dodaj eksperymentalne rozszerzenie View.createLifecycleAwareRecomposer (I0cde6)

Treści tłumaczone przez użytkowników zewnętrznych

  • Funkcja PointerEvent.scrollDelta.y jest teraz odwrócona na Androidzie (teraz zwraca 1 zamiast -1, gdy przechylimy kółko myszy w prawo) (Ia9811)

Wersja 1.2.0-alpha01

12 stycznia 2022 r.

Usługa androidx.compose.ui:ui-*:1.2.0-alpha01 została zwolniona. Wersja 1.2.0-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Wycofano: FontFamily.canLoadSynchronously. Nie ma ona znaczenia semantycznego. (Ica5ef).
  • Dodano pole tożsamości do CompositionData na potrzeby generowania niezmiennych identyfikatorów w inspektorze układu. (IC116e).
  • Do listy urządzeń z podglądem (I93232) dodano identyfikatory urządzeń z Wear OS

Aktualizacje zależności

  • Teraz zależy od Kotlin 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

Usługa androidx.compose.ui:ui-*:1.1.1 została zwolniona. Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Napraw NullPointerException pod adresem androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • Naprawiono błąd spowodowany przez zawartość schowka przy odczytywaniu ze schowka na Androidzie. (I06020, b/197769306)
  • Poprawiono RTL w LazyVerticalGrid (aosp/1931080, b/207510535)

Wersja 1.1.0

9 lutego 2022 r.

Usługa androidx.compose.ui:ui-*:1.1.0 została zwolniona. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany wprowadzone od wersji 1.0.0

  • Stabilna obsługa efektu przewijania w Androidzie 12.
  • Ulepszenia rozmiaru docelowego elementu dotykowego
    • Pamiętaj, że w przypadku Compose 1.0 komponenty Material mają rozszerzać obszar układu, aby zapewnić zgodność z wytycznymi dotyczącymi ułatwień dostępu Material Design rozmiar docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu interfejs Compose Material ma takie samo zachowanie jak komponenty stylu Material Design, co zapewnia spójne zachowanie w przypadku połączenia widoków i tworzenia wiadomości. Ta zmiana zagwarantuje też, że w przypadku tworzenia UI z użyciem komponentów Compose Material, minimalne wymagania dotyczące ułatwień dostępu docelowych elementów dotykowych będą spełnione.
  • Stabilna obsługa kolejki nawigacyjnej
  • Przeniesienie niektórych wcześniej eksperymentalnych interfejsów API do wersji stabilnej
  • pomoc dotycząca nowszych wersji Kotlin,

Wersja 1.1.0-rc03

26 stycznia 2022 r.

Usługa androidx.compose.ui:ui-*:1.1.0-rc03 została zwolniona. Wersja 1.1.0-rc03 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano, aby obsługiwała Material 1.1.0-rc03

Wersja 1.1.0-rc01

15 grudnia 2021 roku

Usługa androidx.compose.ui:ui-*:1.1.0-rc01 została zwolniona. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięto błąd, który powodował brakujące działania związane z przewijaniem ułatwień dostępu (I7cbfb)
  • SemanticsNodeInteraction.captureToImage() będzie teraz działać również wtedy, gdy HardwareRenderer.isDrawingEnabled() ma wartość false, po włączeniu tej funkcji na czas rozmowy (Idf3d0).

Wersja 1.1.0-beta04

1 grudnia 2021 r.

Usługa androidx.compose.ui:ui-*:1.1.0-beta04 została zwolniona. Wersja 1.1.0-beta04 zawiera te zatwierdzenia.

Nowe funkcje

  • Zaktualizowano, aby była zgodna z platformą Kotlin 1.6.0

Zmiany interfejsu API

  • Usunięto wartość null w kolumnie androidx.core.view (I7078a, b/204917439)
  • Dodaliśmy eksperymentalne interfejsy API, które umożliwiają użytkownikom przeglądanie całości danych PointerInputchange lub sprawdzanie, czy zostały wykorzystane. (I2E59D)
  • Dodano obsługę zdarzeń kółka przewijania myszy w warstwie UI. (Ia14eb, b/198214718)
  • Dodaj eksperymentalne przeciążenia Modifier.composed, które akceptują klucze do porównania pod kątem równości i kwalifikują się do optymalizacji pomijania. (Ice799, b/205851704)
  • ComposeNotIdleException rozciąga się teraz od Exception, a nie bezpośrednio z Throwable. Pamiętaj, że oznacza to, że klauzule przechwytujące, które przechwytywały zapis Exception, mogą teraz przechwytywać klauzule 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

  • Dodaliśmy nowy modyfikator Modifier.onPlaced, który umożliwia obserwowanie zmian miejsca docelowego. W związku z tym na podstawie zaobserwowanej zmiany miejsca docelowego można wprowadzić dodatkowe zmiany w przesunięciu modyfikatora podrzędnego. (I558fd).
  • Usunięto InjectionScope.flush() i InjectionScope.dispose(). Opróżnianie wszystkich zdarzeń i usuwanie zakresu ma teraz miejsce na końcu wywołanej metody meet*Input(), tak jak do tej pory. (I2bed8).
  • Usunięto MultiModalInjectionScope.Touch i MultiModalInjectionScope.Mouse. Aby wstrzykiwać zdarzenia kliknięcia i myszy w przypadku gestów multimodalnych, możesz używać MultiModalInjectionScope.touch() i MultiModalInjectionScope.mouse(). Oba te tryby akceptują funkcję lambda, która ma zakres odbiornika tego modalności. (Idde18).

Poprawki błędów

  • Domyślna wartość właściwości durationMillis w polu TouchInjectionScope.swipeWithVelocity jest teraz obliczana w taki sposób, aby można było wykonać przesunięcie palcem. (19 dB)

Wersja 1.1.0-beta02

3 listopada 2021 r.

Usługa androidx.compose.ui:ui-*:1.1.0-beta02 została zwolniona. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców w celu przewijania w celu wyświetlenia danego elementu (Ib918d, b/195353459)
  • Nowe interfejsy API animacji do obsługi narzędzi. Umożliwiają one narzędziu sprawdzanie animacji i ich konfiguracji w przejściach. (I4116e)

Treści tłumaczone przez użytkowników zewnętrznych

  • Dodano modyfikator.pointerHoverIcon (I95f01).

Wersja 1.1.0-beta01

27 października 2021 roku

Usługa androidx.compose.ui:ui-*:1.1.0-beta01 została zwolniona. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców, tak aby przewijali oni stronę w celu wyświetlenia danego elementu (Ib918d, b/195353459)
  • Nowe interfejsy API animacji do obsługi narzędzi. Umożliwiają one narzędziu sprawdzanie animacji i ich konfiguracji w przejściach. (I4116e)

Wersja 1.1.0-alpha06

13 października 2021 r.

Usługa androidx.compose.ui:ui-*:1.1.0-alpha06 została zwolniona. Wersja 1.1.0-alfa06 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Usuń ExperimentalComposeUiApi z aplikacji ViewRootForInspector i LayoutInfo.ownerViewId (I5c2e3)
  • Dodano przeciążenie bez dzieci w przypadku układów, co zwiększyło wydajność (Ib0d9a)
  • Z metod narzędzia Composer, które muszą być wywoływane między modułami, usunięto element InternalCompilerApi (I1aa0b).
  • SemanticsNodeInteraction.performSemanticsAction zwraca teraz wartość SemanticsNodeInteraction, dla której wywołano tę funkcję. (I9e5db).
  • Dodano obiekt LocalInputModeManager CompositionLocal do wykrywania trybu TouchMode i NonTouchMode. (I6a83c, b/175899786)
  • Dodano viewConfiguration: ViewConfiguration do elementu LayoutInfo, aby umożliwić konsumentom uzyskiwanie prawidłowej wartości w przypadku np. przekroczenia limitu czasu przytrzymania. (I76ca6).
    • Dodano viewConfiguration: ViewConfiguration do InjectionScope, aby umożliwić testom dostosowywanie wstrzykiwania danych wejściowych na podstawie takich czynników jak czas oczekiwania na przytrzymanie lub opóźnienie dotknięcia.
    • Zmieniono domyślny czas trwania przytrzymania oraz dwukrotnego kliknięcia w przypadku wpisywania dotykiem i myszką, tak aby był oparty na wartościach z pola InjectionScope.viewConfiguration.
  • Implementacja menu ExposedDropdownMenu w oparciu o element ExposedDropdownMenuBox z polem TextField i menu DropdownMenu wewnątrz obiektu (If60b2).
  • Do pola PopupWłaściwości dodano atrybut closeOnOutsideClick i zastąpił on wycofaną zasadę closeOnClickOutside. Nowa właściwość otrzymuje pozycję kliknięcia i granice kotwicy, zapewniając dokładniejszą kontrolę nad tym, czy ma być wywoływane czy nie. Pozwala to na przykład zapobiec odrzuceniu reklamy zakotwiczonej po dotknięciu reklamy zakotwiczonej.
    • Flagi updateAndroidWindowManagerFlags zostały dodane do elementu PopupWłaściwości, umożliwiając niskopoziomową kontrolę nad flagami przekazywanymi przez wyskakujące okienko do narzędzia Android WindowManager. Parametrem funkcji lambda będą flagi obliczone na podstawie wartości Popupproperty, które skutkują flagami WindowManager, np. „ableable”. Wynikiem funkcji lambda będą ostateczne flagi, które zostaną przekazane do Android WindowManager. Domyślnie flagi updateAndroidWindowManagerFlags pozostawiają flagi obliczone na podstawie parametrów bez zmian. Z tego interfejsu API należy korzystać z rozwagą tylko w sytuacjach, gdy wyskakujące okienko ma określone wymagania dotyczące działania. (I6e9f9)
  • Interfejs Recomposer.state został wycofany i zastąpiony przez Recomposer.currentState, aby zmienić jego typ na StateFlow (Ic2ab3, b/197773820)
  • Dodano flush() i dispose() do InjectionScope. Używaj ich, gdy chcesz natychmiast usunąć wszystkie zdarzenia umieszczone w kolejce i kiedy chcesz pozbyć się zakresu. (Ifb73a).
  • Dodano funkcję performScrollToNode(matcher: SemanticsMatcher), która przewija kontener, który można przewijać, do treści dopasowanej przez podane dopasowanie. (IC1cb8)
  • InjectionScope stosuje teraz Density, co umożliwia łatwe przeliczanie pikseli z pikseli na dp w przypadku performTouchInput i znajomych. (I8fe1f).

Poprawki błędów

  • AndroidView przenosi teraz do widoku właściwości LocalLifecycleOwner i LocalSavedStateRegistryOwner do widoku za pomocą elementów ViewTreeLifecycleOwner i ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
  • Rozwiązywanie problemów z obsługą przesuwania w Wear OS (I9387e)
  • Domyślny czas między zdarzeniami wprowadzenia danych wejściowych został zmieniony z 10 ms na 16 ms. Może to zmienić wynik testów wykonujących gesty wprowadzania tekstu, np. konkretnego przesuwania. (I829fd)

Wersja 1.1.0-alpha05

29 września 2021 r.

Usługa androidx.compose.ui:ui-*:1.1.0-alpha05 została zwolniona. Wersja 1.1.0-alfa05 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano obsługę komunikacji intermodyfikatora (Id5467, b/198826874)
  • Do elementu PointerEventChange dodaliśmy eksperymentalne wskaźniki historyczne. (Ic1fd8, b/197553056, b/199921305)
  • Dodano density: Density i layoutDirection: LayoutDirection do LayoutInfo. Dzięki temu klienci korzystający z LayoutInfo będą mogli prawidłowo interpretować wymiary i pozycję w widoku LayoutInfo. (I002f1)
  • Dodano eksperymentalną obsługę wstrzykiwania zdarzeń myszy. Użyj polecenia performMouseInput, aby zacząć wysyłać zdarzenia myszy, lub użyj właściwości Mouse MultiModalInjectionScope, aby wykonać gest wielomodalnego wprowadzania danych za pomocą performMultiModalInput. Dokumentację dostępnego interfejsu API znajdziesz na stronie MouseInjectionScope. (Iaa4a8, b/190493367)

Poprawki błędów

  • Poprawiono obsługę elementów z możliwością przewijania (leniwe i nieleniwe) w odniesieniu do przewijania (I6cdb0).
  • Ulepszono: TouchInjectionScope.swipeWithVelocity. Teraz akceptuje szerszy zakres zmiennych wejściowych i sugeruje zmiany danych wejściowych, jeśli nie można utworzyć przesunięcia (I40fbe, b/182477143)

Wersja 1.1.0-alfa04

15 września 2021 r.

Usługa androidx.compose.ui:ui-*:1.1.0-alpha04 została zwolniona. Wersja 1.1.0-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • PointerEvent ma teraz PointerEventType do obsługi zdarzeń po najechaniu kursorem. (I091fa)
  • Pozwól dzieciom na akceptowanie danych wejściowych wskaźnika spoza zakresu wejściowego wskaźnika nadrzędnego. Rodzice mogą przechwytywać te wywołania za pomocą właściwości PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655).
  • Wycofano reguły performGesture i GestureScope, które zostały zastąpione przez reguły performTouchInput i TouchInjectionScope. (Ia5f3f, b/190493367)
  • Do SemanticsNode dodano element touchBoundsInRoot, który uwzględnia minimalny rozmiar docelowego elementu dotykowego, dzięki czemu deweloperzy mogą zagwarantować, że docelowe elementy dotykowe spełniają minimalne wymagania dotyczące ułatwień dostępu. (I2e14b, b/197751214)
  • Ponów implementację, którą można sprawdzić (I927bc, b/191017532)
  • Zmieniono nazwę parametru inspekcji, aby odpowiadała utworzonemu (I3a482, b/191017532)
  • Wprowadziliśmy performTouchInput i TouchInjectionScope jako zamiennik performTouchInput i TouchInjectionScope, utorując drogę innym modalnościom (takim jak mysz).

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

    Działanie strony TouchInjectionScope jest niemal identyczne jak w przypadku GestureScope z 2 drobnymi szczegółami:

    1. Jeśli wysyłasz zdarzenie „brak”, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia przenoszenia (czyli użyto updatePointerTo(), ale nie move(), a potem wywołano down()), poprzednia implementacja przesunęła czas zdarzenia i wysyłała zdarzenie ruchu przed wysłaniem zdarzenia „nie”. Nowa implementacja nadal wysyła zdarzenie przenoszenia, ale nie opóźnia jego terminu w tym konkretnym scenariuszu.
    2. Jeśli podczas wysyłania zdarzenia na zewnątrz wskaźniki zostały przeniesione bez wysyłania zdarzenia przenoszenia (podobnie jak powyżej), poprzednia implementacja przyspieszyła i wysyłała zdarzenie przenoszenia przed wysłaniem zdarzenia up. Nowa implementacja nie działa w żaden sposób: nowe pozycje wskaźników będą odzwierciedlane tylko przez zdarzenie „up”.

    Na koniec TouchInjectionScope wprowadza nową metodę currentPosition(pointerId: Int) pozwalającą uzyskać bieżącą pozycję podanego wskaźnika. (If1191, b/190493367)

Poprawki błędów

  • Zezwól na rozszerzenie na obszar docelowego elementu dotykowego poza obszarem klipu, co pozwoli ograniczyć zasięg docelowego elementu dotykowego. (I43e10, b/171509422)
  • Dodaliśmy obsługę rozciągania dalekiego przewijania na urządzeniach z Androidem 12. (Iccf3c, b/171682480)

Wersja 1.1.0-alfa03

1 września 2021 roku

Usługa androidx.compose.ui:ui-*:1.1.0-alpha03 została zwolniona. Wersja 1.1.0-alfa03 zawiera te zatwierdzenia.

Nowe funkcje

  • Zaktualizowano funkcję Utwórz 1.1.0-alpha03, aby bazowała na Kotlinie 1.5.30. (I74545)

Zmiany interfejsu API

  • Dodano Modifier.inspectable do dodawania innych modyfikatorów. (I1909b, b/191017532)
  • Dodaliśmy interfejs API BlurredEdgeTreatment, aby uprościć zamazywanie przypadków użycia za pomocą powszechnie używanych kombinacji flag klipu i TileModes. W większości przypadków użycia polega na wyrenderowaniu rozmytych treści poza granicami oryginalnej treści i zamazaniu obszarów poza te granicami przez zamazanie przezroczystej czerni lub przycinanie treści do granic treści z próbkowaniem najbliższej krawędzi w celu rozmycia, które wykracza poza granice treści. (I6b4b7, b/166927547)
  • Dodano obsługę funkcji RenderEffect na pulpicie tworzenia wiadomości. Wprowadziliśmy OffsetEffect oraz modyfikator rozmycia, które pozwalają w prosty sposób wprowadzić efekty wizualne rozmycia do części hierarchii kompozycji. (I0f6aa, b/166927547)
  • Wprowadzono interfejs RenderEffect API, który można opcjonalnie skonfigurować w Modifier.graphicsLayer, aby zmieniał zawartość samej warstwy. Pozwala to rozmyć zawartość elementów kompozycyjnych i podrzędnych w hierarchii kompozycji. (I47c4d, b/166927547)
  • AwaitPointerEventScope ma teraz funkcję withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Dodano minimalny rozmiar docelowego elementu dotykowego do interfejsu ViewConfiguration na potrzeby semantyki i wprowadzania wskaźnika do celu w celu zapewnienia ułatwień dostępu. (IE861C)
  • Dodano obsługę TileMode.Decal, która jest przydatna przy definiowaniu zachowania krawędzi na potrzeby funkcji RenderEffects opartych na rozmyciu. (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction i hasScrollToKeyAction są teraz stabilnymi interfejsami API (I142ae, b/178483889)
  • Dodano metodę testową służącą do pobierania granic przyciętych. (I6b28e)

Poprawki błędów

  • Usunięto metodę isBounded z BlurredEdgeTreatment, zastępując ją jawnym sprawdzaniem, czy parametr shape ma wartość null. (I85d68)

Wersja 1.1.0-alfa02

18 sierpnia 2021 r.

Usługa androidx.compose.ui:ui-*:1.1.0-alpha02 została zwolniona. Wersja 1.1.0-alfa02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • PointerEvent obsługuje teraz odczytywanie stanu przycisku myszy i stanu modyfikatora klawiatury. (I6310c, b/180075467)
  • Gesty wstrzykiwane używają teraz czasu MainTestClock jako źródła danych dla czasu. Bieżący czas wstrzykiwanych zdarzeń w regionie performGesture zostanie zainicjowany do bieżącego czasu MainTestClock. (Ifb364, b/192064452)
  • Dodano konstruktor DpRect(DpOffset, DpSize) (I2cf16, b/194219828)
  • Dodano klasę DpSize (I7abb1, b/194219828)

Poprawki błędów

  • Zaktualizowaliśmy analizę pliku XML grafiki wektorowej, aby obsługiwała ColorStateLists jako właściwości odcienia kolorów głównych w obiektach VectorDrawable. (I86915, b/195668138)

Wersja 1.1.0-alpha01

4 sierpnia 2021 r.

Usługa androidx.compose.ui:ui-*:1.1.0-alpha01 została zwolniona. Wersja 1.1.0-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • RelocationRequester.bringIntoView akceptuje teraz prostokąt jako parametr, który pozwala nam pokazać część funkcji kompozycyjnej (Ice2c5, b/194330245)
  • AnimatedImageVector i powiązane z nim interfejsy API znajdują się teraz w nowym module androidx.compose.animation:animation-graphics. (I60873)
  • Dodano eksperymentalny modyfikator do obsługi próśb o relokację. (I65a97, b/178211874)
  • Wprowadzono interfejs BrushPainter API, który umożliwia rysowanie dowolnego pędzla w aplikacji Painter, podobnie jak w przypadku ColorPainter

    Zaktualizowaliśmy interfejs Brush API, aby miał parametr rozmiaru wewnętrznego, do którego jest wysyłane zapytanie w narzędziu BrushPainter (Ia2752, b/189466433).

  • Zaktualizowana metoda DrawScope#drawImage, która korzysta z kodów źródłowych i miejsc docelowych w celu korzystania z opcjonalnego parametruFilterQuality. Przydaje się to w przypadku elementów typu pixel art, które mają być pikselizowane po przeskalowaniu w górę. Zaktualizowaliśmy BitmapPainter i funkcję komponowania obrazu, aby korzystała też z opcjonalnego parametruFilterQuality (Ie4fb0, b/180311607)

  • Dodano metodę GestureScope.advanceEventTime, która daje większą kontrolę nad czasem zdarzeń wykonywanych za pomocą gestów (Ibf3e2).

Poprawki błędów

  • Aby zapewnić lepszą obsługę łańcuchów modyfikatorów rysowania, upewnij się, że wywołania implementacji Modifier.paint mają związek z dresContent. Wcześniej funkcja Modifier.paint oczekiwała wobec węzła liścia w łańcuchu modyfikatorów, jednak w rezultacie uniemożliwia to jego skonfigurowanie w kontenerze kompozycyjnym (np. boks) i dodanie do niego dodatkowych dekoracji, takich jak Modifier.paint().border(). Wywołując metodę Modifier.paint wywołaną DrewContent po wyrysowaniu zawartości danego malarza, zapewniamy lepszą spójność działania dzięki wzorcowi modyfikatora. (Ibb2a7, b/178201337, b/186213275)
  • Okna dialogowe są teraz zgodne z zachowaniem rozmiaru platformy. Aby zastąpić to zachowanie, ustaw usePlatformDefaultWidth na wartość Fałsz. (Iffaed, b/192682388)
  • Przeniesiono InfiniteAnimationPolicy do :compose:ui (I5eb09, b/160602714)
  • Animacja obejmuje przewijanie za pomocą działań semantycznych w przypadku leniwych list i zwykłych komponentów przewijania (Id9066, b/190742024)

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.5 została zwolniona. Wersja 1.0.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięto problem ze śledzeniem awarii w instancjach originStateOf. (Aosp/1792247)

Wersja 1.0.4

13 października 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.4 została zwolniona. Wersja 1.0.4 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.3 została zwolniona. Wersja 1.0.3 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

Usługa androidx.compose.ui:ui-*:1.0.2 została zwolniona. Wersja 1.0.2 zawiera te zatwierdzenia.

Zaktualizowano, aby obsługiwała wersję 1.0.2 Utwórz. Funkcja Compose 1.0.2 jest nadal zgodna z Kotlin 1.5.21.

Wersja 1.0.1

4 sierpnia 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.1 została zwolniona. Wersja 1.0.1 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano w zależności od systemu Kotlin 1.5.21.

Wersja 1.0.0

28 lipca 2021 roku

Usługa androidx.compose.ui:ui-*:1.0.0 została zwolniona. Wersja 1.0.0 zawiera te zatwierdzenia.

Główne funkcje 1.0.0

To jest pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu wersji Compose.

Znane problemy

  • Jeśli korzystasz z Android Studio Bumblebee Canary 4 lub AGP 7.1.0-alpha04/7.1.0-alpha05, może dojść do tej awarii:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Aby rozwiązać ten problem, tymczasowo zwiększ wartość parametru minSdkVersion w pliku build.gradle do wartości 24 lub nowszej. Ten problem zostanie naprawiony w następnej wersji Androida Studio Bumblebee i AGP 7.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 i ui-tooling-preview (Iefa28, b/190649014)

Zmiany interfejsu API

  • Usunięto wycofane eksperymentalne FocusManager#moveFocusIn i FocusManager#moveFocusOut (I227d7, b/170154986, b/186567354, b/168510304)
  • Obszar roboczy obsługuje teraz parametr contentDescription, który zwiększa dostępność. (IB547C)
  • Nazwa pliku useDefaultMaxWidth w: PopupProperties została zmieniona na usePlatformDefaultWidth. (I05710)
  • Okna mogą teraz zajmować całą szerokość ekranu. (I83929, b/190810877)
  • Dodaliśmy eksperymentalną obsługę HSV i HSL, (Id7cf8, b/180731008)

Zmiany w działaniu

  • Funkcja Utwórz @Preview udostępnia teraz obiekt LocalActivityResultRegistryOwner, który umożliwia wyświetlanie podglądu elementów kompozycyjnych korzystających z interfejsów API takich jak rememberLauncherForActivityResult() zależnych od właściciela. (Ib13d1, b/185693006)
  • Funkcja Utwórz @Preview udostępnia teraz obiekt LocalOnBackPressedDispatcherOwner, który umożliwia wyświetlanie podglądu elementów kompozycyjnych korzystających z interfejsów API takich jak BackHandler, które zależą od obecnego właściciela. (Ia1c05, b/185693006)

Poprawki błędów

  • Przeniesiono InfiniteAnimationPolicy do: androidx.compose.ui:ui (I5eb09, b/160602714)
  • Tymczasowo usunęliśmy funkcję AnimatedImageVector, aby zmienić strukturę modułu. (I41906, b/160602714)

Wersja 1.0.0-beta09

16 czerwca 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.0-beta09 została zwolniona. Wersja 1.0.0-beta09 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Zmienianie ról enum i LiveRegionMode na klasy wbudowane za pomocą prywatnego konstruktora (Id1890)
  • Parametr keyCapitalization jest konwertowany na klasę wbudowaną. (Id5a1c).
  • Zmieniono HapticfeedbackType na klasę wbudowaną. (I255ec)
  • Modifier.pointerInteropFilter to @ExperimentalComposeUiApi. (Iede6c).
  • TextWyrównaj, FontSynthesis i TextDirection są teraz klasami wbudowanymi. (I212fe)
  • Ustawienie TextOverflow zostało zmienione na klasę wbudowaną. (I433af).
  • FontStyle to klasa wbudowana. (I9e48b).

Poprawki błędów

  • Główne stałe to na razie @ExperimentalComposeUiApi. Podczas przetwarzania kodu można deklarować stałe prywatne przed stabilizacją. (Ia5d48).
  • Testy tworzenia wiadomości można teraz uruchamiać w Robolectric. Do tej pory zidentyfikowaliśmy te ograniczenia:
    • Nie ma natywnej mapy bitowej, więc zasada ImageBitmap() prowadzi do wyjątku NullPointerException.
    • Nie ma rysunków, więc captureToImage() będzie zawsze czekać na następne przejście (tj. na zakleszczenie).
    • Nie wczytano czcionki, więc każdy tekst zostanie zmierzony nieprawidłowo. Wszystkie znaki mają stałą wysokość około 20 pikseli i szerokość 1 piksela.
    • ComposeTestRule.waitUntil {} nie uruchamia głównego wątku podczas oczekiwania, dzięki czemu jest on taki sam jak ComposeTestRule.mainClock.advanceTimeUntil {} W przyszłości zauważymy więcej ograniczeń. (I284fa)

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 katalogu src/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żywasz adb 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ów H, S i P 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 klasa androidx.compose.runtime.SlotTable miałaby deskryptor Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> to podpis metody. Zawiera nazwę, typy parametrów i typy zwracanych metod. Na przykład metoda fun isPlaced(): Boolean w LayoutNode ma podpis isPlaced()Z.

  • Aby jedna reguła obejmowała wiele metod lub klas, mogą one zawierać symbole wieloznaczne (**, * i ?).

Do czego służą reguły?

  • Metoda z flagą H wskazuje, że jest to metoda „hot” i należy ją skompilować wcześniej.

  • Metoda z flagą S wskazuje, że jest ona wywoływana przy uruchamianiu i należy ją skompilować z wyprzedzeniem, by uniknąć kosztów kompilacji i interpretacji podczas uruchamiania.

  • Metoda z flagą P wskazuje, że jest to metoda, która jest wywoływana po uruchomieniu.

  • Klasa znajdująca się w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona na stercie, aby uniknąć kosztów wczytywania klasy.

Jak to działa?

  • Biblioteki mogą definiować reguły, które będą spakowane w artefaktach AAR. Kiedy powstaje aplikacja, która zawiera te artefakty, reguły te są łączone ze sobą, a scalone reguły służą do utworzenia kompaktowego binarnego profilu ART, który jest charakterystyczny dla aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja jest instalowana na urządzeniach, w celu z wyprzedzeniem skompilowania określonego podzbioru aplikacji w celu zwiększenia jej wydajności, zwłaszcza przy pierwszym uruchomieniu. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.

Wersja 1.0.0-beta08

2 czerwca 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.0-beta08 została zwolniona. Wersja 1.0.0-beta08 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Wyliczenie NestedScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
  • Nazwa usługi FocusManager.clearFocus(forcedClear = true) została zmieniona na FocusManager.clearFocus(force = true) (Ia0c41)
  • Zrefaktoryzowano użycia enum do klas wbudowanych, aby uniknąć problemów z pełnymi instrukcjami związanymi z dodawaniem nowych wartości wyliczeniowych. (I2b5eb)
  • Usuń @ExperimentalComposeUiApi z konta PopupProperties. (I01fa6).
  • Pole PointerType zostało zmienione z wyliczenia na klasę wbudowaną (If5058)
  • Właściwości ContentDescription i semantyka tekstu nie są już pojedynczymi wartościami, lecz listami. Dzięki temu można je scalić w postaci, w jakiej są zamiast konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania umożliwiające wykorzystanie tych zmian (Ica6bf, b/184825850)
  • Metoda Modifier.focusModifier() została wycofana i zastąpiona przez Modifier.focusTarget() (I6c860)
  • Funkcje Modifier.onSizeChanged() i Modifier.onGloballyPositioned() nie są już wbudowane (I727f6, b/186109675)
  • Wyliczenie KeyboardType zostało zastąpione klasą wbudowaną. (I73045, b/187055290)
  • Zastąpiono enum FocusState interfejsem FocusState (Iccc1a, b/187055290)
  • Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
  • Obiekt PlaceholderVerticalAlign jest konwertowany na klasę w treści strony. (If6290).
  • TextUnitType jest klasą wbudowaną. (I4cba9)
  • Funkcje AnnotatedString.withAnnotation to teraz ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a).
    • Konstruktor TextUnit z ustawieniem TextUnitType to teraz ExperimentalTextApi zamiast ExperimentalComposeApi.

Poprawki błędów

  • Naprawiliśmy błąd wprowadzony w wersji beta07, polegający na tym, że elementy LazyColumn/wiersze były częściowo wyświetlane po przewinięciu (I8c9ac, b/188566058).
  • Teraz detectDragGesures, detectVerticalGestures i detectHorizontalGestures automatycznie uwzględniają zmianę pozycji, więc nie trzeba wywoływać metody change.consumePositionChange w wywołaniach zwrotnych onDrag (I42fc4, b/185096350, b/187320697).
  • Naprawiono parametry LayoutModifiers zawierające linie wyrównania. Naprawiono błąd, który powodował, że element nadrzędny nie był ponownie mierzony, gdy zmieniały się wiersze wyrównania elementów podrzędnych. (I4401f, b/174315652)
  • Pole Modifier.onGloballyPositioned() zostało zmienione tak, aby po zastosowaniu wszystkich modyfikatorów raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu. Oznacza to, że teraz kolejność modyfikatorów wpływa na to, jakie współrzędne będą podawane w raportach. (Ieb67d, b/177926591)

Wersja 1.0.0-beta07

18 maja 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.0-beta07 została zwolniona. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano interfejs ViewRootForInspector do użycia inspektora (Ib70df)
  • SubcomposeLayoutState obsługuje teraz ustawianie liczby przedziałów wielokrotnego użytku. Układ zachowa maksymalną liczbę aktywnych przedziałów, zamiast je wyrzucać, aby wykorzystać ponownie przedział, gdy następnym razem będziemy potrzebować nowego (Ieb981).
  • Wyliczenie KeyEventType jest zastępowane klasą wbudowaną. (Id670a, b/187055290)
  • Wyliczenie FocusDirection zostało zastąpione klasą wbudowaną. (Ib6d03, b/187055290, b/184086802)
  • Wprowadziliśmy możliwość wciągania stanu SubcomposeLayout, co pozwala wstępnie komponować treść w elemencie wymaganym (wymagany jest identyfikator boksu reklamowego). Przyspieszyłby on kolejny pomiar, ponieważ następnym razem, gdy spróbujemy utworzyć element z podanym identyfikatorem boksu, nie będzie potrzebna kompozycja. (I42580, b/184940225)
  • Dodano uchwyt wyboru klipu (Iff80d, b/183408447)
  • Usunęliśmy nieużywane interfejsy API związane z obsługą Inspektora układu. (I2ac78).

Poprawki błędów

  • LazyColumn/Row będzie teraz przechowywać do 2 wcześniej widocznych elementów aktywnych (nieusuniętych), nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie korzystać z aktywnych kompozycji podrzędnych, gdy trzeba będzie utworzyć nowy element, który usprawnia przewijanie. (IE5555)
  • TextGeomerticTransform i TextDecoration na AnnotatedString będą stosowane zgodnie z oczekiwaniami. (I61900, b/184760917)

Wersja 1.0.0-beta06

5 maja 2021 roku

Usługa androidx.compose.ui:ui-*:1.0.0-beta06 została zwolniona. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Rozwiązywanie konfliktów z gestem nawigacji (I1145e)
  • @ComposeCompilerApi nie jest już @RequiresOptIn (Iab690)
  • Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i ich elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
  • Dodano SemanticsActions.ScrollToIndex, aby przewijać listę ze indeksowanymi elementami do elementu o określonym indeksie oraz SemanticsProperties.IndexForKey, aby uzyskać indeks elementu na liście z elementami z kluczami. Oba działania są implementowane przez LazyList.
    • Dodano funkcję SemanticsNodeInteraction.performScrollToIndex, która przewija listę do podanego indeksu, oraz SemanticsNodeInteraction.performScrollToKey, która przewija listę do elementu z danym kluczem. (I4fe63, b/178483889, b/161584524)
  • Dodano element ownerViewId do elementu GraphicLayerInfo (I19f62).
  • Dodano przeciążenia Font() do wczytywania czcionek z zasobów, Plik i Deskryptor pliku (I5d382)
  • Dodano interfejs API ułatwień dostępu error umożliwiający oznaczenie węzła zawierającego nieprawidłowe dane wejściowe (I12997, b/180584804, b/182142737)
  • Dodano przeciążenia Font() do ładowania czcionek z zasobów oraz plików i deskryptorów FileDescriptor (I43007).
  • Obsługa zapisu w polu AdnotatedString w polu TextFieldValue.Saver. Do aplikacji AnnotatedString.Builder (I8cbdc, b/178446304) dodano funkcje addTtsAnnotation i z funkcjami narzędziowymi dotyczącymi adnotacji
  • Dodano funkcję konstruktora TextUnit TextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.0-beta05 została zwolniona. Wersja 1.0.0-beta05 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano eksperymentalne FocusManager.moveFocus(In) i FocusManager.moveFocus(Out) (Ic5534, b/183746743)
  • Dodano eksperymentalny interfejs API performTextInputSelection (I2dcbb, b/178510628)
  • Interfejs InputEventCallback został wycofany. Nie można było użyć interfejsu w żadnym publicznym interfejsie API i nie było go również w kodzie. (I34a02, b/184003208)
  • Funkcja TextLayoutResult/createTextLayoutResult została wycofana. To nieużywana funkcja publiczna, dodana do testów. Nie wykonuje ona żadnych działań, których można użyć w interfejsach API tworzenia tekstu. Funkcja została wycofana i później zostanie usunięta. (I80413)

Poprawki błędów

  • Naprawiono czynności związane z przewijaniem ułatwień dostępu ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight i accessibilityActionScrollDown. Zamiast przewijać do końca elementu przewijanego, przewija on teraz o 1 ekran w danym kierunku. (Ieccb0)
  • Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994)

Wersja 1.0.0-beta04

7 kwietnia 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.0-beta04 została zwolniona. Wersja 1.0.0-beta04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Zmień nazwy hideSoftwareKeyboard i showSoftwareKeyboard w SoftwareKeyboardController odpowiednio na hide() i show().
    • Udostępnij pełny interfejs CompositionLocal dla kontrolera Local SoftwareKeyController, aby umożliwić jego skonfigurowanie (jest to szczególnie przydatne w testach) (I579a6).
  • Interfejs LiveRegion Accessibility API został dodany. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadomią użytkownika o zmianach (Idcf6f, b/172590946)
  • Wprowadzenie elementu TextOverflow.Visible. (IC8f89)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że elementy w polu LazyColumn/LazyRow znajdujące się na krawędziach były nieprawidłowo umiejscowione po szybkim przesunięciu (Ie4d13, b/183877420).
  • Funkcja AndroidViewBinding teraz prawidłowo usuwa fragmenty, które zostały powiększone za pomocą metody FragmentContainerView, gdy obiekt AndroidViewBinding jest usuwany z hierarchii tworzenia wiadomości. (Ib0248, b/179915946)
  • AndroidViewBinding teraz prawidłowo zagnieżdża fragmenty nadające się za pomocą FragmentContainerView, gdy ComposeView znajduje się w elemencie Fragment. Rozwiązano problemy z zapisywaniem i przywracaniem stanu tych fragmentów. (I70eb0, b/179915946)
  • Tworzenie powiązań widoku danych zależy teraz od fragmentu 1.3.2 i od teraz konsekwentnie pokazuje fragmenty powiększone przez 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)
  • Do funkcji swipeUp/swipeDown/swipeLeft/swipeRight w GestureScope dodaliśmy opcjonalne parametry startX/endX i startY/endY. (I49e2d, b/182063305)

Wersja 1.0.0-beta02

10 marca 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.0-beta02 została zwolniona. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano nowy interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (I5951e, b/168778053)
  • Dodano nowy interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (I84472, b/168778053)
  • Usunięto te komponenty (SemanticsMatcher):
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • Oznaczono SemanticsMatchers jako @ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (IA600C)
  • Dodano te elementy (SemanticsMatcher):
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Poprawki błędów

  • Egzekwuj ograniczenia dotyczące publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
  • androidx.compose.ui:ui nie zależy już od AppCompat ani Fragment. Jeśli w swojej aplikacji używasz obiektu ComposeView i fragmentu lub AppCompat, sprawdź, czy używasz AppCompat 1.3 lub nowszego / fragmentu 1.3 lub nowszego – te wersje są niezbędne do prawidłowego ustawienia cyklu życia i zapisanych właścicieli stanu wymaganych dla ComposeView. (I1d6fa, b/161814404)
  • Usunięto problem z uszkodzonym kodem rememberSaveable { mutableStateOf(0) } występującym w miejscu docelowym w nawigacji. (I1312b, b/180042685, b/180701630)
  • Dodano nowy interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (I658b6, b/168778053)
  • Usunięto rzadki wyjątek NoSuchElementWyjątek w tagu ComposeRootRegistrytearDownRegistry() (Iddce1)

Wersja 1.0.0-beta01

24 lutego 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.0-beta01 została zwolniona. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

To jest pierwsza wersja beta Compose 1.0.0.

Zmiany interfejsu API

  • Oddzwanianie onStart zostało dodane do detectDragGestures (I67269, b/179995594)
  • Modyfikatory dopasowujące wymiary do elementów wewnętrznych nie są już eksperymentalne. (I15744)
  • Nazwa MeasureBlocks została zmieniona na MeasurePolicy, a interfejs jest teraz ciekawym interfejsem. Zaktualizowaliśmy lub uprościliśmy interfejsy Layout API pod kątem MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • Pole InteractionState zostało zastąpione elementem [Mutable]InteractionSource
    • Interfejsy odpowiadają za wysyłanie / zbieranie zdarzeń interakcji.
    • Zamiast przekazywać interactionState = remember { InteractionState() } do komponentów takich jak Button czy Modifier.clickable(), użyj interactionSource = remember { MutableInteractionSource() }.
    • Zamiast: Interaction.Pressed in interactionState użyj funkcji rozszerzeń w InteractionSource, takich jak InteractionSource.collectIsPressedAsState().
    • W złożonych przypadkach możesz użyć parametru InteractionSource.interactions do obserwowania strumienia interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Dodanie interfejsu AccessibilityMananger i interfejsu LocalAccessibilityMananger w kompozycji CompositionLocals (I53520).
  • Usunięto wycofane metody LayoutCoordinates. Użyj funkcji zamiast właściwości positionInParent i boundsInParent (I580ed, b/169874631, b/175142755)
  • Aliasy typów zastąpione podstawowymi typami:
    • ColorStop to teraz Pair<Float, Color>
    • SpanStyleRange to teraz „AnnotatedString.Range
    • ParagraphStyleRange to teraz AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation to teraz AnnotatedString.Range<String>
    • (I8dd1a)
  • Utworzono nową sesję TextInputSession na potrzeby sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, np. CoreTextField. (I8817f, b/177662148)
  • Obiekt Placeable staje się widoczny w pomiarach rozmiaru, co reprezentuje rozmiar, do którego rzeczywiście zmierza układ podrzędny. Ten rozmiar może nie uwzględniać ograniczeń pomiarów. (Ib2729, b/172560206, b/172338608)
  • Dodaj modyfikator selectGroup, który umożliwia oznaczanie kolekcji kart lub opcji na potrzeby ułatwień dostępu (Ie5c29)
  • Pole defaultFactory dla obiektów compositionLocalOf i staticCompositionLocalOf jest teraz wymagane, a nie opcjonalne.

    Ta zmiana usuwa potencjalny błąd typu w przypadku typów niedopuszczających wartości null, w których nie podano domyślnej wartości fabrycznej. Wcześniej w przypadku typu niedopuszczającego wartości null konieczne było odniesienie do wartości null.

    W przypadku typów dopuszczających wartości null domyślną wartością fabryczną jest { null }.

    Nie zalecamy używania zasobów lokalnych z typami niezawierającymi wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda defaultFactory powinna zgłosić wyjątek. Zwrócenie wyjątku oznacza jednak, że konsumenci z okolicy są w bezpośrednim stopniu uzależnieni od jego zapewnienia, a system typów nie jest egzekwowany. (Ifbd2a).

  • Wycofane metody z modułów interfejsu zostały usunięte (I646f6)

  • Zmieniono nazwy modyfikatorów rozmiaru. Zmieniono nazwę modyfikatora.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwę metody Modifier.preferredWidth/preferredHeight/preferredSize na szerokość/wysokość/rozmiar. (I5b414)

  • Modifier.tapGestureFilter został(a) usunięty(a). Użyj w zamian zasady Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

  • częściowe wykorzystanie zostało usunięte z systemu wprowadzania danych wskaźnika. Zalecanym sposobem koordynowania częściowego konsumpcji jest Modifier.nested Scroll. (IE9c9b)

  • Orientacja została przeniesiona do pakietu podstawowego. Przeniesiono aplikację VelocirtTracker z obszaru ui.gesture do witryny ui.input.pointer. (Iff4a8, b/175294473)

  • imageResource i vectorResource są teraz funkcjami rozszerzenia odpowiednio w elementach towarzyszących ImageBitmap i ImageVector. Usunięto load{Image,Vector,Font}Resource funkcje. (I89130)

  • Usunięto klasę AnimationClockObservable i jej podklasy. Element AnimatedFloat został usunięty. (Icde52, b/177457083)

  • Nazwa dostawców została zmieniona na CompositionLocalProvider

    • Konstruktor Kompozycja nie akceptuje już kluczowego parametru i został wycofany.
    • Parametr currentCompositeKeyHash został przekształcony w kompozycyjną właściwość najwyższego poziomu zamiast funkcji kompozycyjnej najwyższego poziomu.
    • CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
    • Interfejs ComposableLambda został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
    • Interfejs ComposableLambdaN został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
    • Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
    • metoda scalania zasady SnapshotMutationPolicy nie jest już eksperymentalna
    • Funkcja @TestOnly najwyższego poziomu clearRoots została usunięta. Już nie jest to konieczne.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Element Composer.collectKeySourceInformation został usunięty. Już nie jest to konieczne.
    • Metody isJoinedKey, JoinKeyLeft i joinKeyRight zostały usunięte. Nie są już potrzebne.
    • Różne interfejsy API najwyższego poziomu zostały przeniesione i porządkowane w różne pliki. Ze względu na semantykę klas plików Kotlin spowoduje to naruszenie zgodności plików binarnych, ale nie źródła, więc nie powinno stanowić problemu dla większości użytkowników.
    • (I99b7d, b/177245490)
  • Element ComponentActivity.setContent() został usunięty z polecenia compose:ui. Użyj tego, który oferuje androidx.activity:activity-compose:1.3.0-alpha01. Elementy viewModel() i LocalViewModelStoreOwner zostały usunięte z elementu compose:ui. Użyj tych z oferty androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b)

  • Modifier.scrollable został przerobiony. Teraz używa interfejsu Scrollable zamiast klasy ScrollableController (I4f5a5, b/174485541, b/175294473)

  • Usunięto obsługę CustomEvens z PointerInputModifier (I02707, b/175294473)

  • SnapshotStateObserver nie jest już funkcją eksperymentalną (Id2e6a)

  • usunęliśmy niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932),

  • Parametry LongPressStepFilter i DoubleClickStepFilter zostały usunięte. Użyj funkcji Modifier.pointerInput z funkcjami pomocniczymi, np.DetectionTapSteps (I2fedf, b/175294473)

  • Usunęliśmy zrefaktoryzowane zastosowania interfejsu String.format API w różnych metodachtoString, aby nie wykorzystywać go wewnętrznie. (Id1290).

  • Usunięto asercje dp (I798d2)

  • Usunięto plik androidx.compose.runtime:runtime-dispatch (I55feb).

  • Działania związane z tekstem automatycznie sprawdzają zaznaczenie (I13777, b/179648629)

  • Usunięto runBlockingWithManualClock (I15cdc, b/179664814)

  • Pozycja przewinięcia w modyfikatorze.vertical Scroll()/vertical Scroll() obecnie przedstawia się za pomocą liczb całkowitych (I81298).

  • Nazwa FlingConfig została zmieniona na FlingBehavior i umożliwia teraz dostosowanie animacji zawieszenia, a nie wstępnie zdefiniowanego spadku. (I02b86, b/175294473)

  • Dodano funkcję pomocniczą, która pomaga ustawić to samo działanie dla wszystkich wywołań zwrotnych ImeAction (I63447, b/179226323)

  • Usunęliśmy wywołanie zwrotne SoftwareKlawiaturaController ze wszystkich pól tekstowych. Wkrótce zostanie zastąpione nowym interfejsem API. (IAe869, b/168778053)

  • Style FontSpan i FontWeigthStyleSpan nie są już używane i zostały usunięte. (IE5b56, b/177423444)

  • W interfejsie Material API wprowadzono te zmiany:

    • Do górnego/dolnego paska aplikacji dodano parametr contentPadding, aby umożliwić dostosowanie domyślnego dopełnienia.
    • Zmieniono kolejność parametrów w TleDScaffold, aby zachować zgodność z wytycznymi interfejsu API dotyczącymi parametrów, które powinny znajdować się przed parametrami opcjonalnymi.
    • Parametr icon w elemencie bottomNavigationItem został przeniesiony za selected i onClick.
    • Nazwa parametru alwaysShowLabels w elemencie bottomNavigationItem została zmieniona na alwaysShowLabel.
    • Zmieniono nazwę parametrów bodyContent niektórych komponentów na content.
    • 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 parametr secondaryVariant. Ten kolor jest zwykle taki sam jak kolor secondary w ciemnym motywie, ale zapewnia spójność i dodatkowe możliwości dostosowania.
    • Usunięto klasę ElevationDefaults i animmateElevation() z publicznej platformy interfejsu API, ponieważ nie były one powszechnie używane ani przydatne.
    • Zmieniono nazwę onValueChangeEnd w Slider na onValueChangeFinished i ustawiłem ją na wartość null.
    • Nazwa parametru text w komórce Snackbar została zmieniona na content w celu zachowania spójności.
    • Dodano parametr contentPadding do elementu DropdownMenuItem, aby umożliwić dostosowanie domyślnego dopełnienia, oraz ustawienie content jako rozszerzenia w witrynie RowScope.
    • Nazwa ModalDrawerLayout została zmieniona na ModalDrawer.
    • Nazwa BottomDrawerLayout została zmieniona na BottomDrawer.
    • (I1cc66).

Poprawki błędów

  • Dodano interfejs API umożliwiający korzystanie z zasobów AnimatedVectorDrawable w usłudze Compose. Użyj animowanegoVectorResource, aby wczytać plik XML <animated-vector> jako obiekt AnimatedImageVector i animować go za pomocą PaintterFor (I8ea91).
  • Dodaliśmy nowy lokalny interfejs API do kompozycji Local SoftwareKlawiaturaController, aby zastąpić poprzedni interfejs SoftwareKlawiaturaController w polu TextField. (I658b6, b/168778053)

Wersja 1.0.0-alfa12

10 lutego 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.0-alpha12 została zwolniona. Wersja 1.0.0-alfa12 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Usunięto obsługę grup widoków danych z UiApplier. Wycofane elementy kompozycyjne emitView zostały usunięte. (Ifb214).
  • Modifier.pointerInput wymaga teraz zapamiętywania klawiszy, aby wskazywać, kiedy współprogram wykrywania danych wejściowych wskaźnika ma zostać uruchomiony ponownie w przypadku nowych zależności. (I849cd)
  • Zmieniono nazwę CompositionReference na CompositionContext (I53fcb).
  • Nazwa granic została zmieniona na DpRect (I4b32a).
  • Testowanie aktualizacji: funkcja hasText() sprawdza w polu tekstowym zarówno dane wejściowe, jak i teksty etykiet, wskazówek i zastępczych (Iab803)
  • Funkcje kompozycyjne viewModel() i LocalViewModelStoreOwner zostały przeniesione do folderu androidx.lifecycle.viewmodel.compose. Aby jej użyć, musisz teraz dodać oddzielną zależność androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alfa01. (I7a374)
  • Zezwalaj na działanie dopuszczające wartości null w AccessibilityAction, etykieta zmień działanie w AccessibilityAction i CustomAccessibilityAction z CharSequence na String (I0dc82)
  • Aby lepiej dopasować konwencje nazewnictwa do obrazów ImageBitmap i ImageVector, nazwa komponentu ImagePainter została zmieniona na BitmapPainter na równoległe narzędzie VectorPainter. (Iba381, b/174565889)
  • Lepsze interfejsy API do testowania podłańcucha z podłańcuchem jako argumentem (Icbe78)
  • Dodano obiekt Modifier.focusOrder(), który akceptuje obiekt FocusRequester bez określania niestandardowej kolejności zaznaczenia jako wartości lambda. Jest to przydatne, gdy trzeba określić tylko odwołanie, a nie niestandardowy fokus dla elementu kompozycyjnego (I4f52a, b/179180978)
  • Element KomponentActivity.setContent został przeniesiony do folderu androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416).
  • Usunęliśmy metody niszczenia i copy() z kilku klas, w których były one rzadko używane. (I26702, b/178659281)
  • Wyskakujące okienko zostało przeniesione do konkretnej platformy. Nazwa AndroidPopupWłaściwości została zmieniona na PopupWłaściwości, a element isFocusable został przeniesiony do parametru focusable w elemencie PopupProperties (Ieeea5).
  • Okno zostało przeniesione, aby było związane z konkretną platformą. Zmieniono nazwę AndroidDialog Właściwości na DialogWłaściwości. (I4ef69, b/179138130)
  • Komponent LayoutNode został wewnętrzny (I8a7b1, b/175103944)
  • Parametr Constraints.enforce został zastąpiony przez Constraints.constrain. (I8B8EA).
  • Zasób loadFontResource został wycofany. Używaj zamiast niego fontResource. Elementy graficzne, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Użyj narzędzia PaintterResource. (I6B809)
  • Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz wartości lambda zwracające liczby zmiennoprzecinkowe zamiast bezpośrednich wartości zmiennoprzecinkowych. (If4a35, b/178657186)
  • Dodano semantykę EditableText do oznaczania możliwego do edytowania tekstu wejściowego pola tekstowego na potrzeby ułatwień dostępu oraz odpowiadające jej metody testowe do sprawdzania semantyki (I8e07a).
  • Przyznano właściwość WłaścicielLayer/OwnerScope/OwnerSnapshotObserver wewnętrzny (I4ffaf, b/175103944)
  • Nazwa funkcji toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)
  • Nazwa IntBounds została zmieniona na IntRect, a interfejs API został ulepszony. (I1f6ff)
  • Zaktualizowaliśmy interfejs Snapshot API, aby zwiększyć spójność z wytycznymi dotyczącymi interfejsu API oraz ukryć wewnętrzne klasy implementacji w publicznym interfejsie API. (Id9e32)
  • Dodano działania semantyczne rozwijania i zwijania. Dodano elementy rozwijana i połówkowa w stanie ModallowerSheetState (Ib5064)
  • Interfejs Modifier.dragStepFilter został wycofany. Użyj w zamian zasady Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć metody Modifier.draggable, aby przeciągać jedną oś (I0ba93, b/175294473)
  • Zmieniono nazwy Ambientów, aby pasowały do nazwy Ambient -> CompositionLocal. Lokalizatory nosiły wcześniej nazwę AmbientFoo, a teraz CompositionLocals – LocalFoo. (I2d55d)
  • Wycofane pole BaseTextField zostało usunięte. Użyj w zamian pola BasicTextField. (I71368)
  • Zaznaczenie zostało przeniesione do podstawy. (I7892B)
  • Podobnie jak poprzednio usunęliśmy funkcję state { 0 } kompozycyjną, a teraz promujemy jej użycie, takie jak remember { mutableStateOf(0) }, usuniemy funkcję savedInstanceState { 0 } kompozycyjną. Zamiast niego użyj parametru rememberSaveable { 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 parametr stateSaver. Użycie będzie wyglądać tak: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Dodano semantykę haseł w ułatwieniach dostępu (I231ce)
  • Dodano ProgressBarRangeInfo.Indeterminate, aby zaznaczyć nieokreślone paski postępu w ułatwieniach dostępu (I6fe05).
  • Narzędzia emptyContent() i (@Composable () -> Unit).orEmpty() zostały wycofane, ponieważ nie mają już pozytywnego wpływu na wydajność ani wartość (I0484d)
  • Parametry snapshotFlow i withMutableSnapshot nie są już eksperymentalne (I6a45f)
  • Rekompozycje można teraz zamknąć. Zamknięte rekompozytory będą kontynuować ponowne komponowanie, dopóki nie zakończą się uzupełniające podrzędne kompozycje. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (IB6d76)
  • Nazwa UiSavedStateRegistry została zmieniona na SaveableStateRegistry, a AmbientUiSavedStateRegistry została zmieniona na AmbientSaveableStateRegistry i teraz przeniosła do pakietu androidx.compose.runtime.saveable. (I30224)
  • Nazwa artefaktu androidx:compose:runtime:runtime-saved-instance-state została zmieniona na androidx:compose:runtime:runtime-saveable (I6dcac).
  • Wiele starych, wycofanych interfejsów API z pakietu UI zostało usuniętych. (I2f2dc)
  • Artefakt compose:runtime-dispatch został wycofany. MonotonicFrameClock znajdziesz teraz w polecenia compose:runtime, a AndroidUiDispatcher – w compose:ui. (IB5c36)
  • Outline.* – klasy nie są już klasami danych (I4879e, b/178001427)
  • Element view.captureToImage() został usunięty bez zamiennika. (I7fcd2).
  • Wprowadzenie interfejsu ColorMatrix API służącego do modyfikowania wartości RGB treści źródłowych Zrefaktoryzowanego interfejsu ColorFilter API do tworzenia interfejsu zgodnego z implementacją PathEffect. (Ica1e8),
  • Dodano parametr layout Direction do klasy createOutline w kształcie. Pozwala to tworzyć kształty uwzględniające kierunek układu. (I57c20, b/152756983)
  • Parametr onImeActionPerformed został wycofany. Użyj jego działania (If0bbd, b/179071523).
  • Wprowadziliśmy współrzędny element kontekstu InfiniteAnimationPolicy, który będzie stosowany w nieskończoność animacji. Domyślnie żadna zasada nie jest instalowana, chyba że przeprowadzasz testy z użyciem ComposeTestRule. (I50ec4, b/151940543)
  • Usunięto element canDrag z folderu Modifier.scrollable. (Id66e7, b/175294473)
  • Zmieniono nazwę wartości LayoutCoordinates.parentCoordinates na LayoutCoordinates.parentLayoutCoordinates, aby umożliwić dodanie nowej właściwości „parentCoordinates”. Właściwość nadrzędnyCoordinates oferuje teraz LayoutCoordinates modyfikatora nadrzędnego. Dzięki temu będzie można używać funkcji onSizeChanged() i onGloballyPositioned() (Idfbfd, b/177926591)
  • Parametry tapTrackingFilter, DoubleTapStepFilter, longPressConsentFilter i PressIndicaitonTrackingFilter zostały wycofane. Użyj w zamian funkcji Modifier.clickable lub Modifier.pointerInput z funkcją wykrywaniaTapSteps. (I6baf9, b/175294473)
  • Parametr unregisterProvider SaveableStateRegistry został usunięty. RejestratorProvider() zwraca teraz obiekt SaveableStateRegistry.Entry, którego można użyć do wyrejestrowania (Ic4274, b/178583739).
  • Zapamiętano nazwę savedInstanceState(), aby korzystały z ! (I1366e, b/177338004)
  • Usunięto CoreText i CoreTextField z publicznego interfejsu API.
    • Usunięto wycofane przeciążenie komponentu SelectionContainer
    • (I99c19).
  • Testy, w których funkcja Compose jest używana w hierarchii dodawanych lub usuwanych bezpośrednio w usłudze WindowManager, są teraz bardziej stabilne. (IE81ed, b/175765614)
  • Usunięto element Recomposer.current(). [Abstract]ComposeView teraz domyślnie to stworzone leniwie, ograniczone do okna Rekompozycje, którymi zarządza ViewTreeLifecycleOwner dla okna. Rekompozycja i animacje z FrameNanos są wstrzymywane na czas zatrzymania cyklu życia hosta. (I38e11)
  • Funkcja Recomposer.runningRecomposers udostępnia teraz globalny przepływ StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwację bieżącego stanu kompozycji w trakcie tego procesu. Preferuj ten interfejs API przy użyciu interfejsu Recomposer.current(), który jest teraz wycofany. (If8ebe).
  • Saver, listSaver(), mapSaver(), autoSaver przeniesiono z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6).
  • Polecenia EditCommand akceptują ciąg znaków AnnotatedString. Jest to jednak zmiana dostępna tylko w interfejsie API, a edycja tekstu z wieloma stylami nie jest jeszcze wdrożona. (I4c3ea).
  • Funkcje Czas działania i Czas trwania zostały usunięte. (Ib9bf4, b/177420019)
  • Funkcja CompositionData.asTree() i powiązane z nią interfejsy API zostały przeniesione do osobnego modułu ui-tooling-data i oznaczone jako eksperymentalne (Ic95b8).
  • Nazwy parametrów RounderCornerForm, CutCornerPosition i CornerBasedForm zostały zmienione z lewej/prawej na początek/koniec, by zapewnić obsługę automatycznego odbicia lustrzanego kształtu w kierunku rtl. Funkcje absolutRounderCornerangle i absoledCutCornerForm zostały wprowadzone w przypadkach, gdy automatyczne odbicie lustrzane nie jest potrzebne. (I61040, b/152756983)
  • Interfejs API, na który kierowana jest wtyczka kompilatora Compose, został przekonwertowany tak, aby wykorzystywał interfejs zamiast konkretnej klasy. Interfejs nie używa już parametru type.

    To zmiana wewnętrzna, która nie powinna wpływać na zgodność kodu źródłowego, ale jest zmianą binarnej. (I3b922, b/169406779)

  • Usuń niezamierzoną publiczną funkcję StringBuilder.deleteAt (Id6ed9)

Poprawki błędów

  • Obiekty ComposeView umieszczone w hierarchiach widoków, które są elementami podrzędnymi innej kompozycji, zawierają teraz kompozycje podrzędne ich elementów nadrzędnych (I92883)
  • Zaktualizowaliśmy interfejs API imageFromResource funkcji tworzenia, aby ponownie używać rysowanej pamięci podręcznej zasobu podczas wczytywania obiektów ImageBitmap. (If3627, b/178751994)

Wersja 1.0.0-alfa11

28 stycznia 2021 roku

Usługa androidx.compose.ui:ui-*:1.0.0-alpha11 została zwolniona. Wersja 1.0.0-alfa11 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Element WithConstraints został przetworzony pod nazwą BoxWithConstraints i przeniesiony do pliku Foundation.layout. (I9420b, b/173387208)
  • Interfejs Key.DPadUp został wycofany. Użyj klawisza Key.DirectionUp. (Iab335, b/177954892)
  • Interfejs właściciela dostępny od teraz wewnętrznie. (If8e35).
  • Dodano interfejs API FocusManager.movefoka() do automatycznego przenoszenia zaznaczenia. (I045cb, b/177681839)
  • Zmienia element PopupPositionProvider, aby używać współrzędnych zależnych od okna, a nie globalnych. Zmienia nazwę obiektuparentGlobalBounds na AnchorBounds i zmienia parametr windowGlobalBounds na „ windowSize: IntSize” (I2994a).
  • Czas trwania i czas działania zostaną zastąpione długimi milisekundami, a ten krok eliminuje zależność danych wejściowych wskaźnika do tych klas. (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner został dodany podobnie jak do dotychczasowych AmbientLifecycleOwner i AmbientViewModelStoreOwner (I9a3e8, b/176756365).
  • Zaktualizowaliśmy interfejs API grafiki wektorowej, aby obsługiwał analizę barwienia zastosowanego do głównego poziomu grafiki wektorowej. (Id9d53, b/177210509)
  • Dodano parametr ToolType do pola PointerInputChange, aby rozróżniać urządzenia (Iac787, b/175142755)
  • Nazwa AmbientWindowManager została zmieniona na AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • Wycofaliśmy globalne metody współrzędnych i wprowadziliśmy nowe metody oparte na współrzędnych w oknach. (IEE284).
  • Dodano modyfikator.toolingGraphicsLayer, który po włączeniu inspekcji dodaje modyfikator warstwy graficznej. (I315df)
  • Element FocusRequester.createRefs jest teraz oznaczony jako eksperymentalna, ponieważ może się zmienić. (I2d898, b/177000821)
  • Nazwa Semantics PropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. Nazwa stateDescriptionRange została zmieniona na progressBarRangeInfo. Nazwa Accessibility ScrollState została przemianowana na ScrollAxisRange. Nazwa levelAccessibility ScrollState została zmieniona na level ScrollAxisRange. Nazwa verticalAccessibility powiązanych z nią została zmieniona na vertical ScrollAxisRange. (Id3148).
  • Usunięto metodę PointerInputData i zmodyfikowaliśmy ją, aby dodać do niej wszystkie pola PointerInputData. Obiekty PointerInputEvent i PointerInputEventData są wewnętrzne, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
  • Zaktualizowaliśmy gęstość implementacji GraphicsLayerScope, aby obsługiwała konwersje dp na nieprzetworzone piksele. (Ied528, b/176819695)
  • Zaktualizowaliśmy interfejs matrix API, aby nadawała dużą kolejność wierszy i dostarczała stałe indeksu w celu wspomagania konwersji między różnymi reprezentacjami macierzy, aby zapewnić zgodność logiki konwersji platformy między SkMatrix i Matrix4 wewnętrznie. (I432e6)
  • Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).
  • Przenieśliśmy String.fintPrecedingBreak i String.fingFollowingBreak do InternalTextApi. (I657C4)
  • Adres androidx.compose.ui.util.isSurrogatePair został usunięty z publicznego interfejsu API. (IA9494).
  • Zmieniono nazwę TransformedText.transformText na TransformedText.text.
    • TransformedText nie jest już klasą danych (Ie672a)
  • Element data class został usunięty z tych klas:
    • Treść wbudowanego tekstu
    • LocaleList (I605c7)
  • Te klasy nie są już klasami danych:
    • Ciąg z adnotacjami
    • Styl akapitu
    • Styl spanu
    • Styl tekstu
    • Waga czcionki
    • Ozdobniki tekstu
    • TextGeometricTransform
    • Indeks tekstowy
    • Wynik układu tekstu
    • TextLayoutInput (Iaff99),
  • Zmieniliśmy VisualTransformation, by stała się praktycznym interfejsem (I3bba4)
  • Dodano typ parametru odwołania do funkcji (I5e1bd).
  • Dodaj przekształcone granice do węzła InspectorNode (Ice42f)

Poprawki błędów

  • Interfejsy onCommit, onDispose i onActive zostały wycofane i zastąpione interfejsami SideEffect i DiposableEffect (If760e).
  • Zmiany w funkcjach fabrycznych dla czcionek, rodziny czcionek i kroju czcionki

    • Dodano funkcje fabryczne, które zaczynają się od wielkiej litery.
    • Wycofanie wcześniejszych funkcji fabrycznych, używając małych i pierwszych liter
    • Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
    • Ukryto konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
    • Zmieniono nazwę Font.asFontFamily na Font.toFontFamily (I42aa7).
  • Dodano ComposeContentTestRule, który rozszerza zakres ComposeTestRule i definiuje zasadę setContent, która została usunięta z ComposeTestRule. Dodaliśmy metodę fabryczną createEmptyComposeRule(), która zwraca ComposeTestRule i nie uruchamia za Ciebie aktywności. Użyj tej opcji, jeśli chcesz uruchomić aktywność podczas testu, np. za pomocą narzędzia ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState to teraz animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)

  • Do obrazów i ikon został dodany parametr Opis treści. Służy do opisania usług ułatwień dostępu (I2ac4c).

  • Usuń parametr displaySize, ponieważ powinien się unikać. Zwykle lepiej jest użyć funkcji onRoot() lub rozmiaru co najmniej okna. (I62db4).

  • OnSizeChanged zgłaszał rozmiar zawartości układu. Raportuje teraz rozmiar na swoim miejscu w łańcuchu modyfikatorów. (I36b78, b/177562900)

  • Interfejs emit() API i wszystkie przeciążenia zostały wycofane i mają nazwę ComposeNode. Interfejsy API są identyczne, ale mają inną nazwę, aby zachować zgodność z konwencjami nazewnictwa stosowanymi w funkcji tworzenia wiadomości (I4137b).

  • TextFieldValue akceptuje ciąg AnnotatedString. Jest to jednak zmiana dostępna tylko w interfejsie API, a edycja tekstu z wieloma stylami nie jest jeszcze wdrożona.

    • Z parametrów konstruktora EditBuffer usunięto parametr initial. (I326d5)
  • Nieprawidłowo i kompozytoryzacja() zostały wycofane. Zastąpiono je odpowiednio recomposeScope i ReminderCompositionReference. (I583a8)

  • Ciąg AnnotatedString został zmieniony tak, aby był dłuższy niż kotlin.CharSequence. Dlatego długość i sekwencja podsekwencji są teraz funkcjami instancji, a funkcje rozszerzeń zostały usunięte. (Iaf429).

  • PamiętajObserver, która zastąpiła funkcję CompositionLifecycleObserver, a zasada CompositionLifecycleObserver została wycofana.

    Metoda RememberObserver zastępuje metodę CompositionLifecycleObserver ze zmodyfikowaną semantyką i nowymi nazwami. Zmiana na nowy interfejs API można wprowadzić mechanicznie w przypadku obiektów, które są zapamiętane tylko raz, co jest i nadal jest zalecane. Jeśli jednak odniesienie w kompozycji zostało zapamiętane więcej niż raz, funkcja onRemembered jest wywoływana dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. Funkcja onEnter była wywoływana wiele razy, jeśli obiekt był używany w podkompozycjach, np. WithConstraints i Scaffold sprawiły, że gwarancja pojedynczego wywołania onEnter była zawodna i został usunięty dla RememberObserver.

    RememberObserver dodaje element onAbandoned, który jest wywoływany, jeśli wystąpienie RememberObserver jest zwracane z wywołania zwrotnego przekazanego do remember, ale nie jest zapamiętywane w stanie kompozycji i dlatego nigdy nie zostanie wywołane przez onRemembered. Może się tak zdarzyć, jeśli wyjątek kończy kompozycję przed ukończeniem lub gdy kompozycja została odrzucona, ponieważ stan produkował kompozycję, która nie jest już aktualna lub nie jest już potrzebna. Jeśli instancja RememberObserver zgodnie z powyższą rekomendacją dotyczącą referencji śledzi zasób zewnętrzny (zarówno onForgotten, jak i onAbandoned), oznacza to, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte prace lub zasoby przydzielone w onRemembered, obiekt onAbandoned może zostać zignorowany, ponieważ nie będzie wywoływany po wywołaniu funkcji onRemembered. (I02c36)

  • Wycofano operacje arytmetyczne między co najmniej 2 jednostkami tekstowymi. Wycofano funkcje TextUnit.Sp i TextUnit.Em zamiast funkcji rozszerzeń, takich jak Int.sp i Int.em. (I48369)

  • Zasoby w bibliotekach bez jawnie zadeklarowanych zasobów publicznych (np. za pomocą pliku public.xml) są teraz domyślnie prywatne. (Ia1dcc, b/170882230)

  • Przewijane kolumny/wiersz zostały wycofane. Korzystanie z ScrollableColumn jest mniej wydajne niż LazyColumn w przypadku dużej ilości przewijanych treści, ponieważ LazyColumn umożliwia tylko tworzenie, pomiar i rysowanie widocznych elementów. Aby uniemożliwić użytkownikom korzystanie z nieefektywnych metod, zdecydowaliśmy się wycofać elementy ScrollableColumn i ScrollableRow i promować wykorzystanie metod LazyColumn i LazyRow. Użytkownicy mogą zdecydować, że nie potrzebują leniwego działania, i użyją modyfikatorów bezpośrednio w ten sposób: Column(Modifier.vertical Scroll(remember ScrollState())) (Ib976b, b/170468083).

  • Nowa metoda fabryczna items(count: Int) dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) i itemsIndexed(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) i itemsIndexed(Array) (I803fc, b/175562574)

  • Użyj ImeAction.None zamiast ImeAction.NoAction

    • Użyj ImeAction.Default zamiast ImeAction.Unspecified (Ie1bcc)
  • Wykorzystanie narzędzia TestCoroutineDispatcher w testowaniu (I532b6)

  • Zmieniono nazwę TextInputService.onStateUpdated na updateState (Id4853)

  • Przejście na podstawie definicji przejścia zostało wycofane (I0ac57)

  • Element TextUnitType.Inherit (dziedzicz) został usunięty. Użyj wartości TextUnitType.Unspecified. (I9ff64).

Wersja 1.0.0-alpha10

13 stycznia 2021 r.

Usługa androidx.compose.ui:ui-*:1.0.0-alpha10 została zwolniona. Wersja 1.0.0-alfa10 zawiera te zatwierdzenia.

Zmiana niezbędna

  • Zmiana struktury wewnętrznego interfejsu API kompilatora umożliwia grupowanie zmian w węzłach wygenerowanych w wyniku kompozycji do fazy „wprowadzania zmian” po zakończeniu wszystkich funkcji @Composable.

    Jest to niezgodna z działaniem zmiana, która może mieć wpływ na kod aplikacji, ponieważ węzły nie są już dostępne z wewnętrznych i eksperymentalnych interfejsów API do czasu zastosowania zmian. Zwykle można to obejść, umieszczając kod z takimi zależnościami w kompozycji SideEffect, aby opóźnić wykonanie kodu do momentu utworzenia i zainicjowania węzłów. (I018da)

Zmiany interfejsu API

  • Dodano funkcję Modifier.focusOrder(), która może służyć do określania niestandardowej kolejności przechodzenia między elementami ostrości (I90cf5, b/175899543, b/170155556, b/170155429).
  • Usunęliśmy wycofaną metodę skupiającą się na obserwatorium skupienia się na onFocusChanged lub onFocusEvent (I3ecb9, b/175156387)
  • Zmiany w interfejsie EditOperations API
    • Zmieniono nazwę operacji EditOperation na EditCommand
    • Dodano sufiks polecenia dla konkretnych implementacji EditOperation
    • Pole EditCommand nie jest już klasami danych.
    • Zmieniono nazwę funkcji EditOperation.process na applyTo
    • Zmieniono nazwę detektora zdarzeń wejściowych nainputEventCallback
    • (I0a366)
  • Usunięto nieużywane obiekty PxSquared, PxCubed i PxInverse. Zmieniono Size.center() na właściwość. (I973f7)
  • Moduł ui-test będzie teraz mógł konfigurować tworzenie modułów redukcji dla testowanych interfejsów użytkownika (Ibebd8).
  • zmodyfikowano Prędkość, aby uwzględnić części składowe i operacje matematyczne. (IB0447)
  • Zmieniliśmy nazwę @ExperimentalTesting na @ExperimentalTestApi, aby była zgodna z podobnymi eksperymentalnymi adnotacjami interfejsu API (Ia4502, b/171464963)
  • Nazwa Color.useOrElse() została zmieniona na Color.takeOrElse() (Ifdcf5).
  • Usunęliśmy nieużywane klasy DpInverse, DpSquared i DpCubed. (I4d62b)
  • Nazwa ograniczenia#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c).
  • Dodaj wywołanie zwrotne, aby powiadamiać właściciela o zmianie granic węzła układu. (I72fd1)
  • W przypadku klas wbudowanych ze stałą nieokreśloną dodawane są wartości atrybutów isSpecified, isUnspecified i useOrElse. (I93f7b, b/174310811)
  • Rozwiń interfejsy API ComposeView, aby umożliwić recykling widoków opartych na ComposeView i usuwanie ich kompozycji w celu późniejszego odtworzenia. Dodaj interfejsy API umożliwiające instalowanie i wykrywanie zasobów Rekompozytorów ograniczonych do okna oraz obiektów CompositionReferences do tworzenia kompozycji podrzędnych.

    Dodano funkcję ViewCompositionStrategy, która pozwala skonfigurować strategię usuwania kompozycji w obiektach [Abstract]ComposeViews. Domyślnym działaniem jest usuwanie po odłączeniu okna. (I860ab)

  • Usunięto publiczny interfejs API Any.identityHashCode() (I025d7).

  • Usunęliśmy interfejs toStringAsFixed i zastąpiliśmy nim bezpośrednio String.format. (Iaba6b)

  • Dodaj przełącznik do podstawowego pliku Strings.kt (I4a5b7, b/172366489)

  • Przeniesienie obiektu natywnego do modułu interfejsu i przekształcenie go w moduł wewnętrzny. Zaktualizowane użycie natywnego użycia klasy natywnej oznacza, że w implementacjach używana jest metoda „to MyClass”. (I4f734)

  • Modifier.focus() i Mmodifier.focusRequester() zostały wycofane. Użyj w zamian metod Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)

  • Wprowadzono opcję SelectionRegistrar.notifySelectableChange, aby powiadamiać użytkowników o aktualizacjach Selectable (Zaznaczanie) w usłudze SelectionManager. (I6ff30, b/173215242)

  • Wprowadzono właściwość Outline.bounds, która umożliwia uzyskanie prostokąta ograniczającego dla różnych implementacji konspektów. (I16e74, b/175093504)

  • Wycofano TestUiDispatcher. Użyj Dispatchers.Main (Ic171f, b/175385255)

  • ImeOptions i keyOptions nie są już klasą danych (I3c898, b/168684531).

  • Zmiany w interfejsie VisualTransformation API

    • Zmieniono nazwę OffsetMap na OffsetMapping
    • Zmieniono nazwę OffsetMapping.identityOffsetMap na OffsetMapping.Identity
    • Transformacja hasła nie jest już klasą danych.
    • Przeniesiono OffsetMapping do własnego pliku
    • (I0bdf3).
  • Zmieniono nazwę pozycji na DpOffset i usunęliśmy getRange() (Ib2dfd).

  • Zmieniono funkcję Dp.isFinite() na wartość Dp.isFinite (I50e00)

Poprawki błędów

  • Rekompozytor udostępnia teraz przepływ w bieżącym stanie, co pozwala monitorować jego aktywność i aktywność powiązanych efektów. (Ifb2b9).
  • Dostęp do natywnego zdarzenia keyEvent można teraz uzyskać przez keyEvent.nativeKeyEvent (I87c57, b/173086397)
  • Metoda animate() została zastąpiona przez animateAsState(), która zwraca State<T> zamiast T. Zwiększa to wydajność, ponieważ zakres unieważniania można zawęzić do miejsca, w którym odczytywana jest wartość stanu. (IB179e)
  • Dodaj interfejs API roli Semantics i rolę jako parametr do klikalnego, możliwego do wyboru i przełączenia interfejsu SemanticsModifier. Zmieniono Modifier.progressSemantics, tak aby Slider mógł z niego korzystać. (I216cd)
  • Nowy interfejs API Animatable oparty na współudziale, który zapewnia wzajemną wyłączność wśród animacji.
    • Nowa specyfikacja DecayAnimationSpec z obsługą wielowymiarowej animacji rozkładu
    • (I820f2, b/168014930)

Wersja 1.0.0-alpha09

16 grudnia 2020 roku

Usługa androidx.compose.ui:ui-*:1.0.0-alpha09 została zwolniona. Wersja 1.0.0-alfa09 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Wycofana funkcja KeyEvent.Alt została usunięta. Zamiast niej użyj klucza KeyEvent.isAltPressed. (IdD695).
  • Modifier.keyInputFilter i Modifier.previewKeyInputFilter został wycofany z użycia: Modifier.onKeyEvent i Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
  • Interfejs Modifier.focusObserver został wycofany. Użyj metody Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
  • W przypadku zawieszania interfejsów API danych wejściowych wskaźnika zmieniliśmy nazwę HandlePointerInputScope na AwaitPointerEventScope i HandlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755).
  • Autofill API to teraz eksperymentalny interfejs API, który wymaga włączenia (I0a1ec)
  • Dodanie deklaracji dotyczących zniszczenia w celu utworzenia instancji FocuSRequester (I35d84, b/174817008)
  • AccessibilityLabel została zmieniona na contentDescription. Wartość ułatwień dostępu została zmieniona na stateDescription. (I250f2)
  • Zdarzenia niestandardowe zostały usunięte z interfejsu API do wprowadzania danych wejściowych wskaźnika (Ia54d5, b/175142755)
  • Wprowadziliśmy kilka nowych funkcji w Rejestrze wyboru i przemianowaliśmy parametr onPositionChange na nazwę notificationPositionChange. (Ifbaf7).
  • Więcej użytkowników LayoutNode, które oznaczyliśmy jako wewnętrzne (I443c6)
  • Narzędzie LayoutInfo zostało wprowadzone do użytku w narzędziach i testach (I9b190)
  • AndroidOwner jest wewnętrzny (Ibcad0, b/170296980)
  • Usunięto adnotację ExperimentalPointerInput (Ia7a24).
  • Dodano zagnieżdżony system przewijania. Więcej informacji znajdziesz na stronie Modifier.nested Scroll (I36e15, b/162408885).
  • Parametr subcomposeInto(LayoutNode) został zmieniony na wewnętrzny (Id724a)
  • Interfejs Applier został zmieniony, aby uprościć tworzenie drzew w widoku od dołu, a nie od góry.

    Nazwa metody insert() została zmieniona na insertTopDown().

    Dodano nową metodę: insertBottomUp().

    Stosuje on węzły do edytowanego drzewa przy użyciu funkcji insertTopDown() lub insertBottomUp(), w zależności od tego, co sprawdza się lepiej.

    Niektóre drzewa, np. LayoutNode i View, są znacznie efektywniejsze w budowaniu od dołu niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, który trzeba było kopiować do każdego narzędzia, które wymagało oddolnej struktury w celu zwiększenia skuteczności. W przypadku tej zmiany właściwość Applier zastępuje zasadę insertBottomUp(), aby utworzyć drzewo od dołu do góry, i zastąpienie insertTopDown(), aby utworzyć drzewo od dołu. (Icbdc2)

  • Do właściwości AndroidDialogWindow dodano właściwości disableOnBackPress i merchantOnClickOutside. Pozwalają one określić, kiedy w oknie dialogowym ma być wywoływana funkcja lambda onWaitRequest. (If5e17).

  • Dodano interfejs PaintterResource API do obsługi nieprzezroczystych obiektów Painter pochodzących z formatów zasobów zrastrowanych (np. PNG) lub plików VectorDrawable. Konsumenci nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponentach lub modyfikatorach malarstwa. (I2c703, b/173818471)

  • Dodaliśmy modyfikator.clearAndSetSemantics, aby wyczyścić semantykę elementów podrzędnych i ustawić nowe. (I277ca)

  • Przeniesiono ContentDrawScope do modułu interfejsu ui-graphics, aby korzystać z modułu DrawScope. (Iee043, b/173832789)

  • Wprowadziliśmy interfejs API PathEffect, który pozwala tworzyć różne wzory kreślonych kształtów. Wycofaliśmy NativePathEffect. Zastąpiliśmy oczekiwaną/rzeczywistą implementacją PathEffect. (I5e976, b/171072166)

  • Dodaliśmy interfejsy IdlingResource do Compose jako wariant bezczynnych zasobów Espresso obsługiwany przez Compose. Można je zarejestrować i wyrejestrować za pomocą reguły ComposeTestRule (I433f3).

  • Usunięto globalną (wyrejestrowaną) rejestrację ComposeIdlingResource i globalną (wycofaną) rejestrację zegarów w ComposeIdlingResource (I32660).

Poprawki błędów

  • Funkcje lambda w modyfikatorach przesunięcia zwracają teraz wartość IntOffset, a nie liczbę zmiennoprzecinkową. (Ic9ee5, b/174137212, b/174146755)
  • Usunięto interfejsy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia wiadomości.

    Interfejsy CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API, którego można używać do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do stosowania poza interfejsem ui-tooling API, ponieważ dostarczają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c)

  • Zrefaktoryzowano ShaderBrush, aby leniwie utworzyć instancję cieniowania, gdy dostępne są informacje o rozmiarze środowiska rysowania. Przydaje się to przy definiowaniu gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania funkcji kompozycyjnej, bez konieczności wdrażania niestandardowych implementacji DrawModifier.

    Wycofaliśmy interfejsy API konstruktora funkcji gradientu. W obiekcie Gradient zastąpiliśmy metody fabryczne. (I511fc, b/173066799)

  • Wycofano LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Użyj LazyColumn i LazyRow (I5b48c)

  • Wycofana wersja BuildCompat.isAtLeastR (Idb37e)

  • Dodaliśmy funkcję fabryczną buildAnnotatedString, która pozwala utworzyć obiekt AnnotatedString. Wycofano funkcję konstruktora adnotatedString. (Idfe0b)

  • Usunęliśmy metody rozszerzeń w liczbach zmiennoprzecinkowych i podwójnych, aby konwertować wartości na radiany. Przeniesiona do funkcji prywatnej w implementacji PathParser, która była jedynym miejscem, w którym jest używana (I25f52)

Wersja 1.0.0-alpha08

Grudzień 2, 2020

Usługa androidx.compose.ui:ui-*:1.0.0-alpha08 została zwolniona. Wersja 1.0.0-alfa08 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodaj działanie semantyczne Odrzuć (I2b706)
  • Przeniesiono interfejsy API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierExit.kt, który zawiera aliasy typów i metody pomocnicze, które pomagają w migracji z wycofanych interfejsów API do obecnych. (Id6044, b/173834241)
  • W odpowiedzi na opinie interfejsu API zmieniliśmy też nazwę Modifier.drawLayer na Modifier.graphicsLayer. W odpowiedzi na opinie interfejsu API zaktualizowaliśmy też powiązane klasy na GraphicsLayer. (I0bd29, b/173834241)
  • Dodaliśmy nowe metody placeable.placeWithLayer() i placeable.placeRelativeWithLayer(), które umożliwiają umieszczanie elementu podrzędnego z warstwą graficzną do rysowania w niestandardowych układach i modyfikatorach układu. Dzięki temu możemy najpierw zoptymalizować ponowne rysowanie treści, dzięki czemu nie musimy ponownie rysować treści dziecka (Ibd8f6, b/170296989, b/171493718, b/173030831).
  • Element <T> został usunięty z deklaracji SubcomposeLayout. Możesz go użyć bez określania typu. (IB60c8)
  • W drewnie dodaliśmy interfejs API Modifier.scale/rotate.
    • Nazwa Modifier.drawOpacity została zmieniona na Modifier.alpha
    • Nazwa Modifier.drawShadow została zmieniona na Modifier.shadow (I264ca, b/173208140)
  • Sprawia, że pola czasu działania i pozycji PointerInputData nie mają wartości null. (Id468a).
  • MaterialTheme ustawia teraz prawidłowe kolory uchwytów wyboru i tła zaznaczenia. Aplikacje niematerialne mogą ręcznie używać elementów AmbientTextSelectionColors, aby dostosowywać kolory używane do zaznaczenia. (I1e6f4, b/139320372, b/139320907)
  • Dodano obiekt WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywny, oraz obiekt WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
  • Zaktualizowaliśmy TransformOrigin API, aby miał składnię destrukcyjną, która zwracała wartości pivotFractionX i pivotFractionY jako component1 i component2 (If43c4, b/173586560)
  • Dodano sprawdzanie nazw i pozycji parametrów kompozycyjnych lambda w celu sprawdzenia spójności z wytycznymi dotyczącymi tworzenia wiadomości. Zgodnie ze sprawdzaniem lintowania i wskazówkami przenieśliśmy też niektóre interfejsy API z użyciem nazwy children jako nazwy końcowej lambdy do content. (Iec48e).
  • Dodano interfejs API sprawdzający, czy podczas wysyłania kluczowego zdarzenia zostały naciśnięte klawisze modyfikujące Alt, Ctrl, Meta lub Shift. (I50ed9)
  • Dodano nowe obciążenie typu Modifier.drawLayer(). Zajmuje to nowy blok lambda w elemencie GraphicsLayerScope, gdzie definiujesz parametry warstwy w sposób, który umożliwia pominięcie ponownej kompozycji i przekazywania jej po zmianie stanu. DrawLayerModifier jest obecnie na wewnętrznym etapie przygotowań do migracji logiki do metody placeable.placeWithLayer() rozwiązania LayoutModifier (I15e9f, b/173030831)
  • Wycofany komponent Ambient został wycofany z sufiksem Ambient i zastąpił je nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi interfejsu Ambients i Compose API. (I33440)
  • Przeniesiono androidx.compose.ui.text.Typeface do: androidx.compose.ui.text.font.Typeface (Ic2b81)
  • Nazwa argumentu mergeAllDescendants została zmieniona na scalanie potomnych. (IB6250)
  • Nowy wykrywacz gestów przeciągania do zawieszania wejściowego interfejsu API, w tym blokowanie orientacji. (Icef25).
  • Zmieniliśmy nazwę komponentu VectorAsset na ImageVector. Przeniesiono komponent VectorAsset na Builder, aby stał się wewnętrznym klasą ImageVector, zgodnie z wytycznymi dotyczącymi interfejsu API. Dodano alias typu VectorAssetBuilder do połączenia z obiektem ImageVector.Builder w przypadku zgodności. (Icfdc8)
  • Zmieniliśmy nazwę komponentu ImageAsset i powiązane metody na ImageBitmap. (Ia2d99)
  • Dodaj parametr zIndex do parametru „place()” komponentu PlacesScope, aby Modifier.zIndex() działa teraz jako funkcja LayoutModifier, a każdy układ niestandardowy może ustawiać wartości zIndex dla elementów podrzędnych bezpośrednio w bloku miejsca docelowego (I711f7, b/171493718)
  • Przeniesiono właściwości semantyki podstawowej do interfejsu użytkownika (I6f05c)
  • Wycofywanie elementu Place(Offset) i placeRelative(Przesunięcie) Użyj przeciążeń z przesunięciami liczby całkowitej (I4c5e7)
  • Poprzednio wycofane interfejsy API zostały usunięte: usunięto parametr Modifier.onPositioned, użyj modułu Modifier.onGloballyPositioned. Usunięto modyfikator.onDraw, użyj Modifier.onDrawBehind. Usunięto modyfikator.plus. Użyj polecenia Modifier.then. Kolor. Usunięto ustawienie. Użyj wartości Kolor.Nieokreślony. Klasa PxBounds została usunięta. Zamiast niej użyj Rect. (IE9d02, b/172562222)
  • Interfejs Wyrównania został zaktualizowany i działa. (I46a07, b/172311734)
  • Wykrywanie gestów do kliknięcia, dwukrotnego dotknięcia, przytrzymania i wskaźnika naciśnięcia zostało dodane za pomocą nowego wskaźnika zawieszania. Dodaliśmy też kilka narzędzi, które ułatwiają programistom pisanie własnych wzorców do wykrywania gestów. (I00807).
  • Nazwa konta id została zmieniona na layoutId w domenie LayoutIdParentData. Nazwa „Measurable.id” została zmieniona na Measurable.layoutId. (Iadbcb, b/172449643)
  • Nowy detektor gestów wielodotykowych, w tym pomoce do wykrywania obracania, powiększania i przesuwania. (IC459d).
  • Wprowadziliśmy interfejsy SweepGradientShader i SweepGradientBrush API. (Ia22c1).
  • Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest obecnie w fazie eksperymentalnej (I6ef86, b/171378521)
  • Dodaj interfejsy API do przewijania opartego na współrzędnych:

    Dodaje interfejsy LazyListState.snapToItem i LazyListState.smooth ScrollBy, a także interfejsy API niższego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania, który kontroluje przewijanie, które czeka na zakończenie przewijania przed jego zwróceniem. (IE5642)

  • W podstawie musi być dodana funkcja Modifier.focusable. Umożliwia dodanie do komponentu zachowania, które można zaznaczyć, zachowując przy tym prawidłową semantykę i ułatwienia dostępu. (I41eb9, b/152525426, b/162865824)

  • Podaj domyślne implementacje metod i właściwości w regule AnimationClockTestRule, którą można delegować do jej clock (I7ea3d, b/173399709)

  • AndroidComposeTestRule może teraz akceptować niestandardowe programy uruchamiające aktywność (Ib8288, b/153623653, b/154135019)

  • Interfejs TextUkładResult.getLineVisibleEnd został wycofany. Zastąpienie TextLayoutResult.getLineEnd zawiera teraz nowy parametr availableEnd. (I73282)

  • Zaktualizowano TextFieldValue API

    • ustawił wartość pola TextFieldValue.composition tylko do odczytu
    • usunięto wyjątek dla nieprawidłowego zakresu wyboru (I4a675, b/172239032)
  • Obsługa TtsAnnotation w mechanizmie zamiany tekstu na mowę. (I54cc6)

  • Nowe interfejsy API do uruchamiania animacji w współrzędnych (Ied662)

Poprawki błędów

  • Nazwa parametru wyrównania Box została zmieniona na contentWyrównajment. (I2C957)
  • Zmieniono nazwy modyfikatorów przesunięciaPx na przesunięcie. Wykorzystują teraz parametry lambda zamiast stanu State. (Ic3021, b/173594846)
  • Dodano parametr resetInput do usługi TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • Dodano sprawdzanie lintowania parametrów modyfikatora w funkcjach kompozycyjnych. Ten lint sprawdza nazwy, typ zwracany, wartość domyślną i kolejność parametru pod kątem spójności ze wskazówkami dotyczącymi tworzenia wiadomości. (If493b).
  • Tymczasowo dodano opcję pozwalającą, by zegar TestAnimationClock był wywoływany przez MonotonicFrameClock (I1403b, b/173402197)
  • Dodano otokę kroju czcionki na Androidzie. Krój czcionki Androida można wczytać za pomocą funkcji typeface, np. typeface(Typeface.DEFAULT). Nazwa została też zmieniona z typefaceFromFontFamily() na typeface() (I52ab7)
  • Dodano sprawdzanie lintowania w celu sprawdzenia, czy funkcje fabryczne modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, co pozwala na płynne łączenie ich w łańcuchy. (I07981).
  • Usuń stary moduł testowania interfejsu i jego złącza (I3a7cb)
  • Rekompozytor nie akceptuje już klasy EmbeddingContext. Wymagane zależności harmonogramu są pobierane z programu EffectsCoroutineContext. Interfejs FrameManager został wycofany. Integracje z platformą powinny zainicjować własną globalną obsługę zrzutów. (I02369)
  • Przekazuj informacje o stylu do węzła ułatwień dostępu. (If5e8d).
  • Nazwa elementu TextUnit.Inherit została zmieniona na TextUnit.Nieokreślona, aby zachować spójność z innymi jednostkami. (Ifce19).

Interfejs tworzenia wiadomości w wersji 1.0.0-alfa07

11 listopada 2020 roku

Usługa androidx.compose.ui:ui-*:1.0.0-alpha07 została zwolniona. Wersja 1.0.0-alfa07 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Wprowadziliśmy klasę wbudowane ScaleFactor do reprezentowania współczynników skali dla osi poziomej i pionowej niezależnie od siebie na potrzeby niejednolitych przypadków użycia skalowania.
    • Dodano metodę computeScaleFactor do ContentScale
    • Dodano funkcję ContentScale.FillBounds do wykonywania niejednolitego skalowania w celu rozciągnięcia granic atrybutu src tak, aby w pełni zająć miejsce docelowe.
    • Dodaliśmy metody operatorów do obliczania parametrów ScaleFactor z parametrami Size.
    • (IC96a6, b/172291582)
  • Dodane zostały fabryki BiasWyrównaj i BiasabsPercentageDopasowaniement do tworzenia wyrównań. (IAC836, b/169406772)
  • Pozwól deweloperowi wymusić usunięcie zaznaczenia. (I90372)
  • Naprawiono błąd, przez który nie rysowano podwyższenia w widokach w widoku tworzenia. (If7782).
  • Utworzono interfejs API onDrawBehind w ContentDrawScope, aby dopasować konwencję nazewnictwa do metody Modifier.drawBehind. (I4fc3a, b/171955269)
  • Dodanie obsługi odległości kamery w celu uzupełnienia przekształceń 3D rotationX/rotationY w interfejsach API warstwy. (I40213, b/171492100)
  • Dodano element SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Elementu SubcomposeLayout można teraz używać bez dodawania elementu @OptIn (I708ad)
  • FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
  • Usunięto przezroczystość z modyfikatora DrShadow(), ponieważ była myląca. (I82c62, b/171624638)
  • Element MeasureResult został przeniesiony z obiektu MeasureScope. (Ibf96d, b/171184002)
  • Kilka symboli związanych z układem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
  • Usunięto wycofaną wartość FocusState2 (I686cb, b/168686446)
  • ZIndexModifier jest teraz wewnętrzny (I1808b, b/171493718)
  • Zaktualizowaliśmy typ zwracania metody lerp w parametrach rozmiaru, aby zwracał niepusty rozmiar w celu uniknięcia niepotrzebnego pudełka. (IB0044)
  • Dodano TestMonotonicFrameClock do testowania kodu, który korzysta z mechanizmu MonotonicFrameClock Compose do oczekiwania na zdarzenia klatki kompozycji przy użyciu metody runBlockTest kotlinx-coroutines (I4402f).
  • Usunięto AccessibilityScope.localToGlobal (I15299, b/171462785)
  • Dodano wyszukiwarkę onAllNodesWithSubstring (I81dd7, b/171462889)
  • Moduł androidx.ui.test został wycofany. Przejdź na androidx.compose.ui.test i androidx.compose.ui.test.junit4 (I452e8).

Poprawki błędów

  • Sekcja CapToBitmap została przeniesiona do tagu scanToImage. (I86385)
  • Foundation.Text została wycofana i zastąpiona materiałem material.Text. Informacje o podstawowym, nieopiniowanym interfejsie API tekstowym, który nie przetwarza wartości z motywu, znajdziesz na stronie androidx.compose.foundation.BasicText. (If64cb).
  • Zaktualizuj pola TextFields, aby akceptować KlawiaturaOptions (Ida7f3)
  • Zmień nazwę KlawiaturaOptions na ImeOptions (I82f36).
  • Przeniesiono KlawiaturaType i ImeAction do KlawiaturaOptions (I910ce).
  • Jako alternatywę dla określania elementów otoczenia dodano metodę ProvideDefault jako alternatywę dla elementów otoczenia. Można jej używać do określania wartości otoczenia, które będą ustawiane tylko wtedy, gdy nie podano jeszcze żadnej wartości otoczenia. (Id6635, b/171024925)
  • Pole BaseTextField zostało wycofane. Użyj w zamian pola BasicTextField. (I896eb)
  • Przedstawienie modułu ui-test-junit4 (Ib91f8)
  • Nazwa „relativePaddingFrom” została zmieniona na paddingFrom. Dodaliśmy modyfikator paddingFromBaseline, który ułatwia określanie odległości od granic układu do punktów odniesienia tekstu. (I0440a, b/170633813)
  • Nazwa LaunchedTask została zmieniona na LaunchedEffect, aby zachować spójność z interfejsami API SideEffect i DiposableEffect. Aby zachęcić do stosowania sprawdzonych metod, metoda LaunchedEffect bez parametrów tematu jest niedozwolona. (Ifd3d4).
  • Wprowadzono zasoby kompozycyjne, które są ponownie komponowane po zaktualizowaniu konfiguracji. (I6387c, b/167352819)
  • Funkcja rekompozycji wymaga teraz CoroutineContext podczas budowy (Ic4610)
  • Sumuj wartości zIndex, gdy zastosowano kilka wartości Modifier.zIndex(). Wcześniej wygrywała pierwsza. (Ic514c, b/170623936)
  • Zmiany w wewnętrznej implementacji SlotTable, które nie powinny mieć wpływu na publiczny interfejs API. (If9828).
  • Dodano opcję autokorekty IME dla klawiatury (I57b8d)
  • Plik androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb)
  • Usunięto KlawiaturaOptions.toImeOptions z publicznego interfejsu API. (IC2e45).

Treści tłumaczone przez użytkowników zewnętrznych

  • Wyłączona publikacja wewnętrznego artefaktu androidx.compose.ui:ui-text-android (Ib93fa)

Wersja 1.0.0-alpha06

28 października 2020 r.

Usługa androidx.compose.ui:ui-*:1.0.0-alpha06 została zwolniona. Wersja 1.0.0-alfa06 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Funkcja Rekompozytor jest teraz elementem CompositionReference oraz prawidłowym elementem nadrzędnym kompozycji. Bezpośrednie przekomponowanie jest teraz wymagane w mniejszej liczbie miejsc. (I4036f)
  • Zrezygnuj z metody VectorPainter i zamiast niej użyj komponentu PamiętajVectorPainter, aby lepiej wskazać, że interfejs kompozycyjny interfejs API wewnętrznie wykorzystuje funkcję „zapamiętuj” w celu zachowywania danych w różnych kompozycjach. (Ifda43).
  • Zaktualizowaliśmy interfejs Modifier.drawWithCache API, aby udostępnić ContentDrawScope jako zakres odbiorcy zamiast DrawScope. Umożliwi to implementacjom zmianę kolejności poleceń rysowania. Jest to przydatne w przypadkach użycia mieszania/kolorowania, w których najpierw muszą zostać wyrenderowane piksele treści, aby odpowiedni algorytm trybu mieszania został zastosowany prawidłowo. (IE7ec8).
  • Przenieś obiekt SimpleContainer do PopupTestUtils.kt (I78c57).
  • ConsumedData nie jest już klasą danych. Szczegółowe informacje znajdziesz na stronie https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • Popraw pozycję uchwytu RTL. (I6e1e0).
  • Zrefaktoryzowano interfejsy DrawScope i ContentDrawScope zamiast klas abstrakcyjnych.
    • Utworzono implementację CanvasDrawScope dla DrawScope
    • Zrefaktoryzowane implementacje narzędzia DrrawScope w zamian za pomocą CanvasScope
    • Utworzyliśmy DrawContext, aby opakowywać zależności DawScope
    • Usunięto wycofane metody w DrawScope (I56f5e)
  • Niezgodna z zasadami: usunęliśmy wartość zwracaną z metody PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o wykorzystaniu. Zamiast zwracać dane z metody PointerInputFilter.onPointerEvent(...), możesz teraz po prostu zmodyfikować dane o wykorzystaniu przekazywanej wartości PointerEvents. (I6acd0).
  • Opracowano interfejsy MeasureScope i IntrinsicMeasureScope. (I1a087, b/170461665)
  • Funkcja scalania dla AdjustLine została ukryta. (I9da1a, b/170612900, b/170611568)
  • Dodaj możliwość podawania informacji inspektora w modyfikatorze utworzonym (Idee08, b/163494569)
  • Do menu wyboru dodano opcję SelectAll (Ief02b).
  • Zaktualizowaliśmy narzędzie DrawTransform.rotate, tak aby przyjęło domyślny parametr przestawny o wartości środkowej, aby pasował do dokumentacji.
    • Zaktualizowano metodę DrawScope.rotateRad, tak aby przetwarzała przesunięcie dla punktu przestawnego, aby pasowało do innych metod przekształcania.
    • Wycofano przeciążenie DrawScope.rotateRad, które przyjmowało elementy zmiennoprzecinkowe dla współrzędnych x i y osi czasu.
    • (Iffcbb, b/170434992)

Poprawki błędów

  • Sprawdzanie lint interfejsu API dla MissingGetterMatchingBuilder jest włączone dla androidx (I4bbea, b/138602561)
  • Dodaj test. (I6b8ae),
  • Włącz przejścia w ComposeTestRule. Usuń tę opcję, by włączyć migający kursor z reguły ComposeTestRule. (If0de3).
  • Dodano opcję IME dla wielkich liter (I8ac38).
  • Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
  • Przenieś obiekt SimpleContainer do PopupTestUtils.kt (I65c3e).
  • Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlić sposób jego używania w usłudze Compose. Zaktualizowaliśmy dokumentację, by wskazać, że ujemne promienie narożników są zaciśnięte do zera. (I130c7, b/168762961)
  • poprawiono współpracę z Androidem dzięki dalszemu wysyłaniu zdarzeń MotionEvents do podrzędnych widoków Androida, które zwracają wartość false dla zdarzeń onTouchEvent w przypadku wszystkich działań oprócz ACTION_DOWN (I94c5a, b/170320973).
  • Box został przekształcony w funkcję wbudowaną. (Ibce0c, b/155056091)

Treści tłumaczone przez użytkowników zewnętrznych

  • Obsługuj różne języki w usługach AnnotatedString.capitalize i AnnotatedString.decapitalize (I4aa7f)

Wersja 1.0.0-alpha05

14 października 2020 r.

Usługa androidx.compose.ui:ui-*:1.0.0-alpha05 została zwolniona. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodaj DSL do określania informacji o inspektorze (Ic9a22)
  • Przenieś do tekstu przytrzymanie. (Iff2bc)
  • eksperymentalny modyfikator zawieszenia danych wejściowych (Ia77d2),
  • Dodano działania ułatwień dostępu Kopiuj/wklej/wytnij (I6db4f)
  • Usunięto publiczny konstruktor dla właściciela Androida (Iacaef).
  • Wyskakujące okienka i okna dialogowe dziedziczą teraz flagę FLAG_SECURE z okna nadrzędnego. Dodaliśmy też opcję bezpośredniego konfigurowania (I64966, b/143778148, b/143778149)
  • Dane o wykorzystaniu można teraz zmieniać. Poza tym wywołania funkcji rozszerzeń, które obecnie wykorzystują dane, nie zwracają już nowej wartości PointerInputChange, tylko zmieniają podany parametr PointerInputChange.

    Jest to pierwszy krok w dwuetapowym procesie, który ma na celu zapewnienie zmiennych danych PointerEvent w taki sposób, że innych danych wskaźników nie można edytować przez kod użytkownika. Drugim krokiem będzie usunięcie zwracanego typu List<PointerInputChange> z tabeli PointerInputFilter.onPointerEvent(...). (Id067e)

  • Wyłącz zaznaczanie w tekście i wersję demonstracyjną. (IE7E97).

  • Made onGloballyPositioned (Wykonano je na całym świecie) w funkcji wbudowanej (I15830)

  • Nazwa OnPositionedModifier została zmieniona na OnGloballyPositionedModifier, a nazwa onPositioned() została zmieniona na onGloballyPositioned(). (I587e8, b/169083903).

  • Do właściwości właściciela dodano właściwość hasPendingMeasureOrLayout. Informuje ona, czy właściciel ma jakieś oczekujące prace nad układem. (I3d9f8, b/169038599)

  • Dodano interfejs API do automatycznego usuwania zaznaczenia (Ie1dc2, b/161487952)

  • Czcionka PointerInputFilter.onPointerInput(...) została usunięta. W ich miejscu powinna być używana wartość PointerInputFilter.onPointerEvent(...). (I6f04a)

  • Zmiany rozmiaru

    • Usunięto parametr Size.getFlipped
    • Usunięto rozmiar.rem
    • Usunięto Size.truncDiv (Ief44d, b/169790720)
  • W ramach standaryzacji wartości w klasach wbudowanych zmień nazwę Kolor.Unset na Kolor. Nieokreślona, aby zachować spójność z innymi klasami wbudowanych (I97611, b/169797763).

  • Wprowadzono tekst TextOverflow.None. Gdy nadmiarowe ma wartość Brak, tekst nie obsługuje już nadmiarowych elementów i zgłasza rzeczywisty rozmiar do LayoutNode. (I175c9, b/158830170)

  • Nazwa parametru zakresu w obiekcie AnnotatedString.Builder.addStringAnnotation została zmieniona na tag, by zapewnić spójność interfejsu API. (I7c8cb)

Poprawki błędów

  • Wydajność przewijania w przypadku LazyColumn/Row zwiększa się, ponieważ podczas każdego przewijania ma mniej pracy w subkompozycji. Do klasy kompozycji dodano nową metodę hasInvalidations(). Nazwa metody hasPendingChanges() z Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Zaktualizowano Size.Nieokreślone parametry na Float.NaN, a nie Float.POSITIVE_INFINITY. Zaktualizowaliśmy implementacje narzędzia Painter, aby umożliwić sprawdzanie pod kątem rozmiarów nieokreślonych i nieskończonych. (I95a7e)
  • Kolejność wywołań funkcji Place() w układach niestandardowych określa teraz kolejność rysowania elementów podrzędnych (Ibc9f6).
  • Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907).
  • Dodaliśmy wycinki klas na Androida, które są dostępne na starszych platformach, aby w miarę możliwości nie używać odczuć. (IA1790).
  • Usunięty błąd: jeśli wyświetlana klawiatura oprogramowania powodowała tłumaczenie aplikacji, współrzędne wejściowe wskaźnika były nieprawidłowe. (Ic4cec, b/163077821)

Wersja 1.0.0-alpha04

1 października 2020 roku

Usługa androidx.compose.ui:ui-*:1.0.0-alpha04 została zwolniona. Wersja 1.0.0-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano element WłaścicielScope, aby umożliwić gromadzenie zakresów obserwacji układu i rysunków, gdy przestają one działać. (Ic4cf8).
  • Dodano funkcje OnRemeasuredModifier i onSizeChanged() do odbierania wywołania zwrotnego po ponownym zmierzeniu układu treści i zmianie rozmiaru. (I657cf, b/154108792)
  • Dodaj działanie semantyki długiego kliknięcia (I6281b, b/156468846)
  • Zmieniono ustawienia FocusManagera na prywatne. (I7872f)
  • Zaktualizowaliśmy implementację, by utworzyć dedykowaną implementację DrawCacheModifier zamiast dodawać opcjonalne właściwości w DawModifier.

    Zaktualizowana dokumentacja różnych metod (Ibd166)

  • Ustaw TextRange w tekście, aby uniknąć tworzenia obiektów. (Id034b)

  • Nie można już odczytywać danych PlacementScope#parentWidth i placementScope#parentLayoutDirection z bloku miejsc docelowych układu niestandardowego. (Icc1ae, b/168295623)

  • do właściwości semantyki dodaj parametr Accessibility ScrollState. (Ifeda9).

  • Wprowadzenie modułu Modifier.drawWithCache do tworzenia obiektu rysunku, który warunkowo odtwarza zależności zależne od informacji o rozmiarze i stanie (I376dc).

  • Ograniczenia akapitu zostały usunięte. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712).

Poprawki błędów

  • Zaktualizowano wiele interfejsów Graphics API.
    • Zaktualizowaliśmy interfejsy API skalowania i obrotu przekształcania, aby wykorzystywały pojedynczy parametr Offset do reprezentowania współrzędnych przestawnej zamiast osobnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform
    • Usunięto metody Rect.expandToInclude i Rect.join
    • Zaktualizowaliśmy dokumentację dotyczącą promieni eliptycznych. Oprócz eliptycznego
    • Dodaliśmy dokumentację wskazującą, że publiczny konstruktor dla wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale wystąpienie obiektów Radius należy tworzyć za pomocą ich konstruktorów funkcji.
    • Usunęliśmy interfejsy RoundRect API do wysyłania zapytań dotyczących górnych praw, dolnych, dolnej, środkowej części itp.
    • Wycofano Rect.shift na rzecz Rect.translate
    • Usunięto interfejsy API RoundRect.grow i Rect.shrink
    • Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect
    • Usunęliśmy metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Nazwa RoundRect.longestSide została zmieniona na RoundRect.maxDimensions
    • Zmieniono nazwę RoundRect.shortestSide na RoundRect.mindimension
    • Zmieniono RoundRect.center na właściwość, a nie funkcję
    • Zaktualizowaliśmy konstruktor RoundRect, który wykorzystuje właściwości typu Radius zamiast poszczególnych parametrów dla wartości promieni x/y.
    • Usunęliśmy interfejsy Size API, które zakładały, że jest to prostokąt o źródle wartości 0,0
    • Do interfejsu Radius dodano interfejs API destrukcyjny.
    • Przenieśliśmy różne funkcje rozszerzenia RoundRect na właściwości
    • (I8f5c7, b/168762961)
  • Fundament.Box został wycofany. Zamiast niej użyj elementu Foundation.layout.Box. (IE5950, b/167680279)
  • Nazwa stosu została zmieniona na Box. Dotychczasowa wersja Box zostanie wycofana i zastąpi nową nową wersją na stronie compose.foundation.layout. Działanie nowego pola to układanie elementów podrzędnych jedna nad drugą, jeśli ma ona kilka elementów podrzędnych. Różni się to od poprzedniej skrzynki, która działała podobnie jak kolumna. (I94893, b/167680279)
  • Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać do pola ozdoby lub dopełnienie, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.splash) (Ibae92, b/167680279)
  • Zaktualizowano wiele interfejsów Graphics API.
    • Zaktualizowaliśmy interfejsy API DrawScope z metodami przekształcania o zakresie wskazującym, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po wywołaniu wywołania zwrotnego
    • Zaktualizowaliśmy dokumentację dotyczącą clipPath, aby odwoływały się do ścieżki zamiast zaokrąglonego prostokąta
    • Poprawiono odstępy w dokumentacji dla prawego parametru w clipPath
    • Zmieniliśmy nazwę DrawScope.drawCanvas na DrawIntoCanvas i usunęliśmy parametr rozmiaru.
    • Zmieniono nazwę parametrów Dx/dy w metodzie wstawienia na poziomą i pionową
    • Dodano przeciążenie wektora, które zapewnia tę samą wartość wstawienia do wszystkich 4 progów
    • Usunęliśmy dokumentację metody wstawiania, która wskazuje, że wstawienie zostanie zastosowane do wszystkich 4 stron,
    • Zaktualizowano dokumentację klasy Rect
    • Zaktualizowaliśmy komentarze do parametrów Rect, aby pasowały do stylu kdoc
    • Usunięto elementy Rect.join i Rect.expandToInclude
    • Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
    • (If086a, b/167737376)
  • Adnotacja rootAnimationClockFactory, uzyskania włączone
  • Usuń element SelectionContainer z góry, aby wyłączyć wybór domyślny i uniknąć nieoczekiwanego zachowania. Można użyć elementu SelectionContainer, aby zapakować zawartość, którą należy zaznaczyć. (I8dfe0, b/158459594)

Wersja 1.0.0-alpha03

16 września 2020 roku

Usługa androidx.compose.ui:ui-*:1.0.0-alpha03 została zwolniona. Wersja 1.0.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Usuń działania semantyczne polegające na przewijaniu do przodu i do tyłu. Dodaliśmy kroki w AccessibilityRangeInfo. (Ia47b0).
  • Usunięto onInvalidate() z Owner – unieważnienie uchwytów OwnedLayer. (Ica72b, b/162061312)
  • W interfejsie Size API usunęliśmy metody operatorów, które wykorzystują parametry Offset. Rezultaty tych działań są niejasne, a ich typ jest nieoczekiwany. Np. czy rozmiar – przesunięcie powinno zwracać przesunięcie lub wynik rozmiaru z różnicą?

    Usunięto też wycofane metody dotyczące klasy Size. (Iec902, b/166514214)

Poprawki błędów

  • Poprawiono nieprawidłowe rysowanie elementów LazyColumn, co w niektórych warunkach również powodowało awarie. (Ibcf17, b/163066980, b/165921895)
  • Funkcje DpConstraints i interfejsy API korzystające z nich zostały wycofane. (I90cdb, b/167389835)
  • Przeniesiono createAndroidComposeRule i AndroidInputDispatcher z androidx.ui.test.android do androidx.ui.test (Idef08, b/164060572)
  • Spójnie przemianowaliśmy zastosowania grawitacji, aby wyrównać lub wyrównać interfejsy API układu. (I2421a, b/164077038)
  • Dodano onNode i inne metody globalne w ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (IEAE36).

Wersja 1.0.0-alpha02

Wrzesień 2, 2020

Usługa androidx.compose.ui:ui-*:1.0.0-alpha02 została zwolniona. Wersja 1.0.0-alfa02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • usuń wywołanie zwrotne w celu powiadamiania właściciela o zmianie granic węzła układu. (If654e, b/166106882)
  • Dodaliśmy obsługę parametrów typu wypełnienia w ścieżkach graficznych wektorowych, aby umożliwić obsługę wycięć kształtów zgodnie z regułami wypełniania ścieżek w przypadku nawet zerowej lub niezerowej wartości. (I43dd2)
  • Czas działania i szybkość działania są teraz klasami wbudowanymi (I48f4a)
  • Czas trwania jest teraz w formie zajęć w tekście (I565eb)
  • Dodaj wywołanie zwrotne, aby powiadamiać właściciela o zmianie granic węzła układu. (IC40b3).
  • Rozwiązaliśmy problem polegający na tym, że konstruktor funkcji prostokąta z odsunięciem i promieniem generował prostokąt w kolejności lewo, prawo, góra, dół, a nie lewo, góra, prawo i dół.

    Usunęliśmy wycofane metody towarzyszące w Rect na rzecz konstruktorów funkcji.

    Dodano testy weryfikujące metody w Rect.kt (I08460, b/165822356)

Poprawki błędów

  • Dodaliśmy MutableRect – prostokąt, który można modyfikować. (I71bd2, b/160140398)
  • Matrix4 została zastąpiona matrycą. Wszystkie pozostałe części pakietu Vectormath zostały usunięte. (Ibd665, b/160140398)
  • Zmieniła się konwencja wywoływania funkcji kompozycyjnych. To jest zmiana binarna, która powoduje niezgodność. Wszystkie biblioteki muszą zostać ponownie skompilowane, aby działały z tą wersją wtyczki kompilatora kompilatora.

    Ta zmiana nie powoduje zmiany powodującej niezgodność na poziomie źródła, ponieważ jedynymi interfejsami API, które uległy zmianie, są interfejsy API kompilatora, dla których jednoznacznie wyraziła na to zgodę. (I7afd2, b/158123185)

  • Usunięto awarię, która mogła wystąpić, gdy wysyłanie do PointerInputFilter powodowało synchroniczne usuwanie obiektu PointerInputFilter. (I58f25)

Wersja 1.0.0-alpha01

26 sierpnia 2020 r.

Usługa androidx.compose.ui:ui-*:1.0.0-alpha01 została zwolniona. Wersja 1.0.0-alfa01 zawiera te zatwierdzenia.

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

Usługa androidx.compose.ui:ui-*:0.1.0-dev17 została zwolniona. Wersja 0.1.0-dev17 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Interfejs emitView został wycofany. Jeśli to możliwe, do przesyłania wyświetleń w funkcji tworzenia wiadomości używaj zamiast tego AndroidView. Bezpośrednie tworzenie widoków i grup widoków nie będzie w przyszłości obsługiwane, chyba że będą one pozostawione w drzewie kompozycji (gdy będzie to możliwe w AndroidView). (I29b1e, b/163871221)
  • Interfejs FocusState2 został wycofany i zastąpiony przez regułę FocusState (Ia8b79, b/160822876, b/160923332)
  • Wycofane przeciążenia AndroidView zostały usunięte. (I946b9, b/163802393)
  • Niestandardowe źródła danych mogą teraz zadeklarować, że co najmniej 1 z nich można pominąć i ponownie skomponować niezależnie od emisji. (Ibbd13).
  • Zmieniliśmy klasy wektorów, tak aby nie były już klasami danych, ponieważ do kompozycji używana jest ta sama instancja obiektu.

    Dodano flagę mutableStateOf dla elementu VectorPainter do warunkowego ponownego rysowania w przypadku zmiany zawartości wektora.

    Zrefaktoryzowana instancja Vector Komponent, która będzie częścią VectorPainter, ponieważ jest ponownie używana w różnych kompozycjach.

    zaktualizowaliśmy pola GroupKomponent i Ścieżka komponentów, aby można było zmieniać ich pola nazw (Ieae45, b/151378808).

  • Usunięto: onChildPositioned i OnChildPositionedModifier. W układzie podrzędnym deweloperzy powinni zamiast tego używać właściwości onPositioned i OnPositionedModifier. (I4522e, b/162109766)

  • Przesunięcie stało się klasą wbudowaną (Iaec70)

  • do komponentu SelectionContainer (I4aada, b/161487952) dodano parametr modyfikatora.

  • Usunięto wycofaną funkcję FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • Do tabeli SemanticsPropertyKey dodano funkcję lambda (mergePolicy). Pozwala to zdefiniować niestandardową zasadę łączenia semantyki mergeAllDescendants. Domyślną zasadą jest użycie wartości nadrzędnej, jeśli już istnieje, lub wartości podrzędnej. (Iaf6c4, b/161979921)

  • Ograniczenia są teraz klasą wbudowaną (I88736)

  • Dodano element FocusManager, który usuwa typową logikę fokusu z AndroidComposeView (I528ef, b/161487952, b/162206799)

  • Zaktualizowano nazwy PointerEventPass w wersji alfa. (Ifda6f).

  • IntOffset jest teraz klasą wbudowaną (Iac0bf).

  • IntSize jest teraz klasą wbudowaną (I2bf42)

  • Nazwa usługi PlacementScope.placeAbsolute() została zmieniona na PlacementScope.place(), a poprzednia nazwa (PlacementScope.place()) na PlacementScope.placeRelative(). W efekcie metoda PlacementScope.place() nie będzie już automatycznie dublować położenia w kontekstach od prawej do lewej. Jeśli chcesz, użyj PlacementScope.placeRelative(). (I873ac, b/162916675)

  • AlertDialog używa teraz FlowRow do obsługi przycisków (I00ec1, b/161809319, b/143682374)

  • Udostępniliśmy narzędzia testowe niepubliczne, ponieważ nie znajdują się w tych miejscach. Zostaną upublicznione w przyszłości. (I32ab1)

  • refaktoryzowana organizacja kodu wejściowego wskaźnika. (IE3f45)

  • Wycofane PxBounds na rzecz Rect. Zaktualizowano wszystkie przypadki użycia PxBounds w polu „PxBounds” i dodano odpowiednie wycofanie/zastąpienie adnotacjami, aby wspomóc migrację. (I37038, b/162627058)

  • Usunięto wycofane zdarzenie KeyEvent2. Zamiast tego użyj zdarzenia KeyEvent. (Ied2d0, b/162097587)

  • KeyEvent ma właściwość Unicode, która umożliwia uzyskanie znaku Unicode wygenerowanego przez określoną kombinację stanu klucza i meta klucza (If3afc).

  • Udostępnił interfejs API DelayUp i powiązane z nim klasy, ponieważ bardzo prawdopodobne jest, że ulegną zmianie. (I56d6f)

  • Usunęliśmy 2 elementy PointerEventPass, które nie są już potrzebne. (I3dd9d)

  • Dodaj parametr color [kolor], shadow i Textdecoration do Paragraph.paint. Ta funkcja jest przydatna, by uniknąć niepotrzebnego odtwarzania akapitu. (I81689)

Poprawki błędów

  • Usunięto wywołania zwrotne onFocusChanged z TextField. Zamiast niej użyj metody Modifier.focusObserver. (I51089, b/161297615)
  • Interfejs Modifier.drawBorder został wycofany. Zamiast niego użyj metody Modifier.granic. Klasa danych obramowania została zastąpiona przez BorderStroke (I4257d, b/158160576)
  • Usunięto wycofane wywołania FrameManager.

    Wewnętrzne interfejsy API tworzenia wiadomości zostały zmienione, aby zmniejszyć obciążenie związane ze śledzeniem obiektów stanu, takich jak mutableStateof() (I80ba6)

  • Funkcje Vertical Scroller oraz Level Scroller zostały usunięte. Zamiast niej użyj komponentu ScrollableColumn/Row. Usunięto modyfikator.drawBackground. Użyj pliku Modifier.background (I73b0d, b/163019183)

  • Awaria, gdy element zapisujący stan został naprawiony w pętli for. Teraz ten sam klucz jest dozwolony w tabeli savedInstanceState(), więc interfejs API UiSavedStateRegistry jest teraz dostosowany do tego nowego wymogu (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

  • Funkcja kompozycyjna state { ... } została wycofana i zastąpiła jawne wywołania remember { mutableStateOf(...) }, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem. Dopasowanie do wzorca by mutableStateOf() w przypadku przekazywania właściwości klas. (IA5727).

  • Zmieniliśmy nazwę parametru RRect na RoundRect, by lepiej dopasować ją do wzorców nazewnictwa tworzenia kompozycji Utworzyliśmy podobne konstruktory funkcji do konstruktorów funkcji RRect i wycofanych konstruktorów funkcji RRect (I5d325)

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

Usługa androidx.compose.ui:ui-*:0.1.0-dev16 została zwolniona. Wersja 0.1.0-dev16 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Funkcja OnChildPositioned została wycofana. Użyj w zamian elementu OnPositioned w elemencie podrzędnym. (I87f95, b/162109766)
  • Metoda setViewContent została wycofana. Zamiast niej należy używać parametru setContent. (I7e497, b/160335130)
  • Dodano interfejs AndroidViewBinding API do rozszerzania i komponowania zasobów szablonu w oparciu o ViewBinding. (I081C6)
  • Kluczowe zdarzenie2 zostało zastąpione zdarzeniem KeyEvent (I2d770, b/162097585)
  • Dodano obsługę alternatywnego klucza sprzętowego (I9036b).
  • Interfejs FocusManager został wycofany. Użyj w zamian metod Modifier.focus(), Modifier.focusObserver() i Modifier.focusRequester(). (I74ae4, b/162211322)
  • loadVectorResource obsługuje atrybuty trimPath (I808fe)
  • Przenieś okno do interfejsu użytkownika (I47fa6)
  • Usunęliśmy 2 elementy PointerEventPass, które nie są już potrzebne. (I33ca7).
  • Wdrożyliśmy PointerInteropModifier, który umożliwia otrzymywanie zdarzeń MotionEvents i korzystanie z funkcji tworzenia wiadomości tak, jakby to było w przypadku implementacji interfejsu Android View. (Ieb08c)
  • Usunięto wycofany modyfikator tagów. Zamiast niego użyj pola layoutId. (Idaa05, b/162023919)
  • Interfejsy API do obsługi tekstu od prawej do lewej zostały zaktualizowane. Dodano parametr LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Modifier.rtl oraz Modifier.ltr zostały usunięte. (I080B3)
  • Przycinanie ścieżki pomocy w grafice wektorowej (Ie16c9, b/158188351)
  • dodano funkcję Modifier.layout(), która umożliwia wygodne tworzenie niestandardowego modyfikatora układu (I73b69, b/161355194).
  • Dodaliśmy nowy interfejs AndroidView API i wycofaliśmy obecne. (I5bcfd)
  • Interfejs Modifier.plus został wycofany. Użyj interfejsu Modifier.then. Pole „To” daje silniejszy sygnał określający kolejność, ale uniemożliwia też wpisanie słowa Modifier.padding().background() + anotherModifier, które przerywa łańcuch i jest trudniejsze do odczytania (Iedd58, b/161529964).
  • Dodano podklasy widoku ComposeView do hostowania treści elementu Compose w hierarchii widoków. (I46357)
  • Row i Column są teraz funkcjami wbudowanymi, więc znacznie zmniejszają wymagania związane z ich używaniem. (I75c10)
  • Element SubcomposeLayout został dodany. Jest to element podstawowy niskiego poziomu, który umożliwia tworzenie elementów podrzędnych podczas pomiaru, jeśli chcemy użyć niektórych wartości dostępnych dopiero później podczas pomiaru składu drzewa podrzędnego. Na przykład element WithConstraints nie jest implementowany za pomocą metody SubcomposeLayout. (I25cc8)
  • Dodano SemanticsNode.positionInRoot, aby uzyskać położenie węzła SemanticsNode względem poziomu głównego hierarchii Compose (Icdf26, b/161336532).
  • Zdarzenia MotionEvents były przekazywane z Androida, do Compose, a następnie Androida. (I14be8, b/158034713)
  • Usunięto wyskakujące okienko. (I00430).
  • Stała pozycja wyskakującego okienka na wyświetlaczu z wycięciem. (Idd7dd)
  • Dodaj działanie związane z ułatwieniami dostępu, aby uzyskać wynik TextLayoutResult (I9d6e6)
  • Dodano parametr RemeasurementModifier. Umożliwia on synchroniczne pomiary układu. Ponowne pomiary i przekaźniki są zazwyczaj wykonywane automatycznie, ale używamy tego parametru w elementach LazyColumnItem podczas przewijania. (I5f331, b/160791058)
  • Usunięto polecenie getLineEllipsisOffset/getLineEllipsisCount. Użyj metody getLineVisibleEnd/getLineEnd/isLineEllippped. (I85aa2).
  • Dla celów związanych ze sprawdzonymi metodami dodaj znaczniki/adnotacje. (I66b20)
  • udostępnić więcej interfejsów API wierszy w TextLayoutResult. (I79bd2)
  • Wbudowane konwertery wektorowe służące do konwersji takich jednostek są teraz dostępne w programie Foo.VectorConverter, np. Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter (I3e273).

Poprawki błędów

  • Naprawianie ogólnych poprawek interfejsu API (I077bc)
    1. Usuń nieużywany interfejs OffsetBase
    2. Wyrównuje klasy Offset i IntOffset, aby mieć spójny interfejs API
    3. Zmień nazwę IntOffset.Origin na IntOffset.Zero, by była zgodna z interfejsem Offset API
    4. Przeniesiono metodę natywnego Canvas z interfejsu Canvas, aby zachęcić konsumentów do tworzenia własnych instancji Canvas
    5. Utworzono stub klasy EmptyCanvas do refaktoryzacji DrawScope jako parametr niepusty zamiast lateinit i zapewnia niedodawanie pola do wartości null
    6. Zmieniono nazwę wyliczeń ClipOp na sprawy Pascal
    7. Zmieniono nazwę enumów filtraJakość na typ Pascal
    8. Zmieniono nazwę wyliczeń Stroke Join na Case Pascal
    9. Zmieniono nazwę wyliczeń PointMode na typ Pascal
    10. Zmieniono nazwy enum PaintingStyle na przypadek Pascala
    11. Zmieniono nazwę wyliczeń PathFillType na przypadek Pascal
    12. Zmieniono nazwę wyliczeń StrokeCap na przypadki Pascal
    13. zaktualizowaliśmy implementację DrawCache tak, aby nie używała już parametrów Lateinit,
    14. Zaktualizowano metodę DrawScope, by nie używała już leniwego przekazywania w przypadku wewnętrznych parametrów FillPaint i slidePaint
    15. Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box i zmniejszania nakładu pracy
    16. Zaktualizowaliśmy klasę Outline tak, aby dodać do niej adnotacje @stałe.
    17. Zaktualizowaliśmy narzędzie PathNode, aby dodać adnotacje @Stałe dla każdej instrukcji ścieżki
    18. Zaktualizowaliśmy składnię wektorową, aby usunąć zbędne warunkowe kontrole równości, ponieważ funkcja tworzenia wiadomości już je obsługuje
    19. Wycofane metody konstruktora towarzyszącego Prostokąt na rzecz konstruktorów funkcji
    20. zaktualizowaliśmy klasy i konstruktory funkcji Brush, używając interfejsów API @Immutable i @Stable.
    21. Zaktualizowano enum VertexMode na PascalCase
    22. Zaktualizowano metodę DrawScope selectPaint, która warunkowo zastępuje parametry kreski w malowaniu, jeśli uległy zmianie
    23. Zaktualizowaliśmy rozmiar, by dodać interfejs API destrukcyjny; zmień nazwę UnspecifiedSize na Nieokreślony i usunęliśmy nieużywane metody
  • Zaktualizowaliśmy wykorzystanie interfejsu compose BlendMode API, aby poprawnie mapować tryby BlendModes i PorterDuff na platformie Androida w zależności od poziomu interfejsu API. Wprowadzono interfejs BlendMode#isSupported API, który umożliwia sprawdzenie, czy urządzenie przed użyciem funkcji BlendMode obsługuje. (I0ef42).
  • Dodano parametr LazyItemScope dla parametru itemContent list Lazy. Udostępnia modyfikatory wypełniające maksymalny rozmiar elementu nadrzędnego, co rozwiązuje przypadek użycia, gdy element powinien wypełniać widoczny obszar, a zwykła metoda Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
  • Czcionka SemanticsNodeInteraction.performPartialGesture została usunięta. Użyj SemanticsNodeInteraction.performGesture. (Id9b62)
  • Nazwa „LazyColumnItems” została zmieniona na LazyColumnFor. Nazwa usługi LazyRowItems została zmieniona na LazyRowFor (I84f84)
  • Pakiet foundation.shape.corner został przeniesiony do: foundation.share (I46491, b/161887429)
  • Nazwa AndroidComposeTestRule została zmieniona na createAndroidComposeRule. (I70aaf)
  • Do TextLayoutResult dodano więcej interfejsów API. (Id7e04).
  • Nazwa materiału FilledTextField została zmieniona na TextField, a podstawowy element TextField został zmieniony na BaseTextField, aby ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676)
  • Nazwa Modifier.drawBackground została zmieniona na Modifier.background (I13677)

Wersja 0.1.0-dev15

22 lipca 2020 r.

Usługa androidx.compose.ui:ui-*:0.1.0-dev15 została zwolniona. Wersja 0.1.0-dev15 zawiera te zatwierdzenia.

Aktualizacja zależności

  • Aby używać funkcji Compose 0.1.0-dev15, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.

Zmiany interfejsu API

  • FocusModifier został wycofany i zastąpiony przez Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState i FocusSzczegółState zostały wycofane i zastąpione FocusState2 (I46919, b/160822875, b/160922136)
  • Dodano modyfikator umożliwiający obserwowanie zmiany stanu zaznaczenia. (I05866, b/160924455, b/160923326)
  • Dodano modyfikator umożliwiający zmianę zaznaczenia (I8dd73, b/161182057, b/160924778)
  • Aktywuj menu paska narzędzi, aby prawidłowo wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955).
  • Usługi semantyczne z jedną wartością używają teraz stylu wywoływania. Na przykład zapis „semantyka { hide = true }” będzie teraz zapisany jako: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Dodaliśmy modyfikator.fokus, który zastępuje FocusModifier. (Ib852a, b/160924778)
  • Dodaj FloatingToolbar do wyboru pola tekstowego. (IE8b07)
  • Dodaliśmy eksperymentalną adnotację API dla interfejsu API związanego z wprowadzaniem klucza (I53c0a).
  • Dodaliśmy eksperymentalną adnotację do API do wszystkich interfejsów API związanych z fokusem (I53b24, b/160903352)
  • Dodano FocusState2, który zastąpi FocusdetailState (I0a3ba, b/160822595)
  • Dodano adnotację ExperimentalFocus, która jest adnotacją @OptIn w interfejsie Focus API. (I1544b, b/160820961)
  • Dodano klasę jednostki IntBounds, która reprezentuje granice liczby całkowitej liczby pikseli od układu. Interfejs API obiektu PopupPositionProvider został zaktualizowany, aby go używać. (I0d8d0, b/159596546)
  • Aktualizator wymaga teraz metody clear() do usuwania kompozycji (Ibe697)
  • Zdarzenie KeyEvent zostało wycofane i zastąpione przez zdarzenie KeyEvent2 (I68730)
  • Do narzędzi do znajdowania testów dodano nową opcjonalną flagę useUnmergedTree. (I2ce48).
  • Made LayoutNode – eksperymentalny interfejs API (I4f2e9)
  • Do różnych typów klas wbudowanych dodaliśmy metody kopiowania, takie jak:

    • Przesunięcie
    • Rozmiar
    • Promień
    • Ruch
    • TransformOrigin

    • Wycofana metoda obiektu towarzyszącego Size.copy preferuje metodę kopiowania instancji (Ife290, b/159905651)

  • Wyskakujące okienka, okna i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).

  • TextDirection został zmieniony na resolvedTextDirection (I3ff38)

  • Z bloku miary funkcji Layout() usunięto parametr kierunku układu. Kierunek układu jest jednak dostępny w wywołaniu zwrotnym w obiekcie zakresu pomiaru (Ic7d9d)

  • Refactor SelectionHandles do ponownego użycia. (I420e0)

  • Element klikalny został usunięty. Użyj metody Modifier.clickable (I84bdf)

  • Tag TestTag i semantyka zostały usunięte. Użyj zamiast niego Modifier.testTag i Modifier.semantics (I15ff0, b/158841414)

  • Przed tą zmianą wtyczka kompilatora kompilatora przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli w funkcji @Composable występowało (I5205a, b/158123804).

  • Nazwa Modifier.tag została zmieniona na Modifier.layoutId, aby uniknąć pomyłek z modyfikatorem.testTag. (I995f0)

  • Pozycje całkowite linii wyrównania zwrócone z Placeable#get(alignmentLine) nie mają teraz wartości null. Jeśli nie ma wiersza wyrównania, którego dotyczy zapytanie, funkcja wyrównania wejściowa zostanie zwrócona. (I896c5, b/158134875)

  • Do funkcji kompozycyjnej AndroidView dodano parametr modyfikujący. (I48a88, b/158746303)

  • Funkcja Semantics() została wycofana. Użyj w zamian funkcji Modifier.semantics(). (I72407, b/158841414)

  • Dodanie funkcji viewModel() composable, która umożliwia tworzenie lub pobieranie już utworzonych modeli ViewModel w podobny sposób, jak ma to miejsce w przypadku aktywności lub fragmentu (I5fdd1).

  • Zastąpiliśmy wartość IntPx wartością IntPxPosition (Parametr IntPxPosition) wartością IntOffset. IntPxSize zastąpiono wartością IntSize. (IB7b44)

  • Aby skonsolidować liczbę klas używanych do przedstawiania informacji o rozmiarze, ustandaryzuj użycie klasy Size zamiast PxSize. Dzięki temu w klasie wbudowanej można umieścić 2 wartości zmiennoprzecinkowe w postaci długiej do pakowania 2 wartości liczb zmiennoprzecinkowych, które reprezentują szerokość i wysokość reprezentowane przez liczbę zmiennoprzecinkową. (IC0191).

  • Aby skonsolidować liczbę klas używanych do przedstawiania informacji o pozycji, ustandaryzuj użycie klasy Offset zamiast PxPosition. Dzięki temu w klasie wbudowanej można umieścić 2 wartości zmiennoprzecinkowe za pomocą funkcji „long” (długie) do reprezentowania przesunięcia x i y reprezentowanego jako liczby zmiennoprzecinkowe. (I3ad98).

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli wyłącznie typów Dp i typów podstawowych. Cała klasa Px została usunięta (I3ff33).

  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I086f4).

  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Id3434).

  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I97a5a).

  • Tag TestTag został wycofany. Użyj w zamian metody Modifier.testTag. (If5110, b/157173105)

  • Domyślna, bezobsługowa implementacja metody ParentDataModifier#modifyParentData została usunięta – było to równoważne z brakiem implementacji interfejsu. (I0deaa)

  • Usługa ScaleFit została wcześniej wycofana. Zamiast tego użyj ContentScale. (Ifbc5b).

  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I19d02).

  • Dodano komponent Menu z menu w materiale UI, czyli implementacji menu w stylu Material Design. (I9bb3d).

  • Usunięto wycofaną funkcję LayoutTag(). Zamiast niej użyj metody Modifier.tag(). Usunięto nieużywaną metodę Modifier.matchParent(). Zamiast niej użyj metody Modifier.matchParentSize(). (If8044).

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I57bff).

  • Wycofanie metody Modifier.semantics pozwala na użycie komponentów wysokiego poziomu. (I4cfdc)

  • Skonsolidowano implementacje CanvasScope, dzięki czemu powstaje tylko DrawScope i ContentDrawScope. Nazwa obiektu CanvasScope została zmieniona na DrawScope. Zaktualizowaliśmy DrawScope, aby wdrożyć interfejs Density i udostępnić interfejs LayoutDirection Usunięta podklasa DrawScope w ContentDrawScope Zaktualizowaliśmy aplikację Painter i painterModifier, aby nie utrzymywała już właściwości RTL, ponieważ DrawScope udostępnia ją już bez ręcznego podawania jej właściwości (I1798e)

  • DoubleTapTouchFilter przedstawia teraz element SingleTapStepFilter do zaznaczenia na drzewie. (If92b1).

  • Zaktualizowaliśmy interfejs Adjust API i dodaliśmy obsługę dopasowania bezwzględnego (które nie jest automatycznie dublowane w kontekście protokołu Rtl) (I38cd3)

  • Interfejs API modyfikatorów DrawLayer został zmieniony: zmieniono nazwę outline shape na „ shape” i ma wartość domyślną Rectangleangle, a teraz nie ma wartości „null”; zmieniono nazwę clipToOutline na klip; plik clipToOutline został usunięty, ponieważ jest taki sam jak w przypadku klipu == true z zasadą Rectangleangle (I7ef11, b/155075735)

  • Zaktualizowano interfejsy API tworzenia wyższego poziomu, które udostępniają obiekt Canvas do wyświetlania obiektu CanvasScope. Dzięki temu konsumenci nie muszą utrzymywać własnych obiektów Paint. Klienci, którzy nadal potrzebują dostępu do obiektu Canvas, mogą skorzystać z metody rozszerzenia dropCanvas, która powoduje wywołanie zwrotne do poleceń rysowania na podstawie obiektu Canvas. (I80afd).

  • Zmieniono końcowy interfejs API WithConstraints lambda. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń oraz właściwości layoutDirection zapewnia właściwości minWidth, maxWidth, minHeight i maxHeight w Dp (I91b9a, b/149979702)

  • Nazwa UkładModifier2 została zmieniona na LayoutModifier. (Id29f3).

  • Usunięto wycofany interfejs LayoutModifier. (I2a9d6)

  • Wewnętrzne funkcje pomiarowe w usługach Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia wewnętrzny interfejs API zapytań z niejawnie rozpowszechnianym kierunkiem układu. (Id9945).

  • Elementy podrzędne Układu i LayoutModifier można mierzyć w innym kierunku układu. (IBD731)

  • Dodano nową funkcję Modifier.zIndex(), aby kontrolować kolejność rysowania elementów podrzędnych w tym samym układzie nadrzędnym. Właściwość wysokości w DrawLayerModifier została zmieniona na shadowElevation i nie kontroluje już kolejności rysowania. Zmieniła się kolejność parametrów w przypadku DrawShadow. Wysokość jest teraz pierwszym parametrem, a kształt to drugi, z domyślnym kształtem prostokąta. (I20150, b/152417501)

  • Usunięto parametr onSizeChange i onPositionChange w sekcji Właściciel. (I5c718)

  • Dodano ograniczenia2, czyli kopię ograniczeń, która obsługuje tylko wartości Int, a nie IntPx. Wartość IntPx zostanie usunięta, a wszystkie ograniczenia dotyczące liczb całkowitych zaczną być traktowane jako piksele, tak jak w przypadku Androida.

    • Dodaliśmy też funkcję IntSize, która z czasem zastąpi IntPxSize. (I4b43a)
  • Wyrównanie wyrównania można utworzyć z użyciem dowolnych wartości. Dodano wyrównania 1D. (IA0c05)

  • LineToSiblings akceptuje teraz obiekty zmierzone zamiast obiektu Placeable. (I5788D)

  • (I45f09, b/152842521)

    • Nazwa ScaleFit została zmieniona na ContentScale
    • Przeniesiono ContentScale z modułu ui-graphics na moduł ui-core, aby umieścić go w tym samym module co wyrównanie interfejsu API.
    • Nazwa FillMaxDimensions została zmieniona na Przytnij
    • Nazwa FillMinDimensions została zmieniona na Fit
    • Zmieniliśmy nazwę dopasowania na Wewnątrz, by lepiej dostosować
    • Odpowiedniki ImageView.ScaleType
    • Dodaliśmy dokumentację, która wskazuje, że kombinacja crop i wyrównania.Center pozwala uzyskać ten sam wynik co ImageView.ScaleType.CENTER_CROP i Fit użytego z funkcją Adjust.Center, która zapewnia taki sam wynik jak obiekt ImageView.ScaleType.FIT_CENTER Inside used with wyrównanie.Center zapewnia taki sam wynik jak ImageView.ScaleType.CENTER_INSIDE
  • Obsługa modyfikatorów rysowania. (I0aaf9).

  • Opublikowany interfejs API do zwiększania liczby wyświetleń w Androidzie z kodu XML. Więcej szczegółów znajdziesz w prezentacji ViewInCompose. (I42916)

  • Ulepszenie interfejsu API DrawModifier:

    • Zmieniono zakres odbiorcy dla metody Draw() ContentDrawScope
    • Usunięto wszystkie parametry z dresz()
    • Interfejs DrawScope jest taki sam jak poprzednia wersja CanvasScope
    • ContentDrawScope ma metodę DrawContent() (Ibaced, b/152919067)
  • W przypadku współrzędnych układu dodano elementy positionInParent i boundsInParent. (Icacdd, b/152735784)

  • DrawLayerModifier i drawLayer() domyślnie mają wartość false (fałsz). (I0eb8b, b/152810850)

  • Zmieniono nazwę elementu LayoutResult na MeasureResult. (Id8c68).

  • Dodano LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac).

  • Zastąpienie operatora modyfikatora plus funkcjami rozszerzeń fabrycznych (I225e4).

  • Dodaliśmy właściwości przesunięcia X/Y, które umożliwiają odsunięcie listy wyświetlanych poleceń rysowania dla danej warstwy. Przydaje się to przy przenoszeniu treści w odpowiedzi na animacje lub zdarzenia dotyku. (I8641C)

  • Dodano parametry przestawne X i przestawne do interfejsów API warstw, aby obsługiwać obracanie i skalowanie wokół określonego punktu w warstwie (Icf7c3)

  • Dodaj OnPositionedModifier i OnChildPositionedModifier, aby zastąpić funkcje kompozycyjne OnPositioned i OnChildPositioned. (I2ec8f).

  • Dodano LayerModifier – modyfikator, który umożliwia dodanie RenderNode do układu. Umożliwia ustawienie przycinania, przezroczystości, obrotu, skalowania i cieni. Spowoduje to zastąpienie RepaintBoundary. (I7100d, b/150774014)

  • Wykonano propagację kierunku układu z węzła nadrzędnego do elementów podrzędnych. Dodano modyfikator kierunku układu. (I3D955)

  • Komponent stosu obsługuje kierunkowość od prawej do lewej (Ic9e00)

  • Wstępna obsługa protokołu Rtl w układzie tworzenia wiadomości (Ia5519)

  • Interfejsy Density i DensityScope zostały połączone w jeden interfejs. Zamiast trybu nieaktywnego() możesz teraz używać obiektu DensityAmbient.current. Zamiast opcji Gęstość(gęstość) tylko za pomocą(gęstości) (I11cb1)

  • Zmieniliśmy parametry LayoutCoordinates, by móc użyć funkcji providedWyrównajmentLines, a nie Mapa, a funkcja LayoutCoordinates wdrożyła operator get() zamiast pobierać wartość. Ułatwia to modyfikatorom modyfikowanie jednej lub większej liczby wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)

  • LayoutCoordinates nie ma już właściwości pozycji. Właściwość pozycji nie ma sensu przy uwzględnianiu elementów LayoutModifiers, rotacji lub skalowania. Do obliczania przekształceń z jednego LayoutCoordinate na inny programiści powinni używać koordynatorów nadrzędnych i podrzędnych (childToLocal()).

    Funkcja LayoutCoordinates używa właściwości rozmiaru IntPxSize, a nie PxSize. W przypadku układów stosuje się rozmiary w pikselach całkowitych, więc we wszystkich rozmiarach układów należy używać liczb całkowitych, a nie wartości zmiennoprzecinkowych. (I9367b)

  • Ulepszenia interfejsu API ograniczeń (I0fd15)

  • Utworzono interfejs CanvasScope API, który opakowuje obiekt Canvas, aby udostępniać bezstanową, deklaratywnej powierzchni interfejsu API do rysowania. Przekształcenia są zawarte w oddzielnym zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wektora. Nie wymaga od konsumenta zachowania własnego obiektu stanu renderowania umożliwiającego konfigurowanie operacji rysowania.

    • Dodaliśmy CanvasScopeSample oraz zaktualizowaliśmy aplikację w wersji demonstracyjnej, aby dodać demonstrację grafiki deklaratywnej (Ifd86d).
  • Usunęliśmy nieużywany interfejs MaskFilter API, ponieważ w większości przypadków nie jest zoptymalizowany pod kątem akceleracji sprzętowej (I54f76).

  • Rectangleangle zostały przeniesione z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Wszystkie przypadki użycia koloru, które mogą przyjmować wartości null w interfejsie API, zastąpiono wartością niedopuszczającą wartości null i ustawiono wartość Color.Unset zamiast wartości null (Iabaa7).

  • Dodaj do ImagePainter dodatkowy opcjonalny parametr prostokątny, by umożliwić rysowanie podsekcji bazowego komponentu ImageAsset (I0ea9e).

  • Dodaliśmy nieskonfigurowany kolor, by reprezentować wartość bez ustawienia bez czarnych pasów. (If901a).

  • Dodaliśmy metody rozszerzeń Canvas.rotate i Canvas.scale, które umożliwiają wykorzystywanie opcjonalnych współrzędnych przestawności na potrzeby przekształceń. Domyślnie są one ustawione jako lewy górny róg bieżącego tłumaczenia obszaru roboczego.

    Przenieśliśmy też obiekt Canvas.rotateRad jako metodę rozszerzenia spójności (Ibaca6).

  • Stworzyliśmy interfejs PixelMap API do obsługi zapytania o informacje o pikselu z ImageAsset. (I69ad6).

  • Zmieniliśmy nazwę toFrameworkRect/toFrameworkRectF naAndroidRect/toAndroidRectF, by zapewnić zgodność z konwencją nazewnictwa konwersji obiektów w interfejsie tworzenia i interfejsach API platformy Android, na których są tworzone. Zaktualizowaliśmy też dokumentację tych interfejsów API (I86337)

  • Dodaliśmy interfejs VectorPainter API, aby zastąpić dotychczasowy interfejs subcomposition API dla grafiki wektorowej. Wynikem składni podrzędnej jest obiekt VectorPainter, a nie DrawModifier. Wycofaliśmy wcześniejsze funkcje kompozycyjne DrawVector i zastąpiliśmy VectorPainter.

    Zmieniono nazwę interfejsu Image(Painter) API na PaintBox(Painter) Utworzono wektorową kompozycję kompozycyjną, która zachowuje się jak obiekt kompozycyjny Obraz, z wyjątkiem obiektu VectorAsset zamiast obiektu ImageAsset (I9af9a, b/149030271)

  • Zmieniliśmy nazwę obrazu na ImageAsset, by lepiej rozróżnić dane obrazu od przyszłej funkcji kompozycyjnej obrazu wykorzystywanej do tworzenia układu i rysowania treści. _Body:Utworzono metodę rozszerzenia w android.graphics.Bitmap, Bitmap.asImageAsset(), w celu utworzenia komponentu ImageAsset przydatnego do połączenia tworzenia tradycyjnych aplikacji na Androida z platformą tworzenia (Id5bbd).

  • Dodano element TextDirection.Content (I48f36)

  • dodany operator Textdecoration.plus (I0ad1a),

  • Pole Force zostało usunięte z wartości wyliczeniowych TextDirectionAlgorithm (Icc944)

  • Algorytm kierunku tekstu zmienił nazwę na TextDirection (I75ce8)

  • Implementuje LongPressAndDrag do wyboru pola tekstowego. (I17919)

  • Dodano AdnotatedString.getStringAdnotacje, które zwracają wszystkie adnotacje w zakresie. (I1fa00).

  • Zmieniono nazwę pakietu Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c).

  • Kursor pola tekstowego ma migającą animację (Id10a7)

  • Zmiana w interfejsie API: nazwa AnnotatedString(builder: Builder) została zmieniona na annotatedString(builder: Builder). (IA6377).

  • Zmiana w interfejsie API: nazwa AnnotatedString.Item została zmieniona na AnnotatedString.Range. (I2d44d)

  • Zmieniono nazwę AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)

  • Teraz można ukryć lub pokazać klawiaturę programową za pomocą kontrolera SoftwarekeyController obsługiwanego przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051)

  • Dodano operator plus dla stylu (Tekst/Akapit/span), który przekazuje funkcję scalania(). (Ia1add)

  • Plik FontWeight.lerp już nie działa. To nadal klasa danych. (I521c2).

  • Konstruktor FontWeight jest teraz publiczny i nie jest już klasą danych. (Id6b1f).

  • Dodaj metody getLineStart, getLineEnd, getEllipsisOffset i getEllipsisCount do TextLayoutResult (Ibc801)

  • Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec).

  • Usunięto nieużywaną klasę Size, ponieważ w używanym module ui-geometry znajduje się zduplikowana klasa Size. (I1B602).

  • Dodaliśmy AdapterList – komponent listy przewijanej, który tylko tworzy i rozkłada widoczne elementy. Znane obecnie problemy polegają na tym, że tryb ten działa tylko pionowo i nie obsługuje w pełni wszystkich przypadków zmian w elementach podrzędnych. (IB351b)

  • Dodaj dopełnienie, obramowanie, kształt i parametr tła do Box (I05027, b/148147281)

Poprawki błędów

  • Nazwa wywołania zwrotnego onFocusChange w polach tekstowych została zmieniona na onFocusChanged (Ida4a1)
  • Interfejsy Vertical Scroller oraz Horiziontal Scroller zostały wycofane. Użyj interfejsu ScrollableColumn i ScrollableRow, aby mieć wbudowane funkcje i parametry związane z kolumnami/wierszami, lub modyfikatorami.vertical Scroll i Mmodifier.vertical Scroll, aby umożliwić ich użycie własnemu elementowi. Natomiast ScrollerPosition został wycofany i zastąpiony przez ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • Nazwa runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Zmieniono nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Nazwy wszystkich interfejsów API „findXYZ” zostały zmienione na onNodeXYZ. Nazwy wszystkich interfejsów API doXYZ zostały zmienione na „performXYZ”. (I7f164)
  • Interfejs tworzenia wiadomości można teraz tworzyć w grupach ViewGroup bez konieczności tworzenia nowej kompozycji. Zobacz przykład: ViewInteropDemo. (I9ab0b, b/160455080)
  • Do funkcji MutableVector dodano sortowanie z funkcjami sortWith i deleteRange (Icccf7).
  • Zaimplementuj uchwyty zaznaczania metodą przeciągania, aby zmienić wybór pola tekstowego. (I27032)
  • Usunięto klasę wbudowanej Shadera, która opakowała klasę oczekiwaną NativeShader. Zmieniono nazwę NativeShader na Shader. Opakowana klasa wbudowana Shadera nie dodała nic wartościowego do platformy interfejsu API i była klasą wbudowaną, więc użyj bezpośrednio klasy NativeShader. (I25e4d)
  • Zrefaktoryzowano narzędzie PainterModifier, aby nie udostępniało już skalowania na podstawie podanych ograniczeń i parametru ContentScale. Implementacje narzędzia Painter polegają na samodzielnym skalowaniu rysunków w zależności od rozmiaru obiektu DrawScope, do którego rysowane są obiekty.

    Rozwiązaliśmy problem polegający na tym, że rozmiar mapy bitowej pamięci podręcznej VectorPainter był dostosowywany do rozmiaru domyślnego, a nie wybranego rozmiaru.

    Zaktualizowaliśmy ImagePainter, aby skalował swoją zawartość, zamiast polegać na module PainterModifier. (I6Ba90)

  • dodaj funkcję najwyższego poziomu withFrameNanos do czasu animacji (Ie34c5)

  • Adnotacja @Nieśledzona została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e).

  • Metody androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Obiekty kompozycyjne TextField, PhlledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)

  • Rozwiązaliśmy problem polegający na tym, że wysyłanie danych wejściowych wskaźnika powodowało awarię, jeśli wskaźnik PointerInputFilters został usunięty przez subkompozycję podczas dysptach. Zostało to już rozwiązane. (I1f48b, b/157998762)

  • Rozwiązaliśmy problem, który powodował, że wysyłanie danych wejściowych wskaźnika powodowało awarię, jeśli podczas usuwania elementów PointerInputFilters zostały usunięte elementy składowe. Zostało to już rozwiązane. (Iab398, b/157998762)

  • Zmieniono klasę Radius na klasę wbudowaną. Usunięto metody tworzenia elementów towarzyszących na rzecz konstruktora funkcji z domyślnym parametrem, aby promień na osi Y był zgodny z obowiązkowym parametrem promienia osi X.

    Zaktualizowaliśmy parametr DrawScope.drawRoundRect, tak aby korzystał z pojedynczego parametru Radius zamiast 2 osobnych wartości zmiennoprzecinkowych promienia wzdłuż osi x i y (I46d1b).

  • Funkcja kompozycyjna „Przetwórz ponownie” nie jest już przydatną abstrakcją. Większość zmian kompozycji powinna następować w wyniku przypisań MutableState. W innych przypadkach zalecamy użycie funkcji invalidate do aktywowania przekomponowania bieżącego zakresu. (Ifc992).

  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Iede0b).

  • Zmienia strategię generowania kodu w kompilatorze Compose. Przed tą zmianą kompilator komponował przekształcanie wywołań funkcji kompozycyjnych. W wyniku tej zmiany przekształcamy treść funkcji kompozycyjnej i zostajemy bez zmian (w większości przypadków).

    Oznacza to, że większość logiki komunikującej się ze środowiskiem wykonawczym tworzenia zachodzi na początku treści funkcji, a nie w lokalizacji wywołania.

    Powinna to być zmiana zgodną ze źródłem w przypadku całego korzystania z funkcji tworzenia wiadomości. W związku z tą zmianą większość użytkowników narzędzia do tworzenia wiadomości nie będzie musiała aktualizować żadnego kodu.

    Aby ułatwić ten proces, zmienił się podpis JVM wszystkich funkcji kompozycyjnych. Funkcja kompozycyjna akceptująca pojedynczy parametr jest przekształcana w funkcję akceptującą 3 parametry. Dodatkowe parametry to Composer, czyli liczba całkowita „klucz”, czyli liczba całkowita maska bitowa używana do rozpowszechniania metadanych za pomocą wywołań.

    Funkcja Utwórz przekształca teraz także domyślne argumenty w funkcję kompozycyjną. Odbywa się to bez dodatkowego syntetycznego przeciążenia samej funkcji, więc ta zmiana spowoduje zdefiniowanie mniejszej liczby funkcji.

    Znane, zamierzone zmiany w zachowaniu wynikające z tego:

    1. Niektóre rozmowy są pomijane tam, gdzie wcześniej nie były
    2. Wyrażenia kompozycyjne w domyślnych wyrażeniach argumentów są teraz prawidłowo subskrybowane i obsługiwane

    Wprowadziliśmy kilka optymalizacji: 1. Wyniki porównań parametrów są przekazywane na wykresie wywołań do innych funkcji kompozycyjnych. Zmniejszy to liczbę porównań w czasie działania, zmniejszy rozmiar tabeli przedziałów i będzie więcej pomijać funkcji kompozycyjnych, które nie były wcześniej pomijane2. Parametry, które podczas kompilacji zostaną uznane za „statyczne”, nie są już porównywane ani przechowywane w środowisku wykonawczym. Zmniejsza to liczbę porównań i rozmiar tabeli przedziałów. 3. Kontroluj strukturę przepływu treści funkcji do zminimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli przedziałów i zmniejsza ilość pracy środowiska wykonawczego. 4. Nieużywane parametry dyspozytora i odbiorcy w funkcji nie są uwzględniane przy określaniu możliwości pominięcia funkcji, jeśli nie są one używane w jej treści.

    Większość zmian powodujących niezgodność dotyczy interfejsów API, na które kompilator jest kierowany bezpośrednio. Nie wpłynie to na typowe użycie funkcji tworzenia wiadomości: 1. Usunięto polecenie Composer::startExpr. 2. Narzędzie Composer::endExpr zostało usunięte. 3. Interfejs Composer::call został wycofany. 4. Przeciążenia inne niż różne (key) zostały usunięte. Od tej pory używaj wersji vararg. 5. Adnotacja przestawna została wycofana. Użyj key jako zamiennika. 6. ZakresUpdateScope::updateScope został zmieniony, tak aby obejmował funkcję Function3, a nie Function1. 7. Zaktualizowaliśmy funkcję restartableFunction i restartableFunctionN, aby uwzględnić dodatkowe parametry czasu kompilacji (I60756, b/143464846)

  • Usunięto wycofane modyfikatory UkładWyrównaj. (I10877)

  • Usunięto funkcję RepaintBoundary na rzecz DrawLayerModifier (I00aa4).

  • Elementy FloatingActionButton i Clickable mają teraz osobny parametr enabled. Zmieniono nazwy niektórych parametrów przycisku lub ich kolejność. (I54b5a)

  • Zastąpiliśmy ButtonStyle różnymi funkcjami i usunęliśmy przeciążenie tekstu (ciągami znaków). Informacje o wykorzystaniu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)

  • Zmiany w interfejsie API nieaktywnym. Szczegóły znajdziesz w logu i dokumentacji Ambient<T> (I4c7ee, b/143769776)

  • Zmieniliśmy działanie domyślnego kierunku tekstu TextDirection, który jest określany przez LayoutDirection. Oznacza to, że jeśli w polu LayoutDirection jest ustawiona wartość RTL, domyślnym ustawieniem TextDirection będzie RTL. Wcześniej to TextDirection.ContentOrLtr/Rtl (I4e803).

  • Naprawiono błąd: gdy grubość i styl czcionki są zagnieżdżone w obiekcie AnnotatedString, tekst nie jest prawidłowo renderowany. (I77a9d)

  • Dodaje często używane parametry do funkcji Text(). Jeśli tworzysz lokalny styl tekstu, aby przekazywać niewielką liczbę tych parametrów, np. Text(style = TextStyle(text wykonane = Textalign.Center)), możesz teraz po prostu podać parametry bezpośrednio: Text(textalign = Text wykonane.Center) (I82768)

  • Nazwa modułu ui-android-text została zmieniona na ui-text-android (I68cbe).