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
4 września 2024 r. 1.7.0 - - 1.8.0-alfa01

Struktura

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

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

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 usłudze Compose oraz podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka kompilatora Compose.
compose.ui,Podstawowe elementy interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu.

Deklarowanie zależności

Aby dodać zależność w Compose, musisz dodać repozytorium Google Maven do w projektach AI. Zapoznaj się z repozytorium Google Maven. .

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

Odlotowe

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.

Tworzenie nowego numeru

Zobacz dokumentację narzędzia Issue Tracker. .

Wersja 1.8

Wersja 1.8.0-alpha01

4 września 2024 r.

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

Wersja 1.7

Wersja 1.7.0

4 września 2024 r.

Usługa androidx.compose.ui:ui-*:1.7.0 została zwolniona.

Ważne zmiany od wersji 1.6.0

Ważne zmiany w wersji 1.7.0 opisaliśmy w tym poście na blogu.

Wersja 1.7.0-rc01

21 sierpnia 2024 r.

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

Ważne zmiany

  • Moduł ui:ui wymusza teraz, aby co najmniej 1.7.0-rc01 (wersja beta) wymagała minimalnej wersji Foundation:foundation. Jest to egzekwowane w celu rozwiązania problemu niezgodności między interfejsem użytkownika a podstawami dotyczącymi zmian w usłudze NestedScrollSource, które miały miejsce we wczesnym okresie wersji 1.7.0–alfa.

Wersja 1.7.0-beta07

7 sierpnia 2024 r.

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

Poprawki błędów

  • Powiązane z tekstem funkcje SemanticsNodeInteraction performTextReplacement, performTextInput i performTextClearance będą teraz powodować błędy asercji, gdy zostaną one wywołane w trybie tylko do odczytu TextFields. (I4ae8f).

Wersja 1.7.0-beta06

24 lipca 2024 r.

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

Wersja 1.7.0-beta05

10 lipca 2024 r.

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

Poprawki błędów

  • Naprawiono błąd, który powodował, że zmiana klawiatury programowej powodowała, że TextField nie przyjmował danych wejściowych z nowej klawiatury, dopóki zaznaczenie nie zostanie utracone i odzyskane.
  • Rozwiązaliśmy problem, który powodował, że próby utrwalenia zawartości warstwy powodowały niezamierzone efekty uboczne podczas renderowania z treścią SurfaceView.

Wersja 1.7.0-beta04

26 czerwca 2024 r.

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

Poprawki błędów

  • Unikaj awarii przy pomiarze bardzo dużych linii tekstowych (np. 10 tys. znaków) (8157ab).
  • Wyłącz obsługę renderowania programowego interfejsu API GraphicsLayer. (35ddd8)
  • Naprawiono poważny błąd związany z logiką trwałości warstwy. (70B13E)
  • Ponowne wykorzystanie optymalizacji obiektów warstwy zostało wycofane, ponieważ spowodowało to problemy z renderowaniem. (70B13E)

Wersja 1.7.0-beta03

12 czerwca 2024 r.

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

Wersja 1.7.0-beta02

29 maja 2024 r.

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

Zmiany interfejsu API

  • Zmieniono nazwę SemanticsProperties.Editable 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 Outline w GraphicsLayer, aby wykorzystywały parametry zmiennoprzecinkowe zamiast int. W klasach wbudowanych przesunięcia i rozmiaru (I2fb03, b/333863462) usunęliśmy już istniejące nieokreślone stałe wartości 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żony tag LazyRows). Ta zmiana powinna zmniejszyć liczbę klatek na sekundę podczas przewijania w przypadku tych elementów (LazyLists). Domyślną implementacją jest pobieranie z wyprzedzeniem pierwszych 2 zagnieżdżonych elementów, ale to działanie można kontrolować przez nowe interfejsy 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 podejścia. (I60ec7)
  • Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
  • LazyColumn będzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)
  • Źródła „Przeciągnij i przesunięcie” (NestedScroll) zostały zastąpione przez reguły UserInput i SideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, do których teraz należą animacje (efekt boczny) oraz kółkiem myszy i klawiaturą (UserInput). (I40579)
  • ApproachLayoutModifierNode 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ę rejestrów GraphicsLayer#buildLayer, tak aby były zgodne z metodami rozpoczęcia/endRecordingu z 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. Zamiast niego użyj zasady 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 tekstowych 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 za pomocą oficjalnego interfejsu API Androida (ScrollCaptureCallback). Ta funkcja jest eksperymentalna i obecnie może nie obsługiwać wszystkich przypadków poprawnie. Z tego powodu jest ono domyślnie wyłączone. Aby wyrazić zgodę, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość true. (I2b055, b/329296471)

Zmiany interfejsu API

  • Rola fun ClipEntry.getMetadata() została zmieniona na: val ClipEntry.clipMetadata. (I50155)
  • Usunięto funkcje ClipboardManager.getClipMetadata 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 parametru 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, a także zaktualizować implementacje modyfikatora Właściciel, DelegateableNode i drawWithCache w celu zapewnienia dostępu do funkcji GraphicsContext w ramach dostępu w zakresie, który automatycznie czyści instancje GraphicsLayer, gdy modyfikatory zostaną wyłączone. (I64a2f, b/288494724)
  • Wprowadziliśmy interfejs InterceptPlatformTextInput, który 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órych można używać do rysowania w innych miejscach, a także do stosowania różnych efektów wizualnych. (I80245, b/288494724)
  • Podaj funkcję Paragraph#getRangeForRect, która zwraca zakres tekstu uwzględniony w danym obszarze prostokąta. (Iee516, b/325660505)
  • Usunięto eksperymentalne zastąpienie funkcji BasicText 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 interfejsu ui-test interfejs DeviceConfigurationOverride API, aby umożliwić korzystanie z niego lokalnie zastępujące zachowanie testowanej treści, np. określając dostępne rozmiar, język, kierunek układu, skalę czcionki czy motyw.

Wersja 1.6

Wersja 1.6.8

12 czerwca 2024 r.

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

Poprawki błędów

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

Wersja 1.6.7

1 maja 2024 r.

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

Wersja 1.6.6

17 kwietnia 2024 r.

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

Poprawki błędów

  • Naprawia rzadką awarię BasicTextField.

Wersja 1.6.5

3 kwietnia 2024 r.

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

Wersja 1.6.4

20 marca 2024 r.

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

Wersja 1.6.3

6 marca 2024 roku

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

Wersja 1.6.2

21 lutego 2024 r.

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

Wersja 1.6.1

7 lutego 2024 r. Usługa androidx.compose.ui:ui-*:1.6.1 została zwolniona. Wersja 1.6.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem ze zgodnością wsteczną w funkcjach SemanticsPropertyReceiver.performImeAction 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 parametry lambda do przetwarzania zdarzeń przeciągania. dodano funkcję fabryczną DragAndDropTarget w celu odbierania 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 w narzędziu Compose), a nie instancji opartych na klasach danych. Jest to niezwykła zmiana. Przykłady korzystania z nowego interfejsu API znajdziesz w prezentacji i przykładowym kodzie. (IA8943).

  • Konstruktor FontStyle(int) został wycofany. Zamiast niego użyj 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 jego własności. (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).
  • Zmieniono klasę LoremIpsum (PreviewParameterProvider) na otwartą. (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ę po drzewie modyfikatora w górę i w dół 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 > 100% w ustawieniach systemowych, rozmiar małego tekstu jest normalnie powiększony, a już duży tekst tylko trochę. Ponadto wysokość wierszy określona w SP będzie automatycznie dostosowywana do zamierzonej wysokości skali 100%. Więcej informacji znajdziesz w artykule Sprawdzone metody skalowania czcionek. (I11518).

Wersja 1.6.0-alpha05

6 września 2023 r.

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

Zmiany interfejsu API

  • Włącz przechwytywanie treści w usłudze AndroidComposeViewAccessibilityDelegateCompat. (IB2969).
  • Prędkości przesunięcia w komponentach widoku danych, takich jak ScrollView 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ć na potrzeby podglądów w interfejsie (Ib036e)
  • Utworzono interfejs FontScalable do obsługi części dotyczącej skalowania czcionek w interfejsie Gęstość. (I2cf3f).

Wersja 1.6.0-alpha03

9 sierpnia 2023 r.

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

Zmiany interfejsu API

  • Nowy typ przejścia wejścia/wyjścia, który skaluje zawartość w zależności od rozmiaru kontenera animacji w trakcie wprowadzania/wyjścia wyjdź z animacji. LookaheadScope Funkcje kompozycyjne i interfejs są teraz stabilne. (Ifb2ce)
  • Dodano obsługę konfigurowania usługi privateImeOptions (Idb772)

Poprawki błędów

  • PopupPositionProvider.calculatePosition będzie teraz automatycznie aktualizować położenie wyskakującego okienka, gdy zmieni się stan odczytany 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ąć animacje (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ć blokady takie jak: – Uszkodzone testy 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) do wskazywania, czy bieżący pomiar jest przebiegiem pozytywnie. (I7a812)
  • Zaktualizowaliśmy interfejs API DrawScope, aby wprowadzić możliwość ponownego kierowania renderowania na inny obszar roboczy z inną gęstością/układem i rozmiarem.
  • Zaktualizowano DrawContext, aby obsługiwał konfigurację gęstości i kierunku układu oraz umożliwiał konfigurowanie obszaru roboczego. (Ie1f9b, b/225408150)
  • Dodano funkcję Paragraph#fillBoundingBoxes do obliczania ramek ograniczających znaki. (If30ee).
  • Dodano zestaw typowych właściwości MultiPreviews (Ia5a27).

Poprawki błędów

  • Dodano interfejs FocusTargetModifierNode, którego można używać do tworzenia 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 funkcji 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 pozbawione pola typy lambda dla liczby zmiennoprzecinkowej, liczby zmiennoprzecinkowej, długiej, całkowitej i krótkiej w polach :ui:ui-unit (I6f18d, b/246961787)

Poprawki błędów

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

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

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

Wersja 1.5.0-alpha04

10 maja 2023 r.

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

Nowe funkcje

  • Ulepszenia przekazywania dostępu (Modifier.Node) Dodano ulepszone przekazywanie dostępu do innych 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 został już wycofany, aby zachęcić deweloperów do korzystania z tego interfejsu API zgodności do przełączania się 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 IntermediateMeasureScope jako odbiornik, który zapewnia przydatne 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 stanie bezczynności (np. za pomocą waitForIdle). Może to mieć wpływ na testy, które rejestrują poszczególne klatki animacji układu. (I8ea08, b/222093277)
  • W polu TextStyle dodano eksperymentalną funkcję TextMotion, która pozwala określić tekst 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, co pozwala prawidłowo obsługiwać zgłoszenie w przypadku ponownego użycia obiektu Layout (np. jako elementu 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 stanie bezczynności (np. za pomocą waitForIdle). Może to mieć wpływ na testy, które rejestrują poszczególne klatki animacji układu. (I8ea08, b/222093277)
  • W polu TextStyle dodano eksperymentalną funkcję TextMotion, która pozwala określić tekst 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 wieloma 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.
  • Do konstruktora i funkcji fabrycznej TestMonotonicFrameClock dodano opcjonalny parametr onPerformTraversals: (Long) -> Unit w celu uruchamiania kodu po wywołaniach zwrotnych withFrameNanos, ale przed wznowieniem działania wywołującego współrzędne. (Idb413, b/254115946, b/222093277, b/255802670)
  • Dodano emotikon emojiCompat do tworzenia wiadomości (Ibf6f9, b/139326806)
  • Dodano nowy parametr tapety w elemencie @Preview z obsługą dynamicznych kolorów (I9f512)

Poprawki błędów

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

Aktualizacje zależności

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

Wersja 1.4.0-alpha02

9 listopada 2022 r.

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

Zmiany interfejsu API

  • Zaktualizowano GraphicsLayerScope, aby udostępnić bieżący rozmiar 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. Dzięki temu widok niestandardowy może lepiej reagować na ograniczenia przewijania, zwłaszcza w niestandardowych widokach (np. ModalBottomSheetDialog). (I9E107)
  • Dodano interfejs ObserverNode, którego mogą używać implementacje Modifier.Node, które muszą powiadamiać o zmianie odczytanej przez nich wartości (I5728b, b/247716483)
  • Do Paint dodano 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 wtedy, gdy utworzysz implementację niestandardowego okna lub wyskakującego okienka z wysokością wyższą niż 8 dp. Rozważ obniżenie wysokości okna lub wyskakującego okienka. Jeśli chcesz zrezygnować z tego nowego sposobu, rozważ utworzenie własnego okna lub wyskakującego okienka z ustawioną wysokością. Nie jest to zalecane, ponieważ może to negatywnie wpływać na ułatwienia dostępu. To deweloper musi zadbać o to, aby dolna część okna lub wyskakującego okienka była możliwa do interakcji i czytelna dla usług ułatwień dostępu.

Zmiany interfejsu API

  • Rozwiązaliśmy problem, który powodował, że usługa painterResource nie aktualizowała się po zmianie konfiguracji (I58e73, b/228862715)
  • Funkcja rememberTextMeasurer nie przyjmuje już parametró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 aby okna dialogowe obsługiwały WindowInsets. (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ń wariantów czcionek (API w wersji 26 lub nowszej). (I900dd, b/143703328)
  • Obsługa zmiennych czcionek w DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Konstruktory czcionek akceptują teraz listę elementów FontVariation.Setting do konfigurowania czcionek zmiennych na urządzeniach O+. (I11a9d, b/143703328)
  • Dodaj interfejs API FontVariation do definiowania i używania czcionek zmiennych. (I3c40c, b/143703328)
  • Konstruktor LineHeightStyle.Alignment jest teraz publiczny (eksperymentalny) (I4bbbe, b/235876330)
  • Akapit jest teraz zdefiniowany w przypadku Androida i komputerów. (Id387e, b/239962983)
  • Akapit interfejsu jest teraz zapieczętowanym akapitem interfejsu. Nie ma możliwości użycia podklasyfikacji akapitu. Jeśli ta zmiana Cię dotyczy, zalecamy skontaktowanie się z nami. (If5247, b/239962983)
  • Usunięto adnotacje eksperymentalne z PlatformTextStyle 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)
  • refaktoryzowana stała i nazwy parametrów w polu KeyInjectionScope, aby uwzględnić sufiks „Millis” gdzie jednostkami tych stałych i parametrów są milisekundy. (Iabef5).
  • Do elementu EditCommand dodano metodę toStringForLog(), która ułatwia rozwiązywanie problemów z edytowaniem tekstu. (I53354, b/228862731)
  • W DrawScope dodaliśmy funkcję 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 daje to poprawę wydajności o współczynnik 10. (I5e113).
  • Zmieniliśmy format podglądu tworzenia wiadomości tak, aby był przechowywany w binarnych plikach wyjściowych, aby umożliwić programistom pisanie i wykorzystywanie ponownie adnotacji MultiPreview z bibliotek. (I85699, b/233511976)

Poprawki błędów

  • Przy dodawaniu zdarzeń InputEventChange do trackera Velocity będziemy teraz brać pod uwagę delta, a nie pozycje, co zagwarantuje, że prędkość zostanie prawidłowo obliczona we wszystkich przypadkach, nawet jeśli element docelowy 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 pomiar lub układ po wyliczeniu. SubcomposeLayouts nie są jeszcze obsługiwane, ale zostaną udostępnione w nadchodzącej wersji. (I477f5)
  • Dodaj opcjonalny parametr alfa do rodzaju pędzla w atrybutach TextStyle i SpanStyle, aby zmienić przezroczystość całego obiektu Text. (Ic2fac, b/234117635)
  • Wprowadziliśmy typ adnotacji UrlAnnotation i powiązane z nim metody, które umożliwiają 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 by 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óbowała ona wczytywać czcionki dla tekstu StyleSpans, który prowadzi do awarii, jeśli usunięto 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 być kierowana na innego autora aplikacji, musi jawnie dostarczyć adnotację znacznika docelowego miejsca docelowego użytkownikowi. (I40804)
  • Wprowadziliśmy nowy, eksperymentalny, niezależny od platformy, testowy interfejs API: interface ComposeUiTest i fun runComposeUiTest(block: ComposeUiTest.() -> Unit), których można używać do uruchamiania testów interfejsu Composer bez konieczności korzystania z TestRule. Aby przeprowadzić test bez ComposeTestRule, zdaj test jako lambda w parametrze runComposeUiTest i użyj metody i członków w zakresie odbiorcy ComposeUiTest, które są te same co w ComposeContentTestRule.

    interface AndroidComposeUiTest i fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) na Androidzie to: dodano, aby zapewnić dostęp do bazowej aktywności, podobnie jak AndroidComposeTestRule Aby mieć jeszcze większą kontrolę, możesz utworzyć instancję class AndroidComposeUiTestEnvironment samodzielnie.

    Implementacja na komputery to class DesktopComposeUiTest, ale nie ma Obecnie dostępne są funkcje uruchamiania przeznaczone specjalnie dla komputerów stacjonarnych.

    Można przeprowadzić migrację testu z pakietu ComposeTestRule do ComposeUiTest w ten sposób (przykład: Android). Od:

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

    Aby:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • Obecnie ComposeContentTestRule 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 Pole LineHeightBehavior zostało zmienione w pojedynczą wyliczenie: LineHeightTrim. LineHeightTrim mają wartości 4 stanów zdefiniowane za pomocą 2 wartości logicznych: FirstLineTop, LastLineBottom, oba i brak (Ifc6a5, b/181155707)

  • Dodano LineHeightBehavior do 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).

    Można na przykład uzyskać działanie podobne do tego, jakie stosuje CSS definiuje za pomocą funkcji LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

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

  • Funkcje PlatformParagraphStyle.lerp i PlatformSpanStyle.lerp zostaną zmienione na funkcje najwyższego poziomu funkcje (I9a268)

Poprawki błędów

  • Dokumentacja PointerInputChange::copy poprawnie stwierdza, że jest to wersja płytki. (I182f5)
  • Obsługuj wielokropek, gdy wysokość jest ograniczona i nie mieści się w wszystkich wierszach tekstu (Ie528c, b/168720622)
  • Włączono domyślne ustawienia: includeFontPadding. Możesz wyłączyć funkcję includeFontPadding za pomocą 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 PointerInputChange zostaną zużyte. Jeśli chcesz utworzyć nieograniczony PointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)
  • Włącz interoperacyjność zagnieżdżonego przewijania między opcjami tworzenia i widoku w kierunku tworzenia wiadomości > Wyświetl. Oznacza to, że element nadrzędny tworzenia wiadomości będzie mógł otrzymywać zagnieżdżone delta przewijania z zagnieżdżonego widoku przewijania. (If7949, b/174348612)
  • Nowy SemanticsProperty testTagsAsResourceId, którego można użyć, aby zapewnić zgodność Compose z testami UIAutomator zaprojektowanymi dla systemu widoku danych. (I39c20)
  • Wyświetlaj wszystkie dostępne wagi czcionek systemowych w Androidzie podczas korzystania z funkcji FontFamily.SansSerif. Spowoduje to wewnętrznie użycie zastępczych nazw czcionek takich jak bezszeryfowa-średnia w interfejsie API 21–28. Jest to zmiana działania, ponieważ w interfejsach API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992)
  • Instruktorzy akapitu i wielu akapitów zmienili kolejność argumentów pozycji na przed opcjonalnymi argumentami. (Idafaa)
  • W AndroidFont jako parametr konstruktora używany jest teraz typefaceLoader. (I2C971)

Wersja 1.2.0-alpha07

6 kwietnia 2022 roku

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

Zmiany interfejsu API

  • Dodano nową funkcję Snapshot.withoutReadObservation { ... }. Umożliwia użytkownikom uruchamianie przekazywanej funkcji lambda bez subskrybowania zmian wartości stanu odczytywanych podczas tego bloku. Może być przydatna w przypadkach, gdy chcesz skorzystać z bezpiecznego zapisu/odczytu wątków bazujących na zrzutach, ale chcesz mieć możliwość odczytania wartości bez konieczności niepotrzebnej zmiany kompozycji czy ponownych pomiarów. (I9f365, b/214054486)
  • Właściwość rozszerzenia consumeWindowInsets 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 zawartości obiektu VectorPainter w przypadku bieżącego układu. kierunek: od prawej do lewej. (I79cd9, b/185760237)
  • Zaktualizowano kolory cieni/otoczenia, aby były parametrami końcowymi klasy Modifier.graphicsLayer, aby zapewnić zgodność z interfejsem API (I3f864, b/160665122).

  • W GraphicsLayerScope dodaliśmy domyślne implementacje dla koloru cienia/otoczenia, aby zapewnić nienaruszające zmiany w interfejsie 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 stabilniej. (IB5482)
  • Hurra! Obsługa animacji tworzenia wiadomości „Skala czasu trwania animatora” w Opcji programisty. (I5a4fc, b/161675988)
  • Dodano lokalny modyfikator BeyondBoundsLayout (If8b51, b/184670295)
  • Tekst: opcja includeFontPadding jest teraz domyślnie wyłączona. obsługiwane są problemy z przycinaniem wynikające z funkcji includeFontPadding=false i nie powinny być przycinane w przypadku wysokich skryptów. (I31c84, b/171394808)

Poprawki błędów

  • ComposeContentTestRule.setContent wyrzuci teraz IllegalStateException, jeśli próbujesz ustawić treści, gdy jest już treści. (I888a5, b/199631334)
  • Naprawianie awarii spowodowanej przez zawartość schowka przy odczytywaniu z do schowka na Androidzie. (I06020, b/197769306)
  • Popraw próbki przewijania RSB. (I6a596)

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

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

Wersja 1.2.0-alfa04

23 lutego 2022 r.

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

Zmiany interfejsu API

  • Dodano ComposableTarget, ComposableTargetMarker i ComposableOpenTarget, który umożliwia raportowanie w czasie kompilacji funkcja kompozycyjna jest nazywana kierowaniem na aplikację, do której nie była potrzebna stworzonych z myślą o użytkownikach.

    W większości przypadków adnotacje można wywnioskować na podstawie sposobu tworzenia kompilatora, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Przypadki, których nie można wywnioskować, to na przykład utworzenie za pomocą abstrakcyjnego narzędzia kompozycyjnego (takiego jak metod interfejsu), pola lub zmienne globalne, które są kompozycyjne lambda (wnioskowane zmienne i parametry lokalne), lub gdy używasz funkcji ComposeNode lub powiązanych funkcji kompozycyjnych.

    W przypadku aplikacji niestandardowych funkcje kompozycyjne wywołujące ComposeNode lub ReusableComposeNode muszą dodać ComposableTarget adnotacji dla funkcji i dowolnych kompozycyjne typy parametrów lambda. Zalecane jest jednak aby utworzyć adnotację z adnotacją ComposableTargetMarker, a oznaczona adnotacja będzie używana zamiast ComposableTarget. Adnotacja kompozycyjna oznaczony za pomocą atrybutu ComposableTargetMarker jest odpowiednikiem funkcji ComposbleTarget z pełną i jednoznaczną nazwą atrybutu jako parametr aplikacji. Na przykład za pomocą funkcji ComposableTargetMarker zobacz: anroidx.compose.ui.UiComposable. (I38f11)

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

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

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

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

Poprawki błędów

  • Podane elementy FontFamily.Resolver są przekazywane do podkomponentów takich jak Wyskakujące okienko.
  • Podane elementy Font.ResourceLoader są przekazywane do podkomponentów takich jak Wyskakujące okienko. (I48fa5)

Wersja 1.2.0-alfa03

9 lutego 2022 r.

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

Zmiany interfejsu API

  • notifyFocusedRect metod w: TextInputSession i Funkcje TextInputService zostały wycofane i nie będą wywoływane. Używaj BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Data wprowadzenia: destroyDisplayListData metoda na 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ę kompozycyjną do funkcji lambda zmieniającej jej stan, oraz do odpowiednich węzłów. do dowolnej nowej lokalizacji. Gdy poprzednie połączenie zostanie zakończone kompozycja, stan zostaje tymczasowo zachowywany, a w przypadku nowego wywołania do lambda wchodzi do kompozycji, a potem do stanu, węzłów, są przenoszone do lokalizacji nowego wywołania. Jeśli nie ma nowego połączenia Po dodaniu stan zostaje trwale usunięty i pamiętaj, że obserwatorzy powiadomienia.

    Jeśli funkcja lambda movableContentOf jest wywoływana wiele razy w tym samym dla każdego wywołania są tworzone nowy stan oraz węzły, gdy opuszczają kompozycję i dochodzą nowe wywołania, stan zostaje przeniesiony od pierwszego dzwonienia po wprowadzanie połączeń w kolejności, w jakiej są wywoływane. Wszystkie stany, w których nie zgłoszono praw do nowych połączeń, zostaną usunięte na stałe. (IB4850)

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

  • Dodano: createFontFamilyResolver(context) i createFontFamilyResolver(context, coroutineScope), aby utworzyć nowe resolvery FontFamily inne niż użycie funkcji tworzenia wiadomości.

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

  • TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolvera używanego dla tego układu, wycofane TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)

  • Obsługa asynchronicznego i opcjonalnego wczytywania czcionek (z opcjami zastępczymi) zachowanie użytkownika. Ta ścieżka jest wykorzystywana przez pola Text i TextField oraz ujawniana Program do rozpoznawania rodzin czcionek

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

  • FontFamilyResolver.setAsyncLoadContext umożliwia ustawienie globalny kontekst współzależności używany do wczytywania czcionek asynchronicznych. (I87fe8, b/174162090)

  • Dodano AndroidFont, nowy niskopoziomowy interfejs API do obsługi nowych typów deskryptorów zasobów czcionek na Androidzie. Na przykład ładowanie czcionek z: backend związany z określoną aplikacją z opcjonalną lokalizacją zainstalowanych czcionek. na urządzeniu lub ładuję czcionkę z zasobu, który nie został dostarczony przez aktualną Fabryki czcionek.

  • Rozwinięto interfejs API Font.ResourceLoaded, aby obsługiwał opcjonalny i asynchroniczny podczas wczytywania czcionki. Nie zalecamy używania tej metody przez deweloperów aplikacji bezpośrednio API. Aby dodać nowe typy czcionek, przeczytaj AndroidFont.

  • Funkcja rozszerzenia Font.AndroidResourceLoader zezwala elementu Font.ResourceLoader poza kompozycją.

  • Dodano parametr loadingStrategy do czcionek opartych na zasobach, aby zezwolić wczytywanie asynchroniczne, gdy czcionka zasobu odwołuje się do plików XML dostępnych do pobrania. (Ie5aea, b/174162090)

  • Konstruktor Typeface(FontFamily) został wycofany. To było poprzednio używane do wstępnego wczytywania czcionek, co może potrwać do 10 sekund. dostępne do pobrania czcionki. W przypadku dostępnych do pobrania czcionek ta rozmowa może zostać zablokowana przez 10 użytkowników sek. W zamian użyj FontFamilyResolver.preload.

  • Interfejs fontResource(FontFamily): Typeface został wycofany. To było poprzednio używane do wstępnego wczytywania czcionek, co może potrwać do 10 sekund. dostępne do pobrania czcionki. Zamiast niego uż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 nieeksperymentalna API. Przestrzeń kolorów Oklab to teraz publiczny interfejs API. (I08fb6, b/180731008)

  • Wycofano: AndroidComposeTestRule.AndroidComposeStatement, który nie miał być publiczny i nie wpłynął na Twoje zmiany tak czy inaczej. (IBc46b).

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

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

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

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

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

Poprawki błędów

  • Pola tekstowe będą teraz przechowywane nad klawiaturą, gdy się znajdują zaznaczony, a klawiatura jest widoczna, gdy włączony jest tryb programowego wprowadzania tekstu. ADJUST_PAN (I8eaeb, b/190539358, b/192043120)
  • Komputer używa lokalnej kompozycji dla aplikacji FontFamily.Resolver
  • Wersja FontLoader na komputery została wycofana
  • Nowa fabryka urządzenia createFontFamilyResolver na komputerze (I6bbbb, b/174162090)
  • Rodzaj klawiatury programowej nie migocze już po zmianie między polami tekstowymi. (I1bf50, b/187746439)

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

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

Zmiany interfejsu API

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

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

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

Wersja 1.2.0-alpha01

12 stycznia 2022 r.

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

Zmiany interfejsu API

  • Wycofano: FontFamily.canLoadSynchronously. Ta usługa ma nie mają znaczenia semantycznego. (Ica5ef).
  • Do interfejsu CompositionData dodano pole tożsamości na potrzeby generowania w inspektorze układu. (IC116e).
  • Do listy urządzeń z podglądem (I93232) dodano identyfikatory urządzeń z Wear OS

Aktualizacje zależności

  • Teraz zależy od Kotlin 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

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

Poprawki błędów

  • Napraw NullPointerException pod adresem androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • Naprawianie awarii spowodowanej przez zawartość schowka przy odczytywaniu z do schowka na Androidzie. (I06020, b/197769306)
  • Poprawiono RTL w LazyVerticalGrid (aosp/1931080, b/207510535)

Wersja 1.1.0

9 lutego 2022 r.

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

Ważne zmiany wprowadzone od wersji 1.0.0

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

Wersja 1.1.0-rc03

26 stycznia 2022 r.

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

Poprawki błędów

  • Zaktualizowano, 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ą do porównywania pod kątem równości i kwalifikują się do pomijania optymalizacji. (Ice799, b/205851704)
  • ComposeNotIdleException rozszerza teraz zasięg na Exception bezpośrednio z usługi Throwable. Pamiętaj, że oznacza to, że klauzule typu „catch” które złapały Exception, mogą teraz złapać ComposeNotIdleException, co wcześniej nie było możliwe. (I9c217)

Poprawki błędów

  • Naprawianie elementów, które nie przesuwają się po zmianie widoczności IME. (I25f2e)

Wersja 1.1.0-beta03

17 listopada 2021 r.

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

Zmiany interfejsu API

  • Dodano nowy modyfikator Modifier.onPlaced, który zezwala zmiany miejsca docelowego. Dodatkowe zmiany w: przesunięcia modyfikatora podrzędnego można więc określić w oparciu o zaobserwowaną zmianę miejsca docelowego. (I558fd).
  • Usunięto: InjectionScope.flush() i InjectionScope.dispose() Opróżnianie wszystkich wydarzeń i utylizacja zakres ma teraz miejsce na końcu wywołanej metody generate*Input(), takiej jak wcześniej. (I2bed8).
  • Usunięto: MultiModalInjectionScope.Touch i MultiModalInjectionScope.Mouse Aby wstrzykiwać przycisk dotykowy i mysz dla gestów multimodalnych, których możesz teraz używać MultiModalInjectionScope.touch() i MultiModalInjectionScope.mouse(). Oba te warunki akceptują funkcję lambda, która ma zakres odbierający tę modalność. (Idde18).

Poprawki błędów

  • Wartość domyślna parametru durationMillis w Wartość TouchInjectionScope.swipeWithVelocity jest teraz obliczana w taki sposób, że przesunięcie palcem jest wykonalne. (19 dB)

Wersja 1.1.0-beta02

3 listopada 2021 r.

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

Zmiany interfejsu API

  • Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców w celu przewijania w celu wyświetlenia danego elementu (Ib918d, b/195353459)
  • Nowe interfejsy API animacji do obsługi narzędzi. Mówiąc konkretnie, ani przy użyciu narzędzi do sprawdzania animacji. ich konfiguracje w Przejścia. (I4116e)

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

  • Dodano modyfikator.pointerHoverIcon (I95f01).

Wersja 1.1.0-beta01

27 października 2021 roku

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

Zmiany interfejsu API

  • Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców, tak aby przewijali oni stronę w celu wyświetlenia danego elementu (Ib918d, b/195353459)
  • Nowe interfejsy API animacji do obsługi narzędzi. Mówiąc konkretnie, ani przy użyciu narzędzi do sprawdzania animacji. ich konfiguracje w Przejścia. (I4116e)

Wersja 1.1.0-alpha06

13 października 2021 r.

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

Zmiany interfejsu API

  • Usuń ExperimentalComposeUiApi z 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 są następujące: InternalCompilerApi wymagane, aby były wywoływane między modułami (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction zwraca teraz element SemanticsNodeInteraction, który wywołał funkcję. (I9e5db).
  • Dodano obiekt LocalInputModeManager CompositionLocal do wykrywania trybu TouchMode i NonTouchMode. (I6a83c, b/175899786)
  • Element viewConfiguration: ViewConfiguration został dodany do listy LayoutInfo aby umożliwić konsumentom uzyskanie odpowiedniej wartości na przykład po przytrzymaniu . (I76ca6)
    • Użytkownik viewConfiguration: ViewConfiguration został dodany do listy InjectionScope, aby umożliwić testom dostosowywanie wstrzykiwania danych wejściowych na podstawie na przykład przytrzymanie, czas oczekiwania czy spadek dotyku.
    • Zmieniono domyślny czas trwania przytrzymania w obu przypadkach dotykiem i myszą, aby opierać się na wartościach InjectionScope.viewConfiguration
  • Implementacja menu ExposedDropdownMenu w oparciu o element ExposedDropdownMenuBox z polem TextField i menu DropdownMenu wewnątrz obiektu (If60b2).
  • Do pola PopupWłaściwości dodano atrybut closeOnOutsideClick i zastąpił on wycofaną zasadę closeOnClickOutside. Nowa właściwość otrzymuje pozycję kliknięcia i granice kotwicy, zapewniając dokładniejszą kontrolę nad tym, czy ma być wywoływane czy nie. Pozwala to na przykład zapobiec odrzuceniu reklamy zakotwiczonej po dotknięciu reklamy zakotwiczonej.
    • Flagi updateAndroidWindowManagerFlags zostały dodane do obiektu PopupWłaściwości, umożliwiając niskopoziomową kontrolę nad flagami przekazywanymi przez wyskakujące okienko do narzędzia WindowManager Androida. Parametrem funkcji lambda będą flagi obliczone na podstawie wartości PopupWłaściwości, które powodują wystąpienie flag WindowManager, np. które można zaznaczyć. Wynikiem funkcji lambda będą ostateczne flagi, które zostaną przekazane do Android WindowManager. Domyślnie flagi updateAndroidWindowManagerFlags pozostawiają flagi obliczone na podstawie parametrów bez zmian. Z tego interfejsu API należy korzystać z rozwagą tylko w sytuacjach, gdy wyskakujące okienko ma określone wymagania dotyczące działania. (I6e9f9)
  • Interfejs Recomposer.state został wycofany i zastąpiony przez Recomposer.currentState, aby zmienić jego typ na StateFlow (Ic2ab3, b/197773820)
  • Dodano flush() i dispose() do InjectionScope. Skorzystaj gdy chcesz usunąć wszystkie zdarzenia znajdujące się w kolejce od razu. i chcą pozbyć się zakresu. (Ifb73a).
  • Dodano element performScrollToNode(matcher: SemanticsMatcher), który przewija przewijany kontener do treści pasującej przez dla danego dopasowania. (IC1cb8)
  • InjectionScope stosuje teraz Density, dzięki czemu możesz: łatwo konwertuje między px i dp w performTouchInput i dp. (I8fe1f).

Poprawki błędów

  • AndroidView propaguje teraz funkcję LocalLifecycleOwner oraz LocalSavedStateRegistryOwner do widoku przez ViewTreeLifecycleOwner i ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
  • Rozwiązywanie problemów z obsługą przesuwania w Wear OS (I9387e)
  • Domyślny czas między zdarzeniami wprowadzenia danych wejściowych zmieniono z 10 ms na 16 ms. Może to zmienić wynik testów za pomocą gestów, np. przesunięcia palcem. (I829fd)

Wersja 1.1.0-alpha05

29 września 2021 r.

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

Zmiany interfejsu API

  • Dodano obsługę komunikacji intermodyfikatora (Id5467, b/198826874)
  • Do elementu PointerEventChange dodaliśmy eksperymentalne wskaźniki historyczne. (Ic1fd8, b/197553056, b/199921305)
  • Dodano density: Density i layoutDirection: LayoutDirection do LayoutInfo. Dzięki temu klienci korzystający z LayoutInfo do interpretowania wymiarów i pozycji wyświetlanych w polu LayoutInfo bez obaw. (I002f1)
  • Dodano eksperymentalną obsługę wstrzykiwania zdarzeń myszy. Używaj performMouseInput, aby zacząć wysyłać zdarzenia myszy lub wysyłać zdarzenia myszy za pomocą właściwości Mouse usługi MultiModalInjectionScope podczas multimodalny gest wprowadzania z użyciem funkcji performMultiModalInput. Zobacz MouseInjectionScope, aby wyświetlić dokumentację dostępnego interfejsu API. (Iaa4a8, b/190493367)

Poprawki błędów

  • Poprawiono obsługę ułatwień dostępu (leniwe i leniwe) nieleniwe) w odniesieniu do przewijania (I6cdb0)
  • Ulepszono: TouchInjectionScope.swipeWithVelocity. Teraz akceptuje szerszy zakres zmiennych wejściowych i proponuje zmiany dane wejściowe, jeśli nie można utworzyć przesunięcia (I40fbe, b/182477143)

Wersja 1.1.0-alfa04

15 września 2021 r.

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

Zmiany interfejsu API

  • PointerEvent ma teraz PointerEventType . (I091fa)
  • Pozwól dzieciom na akceptowanie danych wejściowych wskaźnika poza: granice wejściowe wskaźnika nadrzędnego. Rodzice mogą je przechwycić wywołania z właściwością PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
  • Wycofano reguły performGesture i GestureScope, które zawierają zostały zastąpione przez performTouchInput i TouchInjectionScope. (Ia5f3f, b/190493367)
  • Element touchBoundsInRoot został dodany do elementu SemanticsNode zawiera minimalny rozmiar docelowego elementu dotykowego, dzięki czemu deweloperzy może sprawić, że docelowe elementy dotykowe będą spełniać minimalne wymagania dotyczące ułatwień dostępu. (I2e14b, b/197751214)
  • Ponów implementację, którą można sprawdzić (I927bc, b/191017532)
  • Zmieniono nazwę parametru inspekcji, aby odpowiadała utworzonemu (I3a482, b/191017532)
  • Wprowadzono performTouchInput i TouchInjectionScope jako zamiennik dla performTouchInput i TouchInjectionScope, brukowanie a przez inne modalności (takie jak mysz).

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

    Działanie funkcji TouchInjectionScope jest prawie takie samo jak GestureScope z 2 drobnymi szczegółami:

    1. W przypadku wysyłania zdarzenia braku aktywności, gdy wskaźniki były przenoszone bez wysyła zdarzenie ruchu (innymi słowy, użytkownik updatePointerTo() został ale nie move(), a następnie funkcja down() jest wywoływana), poprzedni implementacja przesunie w czasie zdarzenia i wyśle zdarzenie przeniesienia przed wysłaniem zdarzenia wyłączenia. Nowa implementacja nadal wysyła parametr przenieść wydarzenie, ale nie opóźnia jego czasu w tym konkretnym
    2. W przypadku wysyłania zdarzenia na górę, gdy wskaźniki były przenoszone bez wysyłając zdarzenie przenoszenia (podobnie jak powyżej), poprzednia implementacja przesunie w czasie wydarzenia i wyśle zdarzenie ruchu przed wysłaniem . Nowa implementacja nie zapewnia żadnego z tych korzyści: nowe pozycje wskaźniki będą widoczne tylko w przypadku zdarzenia „up”.

    Na koniec TouchInjectionScope przedstawia nową metodę currentPosition(pointerId: Int), aby uzyskać bieżącą pozycję dany wskaźnik. (If1191, b/190493367)

Poprawki błędów

  • Zezwalaj na rozszerzenie zakresu docelowego elementu dotykowego poza zakres klipu w obszarze klipu, aby określić minimalny docelowy element dotykowy. (I43e10, b/171509422)
  • Dodaliśmy obsługę rozciągania dalekiego przewijania na urządzeniach z Androidem 12. (Iccf3c, b/171682480)

Wersja 1.1.0-alfa03

1 września 2021 roku

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

Nowe funkcje

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

Zmiany interfejsu API

  • Dodano Modifier.inspectable do dodawania innych modyfikatorów. (I1909b, b/191017532)
  • Dodano interfejs API BlurredEdgeTreatment aby uprościć zamazywanie przypadków użycia najczęściej używane kombinacje flag klipu oraz TileModes. Większość przypadków użycia pozwalając na wyrenderowanie rozmytych treści, poza granicami oryginalnej treści i zamazanie obszarów poza granicami z przezroczystą czernią lub klipsem, do granic treści, próbkując najbliższą krawędź dla jąder, które wykraczają poza treści granic. (I6b4b7, b/166927547)
  • Dodano obsługę obiektu RenderEffect na pulpicie tworzenia wiadomości. Wprowadzenie funkcji OffsetEffect, a także używając modyfikatora rozmycia, wprowadzenie efektów wizualnych rozmycia do części hierarchii kompozycji. (I0f6aa, b/166927547)
  • Wprowadzono interfejs RenderEffect API które można opcjonalnie skonfigurować na element Modifier.graphicsLayer do zmiany zawartość samej warstwy. Ten mogą być rozmyte i dziecięce kompozycje w hierarchii. (I47c4d, b/166927547)
  • AwaitPointerEventScope ma teraz funkcję withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (IE861C)
  • Dodanie obsługi TileMode.Decal co jest przydatne przy definiowaniu krawędzi dla funkcji RenderEffects opartych na rozmyciu. (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction 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 od BlurredEdgeTreatment na korzyść jawnego sprawdzenia, czy kształt ma wartość null. (I85d68)

Wersja 1.1.0-alfa02

18 sierpnia 2021 r.

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

Zmiany interfejsu API

  • PointerEvent obsługuje teraz czytanie stanu przycisku myszy i stanu modyfikatora klawiatury. (I6310c, b/180075467)
  • Wstrzykiwane gesty używają teraz czasu MainTestClock jako źródłem prawdy dla czasu. Obecny czas wstrzykniętych zdarzeń w: Pole performGesture zostanie zainicjowane do bieżącego czasu Zegar Główny. (Ifb364, b/192064452)
  • Dodano konstruktor DpRect(DpOffset, DpSize) (I2cf16, b/194219828)
  • Dodano klasę DpSize (I7abb1, b/194219828)

Poprawki błędów

  • Zaktualizowana grafika wektorowa w formacie XML analizowanie na potrzeby obsługi ColorStateLists jako Właściwości odcienia koloru głównego w obiektach VectorDrawable. (I86915, b/195668138)

Wersja 1.1.0-alpha01

4 sierpnia 2021 r.

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

Zmiany interfejsu API

  • RelocationRequester.bringIntoView akceptuje teraz prostokąt jako parametr, który pozwala nam pokazać część funkcji kompozycyjnej (Ice2c5, b/194330245)
  • AnimatedImageVector i powiązane z nim interfejsy API są teraz w nowej wersji androidx.compose.animation:animation-graphics. (I60873)
  • Dodano eksperymentalny modyfikator do obsługi próśb o relokację. (I65a97, b/178211874)
  • Wprowadzenie interfejsu BrushPainter API który umożliwia rysowanie dowolnego pędzla w ramach programu Painter, podobnego do ColorPainter

    Zaktualizowano rozmiar interfejsu Brush API, aby dodać rozmiar wewnętrzny parametr, którego dotyczy zapytanie w BrushPainter (Ia2752, b/189466433)

  • Zaktualizowano metodę DrawScope#drawImage, która pochłania źródłowe i docelowe prostokąty , aby wykorzystać opcjonalną jakość . Przydaje się to na Pixelu dzieło sztuki, które ma być pikselizowane skalowany w górę i uwydatnić grafikę w formacie pikselowym. Zaktualizowana BitmapPainter + możliwość komponowania obrazu aby wykorzystać opcjonalną filtrującą jakość Parametr (Ie4fb0, b/180311607)

  • Dodano metodę GestureScope.advanceEventTime, aby podać więcej sterowanie czasem zdarzeń za pomocą gestów (Ibf3e2);

Poprawki błędów

  • Aby lepiej obsługiwać łańcuchy modyfikatory, upewnij się, że implementacja Modifier.paint w przypadku wywołania showsContent. Wcześniej w węźle liścia występował błąd Modifier.paint łańcuch modyfikatorów, uniemożliwiając tym samym jej konfiguracji w kontenerze kompozycyjnym (np. w pudełku). lub dodać inne ozdoby, takie jak Modifier.paint().border() Dzięki użyciu Modifier.paint należy wywołać metodę DrawContent po narysowaniu zawartości danego argumentu Mamy większą spójność zachowań. wzorem modyfikatora. (Ibb2a7, b/178201337, b/186213275)
  • Okna dialogowe są teraz zgodne z zachowaniem rozmiaru platformy. Aby zastąpić to zachowanie, ustaw usePlatformDefaultWidth na wartość Fałsz. (Iffaed, b/192682388)
  • Przeniesiono InfiniteAnimationPolicy do :compose:ui (I5eb09, b/160602714)
  • Animacja obejmuje przewijanie za pomocą działań semantycznych w przypadku leniwych list i zwykłych komponentów przewijania (Id9066, b/190742024)

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

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

Poprawki błędów

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

Wersja 1.0.4

13 października 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano na podstawie usługi Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

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

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

Wersja 1.0.1

4 sierpnia 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano w zależności od 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 dla: ułatwienia dostępu. (IB547C)
  • Nazwa pliku useDefaultMaxWidth w: PopupProperties została zmieniona na usePlatformDefaultWidth. (I05710)
  • Okna mogą teraz zajmować całą szerokość ekranu. (I83929, b/190810877)
  • Dodano eksperymentalną obsługę kolorów HSV i HSL reprezentacji. (Id7cf8, b/180731008)

Zmiany w działaniu

  • Funkcja Utwórz @Preview zawiera teraz: LocalActivityResultRegistryOwner, która umożliwia Ci aby wyświetlić podgląd elementów kompozycyjnych korzystających z takich interfejsów API, rememberLauncherForActivityResult(), które są zależne tego właściciela. (Ib13d1, b/185693006)
  • Funkcja Utwórz @Preview zawiera teraz: LocalOnBackPressedDispatcherOwner, która umożliwia Ci aby wyświetlić podgląd elementów kompozycyjnych, które korzystają z interfejsów API takich 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

  • Zmień role enum i LiveRegionMode na klasy wbudowane z prywatnym konstruktorem (Id1890)
  • Parametr keyCapitalization jest konwertowany na klasę wbudowaną. (Id5a1c).
  • Zmieniono HapticfeedbackType na klasę wbudowaną. (I255ec)
  • Modifier.pointerInteropFilter to @ExperimentalComposeUiApi. (Iede6c).
  • TextWyrównaj, FontSynthesis i TextDirection są teraz w tekście zajęcia. (I212fe)
  • Ustawienie TextOverflow zostało zmienione na klasę wbudowaną. (I433af).
  • FontStyle to klasa wbudowana. (I9e48b).

Poprawki błędów

  • Główne stałe to na razie @ExperimentalComposeUiApi. Konsumpcja może zadeklarować stałe prywatne przed stabilizacją. (Ia5d48).
  • Testy tworzenia wiadomości można teraz uruchamiać w Robolectric. Poniżej Dotychczasowe ograniczenia to:
    • Nie ma natywnej mapy bitowej, więc tag ImageBitmap() prowadzi do NullPointerException.
    • Nie ma rysunku, więc captureToImage() będzie bez końca czekać następne podanie (tj. zakleszczenie).
    • Nie wczytano czcionki, więc każdy tekst zostanie zmierzony nieprawidłowo. Wszystkie mają stałą wysokość około 20 pikseli i szerokość 1 piksela.
    • ComposeTestRule.waitUntil {} nie uruchamia wątku głównego podczas oczekiwania, co sprawia, że jest on taki sam jak ComposeTestRule.mainClock.advanceTimeUntil {} W przyszłości planujemy określić 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 ona popularna. i należy ją skompilować z wyprzedzeniem.

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

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

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

Jak to działa?

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

Wersja 1.0.0-beta08

2 czerwca 2021 r.

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

Zmiany interfejsu API

  • Wyliczenie NestedScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
  • Nazwa usługi FocusManager.clearFocus(forcedClear = true) została zmieniona na FocusManager.clearFocus(force = true) (Ia0c41)
  • Zrefaktoryzowane wykorzystanie enum do klas wbudowanych w celu uniknięcia zawierają dokładne informacje o tym, kiedy stwierdzenia, nowe wartości wyliczeniowe. (I2b5eb)
  • Usuń @ExperimentalComposeUiApi z 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ż dostępne pojedyncze wartości, ale listy. Dzięki temu można je scalić w niezmienionej formie konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które pozwalają na korzystanie z zmiany (Ica6bf, b/184825850)
  • Metoda Modifier.focusModifier() została wycofana i zastąpiona 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)
  • AnnotatedString.withAnnotation funkcje są ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a).
    • Konstruktor TextUnit z obiektem TextUnitType jest teraz ExperimentalTextApi zamiast ExperimentalComposeApi.

Poprawki błędów

  • Naprawiliśmy błąd wprowadzony w wersji beta07, polegający na tym, że elementy LazyColumn/wiersze były częściowo wyświetlane po przewinięciu (I8c9ac, b/188566058).
  • Teraz detectDragGesures, detectVerticalGestures 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)
  • Daje możliwość wciągnięcia stanu SubcomposeLayout, co umożliwia wstępne komponowanie treści w elemencie wymaganym slotId, co przyspieszy przejście następnego wskaźnika, ponieważ następnym razem, gdy spróbujemy przesłać elementy z podanym identyfikatorem boksu, nie będzie już potrzebna kompozycja. (I42580, b/184940225)
  • Dodano uchwyt wyboru klipu (Iff80d, b/183408447)
  • Usunęliśmy nieużywane interfejsy API związane z obsługą Inspektora układu. (I2ac78).

Poprawki błędów

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

Wersja 1.0.0-beta06

5 maja 2021 roku

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

Zmiany interfejsu API

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

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

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

Zmiany interfejsu API

  • Dodano eksperymentalne FocusManager.moveFocus(In) i FocusManager.moveFocus(Out) (Ic5534, b/183746743)
  • Dodano eksperymentalny interfejs API performTextInputSelection (I2dcbb, b/178510628)
  • Interfejs InputEventCallback został wycofany. Nie można było korzystać z interfejsu w żadnej publiczny interfejs API; i nie było go w ogóle w kodzie. (I34a02, b/184003208)
  • Wycofano: TextLayoutResult/createTextLayoutResult . To nieużywana funkcja publiczna, która została dodana do testów. Funkcja nie wykonuje żadnych działań, których można użyć dla Interfejsy API tworzenia tekstu. Funkcja została wycofana i będzie zostaną później usunięte. (I80413)

Poprawki błędów

  • Naprawiono ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight i accessibilityActionScrollDown przewijanie elementów ułatwień dostępu. Zamiast przewijać do końca będzie przewijany o 1 ekran w danym kierunku. (Ieccb0)
  • pliki AndroidManifest z komponentów ui-test-manifest oraz Narzędzie ui-tooling-data jest teraz zgodne z Androidem 12 (I6f9de, b/184718994)

Wersja 1.0.0-beta04

7 kwietnia 2021 r.

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

Zmiany interfejsu API

  • Włącz zmianę nazwy hideSoftwareKeyboard i showSoftwareKeyboard SoftwareKeyboardControllerhide() i show().
    • Udostępnij pełny interfejs CompositionLocal dla Oprogramowanie Local SoftwarekeyController, które umożliwia jego ustawienie (zwłaszcza przydatne w testach) (I579a6)
  • Interfejs LiveRegion Accessibility API został dodany. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadomi użytkownika o zmianach (Idcf6f, b/172590946)
  • Wprowadzenie elementu TextOverflow.Visible. (IC8f89)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że elementy w polu LazyColumn/LazyRow znajdujące się na krawędziach były nieprawidłowo umiejscowione po szybkim przesunięciu (Ie4d13, b/183877420).
  • Aplikacja AndroidViewBinding jest teraz prawidłowo usuwana fragmentów, które zostały powiększone przez FragmentContainerView, gdy element AndroidViewBinding jest usuwany z okna tworzenia wiadomości w hierarchii. (Ib0248, b/179915946)
  • AndroidViewBinding jest teraz prawidłowo zagnieżdżony fragmenty, które zostały powiększone przez FragmentContainerView, gdy ComposeView znajduje się w: Fragment, naprawia problemy z zapisaniem i przywróceniem ich stanu fragmenty. (I70eb0, b/179915946)
  • Tworzenie powiązań widoków danych zależy teraz od Fragment 1.3.2 i obecnie konsekwentnie pokazuje fragmenty rozszerzane za pomocą FragmentContainerView po zmianie konfiguracji. (I0743d, b/179915946)

Wersja 1.0.0-beta03

24 marca 2021 r.

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

Zmiany interfejsu API

  • Odroczone sprawdzanie zależności ViewTree obiektu ComposeView (I8dbbf, b/182466548)
  • Dodano opcjonalne parametry startX/endX i startY/endY do funkcji swipeUp/swipeDown/swipeLeft/swipeRight w GestureScope. (I49e2d, b/182063305)

Wersja 1.0.0-beta02

10 marca 2021 r.

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

Zmiany interfejsu API

  • Dodano nową lokalną kompozycję LocalSoftwareKeyboardController Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I5951e, b/168778053)
  • Dodano nową lokalną kompozycję LocalSoftwareKeyboardController Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I84472, b/168778053)
  • Usunięto te komponenty (SemanticsMatcher):
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • Oznaczono: SemanticsMatchers jako @EksperymentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (IA600C)
  • Dodano te elementy (SemanticsMatcher):
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Poprawki błędów

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

Wersja 1.0.0-beta01

24 lutego 2021 r.

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

To jest pierwsza wersja beta Compose 1.0.0.

Zmiany interfejsu API

  • Oddzwanianie onStart zostało dodane do detectDragGestures (I67269, b/179995594)
  • Modyfikatory dopasowujące wymiary do elementów wewnętrznych nie są już eksperymentalne. (I15744)
  • Nazwa MeasureBlocks została zmieniona na MeasurePolicy, a interfejs jest teraz ciekawym interfejsem. Zaktualizowaliśmy lub uprościliśmy interfejsy Layout API pod kątem MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • Pole InteractionState zostało zastąpione tekstem [Mutable]InteractionSource
    • Interfejsy odpowiadają za wysyłanie / zbieranie zdarzeń interakcji.
    • Zamiast przekazywać interactionState = remember { InteractionState() } do komponentów takich 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)
  • dodać interfejs AccessibilityMananger, LocalAccessibilityMananger in CompositionLocals (I53520),
  • Usunięto wycofane metody LayoutCoordinates. Użyj funkcji zamiast właściwości positionInParent i boundsInParent (I580ed, b/169874631, b/175142755)
  • Aliasy typów zastąpione podstawowymi typami:
    • ColorStop to 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)
  • defaultFactory dla compositionLocalOf i Parametr staticCompositionLocalOf jest teraz wymagany zamiast opcjonalnie.

    Ta zmiana usuwa potencjalny błąd typu dla wartości niepustej bez domyślnych ustawień fabrycznych. Wcześniej to zwróciłoby wartość null dla typu niedopuszczającego wartości null.

    W przypadku typów dopuszczających wartości null zalecamy podanie parametru { null } jako domyślnego fabryki.

    Nie zalecamy używania zasobów lokalnych z typami niedopuszczającymi wartości null, chyba że można określić rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda defaultFactory powinna zgłosić wyjątek. Jednak zrobić wyjątek oznacza, że konsumenci lokalnie korzystają pośrednia zależność od podanego źródła, która nie jest egzekwowana według systemu typów. (Ifbd2a).

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

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

  • Modifier.tapGestureFilter został(a) usunięty(a). Użyj w zamian 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 rozszerzeń z komponentami towarzyszącymi ImageBitmap i ImageVector. Usunięto load{Image,Vector,Font}Resource funkcje. (I89130)

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

  • Nazwa dostawców została zmieniona na CompositionLocalProvider

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

  • Usunięto interfejs API String.format refaktoryzowanych zastosowań w różnych Metody toString, które nie powinny być wykorzystywane String.format wewnętrznie. (Id1290).

  • Usunięto asercje dp (I798d2)

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

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

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

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

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

  • Dodaliśmy funkcję pomocniczą, która przydaje się ustaw to samo działanie dla wszystkich wywołań zwrotnych ImeAction (I63447, b/179226323)

  • Usunięto wywołanie zwrotne SoftwareKlawiaturaController z całego tekstu które zostaną wkrótce zastąpione nowym interfejsem API. (IAe869, b/168778053)

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

  • W interfejsie Material API wprowadzono te zmiany:

    • Do górnego/dolnego paska aplikacji dodano parametr contentPadding, aby umożliwić dostosowanie domyślnego dopełnienia.
    • Zmieniono kolejność parametrów w TleDScaffold, aby zachować zgodność z wytycznymi interfejsu API dotyczącymi parametrów, które powinny znajdować się przed parametrami opcjonalnymi.
    • Parametr icon w elemencie bottomNavigationItem został przeniesiony 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żywaj LivelyVectorResource, aby wczytać plik XML <animated-vector> jako obiekt AnimatedImageVector i animować go. z malarkąFor (I8ea91)
  • Dodano nową lokalną kompozycję klawiatury lokalnej Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I658b6, b/168778053)

Wersja 1.0.0-alfa12

10 lutego 2021 r.

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

Zmiany interfejsu API

  • Usunięto obsługę grup widoków danych z UiApplier. Wycofane elementy kompozycyjne emitView zostały usunięte. (Ifb214).
  • Modifier.pointerInput wymaga teraz zapamiętania klawiszy, aby wskazać, kiedy współrzędna wykrywania danych wejściowych wskaźnika powinna zostać uruchomiona ponownie zależności. (I849cd)
  • Zmieniono nazwę CompositionReference na CompositionContext (I53fcb).
  • Nazwa granic została zmieniona na DpRect (I4b32a).
  • Testowanie aktualizacji: funkcja hasText() sprawdza w polu tekstowym zarówno dane wejściowe, jak i teksty etykiet, wskazówek i zastępczych (Iab803)
  • 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, zmień działanie etykieta w sekcjach AccessibilityAction i CustomAccessibilityAction – CharSequence na ciąg znaków (I0dc82)
  • Aby lepiej dopasować nazwy w formatach ImageBitmap i ImageVector Nazwa ImagePainter została zmieniona na BitmapPainter równolegle do obiektu VectorPainter. (Iba381, b/174565889)
  • Lepsze interfejsy API do testowania podłańcucha z podłańcuchem jako argumentem (Icbe78)
  • Dodano element Modifier.focusOrder(), który akceptuje żądanie FocusRequester bez określania niestandardowe skupienie się na funkcji lambda. To jest przydatne kiedy wystarczy podać odwołanie ale nie niestandardowe fokus dla utworów kompozycyjnych (I4f52a, b/179180978)
  • Element KomponentActivity.setContent został przeniesiony do androidx.activity.compose.setContent w . (Icf416).
  • Metody zniszczenia i copy() zostały usunięte z i kilku klas, w których były one rzadko używane. (I26702, b/178659281)
  • Wyskakujące okienko zostało przeniesione do konkretnej platformy. Nazwa AndroidPopupWłaściwości została zmieniona na PopupWłaściwości, a element isFocusable został przeniesiony do 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. Zamiast tego użyj fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Użyj narzędzia PaintterResource. (I6B809)
  • Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambda zwracają liczby zmiennoprzecinkowe zamiast bezpośrednich wartości liczb zmiennoprzecinkowych. (If4a35, b/178657186)
  • Dodano semantykę EditableText do oznaczania możliwego do edytowania tekstu wejściowego pola tekstowego na potrzeby ułatwień dostępu oraz odpowiadające jej metody testowe do sprawdzania semantyki (I8e07a).
  • Przyznano właściwość WłaścicielLayer/OwnerScope/OwnerSnapshotObserver wewnętrzny (I4ffaf, b/175103944)
  • Nazwa funkcji toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)
  • Nazwa IntBounds została zmieniona na IntRect, a interfejs API został ulepszony. (I1f6ff)
  • Interfejs Snapshot API został zaktualizowany, aby zwiększyć spójność z wytyczne dotyczące interfejsu API oraz ukrywanie wewnętrznych klas implementacji. z publicznego interfejsu API. (Id9e32)
  • Dodano działania semantyczne rozwijania i zwijania. Dodane rozwinięcie i połowie rozwinięcia w elemencie ModalbottomSheetState (Ib5064)
  • Interfejs Modifier.dragStepFilter został wycofany. Użyj w zamian zasady Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć metody Modifier.draggable, aby przeciągać jedną oś (I0ba93, b/175294473)
  • Zmieniono nazwy dźwięków otoczenia, tak aby pasowały do otoczenia -> Zmiana nazwy elementu CompositionLocal. Lokalizatory nosiły wcześniej nazwę AmbientFoo, a teraz CompositionLocals – LocalFoo. (I2d55d)
  • Wycofane pole BaseTextField zostało usunięte. Użyj w zamian pola BasicTextField. (I71368)
  • Zaznaczenie zostało przeniesione do podstawy. (I7892B)
  • Podobnie jak poprzednio usunęliśmy funkcję state { 0 } kompozycyjną, a teraz promujemy jej użycie, takie 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)
  • snapshotFlow i withMutableSnapshot już nie są eksperymentalna (I6a45f)
  • Rekompozycje można teraz zamknąć. Zamknięte ponownie kompozycje kontynuować ponowne kompozycje, aż kogutyny podrzędne kompozycji zostaną zakończone. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (IB6d76)
  • Nazwa UiSavedStateRegistry została zmieniona na SaveableStateRegistry, a AmbientUiSavedStateRegistry została zmieniona na AmbientSaveableStateRegistry i teraz przeniosła do pakietu androidx.compose.runtime.saveable. (I30224)
  • Nazwa artefaktu androidx:compose:runtime:runtime-saved-instance-state została zmieniona na androidx:compose:runtime:runtime-saveable (I6dcac).
  • Wiele starych, wycofanych interfejsów API z pakietu UI zostało usuniętych. (I2f2dc)
  • Artefakt compose:runtime-dispatch został wycofany. MonotonicFrameClock można teraz znaleźć w poleceniach compose:runtime Aplikację AndroidUiDispatcher znajdziesz w polecenia compose:ui. (IB5c36)
  • Outline.* – klasy nie są już klasami danych (I4879e, b/178001427)
  • Element view.captureToImage() został usunięty bez zamiennika. (I7fcd2).
  • Użyto wprowadzonego interfejsu ColorMatrix API do modyfikowania wartości RGB treści źródłowej Zrefaktoryzowany interfejs API ColorFilter na i dopasuj implementację do klasy PathEffect. (Ica1e8),
  • Dodano parametr layout Direction do klasy createOutline w kształcie. Pozwala to tworzyć kształty uwzględniające kierunek układu. (I57c20, b/152756983)
  • Interfejs onImeActionPerformed został wycofany. użyj Klawiatura Actions (If0bbd, b/179071523)
  • Wprowadzono kontekst współprogramu InfiniteAnimationPolicy który będzie stosowany w nieskończonych animacjach. Domyślnie nie zasada jest zainstalowana, chyba że przeprowadzasz testy z zastosowaniem ComposeTestRule. (I50ec4, b/151940543)
  • Usunięto element canDrag z folderu Modifier.scrollable. (Id66e7, b/175294473)
  • Zmieniono nazwę LayoutCoordinates.parentCoordinates na LayoutCoordinates.parentLayoutCoordinates, Właściwość nadrzędnyCoordinates. Właściwość nadrzędnyCoordinates oferuje teraz LayoutCoordintes modyfikatora nadrzędnego. Dzięki temu bardziej kompletnych przypadków użycia onSizeChanged() oraz onGloballyPositioned() (Idfbfd, b/177926591)
  • Parametry tapTrackingFilter, DoubleTapStepFilter, longPressConsentFilter i PressIndicaitonTrackingFilter zostały wycofane. Użyj w zamian funkcji Modifier.clickable lub Modifier.pointerInput z funkcją wykrywania gestów. (I6baf9, b/175294473)
  • Parametr unregisterProvider SaveableStateRegistry został usunięty. RejestratorProvider() zwraca teraz obiekt SaveableStateRegistry.Entry, którego można użyć do wyrejestrowania (Ic4274, b/178583739).
  • Zapamiętano nazwę savedInstanceState(), aby korzystały z ! (I1366e, b/177338004)
  • Usunięto CoreText i CoreTextField z publicznego interfejsu API
    • Usunięto wycofane przeciążenie komponentu SelectionContainer
    • (I99c19).
  • Testy, w których usługa Compose jest używana w hierarchiach, które są są teraz bardziej stabilne. (IE81ed, b/175765614)
  • Usunięto polecenie Recomposer.current(). [Abstract]ComposeView teraz domyślnie tworzone są leniwie, ograniczone do okna Rekompozycje oparte na metodzie ViewTreeLifecycleOwner dla okna. Zmiana kompozycji Znaczniki animacji oparte na mechanizmie withFrameNanos są wstrzymywane, a cykl życia hosta jest wstrzymywany. zatrzymuje się. (I38e11)
  • Recomposer.runningRecomposers oferuje teraz globalny mechanizm StateFlow tylko do odczytu, aby obserwować stan kompozycji w cały proces. Wolę ten interfejs API od Recomposer.current(), który jest teraz wycofane. (If8ebe).
  • Saver, listSaver(), mapSaver(), autoSaver przeniesiono z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6).
  • Polecenia EditCommand akceptują ciąg znaków AnnotatedString. Jest to jednak zmiana wprowadzona tylko w interfejsie API, a edycja tekstu w wielu stylach nie jest zostały już wdrożone. (I4c3ea).
  • Funkcje Czas działania i Czas trwania zostały usunięte. (Ib9bf4, b/177420019)
  • Przeniesiono CompositionData.asTree() i powiązane z nimi interfejsy API do oddzielenia modułu ui-tooling-data i oznaczonego jako eksperymentalny (Ic95b8)
  • Nazwy parametrów RounderCornerForm, CutCornerPosition i CornerBasedForm zostały zmienione z lewej/prawej na początek/koniec, by zapewnić obsługę automatycznego odbicia lustrzanego kształtu w kierunku rtl. Funkcje absoluteRounderCorner shape i absoledCutCornerPosition zostały wprowadzone w przypadkach, gdy automatyczne odbiór lustrzane nie jest potrzebne. (I61040, b/152756983)
  • Interfejs API, na który kierowana jest wtyczka kompilatora Compose została zmieniona tak, aby używała interfejsu zamiast konkretnej klasy. Interfejs nie będzie już używał type.

    To jest zmiana wewnętrzna, która nie powinna mieć wpływu na źródło jest to zmiana powodująca niezgodność kodu binarnego. (I3b922, b/169406779)

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

Poprawki błędów

  • Obiekty ComposeView umieszczone w hierarchii widoków, które są elementami podrzędnymi inna kompozycja zawiera teraz kompozycje podrzędne ich przodków (I92883)
  • Zaktualizowano element imageFromResource tworzenia wiadomości Interfejs API do ponownego wykorzystania pamięci podręcznej zasobów podczas wczytywania obiektów ImageBitmap. (If3627, b/178751994)

Wersja 1.0.0-alfa11

28 stycznia 2021 roku

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

Zmiany interfejsu API

  • Element WithConstraints został przetworzony pod nazwą BoxWithConstraints i przeniesiony do pliku Foundation.layout. (I9420b, b/173387208)
  • Interfejs Key.DPadUp został wycofany. Użyj klawisza Key.DirectionUp. (Iab335, b/177954892)
  • Interfejs właściciela dostępny od teraz wewnętrznie. (If8e35).
  • Dodano interfejs API FocusManager.movefoka() do automatycznego przenoszenia zaznaczenia. (I045cb, b/177681839)
  • Zmienia element PopupPositionProvider, aby używać współrzędnych zależnych od okna, a nie globalnych. Zmienia nazwę obiektuparentGlobalBounds na AnchorBounds i zmienia parametr windowGlobalBounds na „ windowSize: IntSize” (I2994a).
  • Czas trwania i czas działania zastąpimy długimi milisekundami, i eliminuje zależność od danych wejściowych wskaźnika. zajęcia. (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner został dodany podobnie jak do dotychczasowych AmbientLifecycleOwner i AmbientViewModelStoreOwner (I9a3e8, b/176756365).
  • Zaktualizowano grafikę wektorową Interfejs API do obsługi analizy barwienia zastosowane do podstawy grafiki wektorowej. (Id9d53, b/177210509)
  • Dodano parametr ToolType do pola PointerInputChange, aby rozróżniać urządzenia (Iac787, b/175142755)
  • Nazwa AmbientWindowManager została zmieniona na AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • Wycofanie metod globalnych współrzędnych i nowych metod współrzędnych opartych na oknie. (IEE284).
  • Dodano modyfikator.toolingGraphicsLayer, który po włączeniu inspekcji dodaje modyfikator warstwy graficznej. (I315df)
  • Element FocusRequester.createRefs jest teraz oznaczony jako eksperymentalna, ponieważ może się zmienić. (I2d898, b/177000821)
  • Nazwa Semantics PropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. Nazwa parametru stateDescriptionRange została zmieniona na progressBarRangeInfo. Nazwa Accessibility ScrollState została zmieniona na ScrollAxisRange. Nazwa levelAccessibility ScrollState została zmieniona na level ScrollAxisRange. Nazwa pionowości ScrollState została zmieniona na vertical ScrollAxisRange. (Id3148).
  • Usunięto dane PointerInputData i zmodyfikowano PointerInputChange wszystkie pola PointerInputData. Utworzono zdarzenie PointerInputEvent i PointerInputEventData, bo nie są używane dowolny publiczny interfejs API. (Ifff97, b/175142755)
  • Zaktualizowana implementacja GraphicsLayerScope gęstość na potrzeby obsługi konwersji dp nieprzetworzone piksele. (Ied528, b/176819695)
  • Zaktualizowano interfejs matrix API, aby śledził wiersz porządkowanie dużych i zapewnienie stałych indeksów konwersji między różnymi reprezentacje macierzy pasujące do platformy logika konwersji między SkMatrix a Matrix4 wewnętrznie. (I432e6)
  • Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).
  • Przenieśliśmy String.fintPrecedingBreak i String.fingFollowingBreak do InternalTextApi. (I657C4)
  • Adres androidx.compose.ui.util.isSurrogatePair został usunięty z publicznego interfejsu API. (IA9494).
  • Zmieniono nazwę TransformedText.transformText na TransformedText.text
    • TransformedText nie jest już klasą danych (Ie672a)
  • Usunięto klasę data class z tych zajęć:
    • Treść wbudowanego tekstu
    • LocaleList (I605c7)
  • Te klasy nie są już klasami danych:
    • Ciąg z adnotacjami
    • ParagraphStyle
    • Styl spanu
    • TextStyle
    • Waga czcionki
    • Ozdobniki tekstu
    • TextGeometricTransform
    • Indeks tekstowy
    • Wynik układu tekstu
    • TextLayoutInput (Iaff99),
  • Zmieniliśmy VisualTransformation, by stała się praktycznym interfejsem (I3bba4)
  • Dodano typ parametru odwołania do funkcji (I5e1bd).
  • Dodaj przekształcone granice do węzła InspectorNode (Ice42f)

Poprawki błędów

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

    • Dodano funkcje fabryczne, które zaczynają się od wielkiej litery.
    • Wycofane poprzednie funkcje fabryczne zapisane małymi literami pierwsze litery
    • Nowe funkcje fabryczne zwracają wartość FontFamily zamiast podklasy
    • Ukryto konstruktory podklas, aby mogły tylko w ramach funkcji fabrycznych.
    • Zmieniono nazwę Font.asFontFamily na Font.toFontFamily (I42aa7).
  • Data ComposeContentTestRule, która obejmuje okres próbny ComposeTestRule i definiuje zasadę setContent, która została usunięta z ComposeTestRule Dodano metodę fabryczną createEmptyComposeRule() zwracający ComposeTestRule i nie uruchamia aktywności dla do Ciebie. Użyj tej opcji, jeśli chcesz uruchomić aktywność w trakcie testu. np. przy użyciu ActivityScenario.launch (I9d782, b/174472899)

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

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

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

  • OnSizeChanged raportował rozmiar szablonu treści. Raportuje teraz rozmiar w swojej pozycji w łańcuch modyfikatorów. (I36b78, b/177562900)

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

  • TextFieldValue akceptuje ciąg AnnotatedString. Jest to jednak zmiana wprowadzona tylko w interfejsie API, a edycja tekstu w wielu stylach nie jest zostały już wdrożone.

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

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

  • ZapamiętaneObserver zastępują CompositionLifecycleObserver. , a funkcja CompositionLifecycleObserver została wycofana.

    RememberObserver zastępuje CompositionLifecycleObserver ze zmodyfikowaną semantyką i o zmienionych nazwach. Przejście na nowy interfejs API może odbywać się automatycznie w przypadku obiektów, które są zapamiętywane tylko raz, czyli są i nadal są co jest zalecane. Jeśli jednak plik referencyjny był zapamiętane więcej niż raz w kompozycji onRemembered to nazwa dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. onEnter została wywołana wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jak WithConstraints i Scaffold, tworząc singiel onEnter gwarancja połączenia jest niewiarygodna i została usunięta w przypadku RememberObserver

    Funkcja RememberObserver dodaje metodę onAbandoned, która jest wywoływana, jeśli Z powodowanego wywołania zwrotnego jest zwracana RememberObserver instancja do remember, ale nie został zapamiętany w stanie kompozycji i dlatego nigdy nie zostanie wywołana funkcja onRemembered. Może to spowodować występują, jeśli wyjątek zakończy kompozycję przed ukończeniem lub kompozycja jest odrzucana, ponieważ stan generuje kompozycja dla nie jest już aktualna lub w inny sposób przestaje być aktualna niezbędną. Jeśli wystąpienie RememberObserver następujące po singlu powyższa rekomendacja pozwala śledzić zasób zewnętrzny onForgotten i onAbandoned wskazują, że nie jest już potrzebny. Jeśli obiekt śledzi pracę rozpoczęte lub przydzielone zasoby w: onRemembered, onAbandoned można zignorować, ponieważ nie zostanie wywołana, jeśli onRemembered jest . (I02c36)

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

  • Zasoby w bibliotekach bez bezpośrednio zadeklarowanych zasobów publicznych (np. przez public.xml) są teraz domyślnie prywatne. (Ia1dcc, b/170882230)

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

  • Nowa metoda fabryczna items(count: Int) dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) 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 elementu ImeAction.Default zamiast ImeAction.Unspecified (Ie1bcc)).
  • Wykorzystanie narzędzia TestCoroutineDispatcher w testowaniu (I532b6)

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

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

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

Wersja 1.0.0-alpha10

13 stycznia 2021 r.

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

Zmiana niezbędna

  • Zmiana struktury wewnętrznego kompilatora Interfejs API umożliwia grupowanie zmian w wygenerowanych węzłach w wyniku kompozycji w „zastosuj zmiany” faza kompozycji, po wszystkich funkcjach @Composable .

    To fragment treści behawioralnych która może mieć wpływ na kod aplikacji jako węzłów wewnętrznych i eksperymentalnych interfejsów API po wprowadzeniu zmian. zastosowano. Zwykle można temu zapobiec, kodu z takimi zależnościami w SideEffect kompozycyjny, aby opóźnić wykonanie do czasu utworzenia węzłów. zainicjowano. (I018da)

Zmiany interfejsu API

  • Dodano funkcję Modifier.focusOrder(), która może służyć do określania niestandardowej kolejności przechodzenia między elementami ostrości (I90cf5, b/175899543, b/170155556, b/170155429).
  • Usunęliśmy wycofaną metodę skupiającą się na obserwatorium skupienia się na onFocusChanged lub onFocusEvent (I3ecb9, b/175156387)
  • EditOperations API Zmiany
    • Zmieniono nazwę operacji EditOperation na EditCommand
    • Dodano sufiks polecenia dla konkretnych implementacji EditOperation
    • Pole EditCommand nie jest już klasami danych.
    • Zmieniono nazwę funkcji EditOperation.process na applyTo
    • Zmieniono nazwę detektora zdarzeń wejściowych nainputEventCallback
    • (I0a366)
  • Usunięto nieużywane obiekty PxSquared, PxCubed i PxInverse. Zmieniono Size.center() na właściwość. (I973f7)
  • w module ui-test będzie można skonfigurować tworzenie Rekompozycje dla testowanych interfejsów (Ibebd8)
  • Zmodyfikowano prędkość, aby obejmowała składowe i matematyczne operacji. (IB0447)
  • Zmieniono nazwę @ExperimentalTesting na @ExperimentalTestApi na spójne z podobnymi eksperymentalnymi adnotacjami interfejsu API (Ia4502, b/171464963)
  • Nazwa Color.useOrElse() została zmieniona na Color.takeOrElse() (Ifdcf5).
  • Usunęliśmy nieużywane klasy DpInverse, DpSquared i DpCubed. (I4d62b)
  • Nazwa ograniczenia#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c).
  • Dodaj wywołanie zwrotne, aby powiadamiać właściciela o zmianie granic węzła układu. (I72fd1)
  • Dodano element jest określony, nieokreślony i useOrElse dla klas wbudowanych ze stałą nieokreśloną. (I93f7b, b/174310811)
  • Rozwiń interfejsy API ComposeView, by umożliwić recykling widoki oparte na kompozycji, pozostawianie kompozycji w celu ich ponownego utworzenia; później. Dodaj interfejsy API do instalowania i wykrywania rekompozytorów ograniczonych do okna i CompositionReferences do tworzenia kompozycji podrzędnych.

    Dodanie strategii ViewCompositionStrategy, która umożliwia skonfigurowanie usuwania kompozycji [Abstract]ComposeViews; domyślne działanie to usunięcie odłączenie okna. (I860ab)

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

  • Usunięto element toStringAsFixed Interfejs API z zaletą użycia String.format bezpośrednio. (Iaba6b)

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

  • Przeniesiono klasę natywny do interfejsu użytkownika i udostępniono go do użytku wewnętrznego. Zaktualizowano przypadki użycia natywnego klasy w równa się implementacji do użycia „to MyClass” . (I4f734)

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

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

  • Wprowadzono Outline.bounds do uzyskania prostokąta ograniczającego na potrzeby różnych implementacji konspektów. (I16e74, b/175093504)

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

  • ImeOptions i 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

  • Funkcja ponownego komponowania ujawnia teraz przepływ w bieżącym stanie, co pozwala monitorowania jego aktywności i aktywności związanych z nimi skutków. (Ifb2b9).
  • Dostęp do natywnego zdarzenia keyEvent można teraz uzyskać przez keyEvent.nativeKeyEvent (I87c57, b/173086397)
  • Ciąg animate() został zastąpiony tekstem animateAsState(), , który zwraca State<T> zamiast T. Dzięki temu skuteczności, ponieważ można zawęzić zakres unieważniania w którym odczytywana jest wartość State. (IB179e)
  • Dodaj interfejs API roli Semantics i Rolę jako parametr do klikalny, wybierany i włączany SemanticsModifier. Zmieniono Modifier.progressSemantics, aby Slider mógł z niego korzystać. (I216cd)
  • Nowy interfejs API Animatable oparty na współudziale, który zapewnia wzajemną wyłączność między animacjami.
    • Nowa specyfikacja DecayAnimationSpec z obsługą wielowymiarowej animacji rozkładu
    • (I820f2, b/168014930)

Wersja 1.0.0-alpha09

16 grudnia 2020 roku

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

Zmiany interfejsu API

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

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

    Dodano nową metodę: insertBottomUp().

    Stosowany sposób wstawia węzły do edytowanego drzewa przy użyciu insertTopDown() lub insertBottomUp() w zależności od który jest skuteczniejszy.

    Niektóre drzewa, takie jak LayoutNode i View, są znacznie większe efektywniej tworzyć reklamy od dołu do góry niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, była skopiowana do każdego podmiotu, który wymagał przeprowadzenia oddolnej i zwiększania wydajności. W związku z tą zmianą Applier zastępuje insertBottomUp(), aby utworzyć drzewo od dołu insertTopDown(), aby utworzyć drzewo od góry. (Icbdc2)

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

  • Dodano interfejs PaintterResource API do obsługi nieprzezroczystych obiektów Painter z dowolnego z zrasteryzowanych formatów zasobów (np. PNG) lub VectorDrawables. Konsumenci nie mają już aby z wyprzedzeniem określić typ zasobu i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w funkcjach kompozycyjnych lub modyfikatorów do malowania obrazów. (I2c703, b/173818471)

  • Do czyszczenia elementów podrzędnych dodano modyfikator.clearAndSetSemantics semantykę i wyznaczać nowe wartości. (I277ca)

  • Przeniesiono ContentDrawScope do grafiki UI z DrawScope. (Iee043, b/173832789)

  • Wprowadzono interfejs graficzny PathEffect w celu uzyskania różnych wzorów na kreślonych kształtach. Wycofane użycie NativePathEffect na korzyść oczekiwanej/rzeczywistej implementacji obiektu PathEffect. (I5e976, b/171072166)

  • Dodano interfejsy IdlingResource do funkcji Compose jako kompozycje obsługiwany wariant bezczynnych zasobów Espresso. Można je zarejestrować i wyrejestrowano za pomocą reguły ComposeTestRule (I433f3).

  • Usunięto globalną (wyrejestrowaną) rejestrację zasobów ComposeIdlingResource oraz globalna (cofnięta) rejestracja zegarów w ComposeIdlingResource (I32660),

Poprawki błędów

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

    Atrybuty CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API do wyodrębniania informacje o kompozycji. Są one publiczne, ale nie przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ zapewniają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c);

  • Refaktoryczny ShaderBrush na leniwie twórz instancję cieniowania, informacje o rozmiarze rysunku i środowisko. Przydaje się to do definiowania gradientów zajmują pełne granice rysowania funkcji kompozycyjnej w momencie kompozycji, bez konieczności na wdrożenie niestandardowych implementacji DrawModifier.

    Wycofane interfejsy API konstruktora funkcji gradientu na metodę fabryczną obiektu Gradient. (I511fc, b/173066799)

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

  • Wycofana wersja BuildCompat.isAtLeastR (Idb37e)

  • Dodano w kolejności funkcję fabryczną buildAnnotatedString, aby utworzyć obiekt AdnotatedString. Wycofany ciąg z adnotacjami za pomocą funkcji konstruktora. (Idfe0b)

  • Usunięte metody rozszerzeń dla liczby zmiennoprzecinkowej i liczby zmiennoprzecinkowej, aby przekonwertować wartości na radiany. Przeniesiona do funkcji prywatnej w implementacji PathParser w którym był jedynym miejscem, w którym jest używany (I25f52)

Wersja 1.0.0-alpha08

Grudzień 2, 2020

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

Zmiany interfejsu API

  • Dodaj działanie semantyczne Odrzuć (I2b706)
  • Przeniesiono interfejsy API DrawModifier z androidx.compose.ui do androidx.compose.ui.draw. Plik DrawModifierlegacy.kt został utworzony w uwzględnij aliasy typów/metody pomocnicze, aby ułatwić migracji z wycofanych do bieżących API. (Id6044, b/173834241)
  • Nazwa Modifier.drawLayer została zmieniona na Modifier.graphicsLayer Zaktualizowaliśmy też powiązane klasy w GraphicsLayer zgodnie z Opinia o interfejsie API. (I0bd29, b/173834241)
  • Dodaliśmy nowe metody placeable.placeWithLayer() i placeable.placeRelativeWithLayer(), które umożliwiają umieszczanie elementu podrzędnego z warstwą graficzną do rysowania w niestandardowych układach i modyfikatorach układu. Dzięki temu możemy najpierw zoptymalizować ponowne rysowanie treści, dzięki czemu nie musimy ponownie rysować treści dziecka (Ibd8f6, b/170296989, b/171493718, b/173030831).
  • Element <T> został usunięty z deklaracji SubcomposeLayout. Możesz go użyć bez określania typu. (IB60c8)
  • Dodano Modifier.scale/rotate interfejsów API jako udogodnień w DrewLayer.
    • Nazwa Modifier.drawOpacity została zmieniona na Modifier.alpha
    • Nazwa Modifier.drawShadow została zmieniona na Modifier.shadow (I264ca, b/173208140)
  • Zwiększenie czasu działania PointerInputData pola pozycji nie mogą mieć wartości null. (Id468a).
  • MaterialTheme ustawia teraz prawidłowe kolory uchwytów wyboru i tła zaznaczenia. Aplikacje niematerialne mogą ręcznie używać 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)
  • Zaktualizowano TransformOrigin API mają destrukcyjną składnię, która zostanie zwrócona 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 użytkownika androidx.compose.ui.text.Typeface do androidx.compose.ui.text.font.Typeface (IC2b81)
  • Nazwa argumentu semantyka mergeAllDescendants została zmieniona na mergeDescendants. (IB6250)
  • Nowy detektor gestów przeciągania – zawieszanie wskaźnika wejściowy interfejs API, w tym blokowanie orientacji. (Icef25).
  • Zmieniono nazwę zasobu wektorowego na ImageVector Przeniesiono zasób VectorAsset do Builder i zmieniono jego nazwę na być wewnętrzną klasą ImageVector zgodnie z Wytyczne dotyczące interfejsu API. Dodano alias typu VectorAssetBuilder do do pliku ImageVector.Builder dla zgodności. (Icfdc8)
  • Zmieniono nazwy komponentu ImageAsset oraz powiązane z ImageBitmap. (Ia2d99)
  • Dodaj parametr zIndex dla parametru „place()” obiektu PlacesScope, aby funkcja Modifier.zIndex() działa teraz jako funkcja LayoutModifier, a każdy układ niestandardowy może ustawiać zIndexes dla swoich elementów podrzędnych bezpośrednio w bloku miejsca docelowego (I711f7, b/171493718)
  • Przeniesiono właściwości semantyki podstawowej do interfejsu użytkownika (I6f05c)
  • Wycofywanie elementu Place(Offset) i placeRelative(Przesunięcie) Użyj przeciążeń z przesunięciami w całości (I4c5e7)
  • Poprzednio wycofane interfejsy API zostały usunięte: usunięto parametr Modifier.onPositioned, użyj modułu Modifier.onGloballyPositioned. Usunięto modyfikator.onDraw, użyj Modifier.onDrawBehind. Usunięto modyfikator.plus. Użyj polecenia Modifier.then. Kolor. Usunięto ustawienie. Użyj wartości Kolor.Nieokreślony. Klasa PxBounds została usunięta. Zamiast niej użyj Rect. (IE9d02, b/172562222)
  • Interfejs Wyrównania został zaktualizowany i działa. (I46a07, b/172311734)
  • Wykrywanie gestów do kliknięcia, dwukrotnego dotknięcia, przytrzymania oraz oznaczenie prasy zostały dodane za pomocą nowego wskaźnika zawieszania. dane wejściowe. Dodaliśmy również kilka narzędzi, które ułatwiają korzystanie które pozwalają programistom na pisanie własnych wzorców do wykrywania gestów. (I00807).
  • Nazwa konta id została zmieniona na layoutId w domenie LayoutIdParentData. Nazwa „Measurable.id” została zmieniona na Measurable.layoutId. (Iadbcb, b/172449643)
  • Nowy detektor gestów wielodotykowych, w tym: pomagają wykrywać obrót, powiększenie i przesuwanie. (IC459d).
  • Wprowadzenie SweepGradientShader interfejsów API oraz SweepGradientBrush. (Ia22c1).
  • Kontrola czasu w testach (TestAnimationClock i jego zastosowania) to teraz w fazie eksperymentalnej (I6ef86, b/171378521)
  • Dodaj interfejsy API do przewijania opartego na współrzędnych:

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

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

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

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

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

  • Zaktualizowano TextFieldValue API

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

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

Poprawki błędów

  • Nazwa parametru wyrównania Box została zmieniona na contentWyrównajment. (I2C957)
  • Zmieniono nazwy modyfikatorów przesunięciaPx na przesunięcie. Wykorzystują teraz parametry lambda zamiast stanu State. (Ic3021, b/173594846)
  • Dodano parametr resetInput do usługi TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • Dodano sprawdzanie lintowania parametrów modyfikatora w funkcjach kompozycyjnych. Ten lint sprawdza nazwy, typ zwracany, wartość domyślną i kolejność parametru pod kątem spójności ze wskazówkami dotyczącymi tworzenia wiadomości. (If493b).
  • Tymczasowo dodano opcję pozwalającą na na podstawie zegara MonotonicFrameClock (I1403b, b/173402197)
  • Dodano otokę kroju czcionki na Androidzie. Aby załadować Androida, Krój pisma za pomocą funkcji typeface, np. typeface(Typeface.DEFAULT). Nazwa została też zmieniona 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)
  • Recomposer nie akceptuje już elementu EmbeddingContext; wymagane zależności harmonogramu są pobierane z efektu EffectsCoroutineContext. Interfejs FrameManager został wycofany. integracje platformy powinny zostać zainicjowane własnej globalnej obsługi zrzutów dysku. (I02369)
  • Przekazuj informacje o stylu do węzła ułatwień dostępu. (If5e8d).
  • Nazwa elementu TextUnit.Inherit została zmieniona na TextUnit.Nieokreślona, aby zachować spójność z innymi jednostkami. (Ifce19).

Interfejs tworzenia wiadomości w wersji 1.0.0-alfa07

11 listopada 2020 roku

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

Zmiany interfejsu API

  • Wprowadzona funkcja ScaleFactor klasa śródtekstowa reprezentująca skalę czynniki wpływające na orientację poziomą i pionową osie niezależne od siebie w kolejności na potrzeby niejednolitych zastosowań skalowania.
    • Do metody computeScaleFactor dodano metodę computeScaleFactor Skala treści
    • Dodano funkcję ContentScale.FillBounds do wykonania. niejednolite skalowanie w celu rozciągnięcia źródła które w pełni zajmują miejsce docelowe.
    • Dodano metody operatorów do obliczeń Parametry ScaleFactor z parametrami Size.
    • (IC96a6, b/172291582)
  • Dodane zostały fabryki BiasWyrównaj i 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 jako uzupełnienie transformacji 3D rotacji X/rotationY w interfejsach API warstwy. (I40213, b/171492100)
  • Dodano element SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Elementu SubcomposeLayout można teraz używać bez dodawania elementu @OptIn (I708ad)
  • FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
  • Usunięto przezroczystość z modyfikatora DrShadow(). są niejasne. (I82c62, b/171624638)
  • Element MeasureResult został przeniesiony z obiektu MeasureScope. (Ibf96d, b/171184002)
  • Kilka symboli związanych z układem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
  • Usunięto wycofaną wartość FocusState2 (I686cb, b/168686446)
  • ZIndexModifier jest teraz wewnętrzny (I1808b, b/171493718)
  • Zaktualizowano typ zwrotu lerp metody na parametry rozmiaru do zwrócenia niepusty rozmiar w celu uniknięcia zbędnych bokserskie. (IB0044)
  • Dodano TestMonotonicFrameClock do testowania kodu, który opiera się na Element MonotonicFrameClock dla tworzenia wiadomości dla oczekiwania na zdarzenia ramki kompozycji za pomocą funkcji RunBlockTest kotlinx-coroutines-test (I4402f)
  • Usunięto AccessibilityScope.localToGlobal (I15299, b/171462785)
  • Dodano wyszukiwarkę onAllNodesWithSubstring (I81dd7, b/171462889)
  • Moduł androidx.ui.test został wycofany. Przejdź na androidx.compose.ui.test i androidx.compose.ui.test.junit4 (I452e8)

Poprawki błędów

  • Sekcja CapToBitmap została przeniesiona do obrazu scanToImage. (I86385)
  • Foundation.Text została wycofana i zastąpiona materiałem material.Text. Informacje o podstawowym, nieopiniowanym interfejsie API tekstowym, który nie przetwarza wartości z motywu, znajdziesz na stronie androidx.compose.foundation.BasicText. (If64cb).
  • Zaktualizuj pola TextFields, aby akceptować KlawiaturaOptions (Ida7f3)
  • Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
  • Przeniesiono 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ść w interfejsach API SideEffect i DiposableEffect. LaunchedEffect bez Parametry tematu są niedozwolone w celu promowania sprawdzonych metod. (Ifd3d4).
  • Wprowadzono zasoby kompozycyjne, które są ponownie komponowane po zaktualizowaniu konfiguracji. (I6387c, b/167352819)
  • Funkcja rekompozycji wymaga teraz CoroutineContext podczas budowy (Ic4610)
  • Sumuj wartości zIndex, gdy zastosowano kilka wartości Modifier.zIndex(). Wcześniej wygrywała pierwsza. (Ic514c, b/170623936)
  • Zmiany w wewnętrznej implementacji SlotTable, które nie powinno mieć wpływu na publiczny interfejs API. (If9828).
  • Dodano opcję autokorekty IME dla klawiatury (I57b8d)
  • Plik androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb)
  • Usunięto KlawiaturaOptions.toImeOptions z publicznego interfejsu API. (IC2e45).

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

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

Wersja 1.0.0-alpha06

28 października 2020 r.

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

Zmiany interfejsu API

  • Funkcja Rekompozytor jest teraz elementem Kompozycji i prawidłowym elementu nadrzędnego kompozycji. Bezpośrednie przekomponowanie jest teraz wymagane w mniejszej liczbie miejsc. (I4036f)
  • Wycofanie VectorPainter z korzyścią na lepsze radzenia sobie z. wskazują, że interfejs API kompozycyjny jest wewnętrzny Wykorzystywane jest słowo „zapamiętanie” zachowywania danych w kompozycje. (Ifda43).
  • Zaktualizowano interfejs API Modifier.drawWithCache w celu udostępnienia ContentDrawScope jako zakresu odbiorcy zamiast DrawScope, umożliwia zmianę kolejności produktów polecenia rysowania. Jest to przydatne do mieszania/ przypadki użycia, w których piksele treści zostaną wyrenderowane jako pierwsze w kolejności algorytm trybu mieszania. (IE7ec8).
  • Przenieś obiekt SimpleContainer do PopupTestUtils.kt (I78c57).
  • ConsumedData nie jest już klasą danych. Szczegółowe informacje znajdziesz na stronie https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • Popraw pozycję uchwytu RTL. (I6e1e0).
  • Zrefaktoryzowano DrawScope ContentDrawScope jako interfejsy zamiast klas abstrakcyjnych
    • Implementacja CanvasDrawScope została utworzona z DrawScope
    • Zrefaktoryzowane implementacje DrawScope, aby używać obiektu CanvasScope
    • Utworzono element DrawContext w celu zawijania zależności dla DrawScope
    • Usunięto wycofane metody w DrawScope (I56f5e)
  • Niezgodna z zasadami: usunęliśmy wartość zwracaną z metody PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o wykorzystaniu. Zamiast zwracać dane z 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).
  • Zaktualizowano element DrawTransform.rotate domyślny parametr przestawny o wartości środka i dokumentacja.
    • Zaktualizowano parametr DrawScope.rotateRad, aby przyjmować przesunięcie dla aby dopasować inne metody przekształcania.
    • Wycofane przeciążenie DrawScope.rotateRad, które wykorzystało dla współrzędnych x i y osi obrotu.
    • (Iffcbb, b/170434992)

Poprawki błędów

  • Sprawdzanie lint interfejsu API dla MissingGetterMatchingBuilder jest włączone dla androidx (I4bbea, b/138602561)
  • Dodaj test. (I6b8ae),
  • włącz przejścia w zasadzie ComposeTestRule; usuń opcję włącz migający kursor w ComposeTestRule. (If0de3).
  • Dodano opcję IME dla wielkich liter (I8ac38).
  • Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
  • Przenieś obiekt SimpleContainer do PopupTestUtils.kt (I65c3e).
  • Zmieniono nazwę Radius API na Promień narożnika ułatwiający ekspresowanie jak jest on używany w tworzeniu. Zaktualizowaliśmy dokumentację, aby wskazać że ujemne promienie narożników są zaciśnięte, do zera. (I130c7, b/168762961)
  • poprawiono współpracę z Androidem dzięki dalszemu wysyłaniu zdarzeń MotionEvents do podrzędnych widoków Androida, które zwracają wartość false dla zdarzeń onTouchEvent w przypadku wszystkich działań oprócz ACTION_DOWN (I94c5a, b/170320973).
  • Box został przekształcony w funkcję wbudowaną. (Ibce0c, b/155056091)

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

  • Obsługuj różne języki w usługach AnnotatedString.capitalize 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 wykorzystują nie zwracają już nowej wartości PointerInputChange, ale zamiast tego mutować podaną wartość PointerInputChange.

    To pierwszy etap dwuetapowego procesu umożliwiać zmienność danych PointerEvent w taki sposób, danych wskaźnika nie można edytować za pomocą kodu użytkownika. Drugim krokiem będzie usunięcie List<PointerInputChange> zwraca typ zwracany przez 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)

  • Użytkownik PointerInputFilter.onPointerInput(...) został usunięty. W ich miejscu powinna być używana wartość PointerInputFilter.onPointerEvent(...). (I6f04a)

  • Zmiany rozmiaru

    • Usunięto parametr Size.getFlipped
    • Usunięto rozmiar.rem
    • Usunięto Size.truncDiv (Ief44d, b/169790720)
  • W ramach standaryzacji wartości ustawnych dla klas wbudowanych, zmień nazwę Kolor.Usuń ustawienie na Kolor.Nieokreślony w celu zachowania spójności z innymi klasami wbudowanych (I97611, b/169797763)

  • Wprowadzono tekst TextOverflow.None. Gdy 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. Dodano nową metodę hasInvalidations() dla klasy kompozycji. Nazwa metody hasPendingChanges() z Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Zaktualizowany rozmiar.Nieokreślony jako Float.NaN, a nie Liczba zmiennoprzecinkowa.POSITIVE_INFINITY. Zaktualizowano implementacje narzędzia Painter na Sprawdź pod kątem rozmiaru.Dodatkowo nieokreślony jako rozmiarów nieskończonych. (I95a7e)
  • Kolejność wywołań funkcji Place() w układach niestandardowych określa teraz kolejność rysowania elementów podrzędnych (Ibc9f6).
  • Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907).
  • Dodano fragmenty do zajęć na Androidzie, które są włączone starszych platform, by w miarę możliwości unikać odczuć. (IA1790).
  • Usunięto błąd: jeśli wyświetlenie klawiatury programowej sprawiało jeśli aplikacja ma tłumaczyć, współrzędne wejściowe wskaźnika staną się niepoprawnie. (Ic4cec, b/163077821)

Wersja 1.0.0-alpha04

1 października 2020 roku

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

Zmiany interfejsu API

  • Dodano element WłaścicielScope, aby umożliwić zbieranie tych danych: a nawet lunety obserwacyjne układów i rysunków, stracił ważność. (Ic4cf8).
  • Dodano funkcję OnRemeasuredModifier i onSizeChanged() do otrzymasz wywołanie zwrotne po ponownym pomiarze układu treści. rozmiar się zmienił. (I657cf, b/154108792)
  • Dodaj działanie semantyki długiego kliknięcia (I6281b, b/156468846)
  • Zmieniono ustawienia FocusManagera na prywatne. (I7872f)
  • Implementacja została zaktualizowana, aby utworzyć dedykowana implementacja DrawCacheModifier zamiast dodawać opcjonalne właściwości w DrawModifier.

    Zaktualizowana dokumentacja różnych metod (Ibd166)

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

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

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

  • Wprowadzono modyfikator.drawWithCache umożliwia tworzenie obiektu rysunku warunkowo odtwarza zależności które zależą od informacji o rozmiarze/stanie (I376dc)

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

Poprawki błędów

  • Zaktualizowano wiele interfejsów API związanych z grafiką
    • Zaktualizowano skalę i obrót interfejsów API transformacji, aby wykorzystać Parametr przesunięcia reprezentujący tabelę przestawną współrzędna zamiast osobnej liczby zmiennoprzecinkowej dla współrzędnych x/y w DrawScope i DrawTransform
    • Usunięto elementy Rect.expandToInclude i Rect.join metod
    • Zaktualizowaliśmy dokumentację dotyczącą promienia o owalu. oprócz orbitreka
    • Dodaliśmy dokumentację, by wskazać publiczny konstruktor dla wbudowanego promienia klasa nie powinna być wywoływana bezpośrednio, Wystąpienia obiektów o określonym promieniu powinny być tworzone przez ich konstruktory funkcji
    • Usunęliśmy interfejsy RoundRect API do wysyłania zapytań dotyczących górnego prawa, dolny róg, dolny środek itp.
    • Wycofano Rect.shift na rzecz Rect.translate
    • Usunięto interfejsy API RoundRect.grow i Rect.shrink
    • Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect
    • Usunięto element RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Nazwa RoundRect.longestSide została zmieniona na RoundRect.maxDimensions
    • Zmieniono nazwę RoundRect.shortestSide na RoundRect.mindimension
    • Zmieniono RoundRect.center na właściwość, a nie funkcję
    • Zaktualizowano konstruktor RoundRect, który wykorzystuje właściwości Radius zamiast poszczególnych parametrów dla wartości promieni x/y.
    • Usunięto interfejsy Size API, które zakładały, że jest to prostokąt z nazwą origin 0,0
    • Do interfejsu Radius dodano interfejs API destrukcyjny.
    • Przeniesiono różne funkcje rozszerzenia RoundRect właściwości
    • (I8f5c7, b/168762961)
  • Fundament.Box został wycofany. Zamiast niej użyj elementu Foundation.layout.Box. (IE5950, b/167680279)
  • Nazwa stosu została zmieniona na Box. Dotychczasowa wersja Box zostanie wycofana i zastąpi nową nową wersją na stronie compose.foundation.layout. Działanie nowego pola to układanie elementów podrzędnych jeden nad drugim, jeśli ma kilka elementów podrzędnych. Różni się to od poprzedniej skrzynki, która działała podobnie jak kolumna. (I94893, b/167680279)
  • Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać do pola dekoracje lub dopełnienie, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.splash) (Ibae92, b/167680279)
  • Zaktualizowano wiele interfejsów API związanych z grafiką
    • Zaktualizowano interfejsy API DrawScope z zakresem metod transformacji, aby wskazać, że przekształcenie jest stosowane tylko w wywołanie zwrotne i usunięte po wywołaniu
    • Zaktualizowaliśmy dokumentację klipPath, aby odnosiła się do ścieżki zamiast zaokrąglonego prostokąta
    • Poprawiono odstępy w dokumentacji dla prawego parametru w klipPath
    • usunięto parametr rozmiaru
    • Zmieniono nazwę parametrów Dx/dy w metodzie wstawienia na w poziomie i w pionie
    • Dodano przeciążenie wektorowe, które zapewnia ten sam wartość wcięcia do wszystkich 4 granic
    • Usunięto dokumentację metody wstawiania wskazującą, które wcięcie zostanie zastosowane do wszystkich 4 stron,
    • Zaktualizowano dokumentację klasy Rect
    • Zaktualizowano komentarze do parametrów prostokąta, aby pasowały do dokumentu kdoc styl
    • Usunięto elementy Rect.join i Rect.expandToInclude
    • Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
    • (If086a, b/167737376)
  • Adnotacja rootAnimationClockFactory, wyraźnesEnabled, mlinkingCursorEnabled i textInputServiceFactory z @WidoczneForTesting ustaw wewnętrzny interfejs API i ukryj jego dokument kdoc (I554eb, b/168308412)
  • Usuń element SelectionContainer z góry, aby wyłączyć wybór domyślny i uniknąć nieoczekiwanego zachowania. Można użyć elementu SelectionContainer, aby zapakować zawartość, którą należy zaznaczyć. (I8dfe0, b/158459594)

Wersja 1.0.0-alpha03

16 września 2020 roku

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

Zmiany interfejsu API

  • Usuń działania semantyczne polegające na przewijaniu do przodu i do tyłu. Dodane kroki w AccessibilityRangeInfo. (Ia47b0).
  • Usunięto: onInvalidate() z: OwnerOwnedLayer obsługuje unieważnianie. (Ica72b, b/162061312)
  • Usunięto metody operatorów rozmiaru Interfejs API, który wykorzystuje parametry Offset. wynik tych działań jest niejasny a typ wyniku jest nieoczekiwany, tych kwestii. Np. należy podać rozmiar – odsunięcie zwrot przesunięcie lub wynik rozmiaru z tą różnicą?

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

Poprawki błędów

  • Poprawiono nieprawidłowe rysowanie elementów LazyColumn, co w niektórych warunkach również powodowało awarie. (Ibcf17, b/163066980, b/165921895)
  • Funkcje DpConstraints i interfejsy API korzystające z nich zostały wycofane. (I90cdb, b/167389835)
  • Przeniesiono createAndroidComposeRule 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 jako obecne globalne słowa kluczowe zostaną wycofane. (IEAE36).

Wersja 1.0.0-alpha02

Wrzesień 2, 2020

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

Zmiany interfejsu API

  • usuń wywołanie zwrotne w celu powiadamiania właściciela o zmianie granic węzła układu. (If654e, b/166106882)
  • Dodano obsługę typu Filltype parametry na ścieżkach grafiki wektorowej obsługuje wycięcia kształtów na podstawie na reguły wypełniania ścieżek, czyli nawet nieparzyste czy inne niż zero. (I43dd2)
  • Czas działania i szybkość działania są teraz klasami wbudowanymi (I48f4a)
  • Czas trwania jest teraz w formie zajęć w tekście (I565eb)
  • Dodaj wywołanie zwrotne, aby powiadamiać właściciela o zmianie granic węzła układu. (IC40b3).
  • Rozwiązaliśmy problem z konstruktorem funkcji prostokątnych z przesunięciem i promieniem utworzy prostokąt w kolejność lewa, prawa, góra, dół zamiast lewo, góra, prawo, dół.

    Usunięto wycofane metody kreacji towarzyszącej z prostokąta w na konstruktory funkcji.

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

Poprawki błędów

  • Dodaliśmy MutableRect – prostokąt, który można modyfikować. (I71bd2, b/160140398)
  • Matrix4 została zastąpiona matrycą. Pozostałe części z pakietu vectormath. (Ibd665, b/160140398)
  • Konwencja wywoływania funkcji kompozycyjnych ma została zmieniona. To jest zmiana binarna, która powoduje niezgodność. Wszystkie biblioteki muszą być skompilować ponownie, by współpracował z tą wersją wtyczki kompilatora compose.

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

  • Naprawiono awarię, która mogła wystąpić, gdy: wysłanie do PointerInputFilter może spowodować należy usunąć synchronicznie pole PointerInputFilter. (I58f25)

Wersja 1.0.0-alpha01

26 sierpnia 2020 r.

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

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

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

Zmiany interfejsu API

  • Interfejs emitView został wycofany. Jeśli to możliwe, do przesyłania wyświetleń w funkcji tworzenia wiadomości używaj zamiast 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 emisji mogą teraz zadeklarować, że co najmniej jeden z detektorów można pominąć i ponownie skomponować niezależnie od emisji. (Ibbd13).
  • Klasy wektorów zostały zmienione i nie są już używane są klasami danych, ponieważ ta sama instancja obiektu do kompozycji.

    Dodano flagę mutableStateOf do metody VectorPainter warunkowego ponownego rysowania, jeśli zawartość zmiany wektorowej.

    Zrefaktoryzowana instancja VectorKomponent zostanie ustawiona część VectorPainter, ponieważ jest używana ponownie w różnych kompozycjach.

    Zaktualizowano składniki grupy i ścieżki aby ich pola nazw były zmienne (Ieae45, b/151378808)

  • Usunięto: onChildPositioned i OnChildPositionedModifier. Deweloperzy powinni używać interfejsów onPositioned i OnPositionedModifier w układzie podrzędnym. (I4522e, b/162109766)

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

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

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

  • Do tabeli SemanticsPropertyKey dodano funkcję lambda (mergePolicy). Może to być służy do definiowania niestandardowej zasady semantyki mergeAllDescendants scalanie. Domyślną zasadą jest używanie wartości nadrzędnej, jeśli jest już używana obecny, w przeciwnym razie wartość potomna. (Iaf6c4, b/161979921)

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

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

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

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

  • IntSize jest teraz klasą wbudowaną (I2bf42)

  • Nazwa usługi PlacementScope.placeAbsolute() została zmieniona 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)

  • Niektóre narzędzia testowe zostały wyłączone publiczne, bo ich nie ma tam, gdzie się znajdują i posiadania. Zostaną upublicznione w przyszłości. (I32ab1)

  • Zrefaktoryzowana organizacja danych wejściowych wskaźnika w kodzie. (IE3f45)

  • Wycofane pułapki PxBound w na korzyść Rect. Zaktualizowano wszystkie przypadki użycia z PxBounds z prostokątem i dodanym właściwe wycofanie/zastąpienie adnotacji, które pomagają migracji danych. (I37038, b/162627058)

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

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

  • Utworzono zdarzenie niestandardowe DelayUp i powiązanych klas, aby włączyć interfejs API, najprawdopodobniej ulegnie zmianie. (I56d6f)

  • Usunięto 2 elementy PointerEventPass, które już nie są niezbędną. (I3dd9d)

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

Poprawki błędów

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

    Wewnętrzne interfejsy API do tworzenia wiadomości zostały zmienione, by zmniejszyć ilość śledzenie obiektów stanu, takich jak mutableStateof() (I80ba6)

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

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

  • Funkcja kompozycyjna state { ... } została wycofana i zastąpiona wyraźne wezwania do działania (remember { mutableStateOf(...) }) w celu uniknięcia wątpliwości. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji stanu management i pasuje do wzorca by mutableStateOf() klasy przekazania usługi. (IA5727).

  • Zmieniono nazwę RRect na RoundRect aby lepiej dopasować je do wzorców nazewnictwa. Utworzono podobne konstruktory funkcji do RRect i wycofanej funkcji RRect konstruktory (I5d325)

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

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

Zmiany interfejsu API

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

Poprawki błędów

  • Naprawianie ogólnych poprawek interfejsu API (I077bc)
    1. Usuń nieużywany interfejs OffsetBase
    2. Wyrównuje klasy Offset i IntOffset, które mają mieć spójna platforma API
    3. Zmień nazwę IntOffset.Origin na IntOffset.Zero aby zachować spójność z interfejsem Offset API
    4. Metodę natywnego Canvas usunięto z Canvas aby ułatwić konsumentom tworzenie własne instancje Canvas
    5. Utworzono wycinek klasy EmptyCanvas do refaktoryzacji DrawScope, aby był parametrem niepustym, a nie Lateinit i zapewnić brak wartości pola jako wartość 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 wielkość liter 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. Implementacja DrawCache została zaktualizowana i nie jest już dostępna używanie parametrów Lateinit
    14. Zaktualizowano metodę DrawScope, aby nie używała już leniwego przekazywania dostępu dla parametrów wewnętrznych FillPaint i StrikePaint
    15. Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box przy mniejszym nakładzie pracy
    16. Zaktualizowaliśmy klasę Outline, aby dodać do niej adnotacje @stałe.
    17. Zaktualizowano element PathNode, aby dodać adnotacje @Stałe dla: instrukcja dla każdej ścieżki
    18. Zaktualizowano składnię wektorową, aby usunąć zbędne elementy sprawdzanie warunkowe pod kątem równości, ponieważ funkcja tworzenia wiadomości już obsługuje ich
    19. Wycofane metody konstruktora kreacji towarzyszącej w formacie prostokąta konstruktorów funkcji
    20. Zaktualizowano klasy i konstruktory funkcji pędzla za pomocą Interfejsy API @Immutable i @Stable
    21. Zaktualizowano enum VertexMode na PascalCase
    22. Metodę DrawScope selectPaint zmieniono na warunkowo nadpisać parametry kreski, jeśli mają zmieniono
    23. Zaktualizowano rozmiar, aby dodać interfejs API destrukcyjnego; zmień nazwę Nieokreślony rozmiar na nieokreślony i usunięte nieużywane metody
  • Zaktualizowano wykorzystanie interfejsu compose BlendMode API poprawne mapowanie między platformą Androida BlendModes i PorterDuff w zależności od poziomu interfejsu API. Wprowadzono BlendMode#isSupported API do działania jako zapytanie pozwalające określić, czy tryb BlendMode jest obsługiwana przez urządzenie przed jego użyciem. (I0ef42).
  • Dodano parametr LazyItemScope dla parametru itemContent list Lazy. Udostępnia modyfikatory wypełniające maksymalny rozmiar elementu nadrzędnego, co rozwiązuje przypadek użycia, gdy element powinien wypełniać widoczny obszar, a zwykła metoda Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
  • Użytkownik SemanticsNodeInteraction.performPartialGesture został usunięty. Używaj 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 TextField został zmieniony na BaseTextField, by ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676)
  • Nazwa Modifier.drawBackground została zmieniona na Modifier.background (I13677).

Wersja 0.1.0-dev15

22 lipca 2020 r.

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

Aktualizacja zależności

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

Zmiany interfejsu API

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

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

    • Wycofana metoda obiektu towarzyszącego Size.copy korzyść metody kopiowania instancji (Ife290, b/159905651)

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

  • Nazwa TextDirection została zmieniona na resolvedTextDirection (I3ff38).

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

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

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

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

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

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

  • Pozycje całkowite linii wyrównania zwrócone z Placeable#get(alignmentLine) nie mają teraz wartości null. Jeśli nie ma wiersza wyrównania, którego dotyczy zapytanie, wyświetli się parametr AdjustLine.Nieokreślony. (I896c5, b/158134875)

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

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

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

  • Zastąpiliśmy format IntPx ciągiem Int. Zastąpiono pozycję IntPxPosition z IntOffset. IntPxSize zastąpiono wartością IntSize. (IB7b44)

  • Aby skonsolidować liczba klas używanych do reprezentowania informacje o rozmiarach, standaryzowanie na podstawie użycia klasy Size rozmiaru PxSize. Zapewnia to korzyści klasy wbudowanej, aby wykorzystać długi do pakowania 2 wartości zmiennoprzecinkowych do reprezentowania szerokość i wysokość w postaci liczby zmiennoprzecinkowej. (IC0191).

  • Aby skonsolidować liczba klas używanych do reprezentowania pozycjonowanie, standaryzowanie na użycie klasy Offset pozycji PxPosition. Zapewnia to korzyści klasy wbudowanej, aby wykorzystać długi do pakowania 2 wartości zmiennoprzecinkowych reprezentujących x i odsunięcia y są przedstawione w postaci liczby zmiennoprzecinkowej. (I3ad98).

  • Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i podstawowych parametrów pikseli. Cała klasa Px została usunięta (I3ff33).

  • Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I086f4).

  • Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (Id3434).

  • Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I97a5a)

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

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

  • Poprzednio wycofane ScaleFit jako usunięto. Zamiast tego użyj ContentScale. (Ifbc5b).

  • Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I19d02)

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

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

  • Zastąpiono użycie klasy Px w różnych tworzą klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I57bff)

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

  • Skonsolidowane implementacje CanvasScope więc teraz będą tylko DrawScope, ContentDrawScope Nazwa obiektu CanvasScope została zmieniona na DrawScope. Zaktualizowano obiekt DrawScope, aby zaimplementować gęstość i podaj kierunek układu Usunięto podklasę DrawScope w ContentDrawScope Painter i PainterModifier zostały zaktualizowane nie mają już właściwości RTL, ponieważ DrawScope zapewnia już bez ręcznego podawania (I1798e)

  • Teraz DoubleTapTouchFilter identyfikuje filtr SingleTapStepFilter po drugiej stronie drzewa. (If92b1).

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

  • Interfejs API modyfikatorów DrawLayer został zmieniony: zmieniono nazwę interfejsu outline prawdopodobnie na „ shape” i ma wartość domyślną Rectangleangle, a teraz nie może mieć wartości null. klipToOutline został zmieniony na klip; klipToBounds usunięto, ponieważ jest taki sam jak w przypadku klipu == true z parametrem Prostokąt (I7ef11, b/155075735).

  • Zaktualizowano wyższy poziom a także tworzyć interfejsy API, które udostępniają obiekt Canvas i udostępnić CanvasScope. Spowoduje to usunięcie że konsumenci muszą utrzymywać własnych obiektów Paint. Dla konsumentów, którzy nadal potrzebują dostępu do Canvas mogą korzystać z rozszerzenia DrawCanvas, , która powoduje wywołanie zwrotne do problemu za pomocą poleceń rysowania Obszar roboczy. (I80afd).

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

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

  • Usunięto wycofany interfejs LayoutModifier. (I2a9d6)

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

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

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

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

  • Dodano Ograniczenia2 – kopię Ograniczenia, która obsługuje tylko wartości ograniczeń Int, a nie IntPx. IntPx zostanie usunięty, a wszystkie ograniczenia dotyczące liczb całkowitych będą stosowane jak w Androidzie.

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

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

  • (I45f09, b/152842521)

    • Nazwa ScaleFit została zmieniona na ContentScale
    • Przeniesiono ContentScale z UI-Graphics do UI Core moduł do umieszczenia w tym samym module co ustawienie Wyrównanie API.
    • Nazwa FillMaxDimensions została zmieniona na Przytnij
    • Nazwa FillMinDimensions została zmieniona na Fit
    • Zmieniliśmy nazwę dopasowania na Wewnątrz, by lepiej dostosować
    • Odpowiedniki ImageView.ScaleType
    • Dodaliśmy dokumentację wskazującą, że kombinacja przycinanie i wyrównywanie. ImageView.ScaleType.CENTER_CROP i Fit Użycie z funkcją Wyrównanie.Center przynosi taki sam wynik jak ImageView.ScaleType.FIT_CENTER Wewnątrz używana z Wyrównaniem.Center zapewnia to samo wynik jako ImageView.ScaleType.CENTER_INSIDE.
  • Obsługa modyfikatorów rysowania. (I0aaf9).

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

  • Ulepszenie interfejsu API DrawModifier:

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

  • DrawLayerModifier i drawLayer() są teraz domyślne w klastrze clipToBounds i ClipToOutline na false. (I0eb8b, b/152810850)

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

  • dodano LayoutModifier2 – nowy interfejs API do definiowania modyfikatorów układu; wycofany komponent LayoutModifier (If32ac),

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

  • Dodano do obsługi właściwości translacji X/Y odsunięcie listy wyświetlanych poleceń do rysowania dla danej warstwy. Przydaje się to do przenoszenia treści w reakcji na animacje lub zdarzenia dotyku. (I8641C)

  • Dodano parametry tabeli przestawnej i przestawnej do interfejsów Layer API w celu obsługi rotacji i skalowania w pobliżu określonego punktu w warstwie (Icf7c3).

  • Dodaj OnPositionedModifier i OnChildPositionedModifier w celu zastąpienia funkcji kompozycyjnych OnPositioned i OnChildPositioned funkcji. (I2ec8f).

  • Dodano LayerModifier, modyfikator, który pozwala przez dodanie obiektu RenderNode dla układu. Umożliwia ustawienie przezroczystość, obrót, skalowanie i cienie. Spowoduje to zastąpienie RepaintBoundary. (I7100d, b/150774014)

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

  • Komponent stosu obsługuje kierunek od prawej do lewej (Ic9e00)

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

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

  • Zmieniono współrzędne LayoutCoordinates, aby utworzyć providedWyrównajmentLines ustawić zamiast mapy zestaw, a funkcja LayoutCoordinates wdrożyła funkcję get(). Dzięki temu dla modyfikatorów do modyfikowania jednej lub kilku wartości w zestawie bez podczas tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)

  • LayoutCoordinates nie ma już właściwości pozycji. nie ma sensu w przypadku tagów LayoutModifiers, obracania czy skalowania. Zamiast tego programiści powinni używać współrzędnych nadrzędnych. i podrzędnyToLocal(), aby obliczyć przekształcenie z jednego Układ współrzędnych.

    Funkcja LayoutCoordinates używa właściwości rozmiaru IntPxSize zamiast Rozmiar Px. Układy używają liczb całkowitych w pikselach, więc układy mają wszystkie rozmiary. należy używać liczb całkowitych, a nie zmiennoprzecinkowych. (I9367b)

  • Ulepszenia interfejsu API ograniczeń (I0fd15)

  • Utworzono interfejs CanvasScope API, który opakowuje Obiekt Canvas wyświetlający bezstanowy obiekt deklaratywny interfejs API do rysowania. Przekształcenia są uwzględnione w zakresie odbiorcy i własnych informacji o rozmiarze jest również ograniczony do odpowiednich granic wstawienia. Nie wymaga od konsumenta zachowania własnego stanu wyrenderowania do konfigurowania operacji rysowania.

    • Dodano próbkę CanvasScope i zaktualizowano aplikację w wersji demonstracyjnej, aby dodać grafikę deklaratywnej wersja demonstracyjna (Ifd86d)
  • Usunięto nieużywany interfejs MaskFilter API ponieważ ma ograniczone wykorzystanie i nie jest zoptymalizowany do akceleracji sprzętowej w większości przypadków użycia (I54f76)

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

  • Zastąpiono wszystkie przypadki użycia koloru dopuszczalnego w interfejsie API na nie dopuszcza wartości null i użyj wartości Color.Unset zamiast null (Iabaa7).

  • Podaj dodatkowy opcjonalny prostokąt do obsługi formatu ImagePainter rysowanie podsekcji komponentu z obrazem (I0ea9e)

  • Dodano nieskonfigurowany kolor do reprezentowania wartości bez ustawienia barwy bokserskie. (If901a).

  • Dodano Canvas.rotate i Metody rozszerzenia Canvas.scale do wykorzystuj opcjonalne współrzędne przestawne dla przekształcenia danych. Te domyślne w lewym górnym rogu bieżące tłumaczenie obszaru roboczego.

    Przeniesiono również obiekt Canvas.rotateRad na metoda rozszerzenia zapewniająca spójność (Ibaca6)

  • Utworzono interfejs PixelMap API do obsługi wysyłania zapytań o informacje o pikselach z ImageAsset. (I69ad6).

  • Nazwa została zmieniona naFrameworkRect/toFrameworkRectF na toAndroidRect/toAndroidRectF, aby dopasować konwencję nazewnictwa konwersji obiektów między tworzeniem wiadomości a Androidem interfejsów API platformy, na których są tworzone. Zaktualizowane dokumentacji dotyczącej tych interfejsów API (I86337)

  • Interfejs VectorPainter API został dodany do zastąp istniejący interfejs API subcomposition API dla grafiki wektorowej. Wynik podkompozycji jest obiektem VectorPainter, a nie DrawModifier. Wycofany poprzedni DrawVector kompozycje na rzecz VectorPainter.

    Zmieniono nazwę interfejsu Image(Painter) API na PaintBox(Painter) Utworzyliśmy wektorową kompozycję wektorową, która działa jak Obraz można komponować, ale nie za pomocą obiektu VectorAsset komponentu z obrazem (I9af9a, b/149030271)

  • Zmieniliśmy nazwę obrazu na ImageAsset, by lepiej rozróżnić dane obrazu od przyszłej funkcji kompozycyjnej obrazu wykorzystywanej do tworzenia układu i rysowania treści. _Body:Utworzyliśmy metodę rozszerzenia na android.graphics.Bitmap Bitmap.asImageAsset(), by utworzyć instancję ImageAsset przydaje się do łączenia tradycyjnych funkcji Androida tworzenie aplikacji za pomocą platformy tworzenia (Id5bbd),

  • Dodano element TextDirection.Content (I48f36)

  • dodany operator Textdecoration.plus (I0ad1a),

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

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

  • Implementuje LongPressAndDrag do wyboru pola tekstowego. (I17919)

  • Dodano AnnotatedString.getStringAdnotacje, która zwraca wszystkie adnotacje w zakresie. (I1fa00).

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

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

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

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

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

  • Teraz można ukryć/pokazać klawiaturę programową za pomocą SoftwareKlawiaturaController jest dostarczana przez onTextInputStarted wywołanie zwrotne (I8dc44, b/151860051)

  • Dodano operator plus dla stylu (Tekst/Akapit/span), który deleguje do funkcji merge(). (Ia1add)

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

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

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

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

  • Usunięto nieużywaną klasę rozmiaru ponieważ istnieje zduplikowana klasa rozmiaru w module ui-geometry, ich konsumpcja. (I1B602).

  • Dodaliśmy AdapterList, komponent listy przewijanej, który tylko tworzy i układa widoczne elementy. Znane problemy pamiętaj, że jest tylko pionowa i nie obsługuje wszystkich przypadków zmian w jego elementach potomnych. (IB351b)

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

Poprawki błędów

  • Nazwa wywołania zwrotnego onFocusChange w polach tekstowych została zmieniona na onFocusChanged (Ida4a1)
  • Interfejsy Vertical Scroller oraz Horiziontal Scroller zostały wycofane. Użyj interfejsu ScrollableColumn i ScrollableRow, aby mieć wbudowane funkcje i parametry związane z kolumnami/wierszami, lub modyfikatorami.vertical Scroll i Mmodifier.vertical Scroll, aby umożliwić ich użycie własnemu elementowi. Parametr ScrollerPosition został wycofany i zastąpiony tagiem ScrollState (I400ce, b/157225838, b/149460415, b/154105299)
  • Nazwa runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Zmieniono nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie Interfejsy API findXYZ zostały zmienione na onNodeXYZ. Nazwy wszystkich interfejsów API doXYZ zostały zmienione na XYZ. (I7f164)
  • Interfejs tworzenia wiadomości można teraz tworzyć w grupach ViewGroup bez konieczności tworzenia nowej kompozycji. Zobacz przykład: ViewInteropDemo. (I9ab0b, b/160455080)
  • Do funkcji MutableVector dodano sortowanie z funkcjami sortWith i deleteRange (Icccf7).
  • Zaimplementuj uchwyty zaznaczania metodą przeciągania, aby zmienić wybór pola tekstowego. (I27032)
  • Usunięto wbudowaną klasę Shadera, która opakowano klasę oczekiwania NativeShader Zmieniono nazwę NativeShader na Shader. Opakowana klasa wbudowana Shadera nie może dodawać do interfejsu API żadnych wartościowych elementów. i była klasą wbudowaną, więc użyj NativeShader bezpośrednio w klasie. (I25e4d)
  • Refaktoryzator PainterModifier nie będą już udostępniać skalowania na podstawie podane ograniczenia i ContentScale . Implementacje narzędzia Painter są skalowalne, na podstawie danego rozmiaru do rysowania rysunków DrawScope.

    Rozwiązaliśmy problem z pamięcią podręczną usługi VectorPainter rozmiar bitmapy został zmniejszony do domyślnego rozmiaru zamiast konkretnego rozmiaru.

    Zaktualizowano ImagePainter, aby skalować niż korzystanie z narzędzia PainterModifier, zrobić to w jej imieniu. (I6Ba90)

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

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

  • androidx.ui.foundation.TextFieldValue i Interfejs androidx.ui.input.EditorValue został wycofany. Pole tekstowe Obiekty kompozycyjne FilledTextField i CoreTextField, które korzysta z funkcji ten typ też jest wycofany. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)

  • Rozwiązanie problemu ze wprowadzaniem wskaźnika dyspozytor spowoduje wypadek, jeśli Filtry PointerInputFilters zostały usunięte (za pośrednictwem ) subkompozycja w trakcie dysptachu. Zostało to już rozwiązane. (I1f48b, b/157998762)

  • Rozwiązaliśmy problem, który powodował, że wysyłanie danych wejściowych wskaźnika było powoduje awarię, jeśli elementy PointerInputFilters zostały usunięte za pomocą subkompozycja w trakcie dysptachu. Zostało to już rozwiązane. (Iab398, b/157998762)

  • Zmieniona klasa promienia na inline. Usunięto tworzenie kreacji towarzyszącej z zastosowaniem konstruktora funkcji z domyślnym parametrem określającym promień wzdłuż osi Y należy dopasować do wartości .

    Zaktualizowano plik DrawScope.drawRoundRect do przetworzenia jeden parametr „Radius” zamiast 2 osobnych, wartości zmiennoprzecinkowe promienia wzdłuż osi x i y oś (I46d1b)

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

  • Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (Iede0b).

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

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

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

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

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

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

    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

    Prace te obejmowały kilka optymalizacji: 1. Wyniki porównań parametrów są przekazywane na wykresie wywołań do innych funkcji kompozycyjnych. Spowoduje to zmniejszenie liczby porównań w czasie działania i zmniejszenie rozmiaru tabeli przedziałów oraz częstsze pomijanie funkcji kompozycyjnych, które nie były wcześniej pomijane. 2. Parametry, które podczas kompilacji zostaną uznane za „statyczne”, nie są już porównywane ani przechowywane w środowisku wykonawczym. Zmniejsza to liczbę porównań i rozmiar tabeli przedziałów. 3. Kontroluj strukturę przepływu treści funkcji do zminimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli przedziałów i zmniejsza nakład pracy w środowisku wykonawczym 4. Nieużywane parametry dyspozytora i odbiorcy w funkcji nie są uwzględniane przy określaniu możliwości pominięcia funkcji, jeśli nie są one używane w jej treści.

    Większość zmian powodujących niezgodność dotyczy interfejsów API, na które kompilator jest kierowany bezpośrednio. Nie będzie to miało wpływu na typowe użycie funkcji tworzenia wiadomości: 1. Usunięto narzędzie Composer::startExpr 2. Pole Composer::endExpr zostało usunięte 3. Interfejs Composer::call został wycofany 4. Przeciążenia inne niż różne (key) zostały usunięte. Od tej pory używaj wersji vararg. 5. Adnotacja przestawna została wycofana. Użyj key jako zamiennika. 6. ZakresUpdateScope::updateScope został zmieniony, tak aby oczekiwano funkcji 3 zamiast Function1 7. Zaktualizowaliśmy funkcję restartableFunction i reableFunctionN, 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 usunięto przeciążenie tekstem (ciągiem znaków). Informacje o wykorzystaniu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)

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

  • Zmieniono zachowanie domyślnego kierunku tekstu do określenia wg LayoutDirection. Np. Jeśli LayoutDirection to RTL, domyślny TextDirection to RTL. Wcześniej TextDirection.ContentOrLtr/Rtl (I4e803)

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

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

  • Moduł ui-android-text ma teraz nazwę ui-text-android (I68cbe)