Interfejs tworzenia

Podstawowe elementy interfejsu tworzenia wiadomości, które są potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie danych.
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
13 listopada 2024 r. 1.7.5 - - 1.8.0-alpha06

Struktura

Składnik jest kombinacją 7 identyfikatorów grupy Maven w ramach androidx. Każda grupa zawiera określony podzbiór funkcji, z którym wiąże się własny zestaw informacji o wydańach.

Ta tabela zawiera informacje o grupach i linki do poszczególnych zestawów informacji o wersji.

GrupaOpis
compose.animationtworzyć animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników.
compose.compilerPrzekształcaj funkcje @Composable i włącz optymalizacje za pomocą wtyczki kompilatora Kotlin.
compose.foundationPisać aplikacje Jetpack Compose za pomocą gotowych elementów składowych i rozwijać podstawy, aby tworzyć własne elementy systemu projektowania.
compose.materialTworzenie interfejsów Jetpack Compose za pomocą gotowych komponentów Material Design. Jest to punkt wejścia na wyższym poziomie w Compose, który ma na celu udostępnianie komponentów odpowiadających komponentom opisanym na stronie www.material.io.
compose.material3Twórz interfejsy Jetpack Compose za pomocą komponentów Material Design 3, czyli kolejnej generacji Material Design. Material 3 obejmuje zaktualizowane motywy i elementy oraz funkcje personalizacji Material You, takie jak dynamiczne kolory. Jest on spójny z nowym stylem wizualnym Androida 12 i interfejsem systemu.
compose.runtimePodstawowe elementy modelu programowania i zarządzania stanem w Compose oraz środowisko uruchomieniowe główne dla wtyczki kompilatora Compose, na które ma być nakierowany.
compose.uiPodstawowe elementy interfejsu tworzenia wiadomości, które są potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie danych.

Deklarowanie zależności

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.8

Wersja 1.8.0-alpha06

13 listopada 2024 r.

androidx.compose.ui:ui-*:1.8.0-alpha06 został zwolniony. Wersja 1.8.0-alpha06 zawiera te komisy.

Zmiany w interfejsie API

  • Dodaje modyfikator stylusHoverIcon. (Iff20a, b/331289114)
  • Zmiana menedżera autouzupełniania na interfejs. (I84914, b/376080755)
  • Dodaje requestFocus(FocusDirection) do focusRequester i FocusTargetModifierNode, aby umożliwić skupienie się na określonym kierunku. (I5d9ec, b/245755256)
  • Parametry FocusProperties.enterFocusProperties.exit zostały zastąpione parametrami onEnteronExit, które używają zakresu odbiornika zamiast parametru FocusDirection. (I6e667)
  • Dodaliśmy obsługę autouzupełniania na pasku narzędzi tekstowych. (Ie6a4c)
  • Zmiany w interfejsie API (I99c03):
      Modifier.focusRestorer()
    • nazwa parametru została zmieniona na „fallback”
    • parametr jest teraz FocusRequester, a nie lambda
    • parametr jest teraz niepusty i ma wartość domyślną „Default”.
  • Usuwanie adnotacji @Experimental z interfejsu menedżera autouzupełniania. Ta funkcja jest nadal w wersji roboczej, ale nie chcemy wprowadzać interfejsu API @Expemiental (Id8398).
  • LocalHapticFeedback udostępnia teraz domyślną implementację HapticFeedback, gdy interfejs API wibratora wskazuje, że haptyka jest obsługiwana. Do operatora HapticFeedbackType dodano użytkowników Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOffVirtualKey. Komponenty Wear Compose, które można kliknąć dłużej, takie jak Button, IconButton, TextButtonCard, wykonują teraz haptyczne LONG_PRESS, gdy zostanie podany moduł obsługi długiego kliknięcia. (I5083d)
  • Usuwa parametry OverscrollConfigurationLocalOverscrollConfiguration oraz dodaje parametr rememberPlatformOverscrollFactory, aby utworzyć instancję parametrów / customize domyślnej implementacji przewijania. Aby wyłączyć przewijanie ponad ekran, zamiast wartości LocalOverscrollConfiguration provides null użyj wartości LocalOverscrollFactory provides null. Aby zmienić kolor poświaty lub wypełnienia, zamiast LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) użyj LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516)
  • Usunięto eksperymentalny interfejs API GlobalAssertions. Jego celem było przeprowadzanie kontroli ułatwień dostępu. W tym celu użyj zamiast tego enableAccessibilityChecks(). (I59322)

Wersja 1.8.0-alpha05

30 października 2024 r.

androidx.compose.ui:ui-*:1.8.0-alpha05 został zwolniony. Wersja 1.8.0-alpha05 zawiera te komisy.

Nowe funkcje

W tej wersji autouzupełnianie jest dostępne za pomocą flagi funkcji. Pracujemy nad poprawą wydajności i chcielibyśmy poznać Twoją opinię na temat interfejsów API. Interfejsy API będą ewoluować przed wprowadzeniem stabilnej wersji na podstawie opinii.

  • Aby włączyć autouzupełnianie, ustaw ComposeUiFlags.isSemanticAutofillEnabled na „true” w onCreate i użyj najnowszego Compose Snapshot.
  • Ta wersja autouzupełniania obsługuje zapisywanie danych logowania ręcznie, za pomocą funkcji Zaproponuj silne hasło oraz podczas nawigacji. Obsługuje też wypełnianie, gdy pole, w którym można użyć funkcji Autouzupełniania, zostanie zaznaczone lub gdy funkcja Autouzupełniania zostanie uruchomiona za pomocą paska narzędzi tekstowych w komponentach tekstowych. Gdy autouzupełnianie się zakończy, komponent zostanie wyróżniony.

Zmiany w interfejsie API

  • Zmień interfejs autouzupełniania, aby odpowiadał strukturze expect/actual. (I22dce)
  • Wprowadzić CompositionLocal, który można wykorzystać do zmiany odcienia podświetlenia pola pomyślnie wypełnionego przez autouzupełnianie. (I32092)
  • Dodano interfejs API Modifier.onRectChanged, który umożliwia subskrybowanie pozycji i rozmiaru okna LayoutNode względem okna głównego lub ekranu. Interfejs API rozwiązuje wiele problemów, które rozwiązuje również istniejący modyfikator onGloballyPositioned, ale robi to z o wiele mniejszymi narzutami. Interfejs API zawiera też mechanizmy debouncing i throttle, które można dostosować do potrzeb danego przypadku użycia. (Id28c7, b/372765423, b/372757007, b/372994338)
  • Rozszerzenie Menedżera autouzupełniania o interfejsy API commit()cancel(), które pomagają użytkownikom zapisywać nowo wprowadzone dane logowania. (I2da00)
  • Wprowadza nowy interfejs AutofillManager, który umożliwia dostosowanie procesu autouzupełniania do potrzeb użytkowników, oraz flagę isSemanticAutofillEnabled, która umożliwia włączenie nowej wersji autouzupełniania. (I9d484)
  • Dodano interfejs API Modifier.onRectChanged, który umożliwia subskrybowanie pozycji i rozmiaru LayoutNode względem okna lub ekranu. Interfejs API rozwiązuje wiele problemów, które rozwiązuje również istniejący modyfikator onGloballyPositioned, ale robi to z o wiele mniejszymi narzutami. Interfejs API zawiera też mechanizmy debouncing i throttle, które można dostosować do potrzeb danego przypadku użycia. (I3c8fa)
  • Dodawanie właściwości semantycznych i typów danych w celu rozszerzenia obsługi Autouzupełniania. (I52c7d)
  • Wszystkie metody w twórcy AnnotatedString nie są już eksperymentalne (Ia89c8, b/261561823)

Poprawki błędów

  • Widoki umieszczone w komponencie mogą teraz odbierać zdarzenia obrotu, jeśli są aktywne (I4d53a, b/320510084)
  • Rozwiązano problem, który powodował, że różne typy zasobów nie aktualizowały się po zmianach konfiguracji (Ia9b99, b/352336694).
  • Rozwiązano problem, który uniemożliwiał prawidłowe działanie TextField podczas korzystania z klawiatury japońskiej POBox na niektórych starszych urządzeniach Sony. (Ia9b99, b/373743376)
  • Rozwiązano problem z wyświetlaniem okienek u dołu ekranu zamiast w środku (Ia2ec, b/373093006)
  • W interfejsie Targeting API 35 i nowszych nie jest już wymagane, aby w dialogach parametr decorFitsSystemWindows miał wartość false. (Ibc94, b/364492593)
  • Naprawiono błąd powodujący awarię podczas przenoszenia warstw między oknami (np.okno dialogowe i główny element treści) (I675ba, b/330955281).

Wersja 1.8.0-alpha04

16 października 2024 r.

androidx.compose.ui:ui-*:1.8.0-alpha04 został zwolniony. Wersja 1.8.0-alpha04 zawiera te komisy.

Zmiany w interfejsie API

  • Dodaje funkcje zwracane DelegatableNode#onDensityChangeDelegatableNode#onLayoutDirectionChange, aby umożliwić aktualizowanie stanu węzła po zmianie tych wartości (I04f3e, b/340662451)
  • Dodaje WindowInfo#containerSize, aby podać rozmiar kontenera treści bieżącego okna. Można je uzyskać za pomocą LocalWindowInfo. (Idc38c, b/369334429, b/360343819)
  • Wprowadziliśmy poprawkę dotyczącą zagnieżdżonych elementów przewijanych, które są usuwane z drzewa węzła podczas trwającego przewijania. Teraz te węzły anulują rzut i prawidłowo wyślą zdarzenie onPostFling z pozostałością prędkości. Wprowadzamy też flagę NewNestedScrollFlingDispatchingEnabled, która pozwala kontrolować działanie w przypadku regresji. Flaga zostanie usunięta przed wersją beta. (I05c37, b/371168883)
  • Wprowadziliśmy PointerInputModifierNode#touchBoundsExpansion, który umożliwia powiększenie obszaru dotykowego pojedynczego modyfikatora wejścia wskaźnika. (Iccf02, b/335339283)
  • Dodaje WindowInfo#containerSize, aby podać rozmiar kontenera treści bieżącego okna. Można je uzyskać za pomocą LocalWindowInfo. (I27767, b/369334429, b/360343819)
  • Usuń readOnly z TextFields, aby przypiąć stabilną wersję podstawy. (I3aaba)
  • ParagraphParagraphIntrinsics zawierają teraz listę wszystkich adnotacji zastosowanych do AnnotatedString. Wcześniej zawierały one tylko listę SpanStyles (I12f80).

Poprawki błędów

  • Zmieniono sposób traktowania akapitów w AnnotatedString. Wcześniej można było tworzyć tylko nienakładające się akapity. Teraz AnnotatedString umożliwia łączenie ze sobą całkowicie nakładających się akapitów oraz akapitów zagnieżdżonych. W tym drugim przypadku akapit zewnętrzny zostanie podzielony na granicach akapitu wewnętrznego, a styl akapitu wewnętrznego zostanie połączony ze stylem akapitu zewnętrznego (Ic9554)
  • Naprawić błąd powodujący awarię w funkcji AnnotatedString, gdy LinkAnnotation ma długość zero. (89aac6)

Wersja 1.8.0-alpha03

2 października 2024 r.

androidx.compose.ui:ui-*:1.8.0-alpha03 został zwolniony. Wersja 1.8.0-alpha03 zawiera te komity.

Zmiany w interfejsie API

  • Aktualizacja wersji Kotlina do 1.9 (I1a14c)
  • Wprowadziliśmy nową rolę semantyki o nazwie karuzela, aby emulować zachowanie listy w pagerach w przypadku usług a11y. (Id354b, b/354109776, b/239672673)
  • Zmień nazwę invisibleToUser() na hideFromAccessibility. Jego działanie pozostaje bez zmian. Więcej informacji znajdziesz w dokumentacji. (Ib43a3)

Poprawki błędów

  • Aktualizacja dokumentów dla modyfikatora SensitiveContent (Ib0442)
  • Rozwiązanie problemu, który powodował, że niektóre ogólne klipy konturu były ignorowane w połączeniu z cieniowaniem w niektórych wersjach Androida
  • Rozwiązanie problemu polegającego na tym, że puste klipy były stosowane, gdy w niektórych wersjach Androida podano ogólne klipy konturowe.
  • Naprawiono wyjątek wywoływany, gdy IME jest aktywne w zewnętrznym widoku, a działanie „Dalej” służy do ustawienia fokusa na przycisku ComposeView. Działanie funkcji clearFocus() jest zgodne z działaniem widoku w wersji interfejsu API <28, w której funkcja clearFocus() może spowodować skupienie się na domyślnym widoku.
  • Rozwiązaliśmy problem, który powodował umieszczanie elementów w odłączonych węzłach w LazyList, oddzielając zarządzanie podkompozycją na potrzeby różnych przejść układu.
  • Rozwiązaliśmy problem polegający na tym, że klawiatura oprogramowania miga, gdy fokus przełącza się z elementu TextField na element EditText lub dowolny inny edytor oparty na widoku.
  • Węzły zagnieżchnia skryptu po oderwaniu będą teraz prawidłowo wysyłać zdarzenia onPostFling.
  • Ogólne poprawki wydajności

Wersja 1.8.0-alpha02

18 września 2024 r.

androidx.compose.ui:ui-*:1.8.0-alpha02 został zwolniony. Wersja 1.8.0-alpha02 zawiera te komity.

Zmiany w interfejsie API

  • Dostępne są teraz elementy TextOverflow.StartEllipsis i TextOverflow.MiddleEllipsis, które umożliwiają umieszczanie wielokropków na początku lub w środku wiersza pojedynczego wiersza tekstu. (I38913, b/185418980)

Poprawki błędów

  • Napraw dialog dismissOnClickoutside (39a3d, b/364508685)
  • Nie przycinaj cieni obrazu w treści dialogu (e8e2f, b/363027803)
  • Poprawka nieprawidłowego działania, gdy fokus wyszukiwania przesuwa się między oknem tworzenia wiadomości a oknem podglądu (58377, b/350534714)

Darowizna zewnętrzna

  • Funkcja AlignmentLines Map obsługuje teraz typy VerticalAlignmentLine lub HorizontalAlignmentLine. (I02912)
  • Nowa wspólna metoda ByteArray.decodeToImageBitmap(): ImageBitmap. (I83c21)

Wersja 1.8.0-alpha01

4 września 2024 r.

androidx.compose.ui:ui-*:1.8.0-alpha01 został zwolniony. Wersja 1.8.0-alpha01 zawiera te komity.

Wersja 1.7

Wersja 1.7.5

30 października 2024 r.

androidx.compose.ui:ui-*:1.7.5 został zwolniony. Wersja 1.7.5 zawiera te komitowane zmiany.

Poprawki błędów

  • Rozwiązaliśmy problemy z nieprawidłowym renderowaniem wysokości i przycinania za pomocą niestandardowych kontur.
  • Rozwiązanie problemu z awarią, która występuje przy użyciu znaku o szerokości 0 pikseli LinkAnnotation. (Ic1e2e)
  • Naprawiono komunikat w Talkback przycisku, gdy jest on utworzony jako klikalny element tekstowy. (I1f588)

Wersja 1.7.4

16 października 2024 r.

androidx.compose.ui:ui-*:1.7.4 został zwolniony. Wersja 1.7.4 zawiera te komitowane zmiany.

Wersja 1.7.3

2 października 2024 r.

androidx.compose.ui:ui-*:1.7.3 został zwolniony. Wersja 1.7.3 zawiera te komity.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że podanie ogólnego klipu zarysu prowadziło do pustej granicy klipu w niektórych wersjach Androida.
  • Naprawiono wyjątek wywoływany, gdy IME jest aktywne w zewnętrznym widoku, a działanie „Dalej” służy do ustawienia fokusa na przycisku ComposeView. Działanie funkcji clearFocus() jest zgodne z działaniem widoku w wersji interfejsu API <28, w której funkcja clearFocus() może spowodować skupienie się na domyślnym widoku.
  • Rozwiązaliśmy problem, który powodował, że do nieprawidłowej nieważności wstecznej używano nieprawidłowej wartości placeOrder. Dzięki temu rozwiązaliśmy przypadek krawędziowy, w którym pomijano ustawienie miejsca docelowego wstecznego.

Wersja 1.7.2

18 września 2024 r.

androidx.compose.ui:ui-*:1.7.2 został zwolniony. Wersja 1.7.2 zawiera te komity.

Poprawki błędów

  • Poprawiliśmy wydajność informacji o węzłach ułatwień dostępu i zdarzeń semantycznych, usuwając szczegółowe śledzenie. (I89156, b/362530618)
  • ComposeView nie będzie się już zawieszać, gdy zostanie przekazany wyjątkowo duży rozmiar pomiaru (da5db, b/347036173).
  • Rozwiązaliśmy problem z czytnikami ekranu dotyczący ułatwień dostępu, w którym nie były ogłaszane LiveRegion przyciski. (f66fa7, b/348590026)

Wersja 1.7.1

10 września 2024 r.

  • Brak zmian w artefaktach na Androida. Usunięto -desktop artefakty i dodano -jvmStubs oraz -linuxx64Stubs. Żadnego z tych celów nie należy używać. Są to elementy zastępcze, które ułatwiają pracę Jetbrains Compose.

Wersja 1.7.0

4 września 2024 r.

androidx.compose.ui:ui-*:1.7.0 został zwolniony.

Ważne zmiany od wersji 1.6.0

Ważne zmiany w wersji 1.7.0 opisane są w tym poście na blogu.

Wersja 1.7.0-rc01

21 sierpnia 2024 r.

androidx.compose.ui:ui-*:1.7.0-rc01 został zwolniony. Wersja 1.7.0-rc01 zawiera te komity.

Ważne zmiany

  • ui:moduł ui wymusza teraz, aby wersja minimalna modułu foundation:foundation wynosiła co najmniej 1.7.0-rc01 lub nowsza. Ta zmiana jest wymuszona, aby rozwiązać problem niezgodności zachowania między interfejsem a fundamentem w odniesieniu do zmian NestedScrollSource, które nastąpiły na początku wersji 1.7.0-alpha01.

Wersja 1.7.0-beta07

7 sierpnia 2024 r.

androidx.compose.ui:ui-*:1.7.0-beta07 został zwolniony. Wersja 1.7.0-beta07 zawiera te komity.

Poprawki błędów

  • Funkcje SemanticsNodeInteraction performTextReplacement, performTextInputperformTextClearance związane z danymi wejściowymi tekstowymi będą teraz wywoływać błędy asercji, gdy są wywoływane w trybie tylko do odczytu TextFields. (I4ae8f)

Wersja 1.7.0-beta06

24 lipca 2024 r.

androidx.compose.ui:ui-*:1.7.0-beta06 został zwolniony. Wersja 1.7.0-beta06 zawiera te komity.

Wersja 1.7.0-beta05

10 lipca 2024 r.

androidx.compose.ui:ui-*:1.7.0-beta05 został zwolniony. Wersja 1.7.0-beta05 zawiera te komisy.

Poprawki błędów

  • Usunęliśmy błąd, który powodował, że zmiana klawiatury programowej powodowała, że TextField nie przyjmowała danych z nowej klawiatury, dopóki nie straciła i nie odzyskała fokusu.
  • Rozwiązaliśmy problem, który powodował nieoczekiwane skutki uboczne podczas prób zapisywania zawartości warstwy podczas renderowania treści SurfaceView.

Wersja 1.7.0-beta04

26 czerwca 2024 r.

androidx.compose.ui:ui-*:1.7.0-beta04 został zwolniony. Wersja 1.7.0-beta04 zawiera te komity.

Poprawki błędów

  • Unikanie awarii podczas pomiaru bardzo długich linii tekstu (np.10 tys. znaków) (8157ab)
  • Wyłącz obsługę renderowania oprogramowania w przypadku interfejsu API GraphicsLayer. (35ddd8)
  • Naprawiono błąd powodujący awarię logiki trwałości warstwy. (70b13e)
  • Optymalizacja ponownego używania obiektów warstwy została przywrócona, ponieważ powodowała problemy z renderowaniem. (70b13e)

Wersja 1.7.0-beta03

12 czerwca 2024 r.

androidx.compose.ui:ui-*:1.7.0-beta03 został zwolniony. Wersja 1.7.0-beta03 zawiera te zatwierdzenia.

Wersja 1.7.0-beta02

29 maja 2024 r.

androidx.compose.ui:ui-*:1.7.0-beta02 został zwolniony. Wersja 1.7.0-beta02 zawiera te komity.

Zmiany w interfejsie API

  • Zmieniono nazwę SemanticsProperties.Editable na IsEditable, a SemanticsPropertyReceiver.editable na wartość isEditable. Właściwość jest teraz typu logicznego i zawsze jest określana przez pola tekstowe. (I8acd8)
  • Zmień nazwę parametru testu porównawczego ułatwień dostępu. (I3d440)
  • Zaktualizowany interfejs API do stylizacji linków: TextLinkStyles jest teraz częścią konstruktora LinkAnnotation i metody AnnotatedString.fromHtml (I90b2b). Usunięto też TextDefaults z materiałów (I5477b).

Poprawki błędów

  • Nazwa LayoutCoordinates.introducesFrameOfReference została zmieniona na LayoutCoordinates.introducesMotionFrameOfReference, aby lepiej odzwierciedlała jej przeznaczenie. Zmieniono nazwę powiązanej funkcji, aby obliczała współrzędne na podstawie tej flagi. (I3a330)

Wersja 1.7.0-beta01

14 maja 2024 r.

androidx.compose.ui:ui-*:1.7.0-beta01 został zwolniony. Wersja 1.7.0-beta01 zawiera te komity.

Zmiany w interfejsie API

  • Zmieniono nazwę performCustomAccessibilityActionLabelled na performCustomAccessibilityActionWithLabel, a performCustomAccessibilityActionWhere na performCustomAccessibilityActionWithLabelMatching. (I5387f)
  • AnnotatedString.hasEqualsAnnotations to teraz hasEqualAnnotations (I685c0)
  • Zaktualizowano interfejs API w celu uzyskiwania linków w stylu Material w tekście. W szczególności usunęliśmy z TextDefaults metody tworzenia tematycznych LinkAnnotations i analizowania kodu HTML za pomocą tematycznych linków. Zamiast tego dodaliśmy klasę TextLinkStyles, która umożliwia stylizowanie linków jako parametru w komponowalnym elemencie tekstu. (I31b93)

Poprawki błędów

  • Rozwiązano problemy z dodatkowymi przypadkami użycia podczas dynamicznego dodawania modyfikatorów wprowadzania danych przez wskaźnik podczas zdarzeń 63e1504

Wersja 1.7.0-alpha08

1 maja 2024 r.

androidx.compose.ui:ui-*:1.7.0-alpha08 został zwolniony. Wersja 1.7.0-alpha08 zawiera te komity.

Zmiany w interfejsie API

  • Dodano obsługę zmiennych implementacji kształtów. Shape#createOutline jest teraz obserwowany w warstwach graficznych, więc odczytywanie wartości stanu wewnątrz powoduje unieważnienie po zmianie stanu, co pozwala na tworzenie bardziej wydajnych animacji kształtów. (Id1629, b/326070216)
  • Nazwa isPositionedByParentWithDirectManipulation została zmieniona na introducesFrameOfReference. Pamiętaj, że teraz ma on odwrotny skutek, co oznacza, że domyślnie większość wartości LayoutCoordinates wprowadza system odniesienia, a właściwość będzie fałszywa tylko wtedy, gdy zostanie umieszczona w ramach bezpośredniej manipulacji. Aby zapytanie o pozycję zawierało tylko te, które wprowadzają punkt odniesienia, użyj positionInLocalFrameOfReference(...). Możesz też positionInLocalLookaheadFrameOfReference z poziomu LookaheadScope. (Ifc5f7)
  • LookaheadScope Interfejsy API są stabilne (I21507)
  • Zmień wartość lambda działania getScrollViewportLength zgodnie z opinią Rady API. (Ibc74a)
  • Zaktualizowano interfejsy API GraphicsLayer outline, aby używały parametrów typu float zamiast int. Usunięto wartości sentinela UnsetOffset/UnsetSize IntSize na rzecz już istniejących nieokreślonych stałych wartości w klasach wbudowanych Offset i Size opartych na typie float (I2fb03, b/333863462)
  • Podczas testowania wstrzykiwania danych wejściowych myszy funkcje MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick()MouseInjectionScope.longClick() obsługują teraz parametr button: MouseButton, co zwiększa ich uniwersalność. Wartością domyślną dla wszystkich metod jest MouseButton.Primary. (I31a23, b/190493367, b/261439695)
  • Zmieniono nazwę onClicked na onClick w sekcji LinkInteractionListener. (Iaa35c)
  • Zmień nazwę TextInclusionStrategy.isInside na isIncluded. Ustaw typ zwracany przez funkcję Paragraph/MultiParagraph#getRangeForRect() jako niepusty. (I51f26)

Poprawki błędów

  • Naprawiono problem z robieniem długich zrzutów ekranu w przypadku przewijanych kontenerów (reverseScrolling=true). (I7c59c)

Darowizna zewnętrzna

  • Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych LazyLists (np. LazyColumn, który renderuje zagnieżdżony LazyRows). Ta zmiana powinna zmniejszyć liczbę opuszczonych klatek podczas przewijania tych LazyLists. Domyślnie implementacja pobiera z wyprzedzeniem 2 pierwsze elementy zagnieżdżone, ale to zachowanie można kontrolować za pomocą nowych interfejsów API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount)LazyListPrefetchStrategy#onNestedPrefetch. (I51952)

Wersja 1.7.0-alpha07

17 kwietnia 2024 r.

androidx.compose.ui:ui-*:1.7.0-alpha07 został zwolniony. Wersja 1.7.0-alpha07 zawiera te komity.

Zmiany w interfejsie API

  • Środowisko wykonawcze ClickableText zostało wycofane. Aby dodać linki do tekstu, utwórz AnnotatedString z LinkAnnotation odpowiadającym linkowi i przekaż to AnnotatedString do komponentu Text. (I34d4b, b/323346994)
  • Wprowadź ViewConfiguration.HandwritingGestureLineMargin do gestów pisma odręcznego. Obsługa gestu JoinOrSplit w przypadku BasicTextField (Ie6e13, b/325660505)
  • Usługi FocusProperties.enterFocusProperties.exit nie są już eksperymentalne. Usługi FocusDirection.EnterFocusDirection.Exit nie są już eksperymentalne. Funkcja FocusRequester.Cancel nie jest już eksperymentalna (I461a1, b/261564106)
  • Gdy wysyłasz zapytanie o współrzędne układu, możesz teraz użyć argumentu excludeDirectManipulationOffset, aby wykluczyć przesunięcie ustawione przez nadrzędne układy, które umieściły swoje podrzędne za pomocą argumentu Placeable.PlacementScope.withDirectManipulationPlacement. Podobnie układ, który często zmienia pozycję swoich elementów, może teraz umieszczać je za pomocą withDirectManipulationPlacement (np. przewijania, zaimplementowanego domyślnie). Dzięki temu animacje oparte na approachLayout są bardziej intuicyjne, ponieważ można teraz odróżnić, który przesunięcie ma być animowany, a który ma być stosowany bezpośrednio podczas animowania. (I60ec7)
  • Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
  • LazyColumn będzie teraz prawidłowo wyświetlać przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)
  • Źródła danych NestedScroll Drag and Fling są zastępowane przez UserInputSideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz koło i klawiaturę myszy (UserInput). (I40579)
  • ApproachLayoutModifierNodeModifier.approachLayout są teraz stabilne, a nowe isMeasurementApproachInProgress()isPlacementApproachInProgress() zastępują odpowiednio stare isMeasurementApproachComplete()isPlacementApproachComplete().
  • Usunięto przestarzały modyfikator intermediateLayout. (I3e91c)
  • Zmień nazwę GraphicsLayer#buildLayer na record, aby odzwierciedlić metody beginRecording i endRecording interfejsów API obsługiwanych przez Displaylist, takich jak RenderNode i Picture.
  • Zaktualizowano rememberGraphicsLayer, aby wykorzystać rememberObserver. (I312c1, b/288494724, b/330758155)
  • Tag UrlAnnotation został wycofany. Zamiast niego używaj tagu LinkAnnotation.Url. Jeśli używasz motywu Material, użyj obiektu TextDefaults, aby utworzyć adnotację z zastosowanym motywem Material (I8d180, b/323346545)
  • Linki tekstowe mają teraz opcję stylizacji w przyciśniętym stanie oprócz zwykłej stylizacji, stylizacji po najechaniu kursorem i po zaznaczeniu (I5f864, b/139312671).
  • Nazwa String.parseAsHtml została zmieniona na AnnotatedString.Companion.fromHtml. (I43dcd)
  • Do metody parseAsHtml dodano argumenty stylizacji (linkStyle, focusedLinkStyle, hoveredLinkStyle) i obsługę interakcji z linkami. Podczas analizowania ciągu znaków z tagami HTML (<a>) metoda tworzy obiekt LinkAnnotation.Url dla każdego takiego tagu, a także przekazuje obiekty stylizacji i słuchacz interakcji z linkiem do każdej adnotacji. (I7c977)
  • Funkcja LinkAnnotation przyjmuje teraz argumenty stylizacji oparte na stanie i argument LinkInteractionListener. Dodaj tę adnotację do AnnotatedString, aby uzyskać hiperlink. Przekazując focusedState lub hoveredState, możesz zdefiniować wizualizację configuration dla linków, gdy są one w fokusie lub gdy nad nimi się zatrzymujesz. (I81ce4, b/139312671)
  • Kolumna ImeOptions.hintLocales nie może już być pusta. Jeśli chcesz przekazać pustą listę języków, użyj wartości LocaleList.Empty. (Ic5bc4)

Poprawki błędów

  • Umożliwia sprawne przetwarzanie nieprawidłowego lub uszkodzonego historycznego wejściowego pliku danych zdarzenia (ignoruje nieprawidłowe dane offsetu).
  • Poprawia nieoczekiwane zdarzenia wskaźnika, gdy modyfikator wejścia wskaźnika jest dodawany dynamicznie przed innym modyfikatorem wejścia wskaźnika podczas aktywnego strumienia zdarzeń wejścia wskaźnika (np. między wejściem kursora a wyjściem kursora [mysz/rysika]).

Wersja 1.7.0-alpha06

3 kwietnia 2024 r.

androidx.compose.ui:ui-*:1.7.0-alpha06 został zwolniony. Wersja 1.7.0-alpha06 zawiera te komisy.

Nowe funkcje

  • Dodaliśmy metodę parseAsHtml dla ciągów znaków ze stylami: umożliwia ona konwertowanie ciągu znaków oznaczonego tagami HTML na AnnotatedString. Pamiętaj, że nie wszystkie tagi są obsługiwane. Na przykład nie możesz jeszcze wyświetlać list wypunktowanych. (I84d3d, I30626, b/139326648)
  • Wdrożyliśmy eksperymentalne wsparcie dla długich zrzutów ekranu w slajdach przewijania w Compose za pomocą oficjalnego interfejsu API Androida (ScrollCaptureCallback). Ta funkcja jest eksperymentalna i obecnie może nie działać prawidłowo we wszystkich przypadkach. Z tego powodu jest ona obecnie domyślnie wyłączona. Aby je włączyć, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość prawda. (I2b055, b/329296471)

Zmiany w interfejsie API

  • Wartość fun ClipEntry.getMetadata() została zmieniona na val ClipEntry.clipMetadata. (I50155)
  • Usunięto funkcje ClipboardManager.getClipMetadataClipboardManager.hasClip. Aby odczytać metadane bieżącego wpisu klipu, użyj polecenia clipEntry.getMetadata(). Sprawdź też, czy wynik funkcji ClipboardManager.getClip jest równy null, aby dowiedzieć się, czy schowek zawiera bieżący klip. (I50498)
  • Teraz możesz przekazywać obiekty GraphicsLayer do funkcji placeable.placeWithLayer() (I1b22f).
  • ClipboardManager.setClip może teraz przyjmować wartość null, aby można było wyczyścić schowek. (I7d2e9)
  • Dodano identyfikatory zasobów, aby ułatwić ukrywanie widoków używanych jako szczegóły implementacji w narzędziach kompilacji (I99531).
  • Dodaliśmy metodę zawieszania GraphicsLayer#toImageBitmap, aby umożliwić renderowanie zawartości bitmapy w elementach GraphicsLayer. Jest to operacja renderowania przyspieszonego sprzętowo na poziomie interfejsu API 22 lub nowszym, która działa na ponad 99% urządzeń z Androidem. W przypadku poziomu interfejsu API 21 Androida funkcja ta jest zastępowana przez renderowanie oprogramowania. (I9e114)
  • Metoda pomocnicza do konwertowania elementu RectF na Androida na element ComposeRect (I39925, b/325660505)
  • Wszystkie parametry KeyboardOptions mają teraz domyślnie nieokreśloną wartość. Dodano metodę KeyboardOptions.merge.
  • Zmieniliśmy nazwę pola KeyboardOptions.autoCorrect na autoCorrectEnabled i nadaliśmy mu możliwość przyjmowania wartości null, gdzie null oznacza, że nie określono wartości. (Ia8ba0, b/295951492)
  • Wariant BasicTextField(state)BasicSecureTextField używają teraz wartości KeyboardActionHandler zamiast KeyboardActions do przetwarzania działań podejmowanych przez klawiaturę programową. (I58dda)

Wersja 1.7.0-alpha05

20 marca 2024 r.

androidx.compose.ui:ui-*:1.7.0-alpha05 został zwolniony. Wersja 1.7.0-alpha05 zawiera te komity.

Nowe funkcje

  • Wprowadzenie nowego interfejsu GraphicsLayer API do rejestrowania poleceń rysowania w liście wyświetlania oraz dodatkowych właściwości, które wpływają na jej renderowanie. Dzięki temu można podzielić skomplikowaną scenę na mniejsze elementy, które można aktualizować niezależnie od siebie bez konieczności ponownego tworzenia całej sceny. Przekształcenia wprowadzone w elementach GraphicsLayer można wykonać bez ponownego nagrywania listy wyświetlania. W przeciwieństwie do Modifier.graphicsLayer GraphicsLayer umożliwia renderowanie treści składanych w innym miejscu i jest przydatny w zastosowaniach animowanych, w których treści mają być renderowane w różnych scenach.

Zmiany w interfejsie API

  • Interfejs GraphicsLayer.draw(Canvas) nie jest już interfejsem API dostępnym publicznie. Zamiast tego do rysowania warstwy użyj funkcji rozszerzenia DrawScope.drawLayer(GraphicsLayer). (I7a7c0)
  • Podziel restrictedConstraints() na 2 metody: fitPrioritizingWidth()fitPrioritizingHeight() (I6d7fd)
  • Wprowadziliśmy HardwareCanvas stub na potrzeby Androida L (I1c3b5, b/288494724).
  • Zaktualizuj framework Compose, aby udostępnić kompozycję lokalną GraphicsContext, a także zaktualizuj implementacje właściciela, DelegateableNode i modyfikatora drawWithCache, aby udostępnić dostęp do GraphicsContext w ramach ograniczonego dostępu, który automatycznie usunie instancje GraphicsLayer, gdy modyfikatory zostaną usunięte. (I64a2f, b/288494724)
  • Wprowadziliśmy InterceptPlatformTextInput, aby ułatwić pisanie testów niskiego poziomu związanych z IME i inne przypadki użycia IME na niskim poziomie. Środowisko wykonawcze PlatformTextInputTestOverride zostało wycofane. (I862ed, b/322680547)
  • Dodano funkcję rozszerzenia GraphicsLayer.setOutline(Outline). (Ib81f4)
  • Wprowadzić konstruktor funkcji GraphicsContext, aby utworzyć fabrykę do tworzenia instancji GraphicsLayer (Ib98d6, b/288494724)
  • Interfejs API GraphicsLayer zapewnia elastyczność w definiowaniu przez deweloperów poleceń rysowania, które można stosować do rysowania w innych miejscach i do stosowania różnych efektów wizualnych w wyniku końcowym. (I80245, b/288494724)
  • Poznaj funkcję Paragraph#getRangeForRect, która zwraca zakres tekstu pokryty przez dany obszar prostokąta. (Iee516, b/325660505)
  • Usunięto eksperymentalne zastąpienie BasicText argumentem onLinkClicked. W przyszłości udostępnimy nowe API obsługujące hiperlinki. (I107d5)

Poprawki błędów

  • Dodano definicję interfejsu API GraphicsLayer expect/actual, aby umożliwić rejestrowanie i odtwarzanie poleceń rysowania z opcjonalnym składaniem efektów wizualnych i przekształceń. Wprowadzić interfejs GraphicsContext, aby zawierał zależności graficzne, w tym tworzenie i zarządzanie instancjami GraphicsLayer. (I4a8d6, b/288494724)
  • Rozwiązaliśmy problem z współdziałaniem w wyszukiwaniu z powiększonym obszarem 1D, który powodował zablokowanie się fokusa w elementach ComposeView umieszczonych w ramach innych widoków. (I08fd4)

Darowizna zewnętrzna

  • LocalLifecycleOwner zostało przeniesione z interfejsu Compose do lifecycle-runtime-compose, aby interfejsy API pomocnicze oparte na Compose można było używać poza interfejsem Compose. Dziękujemy Jake’owi Whartonowi za pomoc. (I6c41b, b/328263448)
  • Konsekwentnie wyświetlaj właściwości typu float w przypadku wszystkich podtypów wyrównania opartego na błędach. (I69f0f, b/328088992)

Wersja 1.7.0-alpha04

6 marca 2024 roku

androidx.compose.ui:ui-*:1.7.0-alpha04 został zwolniony. Wersja 1.7.0-alpha04 zawiera te komity.

Zmiany w interfejsie API

  • Obsługa funkcji pisma odręcznego rysikiem w przypadku pola tekstowego podstawowego 2 na urządzeniach z Androidem U i nowszych. (I002e4)
  • W tym CL dodajemy działanie semantyczne GetScrollViewportLength, aby przesyłać informacje o komponentach przewijanych w komponencie do systemu a11y. Ten CL dotyczy również używania tej usługi w podstawowych przewijanych listach. (Ic5fa2)
  • FocusRequester.createRefs jest teraz stabilna (I4d92c, b/261436820)
  • Wprowadziliśmy funkcję DelegatableNode.requireView(), aby umożliwić węzłom modyfikatorów pobieranie bieżącego Androida View bez odczytywania kompozycji lokalnie. (I40768)
  • Nowy interfejs API Path.reverse() do odwracania kierunku ścieżki (I36348)
  • Dodano hintLocales do KeyboardOptions, aby umożliwić TextFields wyświetlanie podpowiedzi w systemach IME z określonymi lokalizacjami, które umożliwiają wstępne ustawienie preferowanego języka.
  • Wyświetla właściwość platformLocale z elementu Locale, która zwraca obiekt platformy docelowej, np. java.util.Locale. (I921c6)

Wersja 1.7.0-alpha03

21 lutego 2024 r.

androidx.compose.ui:ui-*:1.7.0-alpha03 został zwolniony. Wersja 1.7.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Przedstawiamy ContextualFlowRow i ulepszone FlowRow/Column z MaxLines i Overflow. Z przyjemnością informujemy, że eksperymentalne funkcje FlowRowFlowColumn zostały ulepszone. Teraz obsługują one maxLines i przepełnienie. Wprowadziliśmy też funkcje ContextualFlowRowContextualFlowColumn. To uaktualnienie ma na celu zapewnienie optymalnej wydajności komponentów. ContextualFlow* doskonale nadaje się do dużej liczby elementów, korzystających z małej konfiguracji maxLines i dynamicznych przycisków „Pokaż więcej” +N, a FlowRowFlowColumn są idealne do małej liczby elementów (mniej niż 100). Ważne: aby zachować dotychczasowe działanie funkcji FlowRow lub FlowColumn, w której wszystkie elementy są łączone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjalizacji ustaw wartość parametru overflow na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Aby zobaczyć przykłady działania nowych funkcji, otwórz ContextualFlowRowSample i FlowRowSample. (Ib9135, b/293577082)
  • Dodaj właściwość semantyki maxTextLength, która powinna być ustawiona w polach tekstowych, które filtrują maksymalną dozwoloną liczbę znaków. (I24d9f, b/170648072)
  • Opakowanie Modifier.inspectable zostało wycofane. Ten interfejs API spowoduje więcej niepotrzebnych unieważnień modyfikatora, dlatego nie zalecamy jego używania. Deweloperzy powinni implementować metodę inspectableProperties() w obiekcie ModifierNodeElement, jeśli chcą udostępnić właściwości modyfikatorów narzędziom. (Ib3236)
  • Nowy konstruktor PopupProperties, który zapewnia pełną kontrolę nad flagami WindowManager.LayoutParams. (Ibb33e, b/312485503)
  • Wprowadziliśmy funkcję DelegatableNode.requireLayoutCoordinates(), która umożliwia uzyskanie aktualnej LayoutCoordinates obiektu Modifier.Node bez konieczności zastępowania onPlaced i samodzielnego przechowywania współrzędnych w obiekcie. (Ia8657)
  • Wprowadziliśmy funkcję DelegatableNode.currentLayoutCoordinates, która umożliwia uzyskanie aktualnej LayoutCoordinates obiektu Modifier.Node bez konieczności zastępowania onPlaced i samodzielnego przechowywania współrzędnych w obiekcie. (Iaebaa)
  • Interfejs BasicTextField2 i powiązane z nim interfejsy API w pakiecie androidx.compose.foundation.text2 zostaną przeniesione do pakietu androidx.compose.foundation.text. (I9f635)
  • Dodano nowy interfejs API ApproachLayoutModifierNode, który umożliwia tworzenie niestandardowej logiki podejścia w wyraźnym węźle modyfikatora. Dodano też nowy eksperymentalny interfejs API DeferredTargetAnimation do animacji, których cel jest nieznany w momencie tworzenia. (I60745)
  • Nowe interfejsy API Path do wysyłania zapytań o kierunek ścieżki i wyodrębniania kontur z Path. (I63d04)
  • Dodano PathHitTestPath.contains(Offset), aby sprawdzić, czy Path zawiera określony punkt. (I3b218)
  • Klasa TextLayoutResult udostępnia teraz metodę getLineBaseline(lineIndex). Umożliwia to odczytywanie wartości bazowej dowolnego wiersza tekstu oprócz właściwości firstBaselinelastBaseline. (Ide4e8, b/237428541)
  • Dodano metodę do porównywania tylko adnotacji 2 AnnotatedStrings. (I32659)

Poprawki błędów

  • Rozwiązaliśmy problem ze zgodnością wsteczną w przypadku SemanticsPropertyReceiver.performImeActionSemanticsActions.PerformImeAction. (Id0528, b/322269946)

Wersja 1.7.0-alpha02

7 lutego 2024 r.

androidx.compose.ui:ui-*:1.7.0-alpha02 został zwolniony. Wersja 1.7.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Rozwiązano problem ze zgodnością binarną z SemanticsPropertyReceiver.performImeAction. (I65865, b/322269946)
  • Konstruktor PopupProperties, który przyjmuje parametr usePlatformDefaultWidth, nie jest już eksperymentalny. (I8f8d2)
  • Dodano przeciążenie funkcji ComposeTestRule.waitUntil, która przyjmuje ciąg znaków opisujący stan, który ma być uwzględniony w wiadomości o przekroczeniu limitu czasu. (I9413e)
  • Nowe interfejsy API semantyki unset() do usuwania właściwości semantycznych dodanych w tym samym łańcuchu modyfikatorów. Nowa właściwość semantyczna isOpaque. (I8c583, b/317966058, b/246056649)
  • Usunięto originalEventPosition z metody kopiowania w publicznym interfejsie API usługi PointerInputChange. (I7bead)

Poprawki błędów

  • Rozwiązaliśmy błąd związany z a11y, który umożliwiał klikanie elementów innych niż karty i opcje radiowe. (I2181c)
  • VelocityTracker będzie teraz domyślnie dodawać punkty. W razie problemów możesz wyłączyć poprawkę, ustawiając wartość VelocityTrackerAddPointsFix na „fałsz”. (Ib3877, b/269487059)
  • Usunięto problem z brakiem zgodności wstecznej binarnych wersji TextStyleParagraphStyle. (I179f0, b/320819734)

Darowizna zewnętrzna

  • Dodano nowy konstruktor DialogProperties bez parametrów specyficznych dla platformy. (I45829)
  • Dodano nowy konstruktor PopupProperties bez parametrów specyficznych dla platformy. (I9a038)

Wersja 1.7.0-alpha01

24 stycznia 2024 r.

androidx.compose.ui:ui-*:1.7.0-alpha01 został zwolniony. Wersja 1.7.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Rozszerzyliśmy ClipboardManager o elementy ClipEntryClipMetadata, aby umożliwić obsługę dowolnych treści, np. obrazów.
  • Dodaje interfejs DeviceConfigurationOverride do ui-test, aby umożliwić lokalnie zastąpienie zachowania treści poddawanych testom, na przykład w celu określenia rozmiaru, lokalizacji, kierunku układu, skali czcionki lub motywu.

Wersja 1.6

Wersja 1.6.8

12 czerwca 2024 r.

androidx.compose.ui:ui-*:1.6.8 został zwolniony. Wersja 1.6.8 zawiera te komisy.

Poprawki błędów

  • Rozwiązano problemy z niespójnościami w skalowaniu czcionki, gdy skala czcionki jest mniejsza niż najniższa zdefiniowana tabela. W tym przypadku interpolujemy między skalą liniową 1x a najniższą zdefiniowaną tabelą, tak aby rozmiar czcionki monotonicznie wzrastał wraz ze wzrostem skali. (Icbae3)

Wersja 1.6.7

1 maja 2024 r.

androidx.compose.ui:ui-*:1.6.7 został zwolniony. Wersja 1.6.7 zawiera te komity.

Wersja 1.6.6

17 kwietnia 2024 r.

androidx.compose.ui:ui-*:1.6.6 został zwolniony. Wersja 1.6.6 zawiera te komity.

Poprawki błędów

  • Naprawiono rzadki błąd BasicTextField powodujący zamykanie aplikacji.

Wersja 1.6.5

3 kwietnia 2024 r.

androidx.compose.ui:ui-*:1.6.5 został zwolniony. Wersja 1.6.5 zawiera te komity.

Wersja 1.6.4

20 marca 2024 r.

androidx.compose.ui:ui-*:1.6.4 został zwolniony. Wersja 1.6.4 zawiera te komitowane zmiany.

Wersja 1.6.3

6 marca 2024 roku

androidx.compose.ui:ui-*:1.6.3 został zwolniony. Wersja 1.6.3 zawiera te komitowane zmiany.

Wersja 1.6.2

21 lutego 2024 r.

androidx.compose.ui:ui-*:1.6.2 został zwolniony. Wersja 1.6.2 zawiera te commity.

Wersja 1.6.1

7 lutego 2024 r. androidx.compose.ui:ui-*:1.6.1 zostaje opublikowana. Wersja 1.6.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem ze zgodnością wsteczną w przypadku SemanticsPropertyReceiver.performImeActionSemanticsActions.PerformImeAction. (Ie0bb2, b/322269946)
  • Teraz układy wyświetlają błąd podczas pomiaru, gdy jeden z nich zwraca nienormalnie duży rozmiar. Ten rodzaj błędu występuje zwykle wtedy, gdy pomiar używa bezpośrednio ograniczeń maksymalnych bez sprawdzania wartości Constraints.Infinity. Dzięki temu deweloperzy będą mogli szybciej znajdować problemy z nieprawidłowym rozmiarem układu, a nie z układem, który zawiera ten rozmiar. (I339a9)

Wersja 1.6.0

24 stycznia 2024 r.

androidx.compose.ui:ui-*:1.6.0 został zwolniony. Wersja 1.6.0 zawiera te zatwierdzenia.

Wersja 1.6.0-rc01

10 stycznia 2024 r.

androidx.compose.ui:ui-*:1.6.0-rc01 został zwolniony. Wersja 1.6.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Zoptymalizowana implementacja grafik wektorowych, która poprawia wydajność przez zminimalizowanie dodatkowych rekompozycji.

Wersja 1.6.0-beta03

13 grudnia 2023 r.

androidx.compose.ui:ui-*:1.6.0-beta03 został zwolniony. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.

Nowe funkcje

  • Teraz można odłączyć LayoutCoordinates bez odłączania węzła. Zapobieganie temu w inspektorze układu w Compose (If693)

Poprawki błędów

  • PlatformImeOptions jest teraz konkretną klasą, a nie interfejsem. (If40a4)
  • Naprawiono dodatkowe ponowne skompilowanie na kolejnych poziomach spowodowane tym, że LocalSoftwareKeyboardController i LocalTextInputService otrzymywały nowe wartości za każdym razem, gdy korzeń był ponownie kompilowany. (I42190, b/310510985)

Wersja 1.6.0-beta02

29 listopada 2023 r.

androidx.compose.ui:ui-*:1.6.0-beta02 został zwolniony. Wersja 1.6.0-beta02 zawiera te commity.

Wersja 1.6.0-beta01

15 listopada 2023 r.

androidx.compose.ui:ui-*:1.6.0-beta01 został zwolniony. Wersja 1.6.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Modyfikator DragAndDropTarget przyjmuje teraz parametr DragAndDropTarget w sposób jawny i ma funkcję lambda, która umożliwia włączenie sesji przeciągania i upuszczania. Teraz w przypadku DragAndDropModifierNode istnieją 2 funkcje fabryczne. Jeden do odbierania transferów i jeden do przesyłania danych (I69481)
  • Zaktualizowano maximumFlingVelocity, aby reprezentować je jako typ danych Float. Zaktualizowano dokumentację, aby była bardziej przejrzysta w sprawie maximumFlingVelocity. (I8adc7)
  • onDragAndDropStart w fabryce DragAndDropModifierNode nosi teraz nazwę acceptDragAndDropTransfer.Do modyfikatora dragAndDropTarget dodano wartość acceptsDragAndDropTransfer, aby umożliwić akceptowanie podczas sesji przeciągania i upuszczania. Ta funkcja lambda zwraca DragAndDropTarget, jeśli chcesz przeprowadzić sesję przeciągania i upuszczania. Inne funkcje lambda do przetwarzania zdarzeń przeciągania zostały zastąpione przez tę funkcję. Dodano funkcję fabryczną DragAndDropTarget, która odbiera dane z sesji przeciągania i upuszczania (Iebf3a).
  • Usunięto typ DragAndDropInfo, ponieważ typ DragAndDropModifierNode.drag przyjmuje teraz parametry dla transferData, rozmiaru dekoracji i dekoracji przeciągania DrawScope lambda

    DragAndDropTarget ma metody dla poszczególnych zdarzeń przeciągania i upuszczania zamiast jednej abstrakcyjnej metody

    Funkcja fabryczna onDragAndDropEvent w przypadku obiektu DragAndDropModifierNode została przemianowana na onDragAndDropStart, aby lepiej wskazywać, że podany obiekt DragAndDropTarget jest prawidłowy tylko w przypadku danej sesji przeciągania i upuszczania.

    Opcja DragAndDropEventType została usunięta (I645b1).

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

  • Poprawiono nazwy interfejsów API węzłów dostępnych do przejścia, aby były bardziej zrozumiałe. (Ia4474)

  • Zastąp OriginalText wartością TextSubstitution. (Ifa5a8)

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

  • Elementy podrzędne SubcomposeLayout (i oparte na nich układy, np. LazyColumn), które są zachowane, aby można było ich używać w przyszłości, są uważane za dezaktywowane. Wprowadziliśmy nowy interfejs API testów assertIsDeactivated(), który umożliwia testowanie takich węzłów. Pozostałe interfejsy API testowe domyślnie odfiltrowują dezaktywowane węzły. (I2ef84, b/187188981)

  • Usunięto FocusDirection.InFocusDirection.Out, zamiast nich używaj FocusDirection.EnterFocusDirection.Exit (I2f660)

  • Interfejsy API Material SwipeToReveal (do tworzenia kart i elementów) korzystają teraz z interfejsu API opartego na slotach (zgodnie z zaleceniem Compose) zamiast z instancji opartych na klasie danych. Jest to zmiana powodująca przerwanie działania. Aby dowiedzieć się, jak korzystać z nowego interfejsu API, zapoznaj się z demonstracją i przykładowym kodem. (Ia8943)

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

  • Nazwa interfejsu FontScalable została zmieniona na FontScaling (Ie804a)

Poprawki błędów

  • SoftwareKeyboardController.show() nie będzie już wyświetlać klawiatury, jeśli żaden edytor tekstu nie jest aktywny. (I2165a, b/301477279)
  • Zdarzenia wciśnięcia klawisza sprzętowego w przypadku klawiszy, które nie otrzymały zdarzenia wciśnięcia w tym samym widoku tworzenia, będą teraz ignorowane. (Ib37b4, b/305518328)
  • Dodano obsługę renderowania gradientu Sweep w ArcLine. (I4d5bb)
  • Zaimplementuj metody equals i hashcode dla klasy PageSize.Fixed. (Ie3ede, b/300134276)
  • Rozwiązanie problemu z zgodnością binarną w związku ze zmianą w oknie (Iee695)
  • Usuń warstwę główną materiału w przypadku elementu lub przycisku Material3, ponieważ mikrotesty pokazują lepszą wydajność bez niej. (I55555)
  • TestDispatcherprzekazywane do Compose jako effectContext będą teraz używane do tworzenia testów i zegarów kadru. (Ia7178)

Wersja 1.6.0-alpha08

18 października 2023 r.

androidx.compose.ui:ui-*:1.6.0-alpha08 został zwolniony. Wersja 1.6.0-alpha08 zawiera te commity.

Zmiany w interfejsie API

  • W funkcji Modifier.dragAndDrawSource nazwa funkcji lambda onDrawDragShadow została zmieniona na drawDragDecoration, a w funkcji DragAndDropInfo parametr size na dragDecorationSize. (Id0e30, b/303904810)
  • Wprowadź SemanticsNodeInteraction.isDisplayed() i SemanticsNodeInteraction.isNotDisplayed(), aby sprawdzić, czy dopasowany węzeł jest widoczny, bez konieczności jego opisu. (I2c196, b/302100809)
  • Wprowadziliśmy specjalną wartość Unspecified dla pól TextAlign, TextDirection, Hyphens i LineBreak w tabeli ParagraphTextStyle, aby zastąpić wartość null. Ponieważ te klasy są klasami wbudowanymi, zastąpienie typu nullable typem Unspecified pozwala uniknąć zamykania typu prymitywnego. Konstruktory, metody gettera i inne metody w obiektach TextStyle i Paragraph style zostały zaktualizowane, aby akceptowały wymienione parametry jako typy niezerowe. (I4197e, b/299490814)
  • Dodaj przeciążenie GoogleFont do odczytu GoogleFont z XML. (If8f59)
  • LoremIpsum PreviewParameterProvider stało się zajęciami otwartymi. (I41bf5, b/266918816, b/300116360)

Poprawki błędów

  • FontFamilyResolver używa teraz Dispatchers.Main do zarządzania współbieżnymi funkcjami obsługi pamięci podręcznej. (Ie8dd9)
  • AndroidViewBinding teraz synchronicznie usuwa wystąpienia Fragment, które zostały wygenerowane przez uwzględnienie FragmentContainerView w układzie jako element onRelease, używając commitNow (zamiast commit, którego używano wcześniej), dzięki czemu rozwiązuje 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

androidx.compose.ui:ui-*:1.6.0-alpha07 został zwolniony. Wersja 1.6.0-alpha07 zawiera te commity.

Zmiany w interfejsie API

  • Wprowadziliśmy PlatformTextInputMethodTestOverride do pisania testów dla niestandardowych edytorów tekstowych. (Id159b)
  • Dodaje modyfikator dragAndDropSource do inicjowania sesji przeciągania i upuszczania oraz modyfikator dragAndDropTarget do odbierania danych z sesji przeciągania i upuszczania. (Ib7828, b/286038936)
  • Dodano kolekcje ColorListColorSet, które unikają przypisywania. (I744bd)
  • Dodano tymczasową flagę DisableNonLinearFontScalingInCompose, aby wyłączyć nieliniowe skalowanie czcionki. Jeśli potrzebujesz czasu na uporządkowanie testów, ustaw w nich wartość DisableNonLinearFontScalingInCompose = true. Ten parametr zostanie usunięty w wersji Compose 1.6.0-beta01. (Ic9486)

Poprawki błędów

  • Zoptymalizowano analizowanie wektorów obiektów rysowalnych w pliku XML. (Ibb015)

Wersja 1.6.0-alpha06

20 września 2023 r.

androidx.compose.ui:ui-*:1.6.0-alpha06 został zwolniony. Wersja 1.6.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • Dodatkowe optymalizacje ikon w Material Design (I3e08d)
  • Dodaje możliwość przeszukiwania w górę i w dół drzewa modyfikatorów w celu znalezienia podobnych węzłów. (I2d234)
  • Dodano wywołanie zwrotne onRestoreFailed() do modyfikatora focusRestorer() (Ie1d43).
  • Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić ColorInt, FloatRange, IntRange, Size i inne. (Id65c8, b/290950582)
  • Dodano showSystemUi=true do definicji PreviewScreenSizes (Ib61d3)

Zmiany w zachowaniu

  • Teraz w komponowaniu można stosować nieliniowe skalowanie czcionek, aby zwiększyć czytelność i dostępność. Jeśli w ustawieniach systemowych rozmiar czcionki > 100%, mały tekst będzie normalnie powiększany, ale i tak już duży tekst będzie powiększany tylko trochę. Wysokość wiersza zdefiniowana w SP będzie automatycznie dostosowywana, aby pozostać proporcjonalna do wysokości odpowiadającej 100% skali. Więcej informacji znajdziesz w artykule Sprawdzone metody dotyczące skalowania czcionek (I11518).

Wersja 1.6.0-alpha05

6 września 2023 r.

androidx.compose.ui:ui-*:1.6.0-alpha05 został zwolniony. Wersja 1.6.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Włącz przechwytywanie treści w AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • Prędkości w komponentach Widok, takich jak ScrollViewRecyclerView, są ograniczone do ViewConfiguration.ScaledMaximumFlingVelocity. Teraz aplikacja Redagowanie zawiera własną wersję funkcji maximumFlingVelocity, która jest teraz stosowana w Draggable. (Ibf974)
  • Dodaje wstępne elementy szablonu, aby obsługiwać interfejsy API platformy typu „przeciągnij i upuść”. (If84ce)
  • Dodaj deviceId do RotaryScrollEvent (Iba3bf)
  • Zaktualizowano interfejs API urządzeń ui-tooling, aby uwzględniał nowsze urządzenia (Ib25b4).

Wersja 1.6.0-alpha04

23 sierpnia 2023 r.

androidx.compose.ui:ui-*:1.6.0-alpha04 został zwolniony. Wersja 1.6.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Dodano metodę dezaktywacji ReusableComposition, która usuwa obserwacje, ale zachowuje węzły. Dezaktywowaną kompozycję można ponownie aktywować, wywołując funkcję setContent. (Ib7f31)
  • Dodaj interfejs ReusableComposition do zarządzania cyklem życia i ponownego użycia podkompozycji. (I812d1, b/252846775)
  • Interfejs Modifier.focusGroup został przeniesiony do stabilnych interfejsów API. (I7ffa3)
  • Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić ColorInt, FloatRange, IntRange, Size i inne. (I70487, b/290950582)
  • Zaktualizowano interfejs API ColorFilter, aby zawierał konkretne typy podklas, co ułatwia sprawdzanie parametrów. (I5fe29)
  • Wprowadzenie biblioteki narzędzi do wyświetlania podglądu na Wear OS, która zawiera listę prawidłowych urządzeń Wear OS, które można wykorzystać do wyświetlania podglądu interfejsu (Ib036e)
  • Utworzono interfejs FontScalable, aby obsłużyć część interfejsu gęstości dotyczącą skalowania czcionek. (I2cf3f)

Wersja 1.6.0-alpha03

9 sierpnia 2023 r.

androidx.compose.ui:ui-*:1.6.0-alpha03 został zwolniony. Wersja 1.6.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Nowy typ przejścia wejścia/wyjścia, który skaluje zawartość na podstawie rozmiaru animowanego kontenera podczas animacji wejścia i wyjścia. LookaheadScope Funkcja komponowania i interfejs są teraz stabilne. (Ifb2ce)
  • Dodano obsługę konfiguracji privateImeOptions (Idb772).

Poprawki błędów

  • PopupPositionProvider.calculatePosition będzie teraz automatycznie aktualizować pozycję wyskakującego okienka, gdy zmieni się stan odczytu w obliczeniach. (I676a1, b/292257547)
  • Rozwiązano problem z polami tekstowymi, które wyświetlają klawiaturę i są możliwe do edycji, gdy wartość readOnly to prawda. Naprawiliśmy też błąd polegający na tym, że klawiatura nie wyświetlała się, gdy wartość readOnly zmieniła się z prawdy na fałsz podczas skupienia. (I34a19, b/246909589)
  • Rozszerzone zastosowanie stwierdzeń globalnych w testach UI (I1f90d)

Wersja 1.6.0-alpha02

26 lipca 2023 r.

androidx.compose.ui:ui-*:1.6.0-alpha02 został zwolniony. Wersja 1.6.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Dodano interfejs wyszukiwania usługi, który może być implementowany przez implementatorów kompozycji. Umożliwia on implementację kompozycji, która deleguje wyszukiwanie usługi do innej kompozycji, a następnie do pierwotnej kompozycji. Nie należy go wywoływać bezpośrednio. Służy on do tworzenia eksperymentalnych interfejsów API w czasie wykonywania, które można znaleźć w opakowanych wersjach kompozytora, np. w module interfejsu użytkownika. (I296b9)
  • całkowicie przeprojektowany interfejs API PlatformTextInput*, (I6c93a, b/274661182, b/267235947, b/277380808)
  • Usługi SoftwareKeyboardControllerLocalSoftwareKeyboardController nie są już eksperymentalne. LocalSoftwareKeyboardController jest teraz prawidłowym CompositionLocal. (I4c364)
  • Interfejsy LookaheadLayoutLookaheadLayoutScope zostały wycofane w kilku wersjach i zostały usunięte. Zastępcze interfejsy API to LookaheadScope, które mogą działać z dowolnym układem. (I12ac3)
  • Dodano SemanticsNodeInteraction.requestFocus jako wygodniejszy i łatwiejszy do znalezienia sposób na prośbę o skupienie się na testach. (Ie8722)
  • Dodanie eksperymentalnych interfejsów API do rejestrowania asercji globalnych, które będą używane przez frameworki testowe w przyszłości. (I12d77)

Poprawki błędów

  • Pierwsze wywołanie funkcji AndroidView w komponencie update będzie teraz opóźnione do momentu dołączenia widoku, zamiast uruchamiania się po zastosowaniu kompozycji, która wprowadza komponent AndroidView. Rozwiązanie to naprawia błąd, który powodował, że wywołanie zwrotne update nie było unieważniane, jeśli stan odczytany przez funkcję został natychmiast zmieniony przez efekt. (Ie9438, b/291094055)

Wersja 1.6.0-alpha01

21 czerwca 2023 r.

androidx.compose.ui:ui-*:1.6.0-alpha01 został zwolniony. Wersja 1.6.0-alpha01 zawiera te commity.

Nowe funkcje

  • Obsługa funkcji lookahead w LazyList. Dzięki temu LazyList w przewidywaniu może pomijać animacje (np.animację umieszczania elementów, AnimatedVisibility itp.) i obliczać rozmiar oraz pozycję przewidywania dla wszystkich elementów podrzędnych. Po etapie przewidywania dzieci LazyList mogły animować niezależnie od rzeczywistości, jaką widziały na etapie przewidywania.

Zmiana zachowania: w sekcji „Compose” wartość parametru includeFontPadding jest teraz domyślnie ustawiona na „false”

Wartość includeFontPadding jest teraz domyślnie ustawiona na fałsz (21d806) w sekcji „Tworzenie”.

includeFontPadding to starszy atrybut, który określa, czy w pierwszym i ostatnim wierszu tekstu ma być uwzględnione dodatkowe wypełnienie, aby pomieścić znaki, które mogą wystawać poza podstawę tekstu.

Zmiana tej wersji Compose spowoduje zmianę sposobu renderowania wszystkich tekstów w interfejsie. Usunie to dodatkowe wypełnienie na początku i na końcu każdego wyświetlanego tekstu.

W zależności od wymagań dotyczących interfejsu i danych czcionki zmiany powinny być minimalne. Możesz jednak napotkać przeszkody, takie jak: - testy nieprawidłowego zrzutu ekranu. W razie potrzeby napraw interfejs użytkownika i wygeneruj ponownie złote obrazy. – tekst jest lekko niedopasowany; Usuń niestandardowe ujemne wypełnienie lub w razie potrzeby dodaj wypełnienie.

Możesz włączyć includeFontPadding, używając PlatformTextStyle dla każdego tekstu:

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

Możesz włączyć includeFontPadding dla wszystkich tekstów, konfigurując style Material. Pamiętaj, że nazwy parametrów różnią się w przypadku M2 i M3.

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

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

Więcej informacji o komponencie includeFontPadding znajdziesz w dokumentacji dla deweloperówtym poście na blogu.

Jeśli wystąpią problemy lub błędy związane z tą zmianą, prześlij raport o błędzie za pomocą śledzika problemów.

Zmiany w interfejsie API

  • Pomoc InputConnection#requestCursorUpdates (I0c69b)
  • Dodano FocusRequester.saveFocusedChild i FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318).
  • Dodaj typ ResourceResolutionException, aby opakować obiekty rzucane podczas próby załadowania zasobów bitmapy z opisem ścieżki zasobu, której nie udało się załadować. (I19f44, b/230166331, b/278424788)
  • Optymalizacja ułatwień dostępu pod kątem wydajności i alokacji pamięci. (Iede48)
  • Dodano właściwości i działania semantyczne, aby umożliwić tłumaczenie tekstu. (I4a6bc)
  • Nowa właściwość w funkcji IntrinsincMeasureScope i jej implementacjach (np. MeasureScope) do wskazywania, czy bieżący pomiar jest pomiarem z wyprzedzeniem. (I7a812)
  • Zaktualizowaliśmy interfejs API DrawScope, aby umożliwić ponowne ukierunkowanie renderowania na innym płótnie z inną gęstością/kierunkiem układu i rozmiarem.
  • Zaktualizowano DrawContext, aby obsługiwać konfigurację gęstości i kierunku układu oraz umożliwić konfigurowanie tła. (Ie1f9b, b/225408150)
  • Dodano Paragraph#fillBoundingBoxes do obliczania ramek ograniczających znaki. (If30ee)
  • Dodano zestaw typowych MultiPreviews (Ia5a27)

Poprawki błędów

  • Dodano interfejs FocusTargetModifierNode, który umożliwia tworzenie niestandardowych FocusTarget. (I9790e)
  • Zmieniono nazwy parametrów fallback* w konstruktorze TextMeasurer na default*. (I940a5)
  • Zmieniono nazwę SemanticsPropertyReceiver.performImeAction na onImeAction, a SemanticsActions.PerformImeAction na OnImeAction. (I8e841)
  • Dodaje kółko, aby odróżnić przewijanie od przeciągania w ramach przewijania zagnieżdżonego (szczególnie w funkcji NestedScrollConnection). (Ie57e4)
  • Dodano interfejs API asComposePaint, który zastępuje interfejs toComposePaint, ponieważ zwracany obiekt zawiera oryginalny obiekt android.graphics.Paint (I22b4c).
  • Wycofaj parametr SemanticsProperties.imeAction i zastąp go nowym parametrem SemanticsActions.performImeAction. (I4a587)
  • Dodano obsługę zaznaczania za pomocą myszy. Zaznaczenie dotykowe będzie się rozszerzać o wyraz, a zmniejszać o znak. (Ic0c6c, b/180639271)
  • Metody Paragraph, które wcześniej zwracały błąd AssertionError w przypadku przesunięć poza zakres, teraz zwracają błąd IllegalArgumentException, tak jak metoda MultiParagraph. (I549d3, b/243338896)

Wersja 1.5

Wersja 1.5.4

18 października 2023 r.

androidx.compose.ui:ui-*:1.5.4 został zwolniony. Wersja 1.5.4 zawiera te zatwierdzenia.

Wersja 1.5.3

4 października 2023 roku

androidx.compose.ui:ui-*:1.5.3 został zwolniony. Wersja 1.5.3 zawiera te zatwierdzenia.

Poprawki błędów

  • (b/301209788) TextField czasami nieprawidłowo stosował poprzednie polecenia podczas skupiania i wprowadzania koreańskich danych wejściowych, co powodowało utratę znaków.

Wersja 1.5.2

27 września 2023 r.

androidx.compose.ui:ui-*:1.5.2 został zwolniony. Wersja 1.5.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano obejście problemu z zawieszeniami, które występowały, gdy z interfejsu API przewijania ułatwień dostępu korzystano w tle.
  • Rozwiązanie problemu polegający na dodawaniu do drzewa semantycznego nieprzypisanych węzłów.

Wersja 1.5.1

6 września 2023 r.

androidx.compose.ui:ui-*:1.5.1 został zwolniony. Wersja 1.5.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązano problem z polami tekstowymi, które wyświetlają klawiaturę i są możliwe do edycji, gdy wartość readOnly to prawda. Naprawiliśmy też błąd polegający na tym, że klawiatura nie wyświetlała się, gdy wartość readOnly zmieniła się z prawdy na fałsz podczas skupienia. (I34a19, b/246909589)

Wersja 1.5.0

9 sierpnia 2023 r.

androidx.compose.ui:ui-*:1.5.0 został zwolniony. Wersja 1.5.0 zawiera te zatwierdzenia.

Wersja 1.5.0-rc01

26 lipca 2023 r.

androidx.compose.ui:ui-*:1.5.0-rc01 został zwolniony. Wersja 1.5.0-rc01 zawiera te commity.

Poprawki błędów

  • Rozwiązano problem z awarią, która występowała podczas używania elementu SubcomposeLayout w elementach movableContentOf().

Wersja 1.5.0-beta03

28 czerwca 2023 r.

androidx.compose.ui:ui-*:1.5.0-beta03 został zwolniony. Wersja 1.5.0-beta03 zawiera te commity.

Poprawki błędów

  • Dodano interfejs FocusTargetModifierNode, który można wykorzystać do utworzenia niestandardowego obiektu FocusTarget. (Ifb1d6)
  • Rozwiązaliśmy problem z komponowanymi oknami Dialog i Popup, który mógł powodować nieprawidłową zmianę rozmiaru okna podrzędnego po wywołaniu usePlatformDefaultWidth=true. (I112ee)

Wersja 1.5.0-beta02

7 czerwca 2023 r.

androidx.compose.ui:ui-*:1.5.0-beta02 został zwolniony. Wersja 1.5.0-beta02 zawiera te commity.

Zmiany w interfejsie API

  • Dodano interfejs API asComposePaint, aby umożliwić korzystanie z instancji android.graphics.Paint w komponencie Compose.

Poprawki błędów

  • Dodano interfejs API asComposePaint, który zastępuje interfejs toComposePaint, ponieważ zwracany obiekt zawiera oryginalny obiekt android.graphics.Paint (I22b4c).

Wersja 1.5.0-beta01

24 maja 2023 r.

androidx.compose.ui:ui-*:1.5.0-beta01 został zwolniony. Wersja 1.5.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Usunięto przypisania w ramach rekompozycji, animacji kolorów i AndroidComposeView (Ib2bfa).
  • Dodaje funkcję pomocniczą CacheDrawModifierNode(), aby umożliwić delegowanie (Icf8f9)
  • Wprowadzamy właściwość isLookingAhead, dostępną w ramach MeasureScope, która umożliwia obserwowanie wyników prognozowania i wpływanie na główną iterację. (Ibf4c3)
  • Nowa właściwość semantyczna traversalIndex, która jest liczbą zmiennoprzecinkową używaną do zmiany kolejności węzłów w przeszukiwaniu TalkBack (niższe wartości mają pierwszeństwo). (I9a81b, b/186443263)
  • Zmiana nazwy usługi Semantics o nazwie isContainer na isTraversalGroup (I121f6)
  • ColorProducer ma teraz operator fun invoke zamiast produce (I4a9a2)
  • Dodaj interfejs API transformowania Path, aby stosować przekształcenia przesunięcia, skali i obrotu do obiektów ścieżki. (I23434, b/233772232)
  • Metoda ColorProducer ma nazwę produce. (I78bde)
  • Zmień nazwę toFrameworkColorSpace na toAndroidColorSpace (I4f547)
  • Zmień nazwę ColorLambda na ColorProducer. (I73b1a)
  • Wprowadzenie interfejsów API do konwertowania między typami przestrzeni barw Androida i Compose. (Ie7db4, b/279979665)
  • Do parametru BasicText dodano parametr koloru, aby umożliwić wydajne animowanie lub ustawianie koloru tekstu. (Iffd88, b/246961787)
  • Nazwa TextRange.constrain została zmieniona na TextRange.coerceIn. (I31be2)
  • Dodano zoptymalizowany TextStyle.merge(...) z pełną listą parametrów. (Iad234, b/246961787)
  • Ustabilizowano wiele interfejsów Text API, w tym Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush)MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding nie jest już wycofany. Pierwotnie chcieliśmy usunąć to pole, ale opinie wskazują, że deweloperzy potrzebują tej opcji konfiguracji. Dlatego usuwamy ostrzeżenie o zaprzestaniu obsługi z pola (I98e96, b/277703184).
  • Dodano publiczną metodę TextRange.constrain. (I97912)
  • UrlAnnotationAnnotatedString można teraz otwierać za pomocą usług ułatwień dostępu, takich jak TalkBack. (If4d82, b/253292081)
  • Dodano działanie semantyczne InsertTextAtCursor dla pól tekstowych. (I11ed5)
  • Konstruktor LineHeightStyle.Alignment(topRatio) został przeniesiony do stabilnej wersji interfejsu API. (I79c32, b/261565383)
  • Interfejs TextMeasurer i powiązane z nim interfejsy API nie są już eksperymentalne. (I74647, b/261581753)
  • Dodano działanie semantyczne PerformImeAction, aby wywołać działanie IME w węzłach edytora tekstu. (Ic606f, b/269633506)
  • Interfejsy PlatformTextInput API nie są już eksperymentalne w przypadku Androida. (I668eb)
  • Zmieniono nazwę parametru wartości Enum.valueOf (Ia9b89)
  • więcej wyjątków wyrzucanych z funkcji enum valueOf (I818fe)
  • Wprowadziliśmy nowy interfejs API PlatformTextInputAdapter niskiego poziomu do tworzenia niestandardowych implementacji wprowadzania tekstu, które współpracują bezpośrednio z interfejsami API platformy. (I58df4)
  • Do metod DrawScope.drawText, Paragraph.paintMultiParagraph.paint dodano parametr BlendMode, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu na płótnie. (I57508)
  • Zmień nazwę Font.MaximumAsyncTimeout na Font.MaximumAsyncTimeoutMillis. tylko zmienić nazwę. (I07af5)
  • Zaktualizowano wartości DPI urządzeń referencyjnych @Preview (Id6151, b/254528382).
  • Dodaj parametry brush i alpha do BasicText, aby umożliwić wydajne animowanie lub ustawianie pędzla tekstowego.
  • Definiowanie typów lambda bez pudełka dla typów danych Float, Double, Long, Int i Short w :ui:ui-unit (I6f18d, b/246961787)

Poprawki błędów

  • Usunięto wiele alokacji w śledzeniu szybkości kursora (I26bae).
  • Zmniejszone przydziały w zarządzaniu układem i wskaźnikiem (I5333a)
  • Optymalizacja wykorzystania pamięci przez Vector i renderowania pierwszych klatek (I2f3c6)
  • Usunięto alokacje podczas rysowania linii i punktów za pomocą Canvas (I9f535)
  • Dodaj dokumenty dotyczące AndroidFont.fontVariationSettings (I7d9e2)

Darowizna zewnętrzna

  • Zwiększona wydajność i zmniejszone przydziały w interfejsach API wektorów (I906cb)

Wersja 1.5.0-alpha04

10 maja 2023 r.

androidx.compose.ui:ui-*:1.5.0-alpha04 został zwolniony. Wersja 1.5.0-alpha04 zawiera te commity.

Nowe funkcje

  • Modifier.Node Ulepszenia dotyczące delegowania Dodano ulepszoną możliwość delegowania do innych instancji Modifier.Node z poziomu instancji DelegatingNode. Można to zrobić za pomocą interfejsów API delegateundelegate. Przed tą zmianą każdy interfejs API z węzła delegującego musiał być delegowany wyraźnie do węzła delegowanego. Po tej zmianie interfejsy węzłów będą przypisywane domyślnie, chyba że DelegatingNode będzie je zastępować. (67352bc)

Zmiany w interfejsie API

  • Przedstaw NestedScrollModifierNode, czyli NestedScroll Modifier.Node, które może być delegowane. (I69513)
  • Dodaliśmy parametry onResetonRelease do kompozytowego elementu AndroidViewBinding, odzwierciedlając kompozytowy element AndroidView i umożliwiając obsługę ponownego użycia widoku za pomocą ViewBinding. (I00b1e, b/276802519)
  • Zaktualizowaliśmy interfejs Compose Path API, aby obsługiwał operacje przewijania wstecz, co umożliwia częstsze manipulowanie ścieżką i szybsze jej ponowne używanie. (I7b797)
  • Dodano zoptymalizowany TextStyle.merge(...) z pełną listą parametrów. (Iad234, b/246961787)
  • Ustabilizowano wiele interfejsów Text API, w tym Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush)MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding nie jest już wycofany. Pierwotnie chcieliśmy usunąć to pole, ale opinie wskazują, że deweloperzy potrzebują tej opcji konfiguracji. Dlatego usuwamy ostrzeżenie o zaprzestaniu obsługi z pola (I98e96, b/277703184).

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że klawiatura nie wyświetlała się w przypadku pól tekstowych w oknach dialogowych, które nie zostały utworzone przez komponent Dialog. (I82551, b/262140644)

Wersja 1.5.0-alpha03

19 kwietnia 2023 r.

androidx.compose.ui:ui-*:1.5.0-alpha03 został zwolniony. Wersja 1.5.0-alpha03 zawiera te commity.

Nowe funkcje

  • Nowe domyślne zachowanie SubcomposeLayoutLookaheadScope: SubcomposeLayouts, które nie mają boksów warunkowych (np.TabRow, Scaffold, BoxWithConstraints itp.), teraz działają prawidłowo z animowanymi podglądem.

Zmiany w interfejsie API

  • Nowa domyślna wartość intermediateMeasurePolicy, która ponownie używa polityki pomiaru z przewidywania, umożliwia domyślne korzystanie z podtypów SubcomposeLayout bez slotów warunkowych, takich jak Scaffold, TabRowBoxWithConstraints. (Id84c8)
  • Rekompozytor utworzony dla okna Androida będzie teraz blokować tylko połączenia do withFrameNanos, a nie wszystkie połączenia, gdy otrzyma powiadomienie ON_STOP. Oznacza to, że okna powiązane z zatrzymanymi aktywnościami będą nadal zmieniać kompozycję pod kątem zmian danych, ale animacje lub inne wywołania withFrameNanos będą blokowane. (Id9e7f, b/240975572)
  • Zmiana wersji motionEventSpy na stabilną. (Ic5ec4, b/261560988)
  • Dodano publiczną metodę TextRange.constrain. (I97912)
  • Interfejs PlatformTextStyle.includeFontPadding nie jest już wycofany, aby zachęcić deweloperów do korzystania z interfejsu API zgodności do przełączania i testowania ustawienia includeFontPadding false. (I98e96, b/277703184)

Wersja 1.5.0-alpha02

5 kwietnia 2023 r.

androidx.compose.ui:ui-*:1.5.0-alpha02 został zwolniony. Wersja 1.5.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Nowy interfejs API SubcomposeLayout, który przyjmuje dodatkową zasadę pośrednią dotyczącą pomiaru w celu obsługi logiki pomiaru/układu podczas animacji z wyprzedzeniem. (I017d3)
  • W celu zwiększenia wydajności element PointerInput jest teraz leniwy i korzysta z elementu Modifier.Node (więcej informacji o niewielkiej zmianie zachowania). (15dab9)
  • Zmiana eksperymentalnych interfejsów API na stabilne za pomocą kluczowych zdarzeń. (I9c7d8, b/261566839, b/261567368)
  • Zmiana eksperymentalnych interfejsów API na stabilne w PointerInputChange. (I1b543, b/261560988, b/261565762, b/261565749)
  • Dodaje sposób tworzenia instancji SuspendingPointerInputModifierNode w przypadku bardziej złożonych implementacji Modifier.Node. (Ic4933)
  • UrlAnnotationAnnotatedString można teraz otwierać za pomocą usług ułatwień dostępu, takich jak TalkBack. (If4d82, b/253292081)
  • Dodano interfejs API do przechwytywania klawiszy sprzętowych przed wysłaniem ich do klawiatury ekranowej (I4f4c6, b/186800395).
  • Dodano działanie semantyczne InsertTextAtCursor dla pól tekstowych. (I11ed5)
  • Działania testowe związane z tekstem (np. performTextInput) będą teraz bezpośrednio prosić o skupienie uwagi, korzystając z działania semantycznego, zamiast klikania pola. (I6ed05)

Poprawki błędów

  • Działania testu tekstowego wymagają teraz włączenia pól tekstowych. (Iab328)

Wersja 1.5.0-alpha01

22 marca 2023 r.

androidx.compose.ui:ui-*:1.5.0-alpha01 został zwolniony. Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Modifier.intermediateLayout nie wymaga już jawnego zakresu wyszukiwania wstecznego. Blok pomiaru w intermediateLayout ma IntermediateMeasureScope jako odbiornik, co zapewnia wygodne CoroutineScope, LookaheadScope i MeasureScope.(Ibe2e5)
  • LookaheadLayout został zastąpiony przez LookaheadScope, który nie jest już typem Layout. Dzięki temu treści podrzędne w zakresie wyszukiwania wstecznego mogą być bezpośrednio kontrolowane przez politykę MeasurePolicy nadrzędnego. (Ibe2e5)
  • Dodano Modifier.Node#coroutineScope, aby umożliwić modyfikatorom uruchamianie coroutines. (I76ef9)
  • Umożliw Modifier.Nodes odczytywanie CompositionLocals, implementując interfejs CompositionLocalConsumerModifierNode. (Ib44df)
  • Rozpowszechnianie klasy @Deprecated do właściwości. (I882d1)

Wersja 1.4

Wersja 1.4.3

3 maja 2023 r.

androidx.compose.ui:ui-*:1.4.3 został zwolniony. Wersja 1.4.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że znak AndroidView mógł nie być prawidłowo wyświetlany podczas używania go z niektórymi modyfikatorami. (I4dc77, b/274797771)
  • Naprawiono błąd w 2D Focus Search, który dotyczył menu DropDown (b/276811828).
  • Naprawiliśmy błąd w niestandardowych właściwościach wejścia/wyjścia z fokusa, który powodował, że blok wejścia/wyjścia był wykonywany tylko przy pierwszym wywołaniu funkcji lambda (b/277234245).
  • Naprawiliśmy regresję w systemie fokusowania, która powodowała awarię podczas odczytu focusProperties. (b/271324781, b/274897776)

Wersja 1.4.2

19 kwietnia 2023 r.

androidx.compose.ui:ui-*:1.4.2 został zwolniony. Wersja 1.4.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że AndroidView nieprawidłowo używało modyfikatorów, co mogło prowadzić do nieoczekiwanego działania i zawieszania się programu. (Ib67ee, b/275919849)
  • Usunięto regresję, która powodowała, że klawiatura nie wyświetlała się w przypadku pól tekstowych w dialogach, które nie zostały utworzone przez kompozyt Dialog (I82551, b/262140644)

Wersja 1.4.1

5 kwietnia 2023 r.

androidx.compose.ui:ui-*:1.4.1 został zwolniony. Wersja 1.4.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązano problem, który powodował, że ParentDataModifier nie wpływało na AndroidView (b/274797771).

Wersja 1.4.0

22 marca 2023 r.

androidx.compose.ui:ui-*:1.4.0 został zwolniony. Wersja 1.4.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.3.0

  • Dodano nowy interfejs API PinnableContainer, który umożliwia przypinanie elementów listy z opóźnieniem, aby nie były usuwane, gdy zostaną przewinięte poza ekran. Na przykład Modifier.focusable() używa tego mechanizmu do przypinania elementu, który jest obecnie zaznaczony. (Ib8881, b/259274257, b/195049010)
  • System fokusowania został przepisany przy użyciu nowych eksperymentalnych interfejsów API Modifier.Node. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Dodano właściwość semantyki IsContainer w sekcji Powierzchnie. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie semantycznego znaczenia elementów, takich jak powierzchnie. (I63379)
  • Dodano nową rolę dotyczącą ułatwień dostępu: DropdownList. Można go użyć do odtworzenia zachowania TalkBack podczas skupiania android.widget.Spinner. (I177e5, b/236159001)
  • Teraz możesz użyć PlatformTextStyle(emojiSupportMatch), aby opcjonalnie wyłączyć obsługę emotikonów w przypadku pojedynczego akapitu. (Ia7100, b/139326806)
  • Testy interfejsu użytkownika w Android Compose będą teraz wykonywać przejścia układu dla każdej ramki podczas wykonywania ramek, aby przejść do stanu bezczynności (np. za pomocą waitForIdle). Może to wpłynąć na testy, które sprawdzają poszczególne ramki animacji układu. (I8ea08, b/222093277)
  • Dodano eksperymentalną opcję TextMotion do opcji TextStyle, aby zdefiniować tekst jako Static(default) lub animowany. Użyj TextMotion.Animated, jeśli tekst ma być skalowany, przesuwany lub obracany za pomocą animacji. (I24dd7)

Wersja 1.4.0-rc01

8 marca 2023 r.

androidx.compose.ui:ui-*:1.4.0-rc01 został zwolniony. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano przeciążenie funkcji kompozytowej AndroidView, która akceptuje parametr onReset. Umożliwia ponowne wykorzystanie instancji widoku, gdy ich węzeł w kompozycji zostanie odrzucony i ponowicie użyty w sposób zgodny. Jest to szczególnie przydatne w przypadku LazyRowsLazyColumns wyświetleń. (I3f10d, b/230099236)
  • Wprowadziliśmy nowy interfejs API PlatformTextInputAdapter niskiego poziomu do tworzenia niestandardowych implementacji wprowadzania tekstu, które współpracują bezpośrednio z interfejsami API platformy. (I58df4)

Poprawki błędów

  • Działania semantyczne BasicTextField SetText będą teraz aktualizować bufor tekstowy za pomocą tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (np. performTextReplacement).
  • Funkcje testowania tekstu performTextClearance, performTextReplacementperformTextSelection używają teraz funkcji SemanticsActions. (I0807d, b/269633168, b/269624358)

Wersja 1.4.0-beta02

22 lutego 2023 roku

androidx.compose.ui:ui-*:1.4.0-beta02 został zwolniony. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto interfejs API modifierElementOf(). Zamiast tego rozszerz je bezpośrednio z poziomu ModifierNodeElement. (I2256b)
  • Dodano nowe wywołanie zwrotne Modifier.Node.onReset(), które umożliwia zresetowanie niektórych stanów lokalnych, aby odpowiednio obsłużyć przypadek, gdy element Layout zostanie użyty ponownie (np. jako element LazyColumn). Naprawiono FocusTargetModifierNode, aby prawidłowo zresetować stan fokusu. (I65495, b/265201972)
  • Do metod DrawScope.drawText, Paragraph.paintMultiParagraph.paint dodano parametr BlendMode, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu na płótnie. (I57508)

Poprawki błędów

  • Ulepszony algorytm kolejności fokusowania ułatwień dostępu, np. paski górne/dolne są częściej odczytywane jako pierwsze/ostatnie (74e9c5)

Wersja 1.4.0-beta01

8 lutego 2023 r.

androidx.compose.ui:ui-*:1.4.0-beta01 został zwolniony. Wersja 1.4.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Nazwa PinnableContainer.PinnedHandle.unpin() została zmieniona na release() (I4667a)
  • Do interfejsu ComposeTestRule dodano interfejsy waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExistswaitUntilDoesNotExist jako eksperymentalne interfejsy API. Dzięki temu interfejs waitUntil obsługuje dowolne dopasowywacze i dowolną liczbę węzłów. Więcej informacji znajdziesz w dokumentacji ComposeTestRule. (Ifa1b9, b/226934294)
  • Zmień nazwę Font.MaximumAsyncTimeout na Font.MaximumAsyncTimeoutMillis. (I07af5)
  • Usunięto GoogleFont.Provider.AllFontsListUri i zamiast tego dodano do niego link w dokumentie KT. (I16f29)

Poprawki błędów

  • Dodaj dokumenty dotyczące AndroidFont.fontVariationSettings (I7d9e2)

Wersja 1.4.0-alpha05

25 stycznia 2023 r.

androidx.compose.ui:ui-*:1.4.0-alpha05 został zwolniony. Wersja 1.4.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTest i funkcji create*ComposeRule, które przyjmują parametry CoroutineContext. Kontekst zostanie użyty do testowej kompozycji oraz wszystkich wywołań funkcji LaunchedEffectrememberCoroutineScope() w jej obrębie. (I10614, b/265177763)
  • Dodawanie nowego interfejsu API do śledzenia prędkości jednowymiarowej (If5a82)
  • Urządzenie FocusRequester jest teraz oznaczone jako @Stable. (I580ee)
  • Usuń eksperymentalną adnotację z konstruktora DialogProperties, który przyjmuje parametr usePlatformDefaultWidth. (Ic4048)
  • Dodano funkcję do obliczenia pozycji i stycznych na ścieżce z użyciem funkcji PathMeasure.getPosition()PathMeasure.getTangent() (I3b47c).
  • Usunięto przypadkowo odsłonięty publiczny setter w PlatformParagraphStyle. (I07f47)
  • Więcej typów i możliwości ustawienia wartości funkcji wbudowanych i wycofanych (I24f91)
  • Dodaj AnnotatedString.hasStringAnnotations, aby zapytać o adnotacje z zerową alokacją. (I94dfe, b/246960758)
  • Dodaliśmy nową wersję funkcji TextMeasurer.measure, która przyjmuje jako argument String w postaci tekstu. (I47b2d, b/242705342)
  • Interfejsy API LineBreakHyphens w TextStyle zostały przeniesione do wersji stabilnej. (Ic1e1d)

Darowizna zewnętrzna

  • Metody notifyFocusedRectTextInputSessionTextInputService nie są ponownie wycofywane. (I23a04, b/262648050)

Wersja 1.4.0-alpha04

11 stycznia 2023 r.

androidx.compose.ui:ui-*:1.4.0-alpha04 został zwolniony. Wersja 1.4.0-alpha04 zawiera te commity.

Nowe funkcje

  • Dodano nowy interfejs API PinnableContainer, który umożliwia przypinanie elementów listy z opóźnieniem, aby nie były usuwane, gdy zostaną przewinięte poza ekran. Na przykład Modifier.focusable() używa tego mechanizmu do przypinania elementu, który jest obecnie zaznaczony. (Ib8881, b/259274257, b/195049010)
  • System fokusowania został przepisany przy użyciu nowych eksperymentalnych interfejsów API Modifier.Node. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Dodano właściwość semantyki IsContainer w sekcji Powierzchnie. Ta właściwość zostanie użyta w późniejszej zmianie, która określa kolejność przechodzenia na podstawie semantycznego znaczenia elementów, takich jak powierzchnie. (I63379)
  • Dodano nową rolę dotyczącą ułatwień dostępu: DropdownList. Można go użyć do odwzorowania zachowania TalkBack's podczas ustawiania ostrości android.widget.Spinner. (I177e5, b/236159001)
  • Teraz możesz użyć PlatformTextStyle(emojiSupportMatch), aby opcjonalnie wyłączyć obsługę emotikonów w przypadku pojedynczego akapitu. (Ia7100, b/139326806)
  • Testy interfejsu użytkownika w Android Compose będą teraz wykonywać przejścia układu dla każdej ramki podczas wykonywania ramek, aby przejść do stanu bezczynności (np. za pomocą waitForIdle). Może to wpłynąć na testy, które sprawdzają poszczególne ramki animacji układu. (I8ea08, b/222093277)
  • Dodano eksperymentalną opcję TextMotion do opcji TextStyle, aby zdefiniować tekst jako Static(default) lub animowany. Użyj TextMotion.Animated, jeśli tekst ma być skalowany, przesuwany lub obracany za pomocą animacji. (I24dd7)

Zmiany w interfejsie API

  • Argument maxSize: IntSize w funkcji drawText został zastąpiony argumentem size: Size, aby była ona zgodna z innymi funkcjami DrawScope. Wartość domyślna parametru size to Size.Unspecified, co nie powinno zmieniać poprzedniego domyślnego działania. (Icd27d)
  • Usunięto przestarzały eksperymentalny konstruktor czcionek. (I8a724, b/261435386)
  • Klasa danych narzędzi UI Group zawiera teraz pole isInline, które wskazuje, czy grupa służy do wywołania funkcji inline composable. Jeśli isInline to true, wywołanie jest wywołaniem funkcji inline composable. Wartość może jednak być fałszywa w przypadku wywołań funkcji inline composable, które pochodzą z modułów skompilowanych za pomocą wersji wtyczki kompilatora Compose, która nie generuje informacji o funkcji inline. (Idb846)
  • przekształciliśmy kilka wcześniej eksperymentalnych interfejsów API w stabilne;
  • Interfejs API zdarzenia obrotowego przewijania jest teraz stabilny (I42ad3, b/261561229)
  • FontVariation Interfejs API jest teraz stabilny (I8779f, b/241016309)
  • Wszystkie konstruktory Font() są teraz stabilnymi interfejsami API (I5948b, b/261435386)
  • DeviceFontFamilyName jest teraz stabilna (I8b640, b/261435386)
  • Konstruktor AndroidFont z argumentem variationSettings jest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807)
  • Interfejs API createFontFamilyResolver jest teraz stabilny. Można go użyć do przechwytywania nieobsłużonych wyjątków podczas asynchronicznego wczytywania czcionek. (Ibb481, b/261435386)
  • Interfejs API Font.loadingStrategy jest teraz stabilny. (I5937c, b/261435386)
  • Interfejs API GoogleFont jest teraz stabilny. (Ic90b0, b/261435386)
  • Interfejs TextUnit(float, TextUnitType) jest teraz stabilnym interfejsem API. (I90c84, b/261561612)
  • Interfejs pluralStringResource jest teraz stabilnym interfejsem API. (I09849, b/261439703)

Wersja 1.4.0-alpha03

7 grudnia 2022 r.

androidx.compose.ui:ui-*:1.4.0-alpha03 został zwolniony. Wersja 1.4.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Usuwam ExperimentalComposeUiApi z PointerIcon (I23af8)
  • Przedstaw działania dotyczące ułatwień dostępu na stronie: PageUp, PageDown, PageLeft, PageRight. Pamiętaj, że są one dostępne tylko w wersji interfejsu API 29. (Ida4ab)
  • Zmieniono widok parametru rememberNestedScrollConnection z widoku wyższego poziomu na widok hosta. (Ia5200)
  • Dodano interfejs API Modifier, aby zapytać o informacje dotyczące przewijania przodków (I2ba9d, b/203141462).
  • Służy w Clickable do prawidłowego opóźnienia interakcji z przyciskiem, gdy gesty mogą stać się zdarzeniami przewijania.
  • Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów Clickables, gdy są używane w ramach efektu Scrollable ViewGroup.
  • Zaktualizowano Drawers i Sheets, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
  • Zmieniliśmy nazwę CompositingStrategy.Always na Offscreen, aby wskazać, że graphicsLayer będzie zawsze renderowany do pośredniego bufora (I47dc1).
  • Przeciążenie układu z wieloma slotami na treści jest teraz stabilne (I10566, b/248294649)
  • Dodaliśmy eksperymentalne nowe interfejsy API PerfettoTrace.record {}PerfettoTraceRule, które umożliwiają rejestrowanie śladów Perfetto (zwanych też śladami systemowymi) w ramach testu, aby sprawdzić zachowanie i wydajność testu. (I3ba16)
  • W testach UI korzystających z reguły Compose wznowienia kontynuacji podczas wywołań withFrameNanos nie będą wysyłane, dopóki nie zakończą się wszystkie wywołania withFrameNanos. Jest to zgodne z działaniem funkcji komponowania podczas normalnego działania. Testy, które korzystają ze starego zachowania, mogą jednak nie działać. Ta zmiana powinna dotyczyć tylko kodu, który bezpośrednio wywołuje funkcje withFrameNanos lub withFrameMillis, i zawiera logikę spoza wywołania zwrotnego przekazaną do tych funkcji, którą może być konieczne przeniesienie do wywołań zwrotnych. Przykłady zmian w teście animacji znajdziesz w tym CL.
  • Do konstruktora i funkcji fabrycznej TestMonotonicFrameClock dodano opcjonalny parametr onPerformTraversals: (Long) -> Unit, który umożliwia uruchamianie kodu po wywołaniach zwrotnych withFrameNanos, ale przed wznowieniem korzystania z funkcji coroutine wywołujących. (Idb413, b/254115946, b/222093277, b/255802670)
  • Dodano EmojiCompat do Compose (Ibf6f9, b/139326806)
  • Dodano nowy parametr tapety do @Preview w celu obsługi dynamicznych kolorów (I9f512)

Poprawki błędów

  • Powiadomienia o zastosowaniu migawki są teraz wysyłane po zakończeniu stosowania zmian przez Recomposer. (Iad6c0, b/222093277)
  • Wprowadziliśmy zmiany w captureToImage, aby umożliwić przechwytywanie zrzutów ekranu z wielu okien. Jest to przydatne w przypadku testów zrzutów ekranu, które korzystają z komponentu wyskakującego. (I169c5)

Aktualizacje zależności

  • Interfejs Compose UI i Compose Material są teraz zależne od Lifecycle 2.5.1. (I05ab0, b/258038814)

Wersja 1.4.0-alpha02

9 listopada 2022 r.

androidx.compose.ui:ui-*:1.4.0-alpha02 został zwolniony. Wersja 1.4.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Zaktualizowano GraphicsLayerScope, aby wyświetlać bieżący rozmiar graphicsLayer. Jest to przydatne do obliczania transformacji graphicsLayer jako funkcji rozmiaru kompozytowego. (If8c43,b/181387080)
  • Wprowadziliśmy CompositingStrategy, aby określić, kiedy należy wykorzystać warstwę kompozytowania poza ekranem do renderowania treści graphicsLayer. Automatycznie zachowuje domyślne zachowanie, które wewnętrznie wykorzystuje warstwę, jeśli zastosowano kanał alfa, lub RenderEffect/Overscroll. W trybie zawsze włączonym zawsze będzie używany bufor poza ekranem, podczas gdy ModulateAlpha nie będzie używać tego bufora, lecz zamiast tego będzie modulować każdą z nagranych instrukcji rysowania w ramach graphicsLayer. W przypadku korzystania z funkcji ModulateAlpha nadal będzie używany bufor poza ekranem w przypadku korzystania z funkcji RenderEffect/Overscroll (I25e82, b/256382834)
  • Do elementu Modifier.Node dodano element invalidateSubtree(), aby umożliwić unieważnienie całych hierarchii na potrzeby układu i rysowania. (I4bd90)
  • Zmień wersję rememberNestedScrollInteropConnection na stabilną. Wprowadziliśmy możliwość przekazywania widoku wyższego poziomu do funkcji rememberNestedScrollInteropConnection. Dzięki temu widok niestandardowy może lepiej reagować na ograniczenia przewijania, zwłaszcza w przypadku widoków niestandardowych (np. ModalBottomSheetDialog). (I9e107)
  • Dodano interfejs ObserverNode, którego mogą używać implementacje Modifier.Node, które muszą być powiadamiane o zmianie wcześniej odczytanej wartości (I5728b, b/247716483).
  • Do klasy Paint dodaliśmy nowy konstruktor, który przyjmuje natywny obiekt android.graphics.Paint. Dodano też funkcję rozszerzenia toComposePaint(), która konwertuje istniejący natywny obiekt Paint na Compose Paint. (Ica91b)
  • Dodaj nowe FontFamily.Resolver.resolveAsTypeface do użycia na urządzeniu z Androidem. (I8950b)
  • Dodaj ToolingState, aby umożliwić narzędziom zmianę wewnętrznych stanów Composable (Ie6614).
  • Ulepszenie narzędzi do refaktoryzacji w celu lepszego obsługiwania nowo dodanych animacji (I8677b)
  • Dodano parametr minLines do komponentów material i material3 Text, TextFieldOutlinedTextField, który umożliwia ustawienie minimalnej wysokości komponentu w ujęciu liczby wierszy (I4af1d).

Wersja 1.4.0-alpha01

24 października 2022 r.

androidx.compose.ui:ui-*:1.4.0-alpha01 został zwolniony. Wersja 1.4.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Dodano nową metodę awaitEachGesture() do wykrywania gestów. Działa ona podobnie do forEachGesture(), ale pętla gestów działa całkowicie w ramach AwaitPointerEventScope, dzięki czemu nie dochodzi do utraty zdarzeń między iteracjami.
  • Element forEachGesture() został wycofany na rzecz elementu awaitEachGesture(), ponieważ pozwala on na utratę zdarzeń między gestami. (Iffc3f, b/251260206)
  • wycofanie obsługi recyklingu obiektów dostępności w androidx. Okazało się, że zmiany wydajności są znikome nawet w najstarszych obsługiwanych wersjach. (I0a961)
  • Dodano atrybut DrawStyle jako atrybut eksperymentalny do atrybutów TextStyle i SpanStyle, aby umożliwić rysowanie tekstu z obrysem. (If24b8, b/155421273)
  • AnnotatedString.Builder implementuje teraz kotlin.text.Appendable. (I1a061, b/231030444)
  • AnnotatedString.Builder ma teraz metodę append(AnnotatedString, start: Int, end: Int), która umożliwia dołączanie podciągu znaków z AnnotatedString i styli nachodzących na siebie.
  • Do funkcji malowania ParagraphMultiParagraph dodano parametr DrawStyle, który umożliwia rysowanie tekstu z obrysami. (Ic8102, b/155421273)

Darowizna zewnętrzna

  • Dziękujemy za vighnesh za dodanie urządzeń TV do podglądu (Ie15cd).

Wersja 1.3

Wersja 1.3.3

11 stycznia 2023 r.

androidx.compose.ui:ui-*:1.3.3 został zwolniony. Wersja 1.3.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem z zawieszaniem się aplikacji, który czasami występuje w Androidzie 9, gdy Activity zapisuje stan widoku tworzenia. (I0b755, b/260322832)

Wersja 1.3.2

7 grudnia 2022 r.

androidx.compose.ui:ui-*:1.3.2 został zwolniony. Wersja 1.3.2 zawiera te commity.

Poprawki błędów

  • Zaktualizowano bibliotekę Profobuf do wersji 3.21.8, aby uniknąć alertu dotyczącego bezpieczeństwa w protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

Wersja 1.3.1

9 listopada 2022 r.

androidx.compose.ui:ui-*:1.3.1 został zwolniony. Wersja 1.3.1 zawiera te zatwierdzenia.

Wersja 1.3.0

24 października 2022 r.

androidx.compose.ui:ui-*:1.3.0 został zwolniony. Wersja 1.3.0 zawiera te commity.

Ważne zmiany od wersji 1.2.0

  • Nowy eksperymentalny pakiet interfejsów API LookaheadLayout (umożliwiający wcześniej niemożliwe zachowania animacji)
  • Nowy eksperymentalny zestaw interfejsów API Modifier.Node (szybsza alternatywa dla interfejsu Modifier.composed)
  • Ulepszona obsługa wstawionych okien.
  • Obsługa klawiszy D-Pad i klawiatury sprzętowej w LazyLists.
  • Maksymalna obsługiwana wysokość w oknach dialogowych i wyskakujących została zmniejszona do 8 pikseli (zmianę zachowania w przypadku niektórych niestandardowych systemów projektowania znajdziesz w opisie wersji beta01).
  • wiele drobnych ulepszeń interfejsu API, które nie powodują przerw w działaniu.
  • wiele poprawek błędów i usprawnień działania aplikacji.

Wersja 1.3.0-rc01

5 października 2022 r.

androidx.compose.ui:ui-*:1.3.0-rc01 został zwolniony. Wersja 1.3.0-rc01 zawiera te commity.

Zmiany w interfejsie API

  • Dodano nowe eksperymentalne interfejsy API Hyphens, aby umożliwić automatyczne dzielenie wyrazów w tekście (Iaa869).

Poprawki błędów

  • Fonts DeviceFontFamilyName nie skonfiguruje domyślnie ustawień wghtital, lecz użyje ustawień platformy dla załadowanego Typeface. (Ia7a6d, b/246989332)
  • Naprawiono wyciek pamięci LazyColumn – funkcja onModifierLocalsUpdated nie była wywoływana z wartością domyślną, gdy modyfikatory były używane ponownie (b/230168389).

Wersja 1.3.0-beta03

21 września 2022 r.

androidx.compose.ui:ui-*:1.3.0-beta03 został zwolniony. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj opcje umożliwiające dostosowanie dzielenia wiersza w tekście. (I86907)
  • Zmień argument size:IntSize na constraints: Constraints w metodzie TextMeasurer.measure, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)

Poprawki błędów

  • Interfejs API BackHandler w komponentach Activity w AndroidX działa teraz w komponentach Dialog. (I35342)

Wersja 1.3.0-beta02

7 września 2022 roku

androidx.compose.ui:ui-*:1.3.0-beta02 został zwolniony. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano eksperymentalną funkcję przeciążenia dla układu, która akceptuje listę wielu kompozytowych lambda treści, co pozwala na traktowanie zbiorów danych w różny sposób w różnych lambdach treści (Ic1b4e).

Zmiany w eksperymentalnych interfejsach Focus API:

  • Funkcje FocusDirection.InFocusDirection.Out zostały wycofane i zastąpione przez FocusDirection.EnterFocusDirection.Exit. (Ia4262, b/183746982)
  • Dodaliśmy 2 nowe właściwości fokusa: „focus-enter” i „focus-leave”, aby określić zachowanie niestandardowe dla właściwości FocusManager.moveFocus(Enter)FocusManager.moveFocus(Exit). (I5f3f9, b/183746982)
  • Możesz teraz użyć FocusRequester.Cancel, aby anulować zmianę ustawień. FocusRequester.Cancel można używać w przypadku tych właściwości fokusa: w górę, w dół, w lewo, w prawo, następny, poprzedni, początek, koniec, enter i wyjście. (Ib300f)

Wersja 1.3.0-beta01

24 sierpnia 2022 r.

androidx.compose.ui:ui-*:1.3.0-beta01 został zwolniony. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Refaktoryzacja węzła modyfikatora

Warstwę, która obsługuje wystąpienia Modifier/Modifier.Element i koordynuje ich działanie w LayoutNodes, poddano gruntownej refaktoryzacji. W obecnej postaci była to refaktoryzacja, która nie wpłynęła na publiczny interfejs API żadnego z modyfikatorów w Compose. Można ją więc uznać za zmianę dotyczącą tylko implementacji. Mimo to jest to ważna zmiana z różnych powodów. (Ie4313)

Podsumowanie zmian

Dodane eksperymentalne interfejsy API Modifier.Node zapewniają abstrakcję, która umożliwia utrzymanie stanu w instancji. Stan ten będzie zachowany w cyklu życia węzła układu i będzie przypisany do węzła układu oraz do użycia odpowiedniego Modifier.Element, który go wygenerował.

Ogólnie rzecz biorąc, ta abstrakcja zapewnia alternatywny mechanizm do tworzenia modyfikatorów stanu bez polegania na mechanizmie interfejsu API Modifier.composed.

Ryzyko

Ta zmiana jest zgodna z poprzednimi wersjami w zakresie binarnym i ma być zgodna wstecznie w zakresie obserwowalnego zachowania w takim zakresie, w jakim jest to możliwe i uzasadnione. Niemniej jednak jest kilka podsystemów w komponencie, których ta refaktoryzacja nie objęła, i jest prawdopodobne, że zachowanie zmieniło się w sposób, który nie został objęty naszymi testami i nie został jeszcze znaleziony ani naprawiony.

Zachowaj ostrożność podczas aktualizacji do tej wersji. Jeśli uważasz, że coś się zepsuło, daj nam znać.

Eksperymentalne interfejsy API

Dodano różne eksperymentalne interfejsy API, które odnoszą się do nowej koncepcji węzła modyfikującego. Modifier.Node są tworzone 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

Zachowanie się nieprawidłowo

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

Maksymalna obsługiwana wysokość dla okienek dialogowych i wyskakujących w komponencie Redagowanie została zmniejszona z 30 dp na 8 dp. Ta zmiana dotyczy zarówno dialogów i wyskakujących okienek w Material Design, jak i w UI. Ta zmiana została wprowadzona, aby rozwiązać problem z ułatwieniami dostępu w wersjach Androida starszych niż S oraz zapewnić, że usługi ułatwień dostępu w tych oknach będą mogły wchodzić w interakcję z treścią w oknie dialogowym lub wyskakującym.

Ta zmiana będzie miała wpływ tylko wtedy, gdy tworzysz niestandardowe okno dialogowe lub wyskakujące z wysokością większą niż 8 dp. Rozważ obniżenie położenia okna dialogowego lub wyskakującego. Jeśli chcesz zrezygnować z tego nowego zachowania, rozważ utworzenie własnego okna dialogowego lub wyskakującego z odpowiednim ustawieniem poziomu. Nie jest to zalecane, ponieważ może to negatywnie wpłynąć na ułatwienia dostępu. Deweloper musi zadbać o to, aby dolna część okna dialogowego lub wyskakującego okna była interaktywna i czytelna dla usług ułatwień dostępu.

Zmiany w interfejsie API

  • Rozwiązaliśmy problem, który powodował, że painterResource nie aktualizował się po zmianach w konfiguracji (I58e73, b/228862715).
  • Funkcja rememberTextMeasurer nie przyjmuje już parametrów FontFamily.Resolver, Density ani LayoutDirection. Aby podać niestandardowe wartości tych parametrów, użyj konstruktora TextMeasurer. (Ia1da3)
  • Dodaliśmy właściwość DialogProperties.decorFitsSystemWindows, aby umożliwić Dialogs obsługę WindowInsets. (I57742, b/229378542)
  • Konstruktory czcionek zostały przeniesione z powrotem do oryginalnego pliku Kotlin, aby zachować zgodność binarną. Bez zmian w porównaniu z ostatnią wersją stabilną. (Ieb2f3)
  • Usunięto niepotrzebny operator z kilku definicji operatora równa się – nie miało to żadnego wpływu. (I6c309)
  • FontVariation.Setting to zamknięty interfejs, który umożliwia przyszłe interfejsy API do blokowania. (I11021, b/143703328)
  • Dodano CompositionGroup.findParameters do SlotTree.kt. Dzięki temu narzędzia mogą pobierać parametry CompositionGroup bez konieczności analizowania całej tabeli slotów. (I124fe)

Wersja 1.3.0-alpha03

10 sierpnia 2022 r.

androidx.compose.ui:ui-*:1.3.0-alpha03 został zwolniony. Wersja 1.3.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • LayoutCoordinates.findRootCoordinates() jest teraz publiczny (I7fa37, b/204723384).
  • Dodano eksperymentalny interfejs API do uzyskiwania wartości LayoutCoordinates w elementach PlacementScope. Dzięki temu deweloperzy wiedzą, gdzie w ramach bieżącego układu umieścić elementy podrzędne względem jego pozycji. (I5482b, b/238632578)
  • Dodano LayoutCoordinates.transformFrom, aby uzyskać przekształcenie macierzowe z jednego LayoutCoordinates do drugiego. (Ic5ab1, b/238632578)
  • Wycofano SemanticsModifier.id i zamiast niego użyto identyfikatora semantycznego LayoutInfo.semanticsId. (Iac808, b/203559524)
  • Czcionki zasobów obsługują teraz ustawienia wariantów czcionek (API 26 i nowsze) (I900dd, b/143703328).
  • Obsługa czcionek zmiennych w DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Konstruktory czcionek obsługują teraz listę 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 (funkcja eksperymentalna) (I4bbbe, b/235876330)
  • Akapit jest teraz oczekiwany|rzeczywisty i zdefiniowany na urządzeniach z Androidem i na komputerach. (Id387e, b/239962983)
  • Interfejs Paragraph jest teraz zamknięty. Nie ma żadnego przypadku użycia akapitu dotyczącego podklasy, dlatego jeśli ta zmiana ma wpływ na Twoją sytuację, skontaktuj się z nami. (If5247, b/239962983)
  • Usunięto eksperymentalną adnotację z funkcji PlatformTextStyleLineHeightStyle. (I64bef)
  • Wycofaj TextInputService.show|hideSoftwareKeyboard. Zamiast niej użyj wartości SoftwareKeyboardController w kodzie aplikacji i wartości TextInputSession w kodzie zarządzania IME. (I14e4c, b/183448615)
  • Dodawanie nowego interfejsu API dla istniejących typów animacji (I26179)

Poprawki błędów

  • Dodaliśmy uprawnienie @RequiresPermission do interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w pakiecie SDK 33 lub nowszym. (Ie542e, b/238790278)

Wersja 1.3.0-alpha02

27 lipca 2022 roku

androidx.compose.ui:ui-*:1.3.0-alpha02 został zwolniony. Wersja 1.3.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Dodaliśmy nową właściwość PointerInputChange#pressure, aby pobierać ciśnienie. (I45a5e, b/205164819)
  • Dodano rememberTextMeasurer, aby ułatwić tworzenie i zapamiętywanie instancji TextMeasurer w kompozycji. (I8d66e)
  • Funkcje Rect, RoundRectMutableRect obsługują teraz składnię Kotlina in do wywoływania funkcji contains. (Ie42b0, b/238642990)
  • Usuń z KeyInjectionScope niepotrzebne funkcje, ponieważ można je łatwo zaimplementować za pomocą prostszych części interfejsu API. Funkcja pressKeys, keysDownkeysUp zostały usunięte. (I81d77)
  • Zmieniono nazwy stałych i parametrów w KeyInjectionScope, aby zawierały przyrostek „ms”, ponieważ jednostki tych stałych i parametrów to milisekundy. (Iabef5)
  • Dodaliśmy metodę toStringForLog() do metody EditCommand, aby ułatwić rozwiązywanie problemów z edytowaniem tekstu. (I53354, b/228862731)
  • Dodano funkcję rozszerzenia drawText w komponencie DrawScope, aby umożliwić rysowanie tekstu w wielu stylach na komponentach i modyfikatorach, które działają na DrawScope, takich jak CanvasdrawBehind. (I16a62, b/190787898)
  • Wprowadzamy nowy eksperymentalny interfejs API o nazwie TextMeasurer, który umożliwia dowolne obliczenie układu tekstu, które daje identyczne wyniki jak BasicText, niezależnie od środowiska wykonawczego Compose. (I17101)
  • Dodano mapTree do SlotTree.kt. Umożliwia to narzędziom sprawdzanie SlotTree bez tworzenia kopii w pamięci, jak to robi asTree. W przypadku narzędzia do inspekcji układu oznacza to 10-krotne zwiększenie wydajności. (I5e113)
  • Zmieniliśmy sposób przechowywania podglądu w plikach wyjściowych binarnych, aby umożliwić deweloperom zapisywanie i wielokrotne używanie adnotacji MultiPreview z bibliotek. (I85699, b/233511976)

Poprawki błędów

  • Podczas dodawania zdarzeń InputEventChange do Velocity Trackera będziemy teraz brać pod uwagę różnice zamiast pozycji. Dzięki temu prędkość będzie obliczana prawidłowo we wszystkich przypadkach, nawet jeśli element docelowy się przemieści (Icea9d, b/216582726, b/223440806, b/227709803).
  • Napraw błędy NPE spowodowane przez AnnotatedString.toUpperCase, gdy występują adnotacje. (I0aca2, b/210899140)

Wersja 1.3.0-alpha01

29 czerwca 2022 r.

androidx.compose.ui:ui-*:1.3.0-alpha01 został zwolniony. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Nowa funkcja LookaheadLayout, która obsługuje przetwarzanie w przyszłości przed rzeczywistym pomiarem lub układem. Umożliwia to wstępny przeliczenie układu, gdy ulegnie on zmianie, a także pozwala na zastosowanie w post-lookahead measure/layout wstępnie obliczonych rozmiarów/pozycji, aby animować rozmiary i pozycje w kierunku celu. SubcomposeLayouts nie są jeszcze obsługiwane, ale będzie można z nich korzystać w jednej z przyszłych wersji. (I477f5)
  • Dodaj opcjonalny parametr alfa do opcji pędzla TextStyle i SpanStyle, aby zmienić przezroczystość całego Text. (Ic2fac, b/234117635)
  • Wprowadziliśmy typ adnotacji UrlAnnotation i powiązane metody, aby umożliwić obsługę linków TalkBack w dokumentach AnnotatedString. (I1c754, b/231495122)
  • Przenoszenie funkcji narzędzia do czasu wykonywania (I4f729)

Poprawki błędów

Darowizna zewnętrzna

  • Dodano nowy interfejs API WindowInfo.keyboardModifiers, aby obserwować stan w ramach funkcji składanych lub za pomocą snapshotFlow (Icdb8a).

Wersja 1.2

Wersja 1.2.1

10 sierpnia 2022 r.

androidx.compose.ui:ui-*:1.2.1 został zwolniony. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd nullpointer w inspektorze (b/237987764).
  • Naprawiono wyjątek podczas odwoływania się do klasy podczas zapamiętania w inspektorze (b/235526153)

Wersja 1.2.0

27 lipca 2022 roku

androidx.compose.ui:ui-*:1.2.0 został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Ulepszenia dotyczące przełączania ostrości:

    • Przewijanie list leniwych za pomocą fokusa działa teraz przy użyciu nowego interfejsu BeyondBoundsLayout core API
    • Nowe interfejsy API do dostosowywania zachowań w FocusOrderFocusProperties
    • Ulepszone działanie klawiatury fizycznej lub pilota do telewizora
  • Nowe interfejsy API do:

    • Wstawki w oknie
    • Podstawowe prymitywy do animacji gestów, nieskończonych i układów
    • GraphicsLayer, w tym RenderEffect
  • wiele poprawek błędów i usprawnień działania aplikacji.

Wersja 1.2.0-rc03

29 czerwca 2022 r.

androidx.compose.ui:ui-*:1.2.0-rc03 został zwolniony. 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.

androidx.compose.ui:ui-*:1.2.0-rc02 został zwolniony. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.

Wersja 1.2.0-rc01

15 czerwca 2022 r.

androidx.compose.ui:ui-*:1.2.0-rc01 został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Interfejsy w bibliotekach kompozytowych są teraz tworzone za pomocą domyślnych metod interfejsu JDK 8 (I5bcf1).
  • Do funkcji KeyInjectionScope dodano funkcje wyższego rzędu, aby umożliwić wstawianie naciśnięć klawiszy podczas przytrzymywania lub przełączania innych klawiszy. Do tych funkcji należą withKeysDown, withKeysToggled itp. Dodano też właściwości do sprawdzania, czy dany klucz meta jest wciśnięty, np. isCtrlDown, aby sprawdzić, czy któryś z przycisków kontrolnych jest wciśnięty. Dokumentację dotyczącą poszczególnych funkcji znajdziesz na stronie KeyInjectionScope. (I9f6cd, b/229831515)
  • Wprowadziliśmy eksperymentalny parametr OverscrollEffect, który umożliwia stosowanie niestandardowych efektów przewijania, a także przeciążenia Modifier.scrollable, które go obsługują.
  • Eksperymentalny pakiet LocalOverScrollConfiguration został przeniesiony z poziomu foundation.gesture do pakietu podstawowego i przemianowany na LocalOverscrollConfiguration (If19fb, b/204650733)
  • Zmień nazwę runComposeUiTestWithoutActivity {} na runEmptyComposeUiTest {}, aby dopasować ją do createEmptyComposeRule() (I6fed7)

Wersja 1.2.0-beta03

1 czerwca 2022 r.

androidx.compose.ui:ui-*:1.2.0-beta03 został zwolniony. Wersja 1.2.0-beta03 zawiera te commity.

Zmiany w interfejsie API

  • Dodano użytkowników pressKeyTimes, isCapsLockOn i KeyInjectionScope do grupy KeyInjectionScope. Interfejs API obsługuje teraz wzorce wstrzykiwania łączące mysz i klawiaturę, np. wciskanie przycisku myszy przy wciśniętym klawiszu meta. (I4c8da, b/229831515)
  • Dodano eksperymentalną obsługę wstrzykiwania kluczowych zdarzeń. Użyj performKeyInput, aby wysyłać kluczowe zdarzenia, lub wyślij je za pomocą właściwości key obiektu MultiModalInjectionScope podczas wielomodalnego gestu wejściowego z performMultiModalInput. Dokumentację interfejsu API znajdziesz na stronie KeyInjectionScope. (Ic5000, b/229831515)
  • Dodaj nowy parametr GoogleFont.Provider.AllFontsListUri, aby pobrać kanoniczne źródło internetowe czcionek Google Fonts obsługiwanych przez Androida.
  • Poprawiono komunikaty o błędach, które są ponownie zgłaszane, gdy nie można wczytać czcionek Google w edytorze. (I0416c)

Poprawki błędów

  • Podczas dodawania zdarzeń InputEventChange do Śledzenia prędkości będziemy teraz brać pod uwagę różnice zamiast pozycji. Dzięki temu prędkość będzie obliczana prawidłowo we wszystkich przypadkach, nawet jeśli element docelowy się przesunie (I51ec3, b/216582726, b/223440806, b/227709803).
  • Ustawienie Show Layout Bounds będzie teraz stosowane do komponentów natychmiast po jego włączeniu na karcie szybkich ustawień, bez konieczności opuszczania aktywności i ponowniego otwierania jej. (I843d5, b/225937688)
  • Wyszukiwanie ciągu znaków ułatwień dostępu nie powoduje wczytywania czcionek. Wcześniej próbował wczytać czcionki dla StyleSpans, co powodowało awarie, jeśli FontFamily.Resolver został zastąpiony. (I4609d)
  • Naciśnięcie klawisza Delete, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
  • Funkcje DeleteSurroundingTextCommandDeleteSurroundingTextInCodePointsCommand wymagają teraz, aby ich argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)

Wersja 1.2.0-beta02

18 maja 2022 r.

androidx.compose.ui:ui-*:1.2.0-beta02 został zwolniony. Wersja 1.2.0-beta02 zawiera te commity.

Zmiany w interfejsie API

  • Używanie funkcji w innych typach podglądu (I19f39)

Poprawki błędów

  • Nazwa ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer została zmieniona na DisposeOnDetachedFromWindowOrReleasedFromPool, aby lepiej odzwierciedlała to, kiedy dochodzi do pozbycia się aktywów, a nie kiedy do niego nie dochodzi. (If15ca)

Wersja 1.2.0-beta01

11 maja 2022 roku

androidx.compose.ui:ui-*:1.2.0-beta01 został zwolniony. Wersja 1.2.0-beta01 zawiera te commity.

Nowe funkcje

  • To pierwsza wersja beta 1.2.

Zmiany w interfejsie API

  • Dodano eksperymentalną funkcję BeyondBoundsInterval, której mogą używać niestandardowe implementacje LazyList podczas rozmieszczania elementów poza widocznymi granicami (Ifabfb, b/184670295).
  • Wersje klucza interfejsu Modifier.composed są teraz stabilne (Ie65e4, b/229988420)
  • Uproszczony interfejs API rememberNestedScrollConnection, który używa lokalnych wartości kompozycji do pozyskiwania informacji o bieżącym widoku (I67ca7)
  • Adnotacja @ComposableTarget i adnotacje oznaczone symbolem @ComposableTargetMarker mogą być teraz używane w zakresie pliku za pomocą prefiksu @file. Jeśli użyjesz adnotacji docelowej w zakresie pliku, kompilator założy, że wszystkie funkcje składane w pliku są przeznaczone do użycia przez powiązany aplikator. Na przykład użycie @file:UiComposable oznacza, że wszystkie funkcje @Composable są kierowane do narzędzia do tworzenia interfejsu użytkownika. Funkcja, która musi być kierowana na innego aplikatora, musi wyraźnie podać adnotację znacznika docelowego dla odpowiedniego aplikatora. (I40804)
  • Wprowadziliśmy nowy eksperymentalny interfejs API do testów niezależnych od platformy: interface ComposeUiTestfun runComposeUiTest(block: ComposeUiTest.() -> Unit), które można używać do przeprowadzania testów interfejsu Compose bez konieczności tworzenia TestRule. Aby przeprowadzić test bez ComposeTestRule, prześlij go jako funkcję lambda do runComposeUiTest i użyj metod oraz elementów w zakresie odbiornika ComposeUiTest, które są takie same jak w ComposeContentTestRule.

    Specyficzne dla Androida parametry interface AndroidComposeUiTestfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) zostały dodane, aby zapewnić dostęp do podstawowej aktywności, podobnie jak parametr AndroidComposeTestRule. Aby uzyskać jeszcze większą kontrolę, możesz samodzielnie utworzyć instancję klasy class AndroidComposeUiTestEnvironment.

    Implementacja na komputery to class DesktopComposeUiTest, ale obecnie nie oferujemy żadnych funkcji dotyczących uruchamiania na komputerach.

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

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

    Aby:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • Obecnie ComposeContentTestRuleComposeTestRule nie rozszerzają ComposeUiTest, co oznacza, że funkcji rozszerzeń w ComposeUiTest nie można jeszcze wywołać w interfejsie TestRule. Gdy ComposeUiTest stanie się stabilnym interfejsem API, interfejsy ComposeContentTestRuleComposeTestRule zostaną rozszerzone o interfejs ComposeUiTest. (Ib4e90)

  • Nazwa LineHeightBehavior została zmieniona na LineHeightStyle

  • Nazwa LineVerticalAlignment została zmieniona na LineHeightStyle.Alignment

  • Zmiana nazwy LineHeightTrim na LineHeightStyle.Trim

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

  • Dodano Brush do TextStyle i SpanStyle, aby umożliwić rysowanie tekstu z kolorem gradientowym. (I53869, b/187839528)

  • Atrybuty trimFirstLineTop i trimLastLineBottom obiektu LineHeightBehavior zostały zastąpione jednym typem enumeracji: LineHeightTrim. LineHeightTrim mają 4 stany zdefiniowane przez 2 wartości logiczne: FirstLineTop, LastLineBottom, Both i None (Ifc6a5, b/181155707)

  • Dodano LineHeightBehavior do list TextStyle i ParagraphStyle. LineHeightBehavior określa, czy wysokość wiersza jest stosowana w górnej części pierwszego wiersza i w dolnej części ostatniego wiersza. Określa ona też wyrównanie linii w miejscu przeznaczonym przez TextStyle(lineHeight).

    Możesz np. uzyskać działanie podobne do tego, które usługa porównywania cen definiuje za pomocą parametru LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

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

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

Poprawki błędów

  • Dokumentacja PointerInputChange::copy zawiera teraz prawidłową informację, że jest to płytka kopia. (I182f5)
  • Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
  • Domyślnie włączone includeFontPadding. Funkcję includeFontPadding można wyłączyć za pomocą atrybutu TextStyle.platformTextStyle. W najbliższej przyszłości zmienimy domyślne zachowanie, ale do tego czasu ta zmiana pozwoli nam lepiej zintegrować ulepszenia wysokości linii (aosp/2058653) i rozwiązać problemy z TextField. (I01423, b/171394808)

Darowizna zewnętrzna

  • Wartość MouseInjectionScope.scroll(delta = someDelta) jest teraz odwrócona na Androidzie, jeśli przewijamy w kierunku pionowym (jeśli someDelta jest dodatnia, przewijanie odbywa się w dół) (Ifb697, b/224992993)

Wersja 1.2.0-alpha08

20 kwietnia 2022 r.

androidx.compose.ui:ui-*:1.2.0-alpha08 został zwolniony. Wersja 1.2.0-alpha08 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Funkcje pluralStringResource zostały oznaczone jako eksperymentalne, aby umożliwić ewolucji lepsze wsparcie dla internacjonalizacji w przyszłości. (If24e4)
  • Elementy Paragraph i MultiParagraph obsługują teraz parametr Constraints. Przekazywanie wartości Constraints.maxHeight nie ma obecnie zastosowania, ale pozwoli na wykonanie pewnych obliczeń w przyszłości, np. elipsy na podstawie wysokości. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() obsługuje teraz niestandardową klasę podobną do MutableSet, która nie zezwala na dodawanie do niej nowych elementów. (Icd314)
  • Ikona wskaźnika jest teraz interfejsem @Stable (I9dafe)
  • Częściowe wyświetlanie (obniżanie lub pozycja) zostało wycofane w wersji PointerInputChange. Możesz użyć consume(), aby w pełni zastosować zmianę. Możesz użyć isConsumed, aby sprawdzić, czy ktoś inny wcześniej nie wprowadził tej zmiany.
  • PointerInputChange::copy() zawsze tworzy teraz kopię powierzchowną. Oznacza to, że kopie PointerInputChange zostaną wykorzystane, gdy wykorzystana zostanie jedna z nich. Jeśli chcesz utworzyć niewiążącą instancję PointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)
  • Włącz interoperacyjność przewijania zagnieżdżonego między oknami tworzenia i wyświetlania w kierunku od tworzenia do wyświetlania. Oznacza to, że element nadrzędny będzie mógł otrzymywać zagnieżdżone różnice przewijania z zagnieżdżonego widoku przewijania. (If7949, b/174348612)
  • Nowy SemanticsProperty testTagsAsResourceId, który można wykorzystać do dostosowania Compose do testów UIAutomator zaprojektowanych pod kątem systemu View. (I39c20)
  • wyświetlać wszystkie dostępne grubości czcionek systemowych na Androidzie, gdy używasz FontFamily.SansSerif. W interfejsie API 21–28 wewnętrznie będą używane nazwy czcionek zastępczych, np. sans-serif-medium. Jest to zmiana zachowania, ponieważ wcześniej w interfejsach API 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992)
  • W instruktorze dotyczącym akapitu i instruktorze dotyczącym wielu akapitów argumenty pozycyjne zostały umieszczone przed argumentami opcjonalnymi. (Idafaa)
  • AndroidFont przyjmuje teraz typefaceLoader jako parametr konstruktora. (I2c971)

Wersja 1.2.0-alpha07

6 kwietnia 2022 roku

androidx.compose.ui:ui-*:1.2.0-alpha07 został zwolniony. Wersja 1.2.0-alpha07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano nową funkcję Snapshot.withoutReadObservation { ... }. Umożliwia użytkownikom uruchamianie przekazanej funkcji lambda bez subskrybowania zmian wartości stanu odczytanych w ramach tego bloku. Może się to przydać w przypadku, gdy chcesz korzystać z bezpiecznego zapisu/odczytu wątku na podstawie zrzutu, ale jednocześnie chcesz mieć możliwość odczytania wartości bez powodowania niepotrzebnej rekompozycji lub ponownego pomiaru. (I9f365, b/214054486)
  • Właściwość rozszerzenia consumeWindowInsets w komponencie ComposeView pozwala deweloperom wyłączyć korzystanie z Androida WindowInsets. Dzięki temu oddzielne ComposeViews w hierarchii mogą stosować WindowInsets bez wzajemnego zakłócania sobie pracy. (I0ef08, b/220943142)
  • Dodano znak KeyboardType.Decimal jako alternatywę dla znaku Keyboard.Number, aby umożliwić dodawanie separatora dziesiętnego w systemie IME. (Iec4c8, b/209835363)
  • Interfejsy API PointerEventType.ScrollPointerEvent.scrollDelta są teraz stabilne (I574c5, b/225669674).
  • Włącz interoperacyjność przewijania zagnieżdżonego między View i Compose w przypadku współpracujących klas View. Oznacza to, że komponent może teraz wysyłać różnice przewijania do (współpracującego) elementu nadrzędnego widoku. (I5d1ac, b/174348612)
  • Zaktualizowano FontFamily.Resolver, aby zintegrować ustawienie ułatwień dostępu dotyczące pogrubienia tekstu w całym systemie (I6c1e7).
  • Środowisko wykonawcze Font(AssetManager, String, ...) zostało wycofane i zastąpione środowiskiem Font(String, AssetManager, ...). To jest eksperymentalny interfejs API. (I1c7a4)
  • Dodaj nowy opis czcionki Font(DeviceFontFamilyName), aby opcjonalnie sprawdzać czcionki zainstalowane w systemie podczas łańcuchów czcionek. (I30468, b/219754572)
  • Dodano tymczasową konfigurację zgodności dla includeFontPadding w TextStyle/ParagraphStyle. Wartość includeFontPadding można zmienić za pomocą aplikacji TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Jest to tymczasowa opcja konfiguracji, która umożliwia migrację. Zostanie ona usunięta. (If47be, b/171394808)
  • Dodaj rozszerzenie GoogleFont.Provider.isAvailableOnDevice, aby ułatwić debugowanie. (I64e31)
  • Dodaj konstruktor GoogleFont.Provider do użycia z @ArrayRes (Ic5ee1, b/225984280)
  • Interfejs Compose GoogleFont ma teraz nazwę Font(GoogleFont), ale w pozostałych aspektach pozostaje stabilny. (I125f2)

Poprawki błędów

  • Dodano sprawdzanie lint w material/Scaffold, aby zapewnić używanie wewnętrznego wypełnienia (Ifb111).

Wersja 1.2.0-alpha06

23 marca 2022 r.

androidx.compose.ui:ui-*:1.2.0-alpha06 został zwolniony. Wersja 1.2.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • Dodano działanie semantyczne RequestFocus, aby poprosić o skupienie się na elemencie, który można zaznaczyć. (I17b71)
  • Zaktualizowano parsowanie obiektów wektorowych, aby umożliwić automatyczne lustrzane odbicie treści VectorPainter, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237)
  • Zaktualizowano kolory cienia/światła otoczenia, aby były parametrami końcowymi Modifier.graphicsLayer w celu zapewnienia zgodności z interfejsem API (I3f864, b/160665122)

  • Dodano implementacje domyślne do koloru cienia/oświetlenia otoczenia w GraphicsLayerScope, aby zapewnić zmiany interfejsu API, które nie spowodują przerwania działania

  • Dodano czas zdarzenia do zdarzeń RSB (Ief8ae)

  • Usługa FocusOrder została scalona z usługą FocusProperties, a usługa focusProperties() ma teraz wszystkie funkcje usługi focusOrder(). Funkcje FocusOrderfocusOrder() zostały wycofane. Obiekt focusOrder(), który przyjmuje argument focusRequester, należy zastąpić modyfikatorem focusRequester() w połączeniu z obiektem focusProperties(). Dzięki temu modyfikatory mają większą separację problemów. (I601b7)

  • Uaktualnienie elementów RecyclerViewCompose spowoduje teraz znacznie większą wydajność przewijania dla komponentów RecyclerView z widokami Compose jako elementami podrzędnymi.

  • Dodaj ViewCompositionStrategy.Default jako sposób na pobranie wbudowanej strategii domyślnej

  • Dodaj ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer, która jest nową domyślną strategią i odpowiednio obsługuje tworzenie puli kontenerów, takich jak RecyclerView. (If7282)

  • Dodaliśmy obsługę adnotacji klas za pomocą @Preview jako pierwszy krok do dodania funkcji podglądu zbiorczego. Takie adnotacje można wykorzystać do adnotacji metod kompozytowych lub innych klas adnotacji, które można uznać za pośrednio adnotowane za pomocą podanej adnotacji @Preview. (I12eff)

  • Urządzenia referencyjne zostały dodane do listy urządzeń w ramach wersji @Preview (I071c9).

Poprawki błędów

  • Zaktualizowano interfejsy API grafiki wektorowej, aby używały odpowiedniej adnotacji kompozytowej @VectorComposable zamiast @UiComposable (I942bc).
  • Usuń instrukcje warunkowe z poziomu wiersza AnnotatedString.Builder.withStyle (If84d5)

Darowizna zewnętrzna

  • compose-ui: dodaj właściwości ambientShadowColor i spotShadowColor do GraphicsLayerScope (I1ba1a, b/160665122)
  • Zasoby liczby mnogiej są teraz obsługiwane za pomocą funkcji pluralStringResource. (Ib2f23, b/191375123)

Wersja 1.2.0-alpha05

9 marca 2022 r.

androidx.compose.ui:ui-*:1.2.0-alpha05 został zwolniony. Wersja 1.2.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Funkcja TextToolbar przyjmuje teraz argumenty lambda zamiast ActionCallback. (Ib2eb9, b/197950089)
  • Zaktualizowano opcjonalność w jądrze i w bibliotece zgodności aplikacji, aby dopasować je do wersji Tiramisu DP2 (I0cbb7).
  • Interfejs zmierzonego zdarzenia udostępnia teraz właściwość parentData (I3313f).
  • Interfejs Modifier.onPlacedOnPlacedModifier działają stabilnie. (Ib5482)
  • Hurra! Animacja w edytorze obsługuje teraz ustawienie „Skala długości animacji” w opcjach dla deweloperów. (I5a4fc, b/161675988)
  • Dodano modyfikator BeyondBoundsLayout lokalny (If8b51, b/184670295)
  • Tekst: opcja includeFontPadding jest teraz domyślnie wyłączona. Problemy z przycinaniem wynikające z użycia includeFontPadding=false zostały rozwiązane i w przypadku wysokich skryptów nie powinno już występować przycinanie. (I31c84, b/171394808)

Poprawki błędów

  • ComposeContentTestRule.setContent będzie teraz wywoływać błąd IllegalStateException, jeśli spróbujesz ustawić treści, gdy już istnieją treści. (I888a5, b/199631334)
  • Naprawiono awarię spowodowaną przez zawartość schowka podczas odczytu ze schowka na Androidzie. (I06020, b/197769306)
  • Ulepszenie przykładów przewijania RSB. (I6a596)

Darowizna zewnętrzna

  • Zaktualizowano do wersji Kotlinx coroutines 1.6.0 (I3366d).

Wersja 1.2.0-alpha04

23 lutego 2022 r.

androidx.compose.ui:ui-*:1.2.0-alpha04 został zwolniony. Wersja 1.2.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Dodano funkcje ComposableTarget, ComposableTargetMarkerComposableOpenTarget, które umożliwiają raportowanie w czasie kompilacji, gdy wywoływana jest funkcja typu „composable” kierowana na obiekt, który nie jest przeznaczony do jej użycia.

    W większości przypadków adnotacje mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc używanie ich bezpośrednio powinno być rzadkością . Do przypadków, w których nie można wywnioskować typu danych, należą tworzenie i używanie niestandardowego aplikatora, abstrakcyjnych funkcji składanych (np. metod interfejsu), pól lub zmiennych globalnych, które są składanymi funkcjami lambda (lokalne zmienne i parametry są wywnioskowane) oraz używanie funkcji ComposeNode lub powiązanych funkcji składanych.

    W przypadku niestandardowych funkcji dopasowujących funkcje składane, które wywołują ComposeNode lub ReusableComposeNode, muszą dodać adnotację ComposableTarget dla funkcji i wszystkich typów parametrów funkcji składanych lambda. Zalecamy jednak utworzenie adnotacji z oznaczeniem ComposableTargetMarker, a następnie używanie tej adnotacji z oznaczeniem zamiast bezpośrednio ComposableTarget. Kompozytowa adnotacja oznaczona symbolem ComposableTargetMarker jest równoważna atrybucie ComposbleTarget z pełną nazwą klasy atrybutu jako parametrem aplikatora. Przykład użycia funkcji ComposableTargetMarker znajdziesz w sekcji anroidx.compose.ui.UiComposable. (I38f11)

  • Font(resId, ...) przyjmuje teraz loadingStrategy w stabilnej wersji interfejsu API. (Ief3d2)

  • Interfejs FontLoadingStrategy jest teraz stabilnym interfejsem API. (I1ee35, b/174162090)

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

  • Dodaj interfejs Bridge API do konwertowania niestandardowego Font.ResourceLoader na FontFamily.Resolver. (Ia0060)

Poprawki błędów

  • Podane wartości FontFamily.Resolver są przekazywane do podkompozycji, takich jak Popup.
  • Podane wartości Font.ResourceLoader są przekazywane do podkompozycji, takich jak Popup. (I48fa5)

Wersja 1.2.0-alpha03

9 lutego 2022 r.

androidx.compose.ui:ui-*:1.2.0-alpha03 został zwolniony. Wersja 1.2.0-alpha03 zawiera te komisy.

Zmiany w interfejsie API

  • Metody notifyFocusedRect w klasach TextInputSessionTextInputService są teraz wycofane i nie będą wywoływane. Zamiast tego użyj BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Wprowadzono metodę destroyDisplayListData w klasie zastępczej RenderNode (I1e659, b/216660268).
  • Dodano nowy interfejs API, który umożliwia wstępne pomiary podelementów SubcomposeLayout. (I857ea)
  • Dodano funkcję movableContentOf, która zamienia składaną funkcję lambda na funkcję lambda, która przenosi stan i odpowiednie węzły do dowolnej nowej lokalizacji, w której zostanie wywołana. Gdy poprzednie wywołanie opuszcza składnię, stan jest tymczasowo zachowany, a jeśli nowe wywołanie do funkcji lambda wchodzi do kompozycji, stan i powiązane węzły są przenoszone do lokalizacji nowego wywołania. Jeśli nie dodasz nowych wywołań, stan zostanie trwale usunięty, a obserwatorzy zostaną o tym powiadomieni.

    Jeśli funkcja lambda movableContentOf jest wywoływana wielokrotnie w tej samej kompozycji, dla każdego wywołania tworzony jest nowy stan i nowe węzły. Gdy wywołania opuszczają kompozycję i wchodzą nowe wywołania, stan jest przenoszony z pierwszych wywołań na opuszczające wywołania w kolejności ich wywołania. Wszystkie stany, które nie zostały zadeklarowane przez nowe połączenia, zostaną trwale usunięte. (Ib4850)

  • Funkcja FontFamilyResolver jest teraz dostępna w usłudze LocalFontFamilyResolver.current

  • Dodaliśmy funkcje createFontFamilyResolver(context)createFontFamilyResolver(context, coroutineScope), które umożliwiają tworzenie nowych rozwiązujących FontFamily poza kompozycją.

  • Akapit i MultiParagraph przyjmują teraz wartość FontFamily.Resolver

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

  • Obsługa asynchronicznego i opcjonalnego wczytywania czcionek z zachowaniem zachowania zastępczego. Ta ścieżka jest używana przez Text i TextField oraz jest dostępna za pomocą FontFamilyResolver

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

  • FontFamilyResolver.setAsyncLoadContext umożliwia ustawienie globalnego kontekstu coroutine używanego do wczytywania czcionek asynchronicznych. (I87fe8, b/174162090)

  • Dodano AndroidFont, nowy interfejs API na niskim poziomie do udostępniania nowych typów opisów zasobów czcionek na Androidzie. Może to być na przykład wczytywanie czcionek z back-endu konkretnej aplikacji, opcjonalne znajdowanie wstępnie zainstalowanych czcionek na urządzeniu lub wczytywanie czcionki z zasobu, który nie jest dostarczany przez bieżące fabryki czcionek.

  • Rozszerzenie interfejsu Font.ResourceLoaded API o obsługę opcjonalnego i asynchronicznego wczytywania czcionek. Nie zalecamy, aby deweloperzy aplikacji używali tego interfejsu API bezpośrednio. Aby dodać nowe typy czcionek, zapoznaj się z artykułem AndroidFont.

  • Funkcja rozszerzenia Font.AndroidResourceLoader umożliwia tworzenie Font.ResourceLoader poza kompozycją.

  • Dodano parametr loadingStrategy do czcionek opartych na zasobach, aby umożliwić asynchroniczne wczytywanie, gdy czcionka oparta na zasobach odwołuje się do czcionek do pobrania w formacie XML. (Ie5aea, b/174162090)

  • Konstruktor Typeface(FontFamily) został wycofany. Wcześniej służyła ona do wstępnego wczytania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku czcionek do pobrania może to potrwać 10 sekund. Zamiast tego użyj FontFamilyResolver.preload.

  • Środowisko wykonawcze fontResource(FontFamily): Typeface zostało wycofane. Wcześniej służyła ona do wstępnego wczytania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast tego użyj FontFamilyResolver.preload (If8e7c, b/174162090).

  • Konstruktor SubcomposeLayoutState przyjmujący maxSlotsToRetainForReuse został wycofany. Zamiast tego jest nowy konstruktor, który akceptuje SubcomposeSlotReusePolicy – nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które sloty powinny być zachowane na potrzeby ponownego użycia. (I52c4d)

  • Udostępnia funkcje HSV i HSL w Color jako nieeksperymentalne interfejsy API. Przestrzeń barw Oklab jest teraz publicznie dostępnym interfejsem API. (I08fb6, b/180731008)

  • Wycofany AndroidComposeTestRule.AndroidComposeStatement, który nie powinien znajdować się w publicznym interfejsie API i w ogóle niczego nie robił. (Ibc46b)

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

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

  • Globalny wczytujący czcionek ma teraz nazwę FontFamilyResolver. (I4f773, b/174162090)

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

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

Poprawki błędów

  • Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są one zaznaczone i wyświetla się klawiatura w trybie miękkiego wprowadzania ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Na komputerze kompozycja lokalna jest używana w przypadku FontFamily.Resolver
  • Środowisko wykonawcze FontLoader na komputery zostało wycofane
  • Nowa fabryka createFontFamilyResolver na komputery (I6bbbb, b/174162090)
  • Typ klawiatury wirtualnej nie miga już podczas przełączania fokusu między polami tekstowymi. (I1bf50, b/187746439)

Wersja 1.2.0-alpha02

26 stycznia 2022 r.

androidx.compose.ui:ui-*:1.2.0-alpha02 został zwolniony. Wersja 1.2.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Dodano Modifier.onRotaryScrollEvent()Modifier.onPreRotaryScrollEvent() dla urządzeń Wear OS z obrotowym przyciskiem bocznym (I18bf5, b/210748686).
  • Dodaj eksperymentalne rozszerzenie View.createLifecycleAwareRecomposer (I0cde6)

Darowizna zewnętrzna

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

Wersja 1.2.0-alpha01

12 stycznia 2022 r.

androidx.compose.ui:ui-*:1.2.0-alpha01 został zwolniony. Wersja 1.2.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Wycofano: FontFamily.canLoadSynchronously. Ta usługa ma znaczenie semantyczne. (Ica5ef)
  • Dodano pole tożsamości do CompositionData na potrzeby generowania identyfikatorów niezmiennych w Inspektorze układu. (Ic116e)
  • Dodano identyfikatory urządzeń z Wear OS do listy urządzeń w wersji podglądowej (I93232)

Aktualizacje zależności

  • Teraz zależy od Kotlina 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

androidx.compose.ui:ui-*:1.1.1 został zwolniony. Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

Wersja 1.1.0

9 lutego 2022 r.

androidx.compose.ui:ui-*:1.1.0 został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.0.0

  • stabilna obsługa efektu przewijania do końca w Androidzie 12,
  • Ulepszenia dotyczące rozmiaru docelowego elementu dotykowego
    • Pamiętaj, że w wersji Compose 1.0 komponenty Material Design będą rozszerzać swoją przestrzeń układu, aby spełniać wytyczne Material Design dotyczące rozmiaru docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku będzie miał minimalny rozmiar 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu komponenty Compose będą działać tak samo jak komponenty Material Design, co zapewni spójność, jeśli użyjesz widoków i Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu użytkownika za pomocą komponentów Compose Material zostaną spełnione minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
  • Stabilna obsługa kolumny nawigacji
  • przekształciliśmy kilka wcześniej eksperymentalnych interfejsów API w stabilne.
  • Obsługa nowszych wersji Kotlina

Wersja 1.1.0-rc03

26 stycznia 2022 r.

androidx.compose.ui:ui-*:1.1.0-rc03 został zwolniony. Wersja 1.1.0-rc03 zawiera te commity.

Poprawki błędów

  • Zaktualizowano, aby obsługiwać Compose Material 1.1.0-rc03

Wersja 1.1.0-rc01

15 grudnia 2021 roku

androidx.compose.ui:ui-*:1.1.0-rc01 został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd powodujący brak działań związanych z przewijaniem w dostępności (I7cbfb).
  • Funkcja SemanticsNodeInteraction.captureToImage() będzie teraz działać również wtedy, gdy HardwareRenderer.isDrawingEnabled() ma wartość false, umożliwiając jej działanie przez cały czas trwania połączenia (Idf3d0)

Wersja 1.1.0-beta04

1 grudnia 2021 r.

androidx.compose.ui:ui-*:1.1.0-beta04 został zwolniony. Wersja 1.1.0-beta04 zawiera te commity.

Nowe funkcje

  • Zaktualizowano, aby zapewnić zgodność z Kotlin 1.6.0

Zmiany w interfejsie API

  • Usunięto niepewność w funkcji androidx.core.view (I7078a, b/204917439)
  • Dodano eksperymentalne interfejsy API, które umożliwiają użytkownikom odczytywanie wartości PointerInputchange w całości lub sprawdzanie, czy została ona odczytana. (I2e59d)
  • Dodano obsługę zdarzeń kółka myszy w warstwie interfejsu użytkownika. (Ia14eb, b/198214718)
  • Dodaj eksperymentalne przeciążenia Modifier.composed, które akceptują klucze, aby porównać je pod kątem równości i kwalifikować się do pomijania optymalizacji. (Ice799, b/205851704)
  • ComposeNotIdleException rozszerza się teraz z Exception, a nie bezpośrednio z Throwable. Oznacza to, że klauzule pętli catch, które przechwytują Exception, mogą teraz przechwytywać ComposeNotIdleExceptions, co wcześniej nie było możliwe. (I9c217)

Poprawki błędów

  • Rozwiązanie problemu polegający na tym, że uchwyty tekstu nie poruszają się, gdy zmienia się widoczność IME. (I25f2e)

Wersja 1.1.0-beta03

17 listopada 2021 r.

androidx.compose.ui:ui-*:1.1.0-beta03 został zwolniony. Wersja 1.1.0-beta03 zawiera te commity.

Zmiany w interfejsie API

  • Dodano nowy modyfikator Modifier.onPlaced, aby umożliwić obserwowanie zmiany położenia. W związku z obserwowaną zmianą miejsca docelowego można wprowadzić dodatkowe zmiany w przesunięciu modyfikatora podrzędnego. (I558fd)
  • Usunięto InjectionScope.flush()InjectionScope.dispose(). Wyczyszczanie wszystkich zdarzeń i usuwanie zakresu odbywa się teraz na końcu wywołanej metody perform*Input() tak jak wcześniej. (I2bed8)
  • Usunięto MultiModalInjectionScope.TouchMultiModalInjectionScope.Mouse. Aby wstrzykiwać zdarzenia dotykowe i myszy w przypadku gestów wielomodalnych, możesz teraz używać funkcji MultiModalInjectionScope.touch()MultiModalInjectionScope.mouse(), które obie akceptują funkcję lambda z zakresem odbiorczym odpowiadającym danej modalności. (Idde18)

Poprawki błędów

  • Wartość domyślna dla durationMillisTouchInjectionScope.swipeWithVelocity jest teraz obliczana w taki sposób, aby przesunięcie było możliwe. (I19deb)

Wersja 1.1.0-beta02

3 listopada 2021 r.

androidx.compose.ui:ui-*:1.1.0-beta02 został zwolniony. Wersja 1.1.0-beta02 zawiera te commity.

Zmiany w interfejsie API

  • Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysłanie do rodziców prośby o przewinięcie do elementu, aby był widoczny (Ib918d, b/195353459)
  • Nowe interfejsy API animacji do obsługi narzędzi. W szczególności umożliwiają one narzędziom sprawdzenie animacji i ich konfiguracji w sekcji Przejścia. (I4116e)

Darowizna zewnętrzna

  • Dodano Modifier.pointerHoverIcon (I95f01).

Wersja 1.1.0-beta01

27 października 2021 roku

androidx.compose.ui:ui-*:1.1.0-beta01 został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Dodano eksperymentalne API BringIntoView, które umożliwia wysłanie do rodziców prośby o przewinięcie do widoku danego elementu (Ib918d, b/195353459)
  • Nowe interfejsy API animacji do obsługi narzędzi. W szczególności umożliwiają one narzędziom sprawdzenie animacji i ich konfiguracji w sekcji Przejścia. (I4116e)

Wersja 1.1.0-alpha06

13 października 2021 r.

androidx.compose.ui:ui-*:1.1.0-alpha06 został zwolniony. Wersja 1.1.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • Usuń ExperimentalComposeUiApi z kont ViewRootForInspectorLayoutInfo.ownerViewId (I5c2e3)
  • Dodano przeciążenie bez podrzędnych dla Layoutu, które zwiększa wydajność (Ib0d9a)
  • Usunięto InternalCompilerApi z metod Composer, które muszą być wywoływane w ramach modułów (I1aa0b).
  • Funkcja SemanticsNodeInteraction.performSemanticsAction zwraca teraz SemanticsNodeInteraction, z którego została wywołana. (I9e5db)
  • Dodano LocalInputModeManager CompositionLocal do wykrywania trybu dotykowego/niedotykowego. (I6a83c, b/175899786)
  • Dodano viewConfiguration: ViewConfiguration do LayoutInfo, aby umożliwić konsumentom uzyskanie prawidłowej wartości w przypadku takich funkcji jak czas oczekiwania po długim naciśnięciu. (I76ca6)
    • Dodano viewConfiguration: ViewConfiguration do InjectionScope, aby umożliwić testom dostosowywanie wstrzykiwania danych wejściowych na podstawie takich parametrów, jak czas oczekiwania na długie naciśnięcie lub tolerancja dotyku.
    • Zmieniono domyślny czas przytrzymania i kliknięcia dwukrotnego zarówno w przypadku dotyku, jak i myszy, aby zależał on od wartości w pliku InjectionScope.viewConfiguration.
  • Implementacja ExposedDropdownMenu na podstawie ExposedDropdownMenuBox z TextField i DropdownMenu wewnątrz (If60b2)
  • Do właściwości PopupProperties dodano właściwość dismissOnOutsideClick, która zastąpiła wycofaną właściwość dismissOnClickOutside. Nowa właściwość odbiera pozycję kliknięcia i zakresy kotwicy, co zapewnia większą kontrolę nad tym, czy wywołać metodę onDismissRequest. Może to być przydatne na przykład do zapobiegania zamykaniu kotwicy po dotknięciu.
    • Do klasy PopupProperties dodano metodę updateAndroidWindowManagerFlags, która umożliwia kontrolowanie na niskim poziomie flag przekazywanych przez wyskakujące okienko do WindowManagera Androida. Parametrem funkcji lambda będą flagi obliczone na podstawie wartości PopupProperties, które prowadzą do flag WindowManager, np. focusable. Wynikiem funkcji lambda będą ostateczne flagi, które zostaną przekazane do WindowManagera Androida. Domyślnie funkcja updateAndroidWindowManagerFlags pozostawia flagi obliczone na podstawie parametrów bez zmian. Z tego interfejsu API należy korzystać ostrożnie, tylko w przypadkach, gdy wyskakujące okienko ma bardzo specyficzne wymagania dotyczące działania. (I6e9f9)
  • Element Recomposer.state został wycofany i zastąpiony elementem Recomposer.currentState, aby zmienić jego typ na StateFlow (Ic2ab3, b/197773820).
  • Dodano flush() i dispose() do listy InjectionScope. Używaj ich, gdy chcesz natychmiast usunąć wszystkie zdarzenia z kolejki lub gdy chcesz usunąć zakres. (Ifb73a)
  • Dodano funkcję performScrollToNode(matcher: SemanticsMatcher), która przewija element z możliwością przewijania do treści dopasowanych przez podany element dopasowujący. (Ic1cb8)
  • InjectionScope implementuje teraz Density, co pozwala łatwo konwertować piksele na dp w performTouchInput i innych usługach. (I8fe1f)

Poprawki błędów

  • AndroidView rozpowszechnia teraz LocalLifecycleOwner i LocalSavedStateRegistryOwner do widoku za pomocą ViewTreeLifecycleOwner i ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
  • Naprawiono błąd w WearOS, który powodował, że pole SwipeToDismissBox nie reagowało na gest przesunięcia. (I9387e)
  • Domyślny czas między wstrzykniętymi zdarzeniami wejścia został zmieniony z 10 ms na 16 ms. Może to zmienić wyniki testów, które wykonują gesty wejściowe, takie jak określony gest przesunięcia. (I829fd)

Wersja 1.1.0-alpha05

29 września 2021 r.

androidx.compose.ui:ui-*:1.1.0-alpha05 został zwolniony. Wersja 1.1.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Dodano obsługę komunikacji między modyfikatorami (Id5467, b/198826874)
  • Dodano eksperymentalne wskaźniki historyczne do PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
  • Dodano density: Density i layoutDirection: LayoutDirection do listy LayoutInfo. Dzięki temu użytkownicy LayoutInfo mogą prawidłowo interpretować wymiary i położenie w LayoutInfo. (I002f1)
  • Dodano eksperymentalną obsługę wstrzykiwania zdarzeń myszy. Użyj tagu performMouseInput, aby zacząć wysyłać zdarzenia myszy, lub wyślij zdarzenia myszy za pomocą właściwości Mouse w elementach MultiModalInjectionScope podczas wielomodalnego gestu wejściowego z elementem performMultiModalInput. Dokumentację dostępnego interfejsu API znajdziesz na stronie MouseInjectionScope. (Iaa4a8, b/190493367)

Poprawki błędów

  • Naprawiono obsługę ułatwień dostępu w przypadku elementów do przewijania (zarówno statycznych, jak i niestatycznych) w związku z przewijaniem (I6cdb0).
  • Ulepszono TouchInjectionScope.swipeWithVelocity. Teraz obsługuje szerszy zakres zmiennych wejściowych i w przypadku, gdy nie można utworzyć przesunięcia, sugeruje zmiany w danych wejściowych (I40fbe, b/182477143)

Wersja 1.1.0-alpha04

15 września 2021 r.

androidx.compose.ui:ui-*:1.1.0-alpha04 został zwolniony. Wersja 1.1.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • PointerEvent ma teraz PointerEventType, aby obsługiwać zdarzenia związane z najechaniem kursorem. (I091fa)
  • Zezwalanie dzieciom na akceptowanie danych wejściowych wskaźnika poza granicami obszaru wskaźnika rodzica. Rodzice mogą przechwytywać te wywołania za pomocą właściwości PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
  • Wycofane parametry performGestureGestureScope, które zostały zastąpione przez parametry performTouchInputTouchInjectionScope. (Ia5f3f, b/190493367)
  • Dodano touchBoundsInRoot do SemanticsNode, które zawiera minimalny rozmiar docelowego elementu dotykowego, aby deweloperzy mogli mieć pewność, że docelowe elementy dotykowe spełniają minimalne wymagania dotyczące dostępności. (I2e14b, b/197751214)
  • Ponowna implementacja funkcji inspectable (I927bc, b/191017532)
  • Zmieniono nazwę parametru inspectable na match_composed (I3a482, b/191017532).
  • Wprowadziliśmy performTouchInputTouchInjectionScope jako zamienniki performTouchInputTouchInjectionScope, co utorowało drogę innym metodom (np. myszce).

    TouchInjectionScope ma te same metody co GestureScope, z wyjątkiem metod movePointerTomovePointerBy, które zostały przemianowane na updatePointerToupdatePointerBy. Wszystkie inne metody są takie same.

    Funkcja TouchInjectionScope działa prawie tak samo jak funkcja GestureScope, z 2 małymi wyjątkami:

    1. Podczas wysyłania zdarzenia down, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia move (czyli najpierw została użyta metoda updatePointerTo(), ale nie move(), a potem wywołana metoda down()), poprzednia implementacja przesuwała czas zdarzenia i wysyłała zdarzenie move przed wysłaniem zdarzenia down. Nowa implementacja nadal wysyła zdarzenie move, ale w tym konkretnym scenariuszu nie zmienia czasu zdarzenia.
    2. W przypadku wysyłania zdarzenia up, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia move (podobnie jak w przypadku powyżej), poprzednia implementacja przesuwała czas zdarzenia i wysyłała zdarzenie move przed wysłaniem zdarzenia up. Nowa implementacja nie spełnia żadnego z tych kryteriów: nowe pozycje wskaźników będą odzwierciedlane tylko w zdarzeniu przesunięcia w górę.

    Na koniec TouchInjectionScope wprowadza nową metodę currentPosition(pointerId: Int), która służy do uzyskiwania bieżącej pozycji wskaźnika. (If1191, b/190493367)

Poprawki błędów

  • Zezwalanie na rozszerzenie granic docelowych elementów dotykowych poza region klipu w celu zapewnienia minimalnego rozmiaru docelowego elementu dotykowego. (I43e10, b/171509422)
  • Dodano obsługę rozciągania podczas przewijania na urządzeniach z Androidem 12. (Iccf3c, b/171682480)

Wersja 1.1.0-alpha03

1 września 2021 roku

androidx.compose.ui:ui-*:1.1.0-alpha03 został zwolniony. Wersja 1.1.0-alpha03 zawiera te commity.

Nowe funkcje

  • Zaktualizowano Compose 1.1.0-alpha03, aby zależało od Kotlina 1.5.30. (I74545)

Zmiany w interfejsie API

  • Dodano Modifier.inspectable do otaczania innych modyfikatorów. (I1909b, b/191017532)
  • Dodano interfejs API BlurredEdgeTreatment, aby uprościć przypadki użycia rozmycia, stosując bardziej typowe kombinacje flag klipów i trybów kafelkowania. Większość przypadków obejmuje renderowanie zamazanych treści poza oryginalnymi granicami treści i rozmycie obszarów poza tymi granicami za pomocą przezroczystej czerni lub przycinanie treści do granic treści, które próbkują najbliższą krawędź dla jąder rozmywania, które wykraczają poza granice treści. (I6b4b7, b/166927547)
  • Dodano obsługę RenderEffect w komponowaniu na komputerze. Wprowadziliśmy efekt przesunięcia oraz modyfikator rozmycia jako prosty sposób na wprowadzenie efektów wizualnych rozmycia do części hierarchii kompozycji. (I0f6aa, b/166927547)
  • Wprowadziliśmy interfejs RenderEffect API, który można opcjonalnie skonfigurować na Modifier.graphicsLayer, aby zmienić zawartość danej warstwy. Można go użyć do rozmydlenia treści w komponowalnych i podrzędnych komponentach w hierarchii kompozycji. (I47c4d, b/166927547)
  • AwaitPointerEventScope ma teraz metody withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i wejściu wskaźnika w celu zapewnienia ułatwień dostępu. (Ie861c)
  • Dodaj obsługę TileMode.Decal, która jest przydatna do definiowania zachowania krawędzi dla efektów RenderEffects opartych na rozmytym obrazie. (I7e8ed, b/166927547)
  • Interfejsy API performScrollToIndex, performScrollToKey, hasScrollToIndexActionhasScrollToKeyAction są teraz stabilne (I142ae, b/178483889)
  • Dodano metodę testową, która umożliwia uzyskanie ograniczonych granic. (I6b28e)

Poprawki błędów

  • Usunięto metodę isBounded z BlurredEdgeTreatment na rzecz jawnej kontroli, czy parametr shape jest null. (I85d68)

Wersja 1.1.0-alpha02

18 sierpnia 2021 r.

androidx.compose.ui:ui-*:1.1.0-alpha02 został zwolniony. Wersja 1.1.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Zdarzenie PointerEvent obsługuje teraz odczyt stanu przycisku myszy i stanu modyfikatora klawiatury. (I6310c, b/180075467)
  • Wstrzyknięte gesty używają teraz czasu z MainTestClock jako źródła informacji o czasie. Aktualny czas dla wstrzykniętych zdarzeń w performGesture zostanie zainicjowany jako bieżący czas zegara MainTestClock. (Ifb364, b/192064452)
  • Dodano konstruktor DpRect(DpOffset, DpSize) (I2cf16, b/194219828)
  • Dodano klasę DpSize (I7abb1, b/194219828)

Poprawki błędów

  • Zaktualizowano parsowanie XML grafik wektorowych, aby umożliwić używanie list kolorów stanu jako właściwości koloru głównego w przypadku obiektów rysowalnych wektorowo. (I86915, b/195668138)

Wersja 1.1.0-alpha01

4 sierpnia 2021 r.

androidx.compose.ui:ui-*:1.1.0-alpha01 został zwolniony. Wersja 1.1.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • RelocationRequester.bringIntoView może teraz przyjmować prostokąt jako parametr, co umożliwia wyświetlanie części kompozytowanej (Ice2c5, b/194330245).
  • Interfejs AnimatedImageVector i powiązane z nim interfejsy API znajdują się teraz w nowym module androidx.compose.animation:animation-graphics. (I60873)
  • Dodaliśmy eksperymentalny modyfikator do obsługi próśb o przeniesienie. (I65a97, b/178211874)
  • Wprowadziliśmy interfejs API BrushPainter, aby umożliwić rysowanie dowolnym pędzlem w ramach usługi Painter, podobnie jak w przypadku interfejsu ColorPainter.

    Zaktualizowano interfejs Brush API, aby zawierał parametr rozmiaru wewnętrznego, który jest zapytany w BrushPainter (Ia2752, b/189466433).

  • Zaktualizowana metoda DrawScope#drawImage, która używa prostokątów źródła i docelowego, aby użyć opcjonalnego parametru FilterQuality. Jest to przydatne w przypadku grafiki pikseli, która ma być pikselizowa, gdy zostanie powiększona do grafiki pikseli. Zaktualizowano komponenty BitmapPainter + Image, aby używały opcjonalnego parametru FilterQuality (Ie4fb0, b/180311607).

  • Dodano metodę GestureScope.advanceEventTime, aby zapewnić większą kontrolę nad czasem zdarzeń w geście (Ibf3e2).

Poprawki błędów

  • Aby lepiej obsługiwać łańcuchowanie modyfikatorów draw, upewnij się, że implementacja Modifier.paint wywołuje drawsContent. Wcześniej oczekiwano, że Modifier.paint będzie węzłem liścia w łańcuchu modyfikatorów, ale uniemożliwia to skonfigurowanie go w składowym kontenerze (np. box) lub dodanie dodatkowych ozdób, takich jak Modifier.paint().border(). Dzięki temu, że metoda Modifier.paint wywołuje metodę drawContent po narysowaniu zawartości danego malarza, uzyskujemy większą spójność zachowania w przypadku wzorca modyfikatora. (Ibb2a7, b/178201337, b/186213275)
  • Dialogi są teraz dostosowywane do rozmiaru platformy. Aby zmienić to zachowanie, ustaw wartość usePlatformDefaultWidth na „False” (fałsz). (Iffaed, b/192682388)
  • Przeniesiono InfiniteAnimationPolicy do :compose:ui (I5eb09, b/160602714).
  • Przewijanie za pomocą działań semantycznych w przypadku list opartych na lazy loadingu i zwykłych komponentów z przewijaniem jest teraz animowane (Id9066, b/190742024)

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

androidx.compose.ui:ui-*:1.0.5 został zwolniony. Wersja 1.0.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem ze śledzeniem awarii w przypadku instancji derivedStateOf. (aosp/1792247)

Wersja 1.0.4

13 października 2021 r.

androidx.compose.ui:ui-*:1.0.4 został zwolniony. Wersja 1.0.4 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano zależność od Kotlina 1.5.31

Wersja 1.0.3

29 września 2021 r.

androidx.compose.ui:ui-*:1.0.3 został zwolniony. Wersja 1.0.3 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano zależność od Kotlina 1.5.30

Wersja 1.0.2

1 września 2021 roku

androidx.compose.ui:ui-*:1.0.2 został zwolniony. Wersja 1.0.2 zawiera te zatwierdzenia.

Zaktualizowano, aby obsługiwać wersję 1.0.2 aplikacji Compose. Compose 1.0.2 jest nadal zgodny z Kotlinem 1.5.21.

Wersja 1.0.1

4 sierpnia 2021 r.

androidx.compose.ui:ui-*:1.0.1 został zwolniony. Wersja 1.0.1 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano, aby zależało od Kotlina 1.5.21.

Wersja 1.0.0

28 lipca 2021 roku

androidx.compose.ui:ui-*:1.0.0 został zwolniony. Wersja 1.0.0 zawiera te zatwierdzenia.

Najważniejsze funkcje wersji 1.0.0

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

Znane problemy

  • Jeśli używasz Android Studio Bumblebee Canary 4 lub AGP 7.1.0-alpha04/7.1.0-alpha05, może wystąpić ten błąd:

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

    Aby to naprawić, tymczasowo zwiększ wartość minSdkVersion do 24 lub wyższej w pliku build.gradle. Ten problem zostanie rozwiązany w następnej wersji Android Studio Bumblebee i AGP 7.1. (b/194289155)

Wersja 1.0.0-rc02

14 lipca 2021 roku

androidx.compose.ui:ui-*:1.0.0-rc02 został zwolniony. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Dialogi są teraz dostosowywane do rozmiaru platformy. Aby zmienić to zachowanie, ustaw wartość usePlatformDefaultWidth na „False” (fałsz). (Iffaed, b/192682388)

Wersja 1.0.0-rc01

1 lipca 2021 r.

androidx.compose.ui:ui-*:1.0.0-rc01 został zwolniony. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Podział modułu ui-tooling na ui-toolingui-tooling-preview (Iefa28, b/190649014)

Zmiany w interfejsie API

  • Usunięto przestarzałe eksperymentalne funkcje FocusManager#moveFocusInFocusManager#moveFocusOut (I227d7, b/170154986, b/186567354, b/168510304)
  • Canvas obsługuje teraz parametr contentDescription dotyczący ułatwień dostępu. (Ib547c)
  • Nazwa useDefaultMaxWidthPopupProperties została zmieniona na usePlatformDefaultWidth. (I05710)
  • Dialogi mogą teraz wykorzystywać całą szerokość ekranu. (I83929, b/190810877)
  • Dodano eksperymentalną obsługę reprezentacji kolorów HSV i HSL. (Id7cf8, b/180731008)

Zmiany w zachowaniu

  • Narzędzia do tworzenia @Preview udostępniają teraz LocalActivityResultRegistryOwner, które umożliwia wyświetlanie podglądu komponentów, które korzystają z interfejsów API, takich jak rememberLauncherForActivityResult(), i które zależą od istnienia tego właściciela. (Ib13d1, b/185693006)
  • Compose @Preview udostępnia teraz LocalOnBackPressedDispatcherOwner, który umożliwia wyświetlanie podglądu elementów składanych korzystających z interfejsów API, takich jak BackHandler, które zależą od istnienia tego właściciela. (Ia1c05, b/185693006)

Poprawki błędów

  • Urządzenie InfiniteAnimationPolicy zostało przeniesione do jednostki organizacyjnej androidx.compose.ui:ui (I5eb09, b/160602714)
  • Element AnimatedImageVector został tymczasowo usunięty, aby zmienić strukturę modułu. (I41906, b/160602714)

Wersja 1.0.0-beta09

16 czerwca 2021 r.

androidx.compose.ui:ui-*:1.0.0-beta09 został zwolniony. Wersja 1.0.0-beta09 zawiera te commity.

Zmiany w interfejsie API

  • Zmień typ wyliczeniowy Role i LiveRegionMode na klasy wbudowane z konstruktorem prywatnym (Id1890)
  • Funkcja KeyboardCapitalization została przekształcona w klasę wstawianą. (Id5a1c)
  • Zmień HapticFeedbackType na inline class. (I255ec)
  • Modifier.pointerInteropFilter to @ExperimentalComposeUiApi. (Iede6c)
  • TextAlign, FontSynthesis i TextDirection są teraz klasami wbudowanymi. (I212fe)
  • TextOverflow został zmieniony na klasę wbudowaną. (I433af)
  • FontStyle jest teraz klasą wbudowaną. (I9e48b)

Poprawki błędów

  • Obecnie kluczowe stałe to @ExperimentalComposeUiApi. Kod korzystający z niego może deklarować prywatne stałe przed stabilizacja. (Ia5d48)
  • Testy Compose można teraz uruchamiać w Robolectric. Dotychczas zidentyfikowano te ograniczenia:
    • Nie ma natywnej bitmapy, więc wywołanie ImageBitmap() powoduje wyjątek NullPointerException.
    • Nie ma rysowania, więc captureToImage() będzie bez końca oczekiwać na następny etap rysowania (czyli dojdzie do blokady).
    • Nie załadowano czcionki, więc tekst zostanie nieprawidłowo zmierzony. Wszystkie znaki mają stałą wysokość około 20 pikseli i szerokość 1 piksela.
    • Funkcja ComposeTestRule.waitUntil {} nie uruchamia wątku głównego podczas oczekiwania, co czyni ją w istocie taką samą jak ComposeTestRule.mainClock.advanceTimeUntil {}W przyszłości zostanie zidentyfikowanych więcej ograniczeń. (I284fa)

Dodano reguły profilu

W tej wersji dodaliśmy reguły profilu do tych 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.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Co to są reguły profilu?

  • Reguły profilu biblioteki są określone w pliku tekstowym baseline-prof.txt znajdującym się w katalogu src/main lub równoważnym. Plik określa regułę na wiersz, gdzie reguła w tym przypadku jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest superzbiorem czytelnego dla człowieka formatu profilu ART, który jest używany podczas korzystania z adb shell profman --dump-classes-and-methods .... Te reguły mogą mieć jedną z 2 form, aby kierować się na metody lub klasy.

  • Reguła metody będzie miała ten wzór:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Reguła klasy będzie miała ten wzór:

    <CLASS_DESCRIPTOR>
    
  • Tutaj <FLAGS> to co najmniej jeden z znaków H, S lub P, który wskazuje, czy ta metoda powinna być oznaczona jako „Aktywna”, „Uruchamianie” lub „Po uruchomieniu”.

  • <CLASS_DESCRIPTOR> to deskryptor klasy, do której należy docelowa metoda. Na przykład klasa androidx.compose.runtime.SlotTable miałaby opis Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> to sygnatura metody, która zawiera nazwę, typy parametrów i typ zwracany metody. Na przykład metoda fun isPlaced(): Boolean w klasie LayoutNode ma sygnaturę isPlaced()Z.

  • Te wzorce mogą zawierać symbole wieloznaczne (**, *?), aby jedno reguła obejmowała wiele metod lub klas.

Do czego służą zasady?

  • Metoda z flagą H wskazuje, że jest to metoda „gorąca” i należy ją skompilować z wyprzedzeniem.

  • Metoda z flagą S wskazuje, że jest to metoda wywoływana podczas uruchamiania i powinna zostać skompilowana wcześniej, aby uniknąć kosztów kompilacji i interpretacji metody podczas uruchamiania.

  • Metoda z flagą P wskazuje, że jest wywoływana po uruchomieniu.

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

Jak to działa?

  • Biblioteki mogą definiować te reguły, które zostaną zapakowane w elementy AAR. Gdy skompilowana aplikacja zawiera te elementy, reguły są scalane, a scalane reguły są używane do tworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja zostanie zainstalowana na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji w celu poprawy jej wydajności, zwłaszcza podczas pierwszego uruchomienia. 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.

androidx.compose.ui:ui-*:1.0.0-beta08 został zwolniony. Wersja 1.0.0-beta08 zawiera te commity.

Zmiany w interfejsie API

  • Enum NestedScrollSource został zastąpiony przez wbudowaną klasę. (Ie321b, b/187055290)
  • Nazwa FocusManager.clearFocus(forcedClear = true) została zmieniona na FocusManager.clearFocus(force = true) (Ia0c41)
  • Przekształciliśmy użycie wyliczeń w klasy wbudowane, aby uniknąć problemów z wyczerpującymi instrukcjami warunkowymi, gdy dodawane są nowe wartości wyliczenia. (I2b5eb)
  • Usuń @ExperimentalComposeUiApi z konta PopupProperties. (I01fa6)
  • Typ „PointerType” został zmieniony z enumeracji na klasę wbudowaną (If5058)
  • Właściwości ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je łączyć w postaci niemodyfikowanej, a nie w postaci konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które wykorzystują te zmiany (Ica6bf, b/184825850).
  • Środowisko wykonawcze Modifier.focusModifier() zostało wycofane i zastąpione środowiskiem Modifier.focusTarget() (I6c860)
  • Funkcje Modifier.onSizeChanged()Modifier.onGloballyPositioned() nie są już wstawiane w kodzie (I727f6, b/186109675)
  • Enum KeyboardType został zastąpiony przez wbudowaną klasę. (I73045, b/187055290)
  • Wymiana enumu FocusState na interfejs FocusState (Iccc1a, b/187055290)
  • Enum ImeAction został zastąpiony przez wbudowaną klasę. (I18be5, b/187055290)
  • PlaceholderVerticalAlign zostanie przekonwertowany na zajęcia wstawiane w tekście. (If6290)
  • Typ jednostki tekstowej jest teraz klasą wbudowaną. (I4cba9)
  • Funkcje AnnotatedString.withAnnotation to teraz ExperimentalTextApi, a nie ExperimentalComposeApi. (I0cd0a)
    • Konstruktor TextUnit z parametrem TextUnitType używa teraz ExperimentalTextApi zamiast ExperimentalComposeApi.

Poprawki błędów

  • Usunęliśmy błąd wprowadzony w wersji beta07, który powodował, że elementy kolumny lub wiersza LazyColumn/Row były wyświetlane częściowo po przewinięciu (I8c9ac, b/188566058).
  • Teraz funkcje detectDragGesures, detectVerticalGesturesdetectHorizontalGestures będą automatycznie przetwarzać zmiany pozycji, więc nie trzeba wywoływać funkcji change.consumePositionChange w obsługach zwrotnych onDrag (I42fc4, b/185096350, b/187320697)
  • Naprawiono błędy związane z użyciem klasy LayoutModifiers, która zapewnia linie wyrównania. Usunęliśmy błąd, który powodował, że nie był wykonywany ponowny pomiar obiektu nadrzędnego, gdy zmieniały się linie wyrównania obiektów podrzędnych. (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() zostało zmienione, aby raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że kolejność modyfikatorów wpływa na to, jakie współrzędne zostaną zgłoszone. (Ieb67d, b/177926591)

Wersja 1.0.0-beta07

18 maja 2021 r.

androidx.compose.ui:ui-*:1.0.0-beta07 został zwolniony. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano interfejs ViewRootForInspector do inspektora (Ib70df).
  • SubcomposeLayoutState obsługuje teraz ustawienie liczby wielokrotnego użytku slotów. Układ będzie utrzymywał aktywne maksymalnie tyle slotów, zamiast je usuwać, aby móc ponownie użyć slotu następnym razem, gdy będzie potrzebny (Ieb981)
  • Enum KeyEventType jest zastępowany przez wbudowaną klasę. (Id670a, b/187055290)
  • Enum FocusDirection został zastąpiony przez wbudowaną klasę. (Ib6d03, b/187055290, b/184086802)
  • Wprowadza możliwość podniesienia stanu SubcomposeLayout, co pozwala wstępnie skompilować treści w wymaganym slotId, co przyspieszy następny pomiar, ponieważ gdy spróbujemy skompilować podkompozycję z danym slotId, nie będzie już konieczne ponowne kompilowanie. (I42580, b/184940225)
  • Dodano uchwyt do zaznaczania klipów (Iff80d, b/183408447).
  • Usunięto nieużywane interfejsy API związane z obsługą narzędzia LayoutInspector. (I2ac78)

Poprawki błędów

  • LazyColumn/Row będzie teraz utrzymywać aktywne (nieusunięte) maksymalnie 2 widoczne wcześniej elementy, nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie użyć aktywnych podkompozycji, gdy będziemy musieli utworzyć nowy element, co poprawia wydajność przewijania. (Ie5555)
  • Ustawienia TextGeomerticTransformTextDecorationAnnotatedString zostaną zastosowane zgodnie z podanymi wartościami. (I61900, b/184760917)

Wersja 1.0.0-beta06

5 maja 2021 roku

androidx.compose.ui:ui-*:1.0.0-beta06 został zwolniony. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Rozwiąż konflikt z nawigacją przy użyciu gestów (I1145e)
  • @ComposeCompilerApi nie jest już @RequiresOptIn (Iab690)
  • Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i jej elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
  • Dodano funkcję SemanticsActions.ScrollToIndex, która umożliwia przewijanie listy z indeksyzowanymi elementami do elementu o określonym indeksie, oraz funkcję SemanticsProperties.IndexForKey, która zwraca indeks elementu na liście z elementami kluczowymi. Oba działania są implementowane przez LazyList.
    • Dodano SemanticsNodeInteraction.performScrollToIndex, które przewija listę do podanego indeksu, oraz SemanticsNodeInteraction.performScrollToKey, które przewija listę do elementu z podanym kluczem. (I4fe63, b/178483889, b/161584524)
  • Dodano ownerViewId do GraphicLayerInfo (I19f62)
  • Dodano przeciążenia metody Font(), aby wczytywać czcionki z plików assets, File i FileDescriptor (I5d382).
  • Dodano interfejs API ułatwień dostępu error, który umożliwia oznaczanie węzła zawierającego nieprawidłowy element wejściowy (I12997, b/180584804, b/182142737).
  • Dodano Font() przeciążenia do wczytywania czcionek z zasobach, File i FileDescriptor (I43007)
  • Obsługa zapisywania obiektu AnnotatedString w przypadku właściwości TextFieldValue.Saver. Dodano funkcje pomocnicze addTtsAnnotation i withAnnotation do funkcji AnnotatedString.Builder (I8cbdc, b/178446304)
  • Dodano funkcję konstruktora TextUnitTextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

androidx.compose.ui:ui-*:1.0.0-beta05 został zwolniony. Wersja 1.0.0-beta05 zawiera te commity.

Zmiany w interfejsie API

  • Dodano eksperymentalne funkcje FocusManager.moveFocus(In) i FocusManager.moveFocus(Out) (Ic5534, b/183746743).
  • Dodano eksperymentalny interfejs API performTextInputSelection (I2dcbb, b/178510628).
  • Interfejs InputEventCallback został wycofany. Nie można było użyć tego interfejsu w żadnym publicznym interfejsie API, a w źródle kodu nie było go użyto. (I34a02, b/184003208)
  • Wycofana funkcja TextLayoutResult/createTextLayoutResult. Jest to nieużywana funkcja publiczna, która została dodana na potrzeby testowania. Funkcja nie wykonuje żadnych przydatnych działań w przypadku interfejsów API do tworzenia tekstu. Ta funkcja została wycofana i zostanie usunięta w przyszłości. (I80413)

Poprawki błędów

  • Naprawiono działania ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRightaccessibilityActionScrollDown dotyczące przewijania w ramach dostępności. Zamiast przewijania do końca ekranu, teraz przewinie się o jeden ekran w podanym kierunku. (Ieccb0)
  • Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994)

Wersja 1.0.0-beta04

7 kwietnia 2021 r.

androidx.compose.ui:ui-*:1.0.0-beta04 został zwolniony. Wersja 1.0.0-beta04 zawiera te commity.

Zmiany w interfejsie API

  • Zmień nazwy hideSoftwareKeyboardshowSoftwareKeyboard na SoftwareKeyboardController na hide()show().
    • Udostępnij pełny interfejs CompositionLocal dla klasy LocalSoftwareKeyboardController, aby umożliwić jej ustawienie (szczególnie przydatne w testach) (I579a6)
  • Dodano interfejs API dostępności LiveRegion. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadomią użytkownika o zmianach (Idcf6f, b/172590946)
  • Wprowadzono właściwość TextOverflow.Visible. (Ic8f89)

Poprawki błędów

  • Rozwiązaliśmy problem, gdy elementy LazyColumn/LazyRow znajdujące się na krawędziach były nieprawidłowo umieszczone po szybkim przełączeniu (Ie4d13, b/183877420)
  • Funkcja AndroidViewBinding prawidłowo usuwa fragmenty utworzone za pomocą funkcji FragmentContainerView, gdy element AndroidViewBinding zostanie usunięty z hierarchii tworzenia. (Ib0248, b/179915946)
  • AndroidViewBinding poprawnie zagnieżdżają fragmenty napompowane za pomocą FragmentContainerView, gdy ComposeView znajduje się w Fragment. Rozwiązano w ten sposób problemy z zapisywaniem i przywracaniem stanu tych fragmentów. (I70eb0, b/179915946)
  • Funkcja Compose ViewBinding zależy teraz od Fragment 1.3.2 i po zmianach w konfiguracji konsekwentnie wyświetla fragmenty napompowane za pomocą funkcji FragmentContainerView. (I0743d, b/179915946)

Wersja 1.0.0-beta03

24 marca 2021 r.

androidx.compose.ui:ui-*:1.0.0-beta03 został zwolniony. Wersja 1.0.0-beta03 zawiera te komitowane zmiany.

Zmiany w interfejsie API

  • Odroczona kontrola zależności ViewTree w ComposeView (I8dbbf, b/182466548)
  • Do funkcji swipeUp/swipeDown/swipeLeft/swipeRightGestureScope dodaliśmy opcjonalne parametry startX/endXstartY/endY. (I49e2d, b/182063305)

Wersja 1.0.0-beta02

10 marca 2021 r.

androidx.compose.ui:ui-*:1.0.0-beta02 został zwolniony. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano nowe lokalne API LocalSoftwareKeyboardController do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I5951e, b/168778053)
  • Dodano nowe lokalne API LocalSoftwareKeyboardController do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I84472, b/168778053)
  • Usunięto te SemanticsMatcher:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • Oznaczono te SemanticsMatchers jako @ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • Dodaliśmy te SemanticsMatcher:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Poprawki błędów

  • Wdrożenie ograniczeń dotyczących publicznego używania eksperymentalnych interfejsów API (I6aa29, b/174531520)
  • androidx.compose.ui:ui nie zależy już od AppCompat ani Fragment. Jeśli w aplikacji używasz widoku ComposeView i fragmentu lub interfejsu AppCompat, upewnij się, że używasz interfejsu AppCompat w wersji 1.3 lub nowszej lub fragmentu w wersji 1.3 lub nowszej. Te wersje są potrzebne do prawidłowego ustawienia cyklu życia i właścicieli zapisanego stanu wymaganych przez widok ComposeView. (I1d6fa, b/161814404)
  • Rozwiązanie problemu z uszkodzonym elementem rememberSaveable { mutableStateOf(0) } używanym w miejscu docelowym w komponencie nawigacji. (I1312b, b/180042685, b/180701630)
  • Dodano nowe lokalne API LocalSoftwareKeyboardController do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I658b6, b/168778053)
  • Usunięto rzadki błąd NoSuchElementException w funkcji ComposeRootRegistry w funkcji tearDownRegistry() (Iddce1).

Wersja 1.0.0-beta01

24 lutego 2021 r.

androidx.compose.ui:ui-*:1.0.0-beta01 został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.

To pierwsza wersja Compose 1.0.0 w wersji beta.

Zmiany w interfejsie API

  • Do detectDragGestures dodano wywołanie zwrotne onStart (I67269, b/179995594).
  • Modyfikatory służące do dopasowywania rozmiaru do wartości bezwzględnej nie są już eksperymentalne. (I15744)
  • MeasureBlocks zostało przemianowane na MeasurePolicy i stało się przyjaznym interfejsem. Interfejsy API dotyczące układu zostały zaktualizowane i uproszczone, aby używały MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • Wartość InteractionState została zastąpiona wartością [Mutable]InteractionSource
    • Interfejsy odpowiadają za emitowanie i zbieranie zdarzeń interakcji.
    • Zamiast przekazywania wartości interactionState = remember { InteractionState() } do komponentów takich jak ButtonModifier.clickable(), użyj wartości interactionSource = remember { MutableInteractionSource() }.
    • Zamiast: Interaction.Pressed in interactionState użyj funkcji rozszerzenia w źródle interakcji, np. InteractionSource.collectIsPressedAsState().
    • W skomplikowanych przypadkach możesz używać parametru InteractionSource.interactions do obserwowania strumienia interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących źródła interakcji.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Dodaj interfejs AccessibilityMananger i LocalAccessibilityMananger w CompositionLocals (I53520)
  • Usunięto przestarzałe metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent należy używać funkcji (I580ed, b/169874631, b/175142755).
  • Typy aliasów zostały zastąpione przez podstawowe typy:
    • 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ą klasę TextInputSession na potrzeby sesji wprowadzania danych z niskiego poziomu komponentów tekstowych, takich jak CoreTextField. (I8817f, b/177662148)
  • Element Placeable udostępnia teraz wartość measuredSize, która określa rozmiar, do którego został zmierzony układ podrzędny. Ten rozmiar może nie spełniać ograniczeń dotyczących pomiarów. (Ib2729, b/172560206, b/172338608)
  • Dodaj modyfikator selectionGroup, który umożliwia oznaczanie kolekcji kart lub przycisków opcji na potrzeby ułatwień dostępu (Ie5c29)
  • Pole defaultFactory w przypadku compositionLocalOf i staticCompositionLocalOf jest teraz wymagane, a nie opcjonalne.

    Ta zmiana usuwa potencjalny błąd typu w przypadku typów, które nie mogą być puste, gdy nie podano fabryki domyślnej. Wcześniej w przypadku typu, który nie może przyjmować wartości null, funkcja ta zwracała odwołanie null.

    W przypadku typów z opcją null warto podać { null } jako domyślną fabrykę.

    Nie zalecamy używania zmiennych lokalnych z typami, które nie mogą być puste, chyba że można podać sensowne wartości domyślne. Jeśli nie ma żadnej sensownej wartości domyślnej, funkcja lambda defaultFactory powinna wyrzucić wyjątek. Jednak wywołanie wyjątku oznacza, że konsumenci funkcji lokalnej będą mieli do niej ukrytą zależność, która nie jest wymuszana przez system typów. (Ifbd2a)

  • Usunięto przestarzałe metody z modułów interfejsu użytkownika (I646f6)

  • Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmienne width/height/size zostały przemianowane na requiredWidth/requiredHeight/requiredSize. Nazwa Modifier.preferredWidth/preferredHeight/preferredSize została zmieniona na width/height/size. (I5b414)

  • Modifier.tapGestureFilter został(a) usunięty(a). Zamiast tego użyj Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

  • usunięto częściowe zużycie z systemu wskaźnika. Zalecaną metodą koordynacji częściowego zużycia jest Modifier.nestedScroll. (Ie9c9b)

  • Orientacja została przeniesiona do pakietu podstawy. Moduł VelocityTracker został przeniesiony z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)

  • imageResource i vectorResource są teraz funkcjami rozszerzenia odpowiednio dla ImageBitmap i ImageVector. Usunięto load{Image,Vector,Font}Resource funkcji. (I89130)

  • Klasa AnimationClockObservable i jej podklasy zostały usunięte. AnimatedFloat został usunięty. (Icde52, b/177457083)

  • Providers zostało zmienione na CompositionLocalProvider

    • Konstruktor kompozycji nie akceptuje już parametru key i został wycofany.
    • currentCompositeKeyHash została przekształcona z funkcji na najwyższym poziomie na funkcję składaną na najwyższym poziomie.
    • Komponenty CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
    • Zmienna ComposableLambda została zastąpiona interfejsem zamiast konkretnej klasy i nie zawiera już parametrów typu.
    • Zmienna ComposableLambdaN została zamieniona na interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
    • Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime.
    • metoda scalania w SnapshotMutationPolicy nie jest już eksperymentalna
    • Usunięto funkcję @TestOnly clearRoots najwyższego poziomu. Nie jest już potrzebne.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Funkcja Composer.collectKeySourceInformation została usunięta. Nie jest już potrzebne.
    • Metody isJoinedKey, joinedKeyLeft i joinedKeyRight zostały usunięte. Nie są już potrzebne.
    • Różne interfejsy API najwyższego poziomu zostały przeniesione i zreorganizowane w różne pliki. Ze względu na semantykę klasy plików w Kotlinie spowoduje to utratę zgodności binarnej, ale nie źródłowej, więc nie powinno stanowić problemu dla większości użytkowników.
    • (I99b7d, b/177245490)
  • ComponentActivity.setContent() został usunięty z Compose:UI. Użyj tego z androidx.activity:activity-compose:1.3.0-alpha01. Elementy viewModel()LocalViewModelStoreOwner zostały usunięte z interfejsu tworzenia wiadomości. Użyj tych z androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b).

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

  • Usunięto obsługę zdarzeń niestandardowych w komponencie PointerInputModifier (I02707, b/175294473).

  • SnapshotStateObserver nie jest już eksperymentalny (Id2e6a)

  • Usunięto niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932)

  • Filtry longPressGestureFilter i doubleClickGestureFilter zostały usunięte. Użyj funkcji Modifier.pointerInput z funkcjami pomocniczymi, np. detectTapGestures (I2fedf, b/175294473).

  • Usunięto interfejs String.format, a w różnych metodach toString przekształcono użycie tej metody, aby nie korzystała ona wewnętrznie z interfejsu String.format. (Id1290)

  • Usunięto asercje dp (I798d2)

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

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

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

  • Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana za pomocą typów Int (I81298)

  • Element FlingConfig został przemianowany na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych wartości zanikania. (I02b86, b/175294473)

  • Dodano funkcję pomocniczą, która ułatwia ustawianie tego samego działania dla wszystkich wywołań zwrotnych ImeAction (I63447, b/179226323).

  • Z wszystkich pól tekstowych usunięto wywołanie metody SoftwareKeyboardController, które wkrótce zostanie zastąpione nowym interfejsem API. (Iae869, b/168778053)

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

  • Wprowadziliśmy następujące zmiany w Material API:

    • Dodano parametr contentPadding do paska górnego i dolnego, aby umożliwić dostosowanie domyślnego wypełniania.
    • Zmieniliśmy kolejność parametrów w BackdropScaffold, aby były zgodne z wytycznymi dotyczącymi interfejsu API, zgodnie z którymi wymagane parametry są umieszczane przed opcjonalnymi.
    • Parametr icon w BottomNavigationItem został przeniesiony za parametry selectedonClick.
    • Zmieniono nazwę parametru alwaysShowLabels w elementach BottomNavigationItem na alwaysShowLabel.
    • Parametry bodyContent w kilku komponentach zostały przemianowane na content.
    • Zmieniono kolejność parametrów w plikach ButtonDefaults.buttonColors(). Pamiętaj, że typ parametrów się nie zmienił, więc nie spowoduje to błędu w kodzie. Upewnij się, że używasz parametrów nazwanych lub zaktualizujesz ręcznie kolejność parametrów. W przeciwnym razie kod nie będzie działać tak samo jak wcześniej.
    • Dodano parametr secondaryVariant do darkColors(). Ten kolor jest zwykle taki sam jak secondary w ciemnym motywie, ale dodaje spójność i umożliwia dalsze dostosowywanie.
    • Usunęliśmy z publicznego interfejsu API funkcje ElevationDefaults i animateElevation(), ponieważ nie były one powszechnie używane ani przydatne.
    • Zmieniono nazwę kolumny onValueChangeEnd w tabeli Slider na onValueChangeFinished i nadano jej atrybuty nullable.
    • Zmieniono nazwę parametru text w sekcji Snackbar na content, aby zachować spójność.
    • Do parametru DropdownMenuItem dodano parametr contentPadding, aby umożliwić dostosowywanie domyślnego wypełnienia, a parametr content został rozszerzeniem parametru RowScope.
    • Nazwa ModalDrawerLayout została zmieniona na ModalDrawer.
    • Nazwa BottomDrawerLayout została zmieniona na BottomDrawer.
    • (I1cc66)

Poprawki błędów

  • Dodano interfejs API do obsługi zasobów AnimatedVectorDrawable w Compose. Użyj metody animatedVectorResource, aby wczytać plik XML <animated-vector> jako AnimatedImageVector i animować go za pomocą metody painterFor (I8ea91).
  • Dodano nowe lokalne API kompozycyjne LocalSoftwareKeyboardController, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I658b6, b/168778053)

Wersja 1.0.0-alpha12

10 lutego 2021 r.

androidx.compose.ui:ui-*:1.0.0-alpha12 został zwolniony. Wersja 1.0.0-alpha12 zawiera te commity.

Zmiany w interfejsie API

  • Z interfejsu UiApplier usunięto obsługę grup widoków. Usunięto przestarzałe komponenty emitView. (Ifb214)
  • Funkcja Modifier.pointerInput wymaga teraz kluczy zapamiętania, aby wskazywać, kiedy coroutine wykrywania danych wejściowych wskaźnika powinna zostać ponownie uruchomiona w przypadku nowych zależności. (I849cd)
  • Zmiana nazwy CompositionReference na CompositionContext (I53fcb)
  • Nazwa Bounds została zmieniona na DpRect (I4b32a).
  • Aktualizacja testów: funkcja hasText() będzie sprawdzać, czy w polu tekstowym znajduje się tekst wejściowy, etykietowy, podpowiedzi lub tekst zastępczy (Iab803)
  • Kompozycja viewModel() i interfejs LocalViewModelStoreOwner zostały przeniesione do pakietu androidx.lifecycle.viewmodel.compose. Aby z niego korzystać, musisz teraz dodać osobną zależność androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
  • Dozwolić na działanie typu nullable w AccessibilityAction, zmienić etykietę działania w AccessibilityAction i CustomAccessibilityAction z CharSequence na String (I0dc82)
  • Aby lepiej dopasować konwencje nazewnictwa do bibliotek ImageBitmap i ImageVector, zmieniliśmy nazwę klasy ImagePainter na BitmapPainter, a klasy VectorPainter – na VectorPainter. (Iba381, b/174565889)
  • Lepsze testowanie interfejsów API pod kątem podciągu pod kątem podkładu jako argumentu (Icbe78)
  • Dodano funkcję Modifier.focusOrder(), która przyjmuje FocusRequester bez określania niestandardowego porządku fokusu w lambda. Jest to przydatne, gdy musimy podać tylko odniesienie, a nie niestandardowy porządek fokusowania dla kompozytu (I4f52a, b/179180978).
  • ComponentActivity.setContent zostało przeniesione do androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
  • Metody destrukturyzacji i copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
  • Przeniesienie wyskakującego okienka na platformę. Nazwa AndroidPopupProperties została zmieniona na PopupProperties, a wartość isFocusable została przeniesiona do parametru focusable w elementach PopupProperties (Ieeea5).
  • Przeniesienie okna dialogowego na platformy. Nazwa AndroidDialogProperties została zmieniona na DialogProperties. (I4ef69, b/179138130)
  • Układ Node jest wewnętrzny (I8a7b1, b/175103944)
  • Funkcja Constraints.enforce została zastąpiona przez Constraints.constrain. (I8b8ea)
  • Metoda loadFontResource została wycofana. Zamiast nich użyj fontResource. Metody imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj painterResource. (I6b809)
  • Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambda zwracające wartości typu Float zamiast bezpośrednich wartości typu Float. (If4a35, b/178657186)
  • Dodano semantyczne pole tekstowe z możliwością edycji, aby oznaczyć edytowalny tekst wejściowy w polu tekstowym na potrzeby ułatwień dostępu, oraz odpowiednie metody testów, aby sprawdzić semantykę (I8e07a).
  • Uczyniono wewnętrznymi OwnerLayer/OwnerScope/OwnerSnapshotObserver (I4ffaf, b/175103944).
  • Funkcja toIntPx() została przemianowana na roundToPx(). (I9b7e4, b/173502290)
  • Nazwa interfejsu API IntBounds została zmieniona na IntRect, a sam interfejs API został ulepszony. (I1f6ff)
  • Interfejs Snapshot API został zaktualizowany, aby był bardziej zgodny z wytycznymi dotyczącymi interfejsu API, a także ukryć wewnętrzne klasy implementacji z publicznego interfejsu API. (Id9e32)
  • Dodano semantyczne działania rozwijania i zwijania. Dodano expand i halfExpand w ModalBottomSheetState (Ib5064)
  • Metoda Modifier.dragGestureFilter została wycofana. Zamiast tego użyj Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć metody Modifier.draggable do przeciągania po jednej osi (I0ba93, b/175294473).
  • Zmieniliśmy nazwę sekcji Ambients, aby pasowała do nazwy Ambient -> CompositionLocal. Elementy tła miały kiedyś nazwę „AmbientFoo”, a teraz mają nazwę „LocalFoo”. (I2d55d)
  • Wycofany komponent BaseTextField został usunięty. Zamiast tego użyj pola tekstowego podstawowego. (I71368)
  • Zaznaczenie zostało przeniesione do modelu podstawowego. (I7892b)
  • Podobnie jak w przypadku usunięcia kompozytowego komponentu state { 0 } i promocji komponentu remember { mutableStateOf(0) }, usuniemy komponent savedInstanceState { 0 }. Zamiast tego użyj funkcji rememberSaveable { mutableStateOf(0) }, która automatycznie zapisuje i przywraca stan, jeśli typ użyty w MutableState może być przechowywany w pakiecie. Jeśli wcześniej przekazywałeś niestandardowy obiekt zapisywania, teraz musisz użyć nowej przeciążonej funkcji rememberSaveable, która ma parametr stateSaver. Użycie będzie wyglądać tak: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Dodano semantykę hasła dla funkcji ułatwień dostępu (I231ce)
  • Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczyć nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05).
  • Narzędzia emptyContent()(@Composable () -> Unit).orEmpty() zostały wycofane, ponieważ nie mają już żadnego pozytywnego wpływu na wydajność ani wartości (I0484d)
  • snapshotFlowwithMutableSnapshot nie są już eksperymentalne (I6a45f)
  • Rekompilatory można teraz zamknąć. Zamknięte rekompilatory będą kontynuować rekompilację do momentu zakończenia wykonania podprocesów potomnych. Funkcja Recomposer.shutDown została przemianowana na cancel, aby odróżnić ją od funkcji close. (Ib6d76)
  • Nazwa UiSavedStateRegistry została zmieniona na SaveableStateRegistry, a AmbientUiSavedStateRegistry – na AmbientSaveableStateRegistry. Obie zostały przeniesione do pakietu androidx.compose.runtime.saveable. (I30224)
  • Artefakt androidx:compose:runtime:runtime-saved-instance-state został przemianowany na androidx:compose:runtime:runtime-saveable (I6dcac).
  • Wiele starszych interfejsów API wycofanych z użycia w pakiecie ui zostało usuniętych. (I2f2dc)
  • Element compose:runtime-dispatch został wycofany. MonotonicFrameClock znajdziesz teraz w komponencie compose:runtime, a AndroidUiDispatcher – w komponencie compose:ui. (Ib5c36)
  • Klasy Outline.* nie są już klasami danych (I4879e, b/178001427)
  • Usunięto element view.captureToImage() bez zastąpienia. (I7fcd2)
  • Wprowadziliśmy interfejs API ColorMatrix, który służy do modyfikowania wartości RGB treści źródłowych. Przekształciliśmy interfejs API ColorFilter w interfejs i dopasowaliśmy go do implementacji PathEffect. (Ica1e8)
  • Dodaj parametr layoutDirection do metody createOutline obiektu Shape. Umożliwia to tworzenie kształtów uwzględniających kierunek układu. (I57c20, b/152756983)
  • Metoda onImeActionPerformed została wycofana. Zamiast niej używaj metody KeyboardActions (If0bbd, b/179071523)
  • Wprowadziliśmy element InfiniteAnimationPolicy kontekstu coroutine, który będzie stosowany w nieskończonych animacjach. Domyślnie nie jest instalowana żadna zasada, z wyjątkiem testów z użyciem ComposeTestRule. (I50ec4, b/151940543)
  • Zmienna canDrag została usunięta z elementu Modifier.scrollable. (Id66e7, b/175294473)
  • Zmieniliśmy nazwę atrybutu LayoutCoordinates.parentCoordinates na LayoutCoordinates.parentLayoutCoordinates, aby umożliwić użycie nowego atrybutu parentCoordinates. Właściwość parentCoordinates zawiera teraz współrzędne układu modyfikatora nadrzędnego. Dzięki temu można będzie lepiej wykorzystać metody onSizeChanged() i onGloballyPositioned() (Idfbfd, b/177926591).
  • Filtry tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)
  • Metoda unregisterProvider rejestru SaveableStateRegistry została usunięta. Zamiast tego registerProvider() zwraca obiekt SaveableStateRegistry.Entry, którego można użyć do wyrejestrowania (Ic4274, b/178583739)
  • Metoda rememberSavedInstanceState() została przemianowana na rememberSaveable() i przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)
  • Usunięto CoreText i CoreTextField z publicznego interfejsu API.
    • Usunięto przestarzałe przeciążenie SelectionContainer
    • (I99c19)
  • Testy, w których kompozytor jest używany w hierarchiach dodawanych lub usuwanych bezpośrednio w WindowManagerze, są teraz stabilniejsze. (Ie81ed, b/175765614)
  • Usunięto funkcję Recomposer.current(). [Abstract]ComposeView jest teraz domyślnie ustawiona na leniwie tworzone obiekty Recomposer ograniczone do okna, które są zarządzane przez obiekt ViewTreeLifecycleOwner dla okna. Rekompozycja i ticki animacji oparte na metodzie FrameNano są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (I38e11)
  • Recomposer.runningRecomposers udostępnia teraz globalny stan StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwowanie bieżącego stanu kompilacji w trakcie procesu. Używaj tego interfejsu API zamiast Recomposer.current(), który został wycofany. (If8ebe)
  • Saver, listSaver(), mapSaver(), autoSaver zostały przeniesione z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6)
  • EditCommands akceptuje AnnotatedString. Jest to jednak zmiana tylko w interfejsie API, a edytowanie tekstu w wielu stylach nie zostało jeszcze zaimplementowane. (I4c3ea)
  • Czas działania i czas trwania zostały usunięte. (Ib9bf4, b/177420019)
  • CompositionData.asTree() i powiązane interfejsy API zostały przeniesione do osobnego modułu ui-tooling-data i oznaczone jako eksperymentalne (Ic95b8).
  • Parametry RounderCornerShape, CutCornerShape i CornerBasedShape zostały przemianowane z left/right (lewo/prawo) na start/end (początek/koniec), aby umożliwić automatyczne lustrzane odwzorowanie kształtu w kierunku RTL. Parametry AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone na potrzeby przypadków, w których nie jest pożądane automatyczne lustrzane odbicie. (I61040, b/152756983)
  • Interfejs API, do którego kieruje się wtyczka kompilatora Compose, został przebudowany, aby używać interfejsu zamiast konkretnej klasy. Interfejs nie używa już też parametru typu.

    Ta zmiana jest zmianą wewnętrzną, która nie powinna mieć wpływu na zgodność kodu źródłowego, ale powoduje zmianę binarną. (I3b922, b/169406779)

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

Poprawki błędów

  • Widoki kompozytowe umieszczone w hierarchiach widoków, które są elementami podrzędnymi innej kompozycji, zawierają teraz elementy podrzędne swoich elementów nadrzędnych (I92883)
  • Zaktualizowano interfejs API imageFromResource w komponencie, aby umożliwić ponowne użycie pamięci podręcznej zasobów do rysowania podczas wczytywania obiektów ImageBitmap. (If3627, b/178751994)

Wersja 1.0.0-alpha11

28 stycznia 2021 roku

androidx.compose.ui:ui-*:1.0.0-alpha11 został zwolniony. Wersja 1.0.0-alpha11 zawiera te commity.

Zmiany w interfejsie API

  • Element WithConstraints został przerobiony na BoxWithConstraints i przeniesiony do pakietu foundation.layout. (I9420b, b/173387208)
  • Key.DPadUp zostało wycofane. Zamiast tego użyj Key.DirectionUp. (Iab335, b/177954892)
  • Od teraz interfejs właściciela jest wewnętrzny. (If8e35)
  • Dodano interfejs FocusManager.moveFocus(), aby przesuwać fokus za pomocą kodu. (I045cb, b/177681839)
  • Zmiana PopupPositionProvider, aby używać współrzędnych względnych okna, a nie współrzędnych globalnych. Zmiana nazwy parentGlobalBounds na anchorBounds i zmiany windowGlobalBounds na windowSize: IntSize (I2994a)
  • Czas trwania i czas działania zostaną zastąpione wartością Długie milisekundy. Ten krok usuwa zależność od wejścia wskaźnika w tych klasach. (Ia33b2, b/175142755, b/177420019)
  • Klasa AmbientSavedStateRegistryOwner została dodana podobnie jak istniejące klasy AmbientLifecycleOwner i AmbientViewModelStoreOwner (I9a3e8, b/176756365).
  • Zaktualizowano interfejs API grafiki wektorowej, aby obsługiwał analizowanie zastosowanego barwienia w przypadku grafu wektorowego. (Id9d53, b/177210509)
  • Dodano typ narzędzia do zdarzenia PointerInputChange, aby odróżnić urządzenia (Iac787, b/175142755).
  • Zmiana nazwy klasy AmbientWindowManager na AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • wycofane metody dotyczące współrzędnych globalnych i wprowadziliśmy nowe metody dotyczące współrzędnych opartych na oknie; (Iee284)
  • Dodano Modifier.toolingGraphicsLayer, który dodaje modyfikator warstwy graficznej, gdy włączona jest inspekcja. (I315df)
  • Funkcja FocusRequester.createRefs jest teraz oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)
  • Zmiana nazwy SemanticsPropertyReceiver.hidden na invisibleToUser i oznaczenie @ExperimentalComposeUiApi. AccessibilityRangeInfo zostało zmienione na ProgressBarRangeInfo. stateDescriptionRange zostało zmienione na progressBarRangeInfo. AccessibilityScrollState zostało zmienione na ScrollAxisRange. horizontalAccessibilityScrollState zostało zmienione na horizontalScrollAxisRange. verticalAccessibilityScrollState zostało zmienione na verticalScrollAxisRange. (Id3148)
  • Usunięto typ danych PointerInputData i zmodyfikowano typ danych PointerInputChange, aby zawierał on wszystkie pola typu danych PointerInputData. Zdarzenie PointerInputEvent i zdarzenie PointerInputEventData są teraz wewnętrzne, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
  • Zaktualizowano implementację zakresu GraphicsLayerScope, aby obsługiwała gęstość pikseli (DP), umożliwiając konwersję na piksele natywne. (Ied528, b/176819695)
  • Zaktualizowaliśmy interfejs API macierzy, aby stosował kolejność głównych wierszy i zapewniał stałe indeksów, co ułatwia konwersje między różnymi reprezentacjami macierzy, aby dopasować logikę konwersji w ramach frameworku między interfejsami SkMatrix i Matrix4. (I432e6)
  • Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).
  • Przeniesienie funkcji String.fintPrecedingBreak i String.fingFollowingBreak do interfejsu wewnętrznego TextApi. (I657c4)
  • Z publicznego interfejsu API usunięto metodę androidx.compose.ui.util.isSurrogatePair. (Ia9494)
  • Nazwa TransformedText.transformedText została zmieniona na TransformedText.text.
    • TransformedText nie jest już klasą danych (Ie672a).
  • Usunięto data class z tych zajęć:
    • InlineTextContent
    • LocaleList (I605c7)
  • Te klasy nie są już klasami danych:
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • Zmiana metody VisualTransformation na interfejs funkcjonalny (I3bba4)
  • Dodano typ parametru funkcji (I5e1bd)
  • Dodawanie przekształconych granic do węzła InspectorNode (Ice42f)

Poprawki błędów

  • Interfejsy onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect (If760e).
  • Zmiany funkcji fabrycznych dotyczące czcionki, rodziny czcionek lub kroju pisma

    • Dodano funkcje fabryczne, które zaczynają się od wielkiej litery
    • wycofane wcześniejsze funkcje fabryczne z małymi literami na początku,
    • Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
    • Ukryj konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
    • Zmieniono nazwę Font.asFontFamily na Font.toFontFamily (I42aa7).
  • Wprowadziliśmy funkcję ComposeContentTestRule, która rozszerza funkcję ComposeTestRule i definiuje funkcję setContent, która została usunięta z funkcji ComposeTestRule. Dodano metodę fabryczną createEmptyComposeRule(), która zwraca ComposeTestRule i nie uruchamia Activity. Użyj tego polecenia, gdy chcesz uruchomić aktywność podczas testu, np.za pomocą ActivityScenario.launch (I9d782, b/174472899).

  • Funkcja animateAsState została zastąpiona przez animateFooAsState, gdzie Foo to typ zmiennej, której dotyczy animacja, np. Float, Dp, Offset itp. (Ie7e25)

  • Do obrazu i ikony dodano parametr opisu treści. Służy do przekazywania opisu usług ułatwień dostępu (I2ac4c).

  • Usuń displaySize, ponieważ nie należy go używać. Zwykle lepiej jest użyć rozmiaru funkcji onRoot() lub co najmniej rozmiaru okna. (I62db4)

  • Metoda OnSizeChanged zwracała rozmiar zawartości układu. Teraz raportuje rozmiar w swojej pozycji w łańcuchu modyfikatorów. (I36b78, b/177562900)

  • Interfejs emit() i wszystkie jego przeciążenia zostały wycofane i przemianowane na ComposeNode. Interfejsy API są identyczne, ale mają inną nazwę, aby zachować konwencję nazewnictwa w Compose (I4137b).

  • TextFieldValue akceptuje AnnotatedString. Ta zmiana dotyczy tylko interfejsu API, a edytowanie tekstu w wielu stylach nie jest jeszcze możliwe.

    • Usunięto initial z parametrów konstruktora EditingBuffer. (I326d5)
  • Funkcje invalidate i compositionReference() zostały wycofane na rzecz funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)

  • Klasa AnnotatedString została zmieniona tak, aby rozszerzała klasę kotlin.CharSequence. Dlatego długość i podciąg są teraz funkcjami instancji, a funkcje rozszerzenia zostały usunięte. (Iaf429)

  • Observer pamięci zastępuje CompositionLifecycleObserver, a CompositionLifecycleObserver jest teraz wycofany.

    RememberObserver zastępuje CompositionLifecycleObserver z modyfikowaną semantyką i przemianowanymi metodami. Przejście na nowy interfejs API można przeprowadzić automatycznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to zalecana praktyka. Jeśli jednak odwołanie zostało zapamiętane więcej niż raz w kompozycji, funkcja onRemembered jest wywoływana w przypadku każdego odwołania, w którym funkcja onEnter jest wywoływana tylko raz. onEnter został wywołany wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jak WithConstraintsScaffold, co sprawia, że gwarancja pojedynczego wywołania onEnter jest niewiarygodna i została usunięta z RememberObserver.

    RememberObserver dodaje onAbandoned, które jest wywoływane, jeśli instancja RememberObserver zostanie zwrócona z połączenia zwrotnego przekazanego do remember, ale nie została zapamiętana w stanie kompozycji. W związku z tym nigdy nie zostanie wywołane onRemembered. Może się tak zdarzyć, jeśli wyjątek spowoduje przerwanie tworzenia kompozycji przed jego zakończeniem lub jeśli kompozycja zostanie odrzucona, ponieważ stan, dla którego była tworzona, nie jest już aktualny lub nie jest już potrzebny. Jeśli instancja RememberObserver po zalecanej powyżej rekomendacji dotyczącej jednego odwołania śledzi zasób zewnętrzny, zarówno onForgotten, jak i onAbandoned wskazują, że zasób nie jest już potrzebny. Jeśli obiekt śledzi pracę rozpoczętą lub zasoby przydzielone w funkcji onRemembered, można zignorować funkcję onAbandoned, ponieważ nie zostanie ona wywołana, gdy wywołana zostanie funkcja onRemembered. (I02c36)

  • Wycofane operacje arytmetyczne na co najmniej 2 elementach TextUnit. wycofane funkcje TextUnit.Sp i TextUnit.Em na rzecz funkcji rozszerzeń, takich jak Int.sp i Int.em; (I48369)

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

  • Komórka/wiersz z możliwością przewijania zostały wycofane. Jeśli masz dużo treści, które się przewijają, korzystanie z ScrollableColumn jest mniej wydajne niż z LazyColumn, ponieważ za pomocą LazyColumn możemy tylko komponować, mierzyć i rysować widoczne elementy. Aby uniemożliwić użytkownikom korzystanie z nieefektywnych metod, zdecydowaliśmy się wycofać klasy ScrollableColumn i ScrollableRow oraz zachęcić do korzystania z klas LazyColumn i LazyRow. Użytkownicy mogą zrezygnować z zachowania typu lazy i używać modyfikatorów bezpośrednio w ten sposób: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • Nowa metoda fabryczna items(count: Int) dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. Funkcje items(items: List)itemsIndexed(items: List) są teraz funkcjami rozszerzenia, więc musisz je ręcznie importować. Nowe przeciążenia rozszerzenia dla tablic: items(items: Array)itemsIndexed(Array) (I803fc, b/175562574)

  • Zamiast ImeAction.NoAction użyj ImeAction.None

    • Zamiast ImeAction.Unspecified (Ie1bcc) użyj ImeAction.Default
  • Korzystanie z TestCoroutineDispatcher w testach (I532b6)

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

  • Wycofanie przejścia opartego na TransitionDefinition (I0ac57)

  • Typ TextUnitType.Inherit został usunięty. Zamiast tego użyj typu TextUnitType.Unspecified. (I9ff64)

Wersja 1.0.0-alpha10

13 stycznia 2021 r.

androidx.compose.ui:ui-*:1.0.0-alpha10 został zwolniony. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Zmiany powodujące niezgodność

  • Restrukturyzacja wewnętrznego interfejsu API kompilatora umożliwia grupowanie zmian węzłów wygenerowanych w ramach etapu „Zastosuj zmiany” kompozycji po zakończeniu działania wszystkich funkcji @Composable.

    Jest to zmiana zachowania, która może wpłynąć na kod aplikacji, ponieważ węzły nie są już dostępne z interfejsów API eksperymentalnych i wewnętrznych do czasu zastosowania zmian. Zwykle można to obejść, otaczając kod z takimi zależnościami w komponencie SideEffect, aby odłożyć wykonanie kodu do momentu utworzenia i inicjalizacji węzłów. (I018da)

Zmiany w interfejsie API

  • Dodano funkcję Modifier.focusOrder(), która może służyć do określania niestandardowej kolejności przechodzenia przez elementy (I90cf5, b/175899543, b/170155556, b/170155429).
  • Usunięto przestarzałe użycie focusObserver, zamiast niego należy używać onFocusChanged lub onFocusEvent (I3ecb9, b/175156387)
  • Zmiany w interfejsie EditOperations API
    • Zmiana nazwy operacji edycji na EditCommand
    • Dodano sufiks polecenia dla konkretnych implementacji operacji edycji
    • Polecenie edycji nie jest już klasą danych
    • Funkcja EditOperation.process została przemianowana na applyTo.
    • Zmieniono nazwę interfejsu InputEventListener na InputEventCallback.
    • (I0a366)
  • Usunięto nieużywane funkcje PxSquared, PxCubed i PxInverse. Zmiana funkcji Size.center() na właściwość. (I973f7)
  • Moduł ui-test będzie teraz mógł konfigurować tworzenie rekompilacji dla testowanych interfejsów (Ibebd8)
  • Zmodyfikowano funkcję Velocity, aby zawierała elementy składowe i operacje matematyczne. (Ib0447)
  • Zmieniono nazwę @ExperimentalTesting na @ExperimentalTestApi, aby zachować spójność z podobnymi adnotacjami interfejsów eksperymentalnych (Ia4502, b/171464963).
  • Zmieniono nazwę funkcji Color.useOrElse() na Color.takeOrElse() (Ifdcf5).
  • Usunięto nieużywane klasy DpInverse, DpSquared i DpCubed. (I4d62b)
  • Nazwa Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
  • Dodaj funkcję wywołania zwrotnego, aby powiadomić właściciela o zmianie granic węzła layoutu. (I72fd1)
  • Dodano funkcje isSpecified, isUnspecified i useOrElse dla klas inline z nieokreśloną stałą. (I93f7b, b/174310811)
  • Rozszerzenie interfejsów API ComposeView [Abstract]w celu umożliwienia recyklingu widoków opartych na Compose, a także usunięcia ich kompozycji, aby można było je ponownie utworzyć w późniejszym czasie. Dodać interfejsy API do instalowania i odnajdywania rekompilujących komponentów ograniczonych do okna oraz odniesienia do kompozycji do tworzenia podrzędnych kompozycji.

    Dodaj ViewCompositionStrategy do konfigurowania strategii usuwania kompozycji [Abstract]ComposeViews; domyślne zachowanie to usunięcie przy odłączaniu okna. (I860ab)

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

  • Usunięto interfejs API toStringAsFixed, ponieważ można go zastąpić bezpośrednim użyciem metody String.format. (Iaba6b)

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

  • Przeniesiono klasę nativeClass do modułu ui i uczyniono ją wewnętrzną. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast tego używać „is MyClass”. (I4f734)

  • Metody Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj interfejsów Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)

  • Wprowadziliśmy SelectionRegistrar.notifySelectableChange, aby powiadamiać o aktualizacjach elementów dostępnych w SelectionManager. (I6ff30, b/173215242)

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

  • Wycofana klasa TestUiDispatcher. Zamiast tego użyj Dispatchers.Main (Ic171f, b/175385255).

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

  • Zmiany w interfejsie VisualTransformation API

    • Zmieniono nazwę klasy OffsetMap na OffsetMapping.
    • Zmieniono nazwę klasy OffsetMapping.identityOffsetMap na OffsetMapping.Identity.
    • Element PasswordTransformation nie jest już elementem klasy danych
    • Przeniesienie mapowania offsetu do oddzielnego pliku
    • (I0bdf3)
  • Zmieniono nazwę pozycji na DpOffset i usunięto funkcję getDistance() (Ib2dfd).

  • Zmieniono fun Dp.isFinite() na val Dp.isFinite (I50e00).

Poprawki błędów

  • Recomposer udostępnia teraz przepływ danych w bieżącym stanie, co umożliwia monitorowanie jego aktywności i aktywności powiązanych efektów. (Ifb2b9)
  • Do natywnego zdarzenia keyEvent można teraz uzyskać dostęp za pomocą keyEvent.nativeKeyEvent (I87c57, b/173086397)
  • Wartość animate() została zastąpiona wartością animateAsState(), która zwraca wartość State<T> zamiast T. Dzięki temu można uzyskać lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczytana jest wartość State. (Ib179e)
  • Dodaj interfejs API roli semantycznej i dodaj parametr Role do klikalnego, możliwego do wybrania i przełączalnego SemanticsModifier. Zmieniono Modifier.progressSemantics, aby można było go używać również w Sliderze. (I216cd)
  • Nowy interfejs API oparty na korobonach Animatable, który zapewnia wzajemną wykluczalność animacji.
    • Nowy obiekt DecayAnimationSpec do obsługi animacji wygaszania wielowymiarowej
    • (I820f2, b/168014930)

Wersja 1.0.0-alpha09

16 grudnia 2020 roku

androidx.compose.ui:ui-*:1.0.0-alpha09 został zwolniony. Wersja 1.0.0-alpha09 zawiera te commity.

Zmiany w interfejsie API

  • Wycofana metoda KeyEvent.Alt została teraz usunięta. Zamiast tego użyj KeyEvent.isAltPressed. (Idd695)
  • Interfejsy Modifier.keyInputFilter i Modifier.previewKeyInputFilter zostały wycofane. Zamiast nich używaj interfejsów Modifier.onKeyEvent i Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
  • Metoda Modifier.focusObserver została wycofana. Zamiast tego użyj metody Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
  • W przypadku zawieszania interfejsów API związanych z wskaźnikiem zmieniono nazwy: HandlePointerInputScope na AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)
  • Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga wyrażenia zgody (I0a1ec)
  • Dodanie deklaracji destrukturyzacji w celu utworzenia instancji FocuSRequester (I35d84, b/174817008)
  • accessibilityLabel zmieniono na contentDescription. accessibilityValue zmieniono na stateDescription. (I250f2)
  • Z interfejsu API zawieszania wskaźnika usunięto zdarzenia niestandardowe (Ia54d5, b/175142755)
  • Wprowadziliśmy kilka nowych funkcji w SelectionRegistrar i zmieniliśmy nazwę funkcji onPositionChange na notifyPositionChange. (Ifbaf7)
  • Więcej elementów LayoutNode oznaczonych jako wewnętrzne (I443c6)
  • Dodano informacje o układzie, aby były używane przez narzędzia i podczas testowania (I9b190).
  • AndroidOwner made internal (Ibcad0, b/170296980)
  • Usunięto adnotację ExperimentalPointerInput (Ia7a24)
  • Dodano system przewijania zagnieżdżonego. Więcej informacji znajdziesz w funkcji Modifier.nestedScroll (I36e15, b/162408885).
  • Funkcja subcomposeInto(LayoutNode) została oznaczona jako wewnętrzna (Id724a)
  • Interfejs Applier został zmieniony, aby uprościć tworzenie drzew od dołu do góry zamiast odwrotnie.

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

    Dodano nową metodę insertBottomUp().

    Aplikator wstawia węzły do drzewa, które modyfikuje, za pomocą funkcji insertTopDown() lub insertBottomUp(), w zależności od tego, która z nich działa lepiej.

    Niektóre drzewa, np. LayoutNodeView, są znacznie wydajniejsze w budowaniu od dołu do góry niż odwrotnie. Przed tą zmianą implementacja metody od dołu wymagała użycia zbioru wstawek, które trzeba było kopiować do każdego miejsca, w którym była potrzebna konstrukcja od dołu ze względu na wydajność. Ta zmiana zastępuje Applier przez insertBottomUp(), aby tworzyć drzewo od dołu do góry, oraz insertTopDown(), aby tworzyć drzewo od góry do dołu. (Icbdc2)

  • Do właściwości AndroidDialogProperties dodano właściwości dismissOnBackPress i dismissOnClickOutside. Te parametry umożliwiają skonfigurowanie, kiedy zostanie wywołana funkcja lambda onDismissRequest okna dialogowego. (If5e17)

  • Dodano interfejs API painterResource do obsługi ładowania obiektów Painter z nieprzezroczystym ładowaniem z formatów zasobów rastrowych (np. PNG) lub obiektów VectorDrawable. Użytkownicy nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponencie obrazu lub modyfikatorze paintera. (I2c703, b/173818471)

  • Dodano funkcję Modifier.clearAndSetSemantics, która służy do wyczyszczania semantyki potomków i ustawiania nowej semantyki. (I277ca)

  • Przeniesienie ContentDrawScope do modułu ui-graphics, aby był on razem z DrawScope. (Iee043, b/173832789)

  • Wprowadziliśmy interfejs API PathEffect Graphics, aby udostępnić różne wzory obrysowanych kształtów. Wycofane użycie efektu NativePathEffect na rzecz oczekiwanego lub rzeczywistego wdrożenia PathEffect. (I5e976, b/171072166)

  • Dodano do Compose interfejsy IdlingResource jako obsługiwaną przez Compose wersję zasobów nieaktywnych w Espresso. Można je zarejestrować i wyrejestrować za pomocą reguły testowej (I433f3).

  • Usunięto globalne rejestrowanie i usuwanie ComposeIdlingResource oraz globalne rejestrowanie i usuwanie zegara w ComposeIdlingResource (I32660)

Poprawki błędów

  • Lambda w modyfikatorach przesunięcia zwraca teraz IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
  • Usunięto klasy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia.

    Dodaliśmy obiekty CompositionData i CompositionGroup jako zamiennik interfejsu ui-tooling API do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ zawierają informacje w postaci nieprzetworzonej, które interfejs ui-tooling API interpretuje (I31a9c).

  • Funkcja ShaderBrush została przerobiona, aby tworzyć instancję shadera w trybie lazy, gdy dostępne są informacje o wymiarach środowiska rysunku. Jest to przydatne do definiowania gradientów, które zajmują pełne granice rysowania kompozytowego w czasie tworzenia kompozycji, bez konieczności implementowania niestandardowych implementacji modyfikatora rysowania.

    wycofane interfejsy API konstruktora funkcji gradienta na rzecz metod fabrycznych obiektu Gradient; (I511fc, b/173066799)

  • Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego użyj LazyColumn i LazyRow (I5b48c)

  • przestarzały BuildCompat.isAtLeastR (Idb37e);

  • Dodano funkcję fabryki buildAnnotatedString do tworzenia obiektów AnnotatedString. Wycofana funkcja annotatedStringBuilder. (Idfe0b)

  • Usunięto rozszerzone metody typu Float i Double służące do konwertowania wartości na radiany. Przeniesiono ją do funkcji prywatnej w ramach implementacji PathParser, która była jedynym miejscem, w którym była używana (I25f52).

Wersja 1.0.0-alpha08

2 grudnia 2020 r.

androidx.compose.ui:ui-*:1.0.0-alpha08 został zwolniony. Wersja 1.0.0-alpha08 zawiera te commity.

Zmiany w interfejsie API

  • Dodaj działanie semantyczne Odrzuć (I2b706)
  • Przeniesienie interfejsów API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, aby uwzględnić aliasy typów i metody pomocnicze, które ułatwiają migrację z nieaktualnych interfejsów API do bieżących. (Id6044, b/173834241)
  • Zmieniono nazwę Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowano też powiązane klasy do GraphicsLayer zgodnie z opiniami na temat interfejsu API. (I0bd29, b/173834241)
  • Dodano nowe metody placeable.placeWithLayer() i placeable.placeRelativeWithLayer(), które umożliwiają umieszczanie elementów podrzędnych za pomocą niestandardowych układów i modyfikatorów układu z dodatkiem warstwy graficznej do rysowania. Dzięki temu możemy najpierw zoptymalizować odświeżanie, aby nie trzeba było ponownie rysować zawartości podrzędnego elementu. Po drugie, możemy zastosować transformacje rysowania dla podrzędnego elementu (Ibd8f6, b/170296989, b/171493718, b/173030831).
  • Element <T> został usunięty z deklaracji SubcomposeLayout. Możesz go używać bez określania typu. (Ib60c8)
  • Dodano interfejsy API Modifier.scale/rotate do ułatwienia korzystania z drawLayer.
    • Zmieniono nazwę Modifier.drawOpacity na Modifier.alpha
    • Nazwa Modifier.drawShadow została zmieniona na Modifier.shadow (I264ca, b/173208140)
  • Ustawienie pól uptime i position w danych PointerInputData tak, aby nie mogły być puste. (Id468a)
  • Motyw MaterialTheme teraz ustawia prawidłowe kolory uchwytów i tła zaznaczenia. Aplikacje niebędące w stylu Material mogą ręcznie używać kolorów AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
  • Dodano WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywne, oraz WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
  • Zaktualizowano interfejs API TransformOrigin, aby zawierał składnię destrukturyzacji zwracającą pivotFractionXpivotFractionY jako component1component2 (If43c4, b/173586560)
  • Dodano sprawdzanie lint pod kątem nazw i pozycji parametrów funkcji kompozytowych lambda, aby sprawdzić zgodność z wytycznymi Compose. Zgodnie z instrukcjami i sprawdzaniem błędów niektóre interfejsy API, które używają nazwy children jako nazwy funkcji lambda na końcu, zostały przeniesione do content. (Iec48e)
  • Dodano interfejs API do sprawdzania, czy podczas wysyłania zdarzenia klawiszowego zostały naciśnięte klawisze Alt, Ctrl, Meta lub Shift. (I50ed9)
  • Dodano nową przeciążoną metodę Modifier.drawLayer(). Blok lambda jest wykonywany w ramach nowego zakresu GraphicsLayer, w którym definiujesz parametry warstwy w sposób umożliwiający pominięcie ponownego składania i układania podczas zmiany stanu. Modyfikator DrawLayerModifier jest teraz wewnętrzny w ramach przygotowań do przeniesienia jego logiki do metody placeable.placeWithLayer() w klasie LayoutModifier (I15e9f, b/173030831).
  • wycofane ambienty o nazwach zawierających sufiks Ambient i zastąpione nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi ambientów i interfejsu Compose API; (I33440)
  • Element sterujący androidx.compose.ui.text.Typeface został przeniesiony do androidx.compose.ui.text.font.Typeface (Ic2b81)
  • Argument semantyczny mergeAllDescendants został przemianowany na mergeDescendants. (Ib6250)
  • Nowy interfejs API do wykrywania gestów przeciągania, który zawiesza kursor, w tym interfejs API do obsługi gestów, w tym blokowanie orientacji. (Icef25)
  • Zmiana nazwy klasy VectorAsset na ImageVector. Przeniesienie i zmiana nazwy klasy VectorAsset na Builder, aby była to klasa wewnętrzna klasy ImageVector zgodnie z wytycznymi dotyczącymi interfejsu API. Dodano alias typu VectorAssetBuilder, aby umożliwić linkowanie do ImageVector.Builder w celu zapewnienia zgodności. (Icfdc8)
  • Zmieniono nazwę klasy ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
  • Dodaj parametr zIndex do metody place() w klasie PlacementScope, aby funkcja Modifier.zIndex() działała jako modyfikator układu, a dowolny niestandardowy układ mógł ustawiać wartości zIndex dla swoich elementów bezpośrednio w bloku umieszczania (I711f7, b/171493718).
  • Przeniesienie właściwości semantycznych z warstwy podstawowej do warstwy interfejsu użytkownika (I6f05c)
  • Wycofaj place(Offset) i placeRelative(Offset). Zamiast tego użyj przeciążeń z przesunięciem int (I4c5e7)
  • Wycofane interfejsy API zostały usunięte: Modifier.onPositioned został usunięty, użyj Modifier.onGloballyPositioned. Funkcja Modifier.onDraw została usunięta. Użyj funkcji Modifier.onDrawBehind. Modifier.plus został usunięty, użyj Modifier.then. Element Color.Unset został usunięty. Użyj elementu Color.Unspecified. Klasa PxBounds została usunięta. Zamiast niej używaj klasy Rect. (Ie9d02, b/172562222)
  • Interfejs wyrównywania został zaktualizowany i stał się funkcjonalny. (I46a07, b/172311734)
  • Dodano wykrywanie gestów dla kliknięcia, kliknięcia dwukrotnego, przytrzymania i wskazania przy użyciu nowego wskaźnika zawieszenia. Dodaliśmy też kilka narzędzi, które ułatwiają deweloperom pisanie własnych detektorów gestów. (I00807)
  • Nazwa id została zmieniona na layoutId w przypadku LayoutIdParentData. Nazwa Measurable.id została zmieniona na Measurable.layoutId. (Iadbcb, b/172449643)
  • Nowy mechanizm wykrywania gestów wielodotykowych, w tym pomocników do wykrywania obracania, powiększania i przesuwania. (Ic459d)
  • Wprowadziliśmy interfejsy SweepGradientShader i SweepGradientBrush. (Ia22c1)
  • Kontrola czasu w testach (TestAnimationClock i jego użycia) jest teraz eksperymentalna (I6ef86, b/171378521).
  • Dodaj interfejsy API do przewijania opartego na korobonach:

    Dodaje metody LazyListState.snapToItem i LazyListState.smoothScrollBy, a także interfejsy API niskiego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają zawieszony interfejs do sterowania przewijaniem, który czeka, aż przewijanie się zakończy, zanim zwróci wynik. (Ie5642)

  • W ustawieniu podstawowym dodano potrzebę związaną z elementem Modifier.focusable. Dzięki temu możesz dodać do komponentu zachowanie polegające na skupianiu uwagi z zachowaniem odpowiedniej semantyki i dostępności. (I41eb9, b/152525426, b/162865824)

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

  • AndroidComposeTestRule może teraz akceptować niestandardowe inicjatory aktywności (Ib8288, b/153623653, b/154135019).

  • Interfejs TextLayoutResult.getLineVisibleEnd został wycofany. W zamian TextLayoutResult.getLineEnd ma teraz nowy parametr visibleEnd. (I73282)

  • Zaktualizowany interfejs TextFieldValue API

    • ustawienie TextFieldValue.composition tylko do odczytu
    • usunięto wyjątek wywołany z powodu nieprawidłowego zakresu wyboru (I4a675, b/172239032)
  • Obsługa TtsAnnotation dla mechanizmu zamiany tekstu na mowę. (I54cc6)

  • Nowe interfejsy API do uruchamiania animacji w korobodach (Ied662)

Poprawki błędów

  • Zmieniliśmy nazwę parametru alignment w sekcji Box na contentAlignment. (I2c957)
  • Modyfikatory offsetPx zostały przemianowane na offset. Teraz zamiast stanu przyjmują one parametry lambda. (Ic3021, b/173594846)
  • Dodano parametr resetInput do metody TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947).
  • Dodano sprawdzanie lint dla parametrów modyfikatora w funkcjach kompozytowych. Ten test sprawdza, czy nazwa, typ zwracanej wartości, wartość domyślna i kolejność parametrów są zgodne z wytycznymi dotyczącymi tworzenia kodu. (If493b)
  • Tymczasowo dodano opcję, która pozwala sterować TestAnimationClock za pomocą MonotonicFrameClock (I1403b, b/173402197).
  • Dodano owijacz czcionek Androida. Możesz wczytać czcionkę Androida za pomocą funkcji typeface, np. typeface(Typeface.DEFAULT). Zmieniono też nazwę z typefaceFromFontFamily() na typeface() (I52ab7).
  • Dodano sprawdzanie lint, aby sprawdzić, czy funkcje fabryki modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, aby można je było płynnie łączyć. (I07981)
  • Usuwanie starego modułu testu UI i jego zastępników (I3a7cb)
  • Recomposer nie akceptuje już EmbeddingContext; wymagane zależności harmonogramu są pobierane z effectCoroutineContext. Interfejs FrameManager został wycofany. Integracje z platformami powinny inicjować własne globalne przetwarzanie zrzutów. (I02369)
  • Przekazywanie informacji o stylu do węzła ułatwień dostępu. (If5e8d)
  • Aby zachować spójność z innymi jednostkami, nazwa TextUnit.Inherit została zmieniona na TextUnit.Unspecified. (Ifce19)

Wersja interfejsu Compose 1.0.0-alpha07

11 listopada 2020 roku

androidx.compose.ui:ui-*:1.0.0-alpha07 został zwolniony. Wersja 1.0.0-alpha07 zawiera te commity.

Zmiany w interfejsie API

  • Wprowadziliśmy klasę inline ScaleFactor, aby reprezentować czynniki skalowania dla osi poziomej i pionowej niezależnie od siebie w celu obsługi niejednolitego skalowania.
    • Dodano metodę computeScaleFactor do ContentScale.
    • Dodano ContentScale.FillBounds, aby wykonać niejednolite skalowanie w celu rozciągnięcia granic src, tak aby wypełniały one całkowicie obszar docelowy.
    • Dodano metody operatora do obliczania parametrów ScaleFactor za pomocą parametrów Size.
    • (Ic96a6, b/172291582)
  • Dodano fabryki BiasAlignment i BiasAbsoluteAlignment do tworzenia wyrównania. (Iac836, b/169406772)
  • Zezwalanie deweloperowi na wymuszenie wyłączenia fokusa. (I90372)
  • Naprawiono błąd, który powodował, że nie była wyświetlana wysokość w przypadku widoków w edytorze. (If7782)
  • Utworzony interfejs API onDrawBehind w ramach ContentDrawScope, aby pasował do konwencji nazewnictwa Modifier.drawBehind. (I4fc3a, b/171955269)
  • Dodawanie obsługi odległości kamery w celu uzupełnienia transformacji 3D (obrotX/obrotY) w interfejsach API warstw. (I40213, b/171492100)
  • Dodano SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Można teraz używać komponentu podrzędnego kompozyturka bez dodawania @OptIn (I708ad)
  • FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
  • Usunięto przezroczystość z modyfikatora drawShadow(), ponieważ wprowadzała ona zamieszanie. (I82c62, b/171624638)
  • MeasureResult został przeniesiony z 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 przestarzałą metodę FocusState2 (I686cb, b/168686446)
  • ZIndexModifier jest teraz wewnętrzny (I1808b, b/171493718)
  • Zmieniono typ zwracany przez metodę lerp w parametrach Size, aby zwracała niezerową wartość Size, co pozwala uniknąć niepotrzebnego zaokrąglenia. (Ib0044)
  • Dodano TestMonotonicFrameClock do testowania kodu, który korzysta z MonotonicFrameClock w Compose do oczekiwania na zdarzenia dotyczące ramki kompozytowania za pomocą runBlockingTest w kotlinx-coroutines-test (I4402f).
  • Usunięto GestureScope.localToGlobal (I15299, b/171462785).
  • Dodano narzędzie do znajdowania 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

  • captureToBitmap przeniesiono do captureToImage. (I86385)
  • Komponent foundation.Text został wycofany i zastąpiony komponentem material.Text. Interfejs API tekstowy podstawowy, który nie używa wartości z motywu, znajdziesz w bibliotece androidx.compose.foundation.BasicText. (If64cb)
  • Zaktualizuj pola tekstowe, aby akceptowały KeyboardOptions (Ida7f3)
  • Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
  • Przeniesienie KeyboardType i ImeAction do KeyboardOptions (I910ce)
  • Opcja provideDefault została dodana jako alternatywa dla opcji provideAmbients i może służyć do określania wartości ambients, które będą ustawiane tylko wtedy, gdy nie ma jeszcze żadnej wartości ambients. (Id6635, b/171024925)
  • Komponent BaseTextField został wycofany. Zamiast tego użyj pola tekstowego podstawowego. (I896eb)
  • Wprowadzenie modułu ui-test-junit4 (Ib91f8)
  • Nazwa relativePaddingFrom została zmieniona na paddingFrom. Dodano modyfikator paddingFromBaseline, który ułatwia określanie odległości od granic układu do linii bazowej tekstu. (I0440a, b/170633813)
  • Zadanie uruchamiane zostało przemianowane na efekt uruchamiania w celu zachowania spójności z interfejsami SideEffect i DisposableEffect. Aby zachęcić do stosowania sprawdzonych metod, nie zezwalamy na używanie LaunchedEffect bez parametrów podmiotu. (Ifd3d4)
  • Wprowadziliśmy zasoby, które można łączyć i które są ponownie składane po zaktualizowaniu konfiguracji. (I6387c, b/167352819)
  • Recomposer wymaga teraz kontekstu coroutine w czasie tworzenia (Ic4610)
  • Suma wartości zIndex, gdy zastosowano wiele funkcji Modifier.zIndex(). Wcześniej wygrywała pierwsza. (Ic514c, b/170623936)
  • Zmiany w wewnętrznej implementacji SlotTable, które nie powinny mieć wpływu na publiczny interfejs API. (If9828)
  • Dodano opcję autokorekty IME w klawiaturze (I57b8d)
  • androidx.ui.test przeniesione do androidx.compose.ui.test (I9ffdb)
  • Usunięto KeyboardOptions.toImeOptions z publicznego interfejsu API. (Ic2e45)

Darowizna zewnętrzna

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

Wersja 1.0.0-alpha06

28 października 2020 r.

androidx.compose.ui:ui-*:1.0.0-alpha06 został zwolniony. Wersja 1.0.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • Recomposer jest teraz elementem CompositionReference i prawidłowym elementem nadrzędnym kompozycji. Wyraźny Recomposer jest teraz wymagany w mniejszej liczbie miejsc. (I4036f)
  • Wycofaj VectorPainter na rzecz rememberVectorPainter, aby lepiej wskazać, że interfejs API do komponowania wewnętrznie korzysta z funkcji „remember”, aby przechowywać dane w ramach kompozycji. (Ifda43)
  • Zaktualizowano interfejs Modifier.drawWithCache API, aby udostępnić ContentDrawScope jako zakres odbiorczy zamiast DrawScope, co umożliwia implementacjom możliwość zmiany kolejności poleceń rysowania. Jest to przydatne w przypadku stosowania mieszania lub zabarwiania, gdy piksele treści muszą zostać najpierw wyrenderowane, aby można było prawidłowo zastosować odpowiedni algorytm trybu mieszania. (Ie7ec8)
  • Przenoszenie SimpleContainer do PopupTestUtils.kt (I78c57)
  • Klasa danych ConsumedData nie jest już klasą danych. Szczegóły (I1737f) znajdziesz na stronie https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219
  • Popraw pozycję uchwytu RTL. (I6e1e0)
  • Zmieniono zakresy DrawScope i ContentDrawScope na interfejsy zamiast abstrakcyjnych klas.
    • Utworzono implementację CanvasDrawScope w DrawScope
    • Przekształcono implementacje DrawScope, aby zamiast nich używać CanvasScope.
    • Utworzono DrawContext do owijania zależności dla DrawScope
    • Usunięto wycofane metody w DrawScope (I56f5e).
  • Zmiana powodująca przerwanie działania: usunięto wartość zwracaną z funkcji PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o konsumpcji. Zamiast zwracać dane z PointerInputFilter.onPointerEvent(...), możesz teraz zmienić dane o konsumpcji przekazywanych zdarzeń PointerEvents. (I6acd0)
  • MeasureScope i IntrinsicMeasureScope zostały przekształcone w interfejsy. (I1a087, b/170461665)
  • Funkcja scalania dla AlignmentLine została ukryta. (I9da1a, b/170612900, b/170611568)
  • Dodanie możliwości określania informacji o inspektorze w składanym modyfikatorze (Idee08, b/163494569)
  • Dodano opcję Zaznacz wszystko w menu wyboru (Ief02b)
  • Zaktualizowano metodę DrawTransform.rotate, aby przyjmowała domyślny parametr pivot o wartości center, zgodnie z dokumentacją.
    • Zaktualizowano DrawScope.rotateRad, aby używać przesunięcia punktu obrotu, co odpowiada innym metodom przekształcenia.
    • Wycofana metoda DrawScope.rotateRad, która używała zmiennych typu float do współrzędnych x i y osi obrotu.
    • (Iffcbb, b/170434992)

Poprawki błędów

  • Sprawdzanie lint interfejsu API pod kątem braku metody gettera pasującego do Buildera jest włączone w androidx (I4bbea, b/138602561).
  • Dodaj test. (I6b8ae)
  • Włącz przejścia w komponencie ComposeTestRule. Usuń z niego opcję włączania migającego kursora. (If0de3)
  • Dodano opcję IME KeyboardCapitalization (I8ac38)
  • Dodano opcję klawiatury jednowierszowej do CoreTextField (I72e6d).
  • Przenoszenie SimpleContainer do pliku PopupTestUtils.kt (I65c3e)
  • Zmieniliśmy nazwę interfejsu API Radius na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w komponowaniu. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie narożników są ograniczane do zera. (I130c7, b/168762961)
  • Ulepszona współpraca z Androidem dzięki ciągłemu wysyłaniu zdarzeń MotionEvents do podrzędnych widoków Androida, które zwracają wartość false dla zdarzenia onTouchEvent we wszystkich przypadkach oprócz ACTION_DOWN (I94c5a, b/170320973)
  • Funkcja Box została zmieniona na funkcję wbudowaną. (Ibce0c, b/155056091)

Darowizna zewnętrzna

  • Obsługa różnych wersji językowych w przypadku AnnotatedString.capitalizeAnnotatedString.decapitalize (I4aa7f)

Wersja 1.0.0-alpha05

14 października 2020 r.

androidx.compose.ui:ui-*:1.0.0-alpha05 został zwolniony. Wersja 1.0.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Dodaj DSL do określania informacji o inspektorze (Ic9a22)
  • Przesuń opcję „Przytrzymaj” do sekcji „Tekst”. (Iff2bc)
  • Eksperymentalny modyfikator Modifier.pointerInput zawieszający modyfikator wejścia (Ia77d2)
  • Dodano działania związane z ułatwieniami dostępu związane z kopiowaniem/wklejaniem/wycinaniem (I6db4f)
  • Usunięto publiczny konstruktor klasy AndroidOwner (Iacaef).
  • Pop-upy i okna dialogowe dziedziczą teraz flagę FLAG_SECURE od okna nadrzędnego. Dodano też opcję konfiguracji tego parametru w sposób jawny (I64966, b/143778148, b/143778149).
  • Dane o konsumpcji są teraz możliwe do modyfikacji. Ponadto wywołania funkcji rozszerzenia, które obsługują konsumpcję, nie zwracają już nowego obiektu PointerInputChange, lecz zamiast tego modyfikują podany obiekt PointerInputChange.

    Jest to pierwszy z 2 etapów procesu, który umożliwia zmianę danych zdarzenia PointerEvent, tak aby inne dane wskaźnika nie mogły być edytowane przez kod użytkownika. Drugim krokiem będzie usunięcie typu danych List<PointerInputChange> z tabeli PointerInputFilter.onPointerEvent(...). (Id067e)

  • Wyłącz zaznaczenie w Tekście i demonstrację. (Ie7e97)

  • Zrobiono z onGloballyPositioned funkcję wbudowaną (I15830)

  • Zmiana nazwy metody OnPositionedModifier na OnGloballyPositionedModifier oraz metody onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)

  • Do właściwości Owner dodano właściwość hasPendingMeasureOrLayout, która informuje, czy właściciel ma jakieś oczekujące zadania związane z układem. (I3d9f8, b/169038599)

  • Dodano interfejs API do programowego wyczyszczania fokusa (Ie1dc2, b/161487952).

  • Użytkownik PointerInputFilter.onPointerInput(...) został usunięty. Należy użyć atrybutu PointerInputFilter.onPointerEvent(...). (I6f04a)

  • Zmiany dotyczące rozmiaru

    • Usunięto Size.getFlipped
    • Usunięto Size.rem
    • Usunięto Size.truncDiv (Ief44d, b/169790720).
  • W ramach standaryzacji wartości sygnalizacyjnych klas wbudowanych zmień nazwę Color.Unset na Color.Unspecified, aby zachować spójność z innymi klasami wbudowanymi (I97611, b/169797763).

  • Wprowadzono TextOverflow.None. Gdy wartość overflow jest równa None, Text nie będzie już obsługiwać przepełnienia i będzie przekazywać rzeczywisty rozmiar do LayoutNode. (I175c9, b/158830170)

  • Parametr zakresu w funkcji AnnotatedString.Builder.addStringAnnotation został przemianowany na tag w celu zachowania spójności interfejsu API. (I7c8cb)

Poprawki błędów

  • Wydajność przewijania kolumny/wiersza typu Lazy jest ulepszona dzięki mniejszemu obciążeniu podkompozycji przy każdym przewijaniu. Do klasy Composition dodano nową metodę hasInvalidations(). Metoda hasPendingChanges() z kompozycji została przemianowana na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371).
  • Zaktualizowano parametry Size.Unspecified, aby były to wartości Float.NaN zamiast Float.POSITIVE_INFINITY. Zaktualizowano implementacje usługi Painter, aby sprawdzały rozmiar Size.Unspecified oraz nieskończone rozmiary. (I95a7e)
  • Kolejność wywołań place() w niestandardowych układach określa teraz kolejność rysowania elementów podrzędnych (Ibc9f6)
  • Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907)
  • Dodano szablony dla klas Androida, które są dostępne na starszych platformach, aby uniknąć używania odbicia lustrzanego, o ile to możliwe. (Ia1790)
  • Naprawiono błąd: jeśli aplikacja była tłumaczona przez klawiaturę ekranową, współrzędne wskaźnika wejściowego były nieprawidłowe. (Ic4cec, b/163077821)

Wersja 1.0.0-alpha04

1 października 2020 roku

androidx.compose.ui:ui-*:1.0.0-alpha04 został zwolniony. Wersja 1.0.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Dodano OwnerScope, aby umożliwić zbieranie zakresów obserwacji układu i rysowania, gdy nie są już ważne. (Ic4cf8)
  • Dodano metody OnRemeasuredModifier i onSizeChanged(), aby odbierać wywołania zwrotne po ponownym zmierzeniu układu treści i odpowiednio po zmianie jego rozmiaru. (I657cf, b/154108792)
  • Dodaj działanie semantyczne długiego kliknięcia (I6281b, b/156468846)
  • Usługa FocusManager jest teraz prywatna. (I7872f)
  • Zaktualizowano implementację, aby utworzyć dedykowaną implementację DrawCacheModifier zamiast dodawać opcjonalne właściwości do DrawModifier.

    Zaktualizowano dokumentację dotyczącą różnych metod (Ibd166)

  • Aby uniknąć tworzenia obiektów, ustaw zakres tekstu w tekście. (Id034b)

  • Wartości PlacementScope#parentWidth i PlacementScope#parentLayoutDirection nie można już odczytać z bloku miejsca docelowego w ramach układu niestandardowego. (Icc1ae, b/168295623)

  • dodaj stan AccessibilityScrollState do właściwości semantycznych. (Ifeda9)

  • Wprowadziliśmy metodę Modifier.drawWithCache, aby umożliwić tworzenie obiektu rysowania, który warunkowo odtwarza zależności zależne od informacji o rozmiarze lub stanie (I376dc).

  • Element ParagraphConstraints został usunięty. Szerokość jest teraz przekazywana bezpośrednio do elementu Paragraph. (Ica712)

Poprawki błędów

  • Zaktualizowano wiele interfejsów API do obsługi grafiki.
    • Zaktualizowane interfejsy API do skalowania i obrotu, aby używały pojedynczego parametru Offset zamiast oddzielnych parametrów typu float dla współrzędnych x/y w DrawScope i DrawTransform
    • Usunięto metody Rect.expandToInclude i Rect.join
    • Zaktualizowano dokumentację Radius, aby zawierała informacje o elipsy w dodatku do eliptyczne
    • Dodano dokumentację, aby wskazać, że publicznego konstruktora w ramach klasy Inline Radius nie należy wywoływać bezpośrednio, ale zamiast tego instancje obiektów Radius należy tworzyć za pomocą konstruktorów funkcji.
    • Usunięto interfejsy API RoundRect do zapytań topRight, bottomRight, bottomCenter itp.
    • Wycofanie funkcji Rect.shift na rzecz funkcji Rect.translate
    • Usunięto interfejsy API RoundRect.grow i Rect.shrink
    • Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect.
    • Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Zmieniono nazwę RoundRect.longestSide na RoundRect.maxDimension.
    • Zmieniono nazwę RoundRect.shortestSide na RoundRect.minDimension.
    • Zmiana funkcji RoundRect.center na właściwość zamiast funkcji
    • Zaktualizowano konstruktor RoundRect, aby używał właściwości Radius zamiast poszczególnych parametrów wartości promienia x/y.
    • Usunięto interfejsy API dotyczące rozmiaru, które zakładały, że jest to prostokąt z początkiem w punkcie 0,0.
    • Dodano do Radius interfejs API do niszczenia
    • Przeniesienie różnych funkcji rozszerzenia RoundRect do właściwości
    • (I8f5c7, b/168762961)
  • Element foundation.Box został wycofany. Zamiast tego użyj elementu foundation.layout.Box. (Ie5950, b/167680279)
  • Grupa została przemianowana na Box. Dotychczasowe pole Box zostanie wycofane na rzecz nowego pola Box w komponencie compose.foundation.layout. Nowa ramka układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Wcześniej działała ona podobnie jak kolumna. (I94893, b/167680279)
  • Parametry dekoracji pudełka zostały wycofane. Jeśli chcesz użyć dekoracji lub wypełnienia w pudełku, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • Zaktualizowano wiele interfejsów API do obsługi grafiki.
    • Zaktualizowano interfejsy API DrawScope o metody przekształceń ograniczonych zakresem, aby wskazać, że przekształcenie jest stosowane tylko w ramach wywołania zwrotnego i usuwane po jego wywołaniu.
    • Zaktualizowano dokumentację clipPath, aby odwoływała się do ścieżki zamiast zaokrąglonego prostokąta
    • Naprawiono odstępy w dokumentacji parametru clipPath
    • Zmieniono nazwę metody DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr size
    • Zmieniono nazwy parametrów dx/dy w metodie inset na horizontal i vertical.
    • Dodano przeciążenie wstawki, które zapewnia tę samą wartość wstawki dla wszystkich 4 ograniczeń
    • Usunięto dokumentację dotyczącą metody wstawienia, która wskazywała, że wstawienie zostanie zastosowane do wszystkich 4 stron.
    • Zaktualizowano dokumentację klasy Rect
    • Zaktualizowano komentarze dotyczące parametrów Rect, aby pasowały do kdoc style
    • Usunięto Rect.join i Rect.expandToInclude
    • Utworzono przeciążenie dla Rect.translate(offset) i przestarzałą metodę Rect.shift.
    • (If086a, b/167737376)
  • Dodała adnotacje do rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled i textInputServiceFactory z dodatkiem @VisibleForTesting, aby uczynić je wewnętrznym interfejsem API i ukryć ich kdoc (I554eb, b/168308412).
  • Usuń SelectionContainer z poziomu górnego, aby wyłączyć domyślny wybór i uniknąć nieoczekiwanego działania. Można użyć kontenera SelectionContainer, aby opakować zawartość, która ma być wybierana. (I8dfe0, b/158459594)

Wersja 1.0.0-alpha03

16 września 2020 roku

androidx.compose.ui:ui-*:1.0.0-alpha03 został zwolniony. Wersja 1.0.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Usuń działania semantyczne przewijania do przodu/do tyłu. Dodano kroki w AccessibilityRangeInfo. (Ia47b0)
  • Usunięto onInvalidate()Owner – OwnedLayerprzetwarza nieważne dane. (Ica72b, b/162061312)
  • Usunięto metody operatora w interfejsie Size API, które używają parametrów przesunięcia. Wynik tych operacji jest niejasny, a ich typ jest nieoczekiwany. Czy np. funkcja size - offset powinna zwracać przesunięcie czy rozmiar z różnicą?

    Usunięto też przestarzałe metody klasy Size. (Iec902, b/166514214)

Poprawki błędów

  • Naprawiono problem z nieprawidłowym rysowaniem elementów kolumny LazyColumn, który w niektórych warunkach powodował też awarie. (Ibcf17, b/163066980, b/165921895)
  • Wycofano interfejs DpConstraints i interfejsy API, które go używały. (I90cdb, b/167389835)
  • Urządzenia createAndroidComposeRuleAndroidInputDispatcher zostały przeniesione z androidx.ui.test.android do androidx.ui.test (Idef08, b/164060572)
  • W interfejsach API dotyczących układu nazwy metod związanych z grawitacją zostały zmienione na „align” lub „alignment”. (I2421a, b/164077038)
  • Dodano metodę onNode i inne metody globalne w komponencie ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)

Wersja 1.0.0-alpha02

2 września 2020 r.

androidx.compose.ui:ui-*:1.0.0-alpha02 został zwolniony. Wersja 1.0.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • usunąć wywołanie zwrotne, aby powiadomić właściciela o zmianie granic węzła układu. (If654e, b/166106882)
  • Dodano obsługę parametrów filltype na ścieżkach grafiki wektorowej, aby umożliwić wycinanie kształtów zgodnie z regułami wypełnienia ścieżki evenOdd lub NonZero. (I43dd2)
  • Uptime i Velocity są teraz klasami wbudowanymi (I48f4a)
  • Czas trwania jest teraz klasą wbudowaną (I565eb)
  • Dodaj funkcję wywołania zwrotnego, aby powiadomić właściciela o zmianie granic węzła layoutu. (Ic40b3)
  • Rozwiązaliśmy problem polegający na tym, że konstruktor funkcji Rect z parametrami Offset i Radius tworzy prostokąt w kolejności lewo, prawo, góra, dół zamiast lewo, góra, prawo, dół.

    Usunięto wycofane metody towarzyszące z klasy Rect na rzecz konstruktorów funkcji.

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

Poprawki błędów

  • Dodano MutableRect, czyli prostokąt, który można modyfikować. (I71bd2, b/160140398)
  • Matrix4 został zastąpiony przez Matrix. Wszystkie pozostałe części pakietu vectormath zostały usunięte. (Ibd665, b/160140398)
  • Zmieniono konwencję wywoływania funkcji składanych. To zmiana powodująca niezgodność binarną. Wszystkie biblioteki muszą zostać ponownie skompilowane, aby działały z tą wersją wtyczki kompilatora Compose.

    Ta zmiana nie powoduje zmiany w źródle, ponieważ jedynymi zmienionymi interfejsami API są interfejsy kompilatora, które wymagają wyraźnego włączenia. (I7afd2, b/158123185)

  • Naprawiono awarię, która mogła wystąpić podczas wysyłania do obiektu PointerInputFilter, co mogło spowodować synchroniczne usunięcie obiektu PointerInputFilter. (I58f25)

Wersja 1.0.0-alpha01

26 sierpnia 2020 r.

androidx.compose.ui:ui-*:1.0.0-alpha01 został zwolniony. Wersja 1.0.0-alpha01 zawiera te commity.

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

androidx.compose.ui:ui-*:0.1.0-dev17 został zwolniony. Wersja 0.1.0-dev17 zawiera te commity.

Zmiany w interfejsie API

  • Środowisko wykonawcze emitView zostało wycofane. Jeśli to możliwe, do emitowania widoków w komponencie Compose użyj elementu AndroidView. Pamiętaj, że w przyszłości nie będzie można bezpośrednio tworzyć widoków i grup widoków, chyba że są one elementami liściastymi w drzewie kompozycji, co można osiągnąć za pomocą AndroidView. (I29b1e, b/163871221)
  • FocusState2 jest wycofany i zastąpiony przez FocusState (Ia8b79, b/160822876, b/160923332)
  • Usunięto przestarzałe przeciążenia AndroidView. (I946b9, b/163802393)
  • Emitowanie niestandardowe może teraz deklarować, że co najmniej 1 z jego ustawiaczy może być pomijany i zmieniany niezależnie od emitowania. (Ibbd13)
  • Zmieniliśmy klasy wektorów tak, aby nie były już klasami danych, ponieważ do kompozycji używany jest ten sam obiekt.

    Dodano flagę mutableStateOf dla klasy VectorPainter, aby warunkowo ponownie rysować, jeśli zawartość wektora ulegnie zmianie.

    Przekształcono instancję VectorComponent, aby była częścią VectorPainter, ponieważ jest używana w różnych kompozycjach.

    Zaktualizowano komponenty GroupComponent i PathComponent, aby ich pola nazwy były zmienne (Ieae45, b/151378808).

  • Usunięto onChildPositionedOnChildPositionedModifier. Deweloperzy powinni zamiast tego używać w układzie podrzędnym wartości onPositionedOnPositionedModifier. (I4522e, b/162109766)

  • Offset stał się klasą wbudowaną (Iaec70)

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

  • Usunięto przestarzały FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940).

  • Dodano funkcję mergePolicy do SemanticsPropertyKey. Można go użyć do zdefiniowania niestandardowej zasady złączania z użyciem semantycznej funkcji mergeAllDescendants. Domyślnie używana jest wartość nadrzędna, jeśli jest już dostępna, a w przeciwnym razie wartość podrzędna. (Iaf6c4, b/161979921)

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

  • Dodano FocusManager, który przenosi wspólną logikę skupienia 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 PlacementScope.placeAbsolute() została zmieniona na PlacementScope.place(), a poprzednia nazwa PlacementScope.place() została zmieniona na PlacementScope.placeRelative(). W rezultacie metoda PlacementScope.place() nie będzie już automatycznie odzwierciedlać pozycji w kontekście od prawej do lewej. W takim przypadku użyj zamiast tego pola PlacementScope.placeRelative(). (I873ac, b/162916675)

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

  • Niektóre narzędzia testowe nie są dostępne publicznie, ponieważ nie znajdują się w odpowiednim miejscu. W przyszłości zostanie ona udostępniona publicznie. (I32ab1)

  • Zmieniono organizację kodu wejściowego wskaźnika. (Ie3f45)

  • PxBounds jest nieużywany na rzecz Rect. Zaktualizowano wszystkie przypadki użycia PxBounds na rect i dodano odpowiednie adnotacje wycofywania/zastępowania, aby ułatwić migrację. (I37038, b/162627058)

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

  • KeyEvent ma właściwość Unicode, której można użyć do uzyskania znaku Unicode wygenerowanego przez określoną kombinację stanu klucza i metaklucza (If3afc).

  • Zdarzenie niestandardowe DelayUp i powiązane z nim klasy są teraz opcjonalne w interfejsie API, ponieważ istnieje duże prawdopodobieństwo, że zostaną zmienione. (I56d6f)

  • Usunięto 2 elementy PointerEventPasses, które nie są już potrzebne. (I3dd9d)

  • Dodaj parametry color, shadow i TextDecoration do funkcji Paragraph.paint. Ta funkcja jest przydatna, aby uniknąć niepotrzebnego odtwarzania akapitu. (I81689)

Poprawki błędów

  • Usunięto z TextField wywołania zwrotne onFocusChanged. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
  • Metoda Modifier.drawBorder została wycofana. Zamiast tego użyj Modifier.border. Klasa danych Border została zastąpiona przez BorderStroke (I4257d, b/158160576)
  • Usunięto nieaktualne wywołania FrameManager.

    Zmieniono wewnętrzne interfejsy API do komponowania, aby zmniejszyć nakład pracy związany z monitorowaniem obiektów stanu, takich jak mutableStateof() (I80ba6).

  • Elementy VerticalScroller i HorizontalScroller zostały usunięte. Zamiast tego użyj kolumny lub wiersza przewijalnego. Funkcja Modifier.drawBackground została usunięta. Użyj Modifier.background (I73b0d, b/163019183).

  • Naprawiono błąd powodujący awarię, gdy w pętli for używano czegoś, co zapisuje stan. Teraz można używać tego samego klucza w savedInstanceState(), a interfejs API rejestru UiSavedStateRegistry został dostosowany do tego nowego wymagania (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • Właściwość state { ... } została wycofana na rzecz wywołań funkcji remember { mutableStateOf(...) }, aby zwiększyć przejrzystość. Dzięki temu zmniejsza się ogólna powierzchnia interfejsu API i liczba pojęć związanych z zarządzaniem stanem oraz dopasowuje się do wzoru by mutableStateOf() dotyczącego delegowania właściwości klasy. (Ia5727)

  • Zmieniono nazwę RRect na RoundRect, aby lepiej pasowała do wzorca nazewnictwa funkcji. Utworzono konstruktory funkcji podobnych do RRect i wycofane konstruktory funkcji RRect (I5d325).

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

androidx.compose.ui:ui-*:0.1.0-dev16 został zwolniony. Wersja 0.1.0-dev16 zawiera te commity.

Zmiany w interfejsie API

  • Zdarzenie OnChildPositioned zostało wycofane. Zamiast tego użyj metody OnPositioned w podrzędnym elemencie. (I87f95, b/162109766)
  • Metoda setViewContent została wycofana. Zamiast niej należy używać metody setContent. (I7e497, b/160335130)
  • Dodano interfejs API AndroidViewBinding do napełniania i komponowania zasobów układu na podstawie ViewBinding. (I081c6)
  • KeyEvent2 zostaje zastąpiony przez KeyEvent (I2d770, b/162097585)
  • Dodano obsługę klucza sprzętowego Alt (I9036b)
  • Interfejs FocusManager został wycofany. Zamiast tego użyj metod Modifier.focus(), Modifier.focusObserver() i Modifier.focusRequester(). (I74ae4, b/162211322)
  • loadVectorResource obsługuje atrybuty trimPath (I808fe)
  • Przenoszenie okna do interfejsu (I47fa6)
  • Usunięto 2 elementy PointerEventPasses, które nie są już potrzebne. (I33ca7)
  • Wdrożony interfejs PointerInteropModifier, który umożliwia odbieranie zdarzeń MotionEvent i współdziałanie z Compose tak, jak implementacja widoku Androida. (Ieb08c)
  • Usunięto wycofany modyfikator tagu. Zamiast tego użyj layoutId. (Idaa05, b/162023919)
  • Zaktualizowano interfejsy API obsługujące tekst od prawej do lewej. Dodano atrybut LayoutDirectionAmbient, który umożliwia odczytywanie i zmienianie kierunku układu. Zmienniki Modifier.rtl i Modifier.ltr zostały usunięte. (I080b3)
  • Obsługa przycinania ścieżek w grafice wektorowej (Ie16c9, b/158188351)
  • Dodano funkcję Modifier.layout(), która umożliwia wygodne tworzenie niestandardowego modyfikatora układu (I73b69, b/161355194).
  • Dodano nowy interfejs API AndroidView i wycofano istniejące. (I5bcfd)
  • Interfejs Modifier.plus został wycofany. Zamiast niego używaj interfejsu Modifier.then. „Then” ma silniejszy sygnał dotyczący kolejności, ale jednocześnie uniemożliwia wpisanie Modifier.padding().background() + anotherModifier, co powoduje przerwanie łańcucha i utrudnia czytanie (Iedd58, b/161529964)
  • Dodaj podklasy widoku [Abstract]ComposeView, aby hostować zawartość Compose w hierarchii widoku. (I46357)
  • Funkcje RowColumn są teraz funkcjami w wierszu, co znacznie zmniejsza obciążenie związane z ich używaniem. (I75c10)
  • Dodano element SubcomposeLayout. Jest to prymityw niskiego poziomu, który umożliwia tworzenie podrzędnych podczas pomiaru, jeśli chcemy użyć niektórych wartości dostępnych dopiero później podczas pomiaru podrzędnego. Na przykład ograniczenie WithConstraints nie jest implementowane za pomocą funkcji SubcomposeLayout. (I25cc8)
  • Dodano funkcję SemanticsNode.positionInRoot, która zwraca pozycję węzła SemanticsNode względem poziomu głównego hierarchii Compose (Icdf26, b/161336532).
  • Zdarzenie MotionEvents przechodziło przez cały Androida, do Compose i z powrotem do Androida. (I14be8, b/158034713)
  • Usunięto menu rozwijane. (I00430)
  • Poprawiono pozycję wyskakującego okienka na wyświetlaczach z wycięciem. (Idd7dd)
  • Dodaj działanie związane z ułatwieniami dostępu, aby uzyskać TextLayoutResult (I9d6e6)
  • Dodano modyfikator RemeasurementModifier, który umożliwia synchroniczne ponowne pomiarowanie układu. Zazwyczaj nie jest to potrzebne, ponieważ pomiar i przeskalowanie odbywają się automatycznie, ale używamy tego w elementach LazyColumnItems podczas przewijania. (I5f331, b/160791058)
  • Usuń getLineEllipsisOffset/getLineEllipsisCount. Zamiast tego użyj getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
  • Dodaj znaczniki lub adnotacje, aby dowiedzieć się, jak postępować zgodnie ze sprawdzonymi metodami. (I66b20)
  • udostępnić więcej interfejsów API linii w wyniku TextLayoutResult. (I79bd2)
  • Wbudowane konwertery wektorów do konwertowania wbudowanych jednostek są teraz dostępne za pomocą Foo.VectorConverter, np. Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter itp. (I3e273)

Poprawki błędów

  • Rozwiązanie ogólnych problemów z interfejsem API (I077bc)
    1. Usuwanie nieużywanego interfejsu OffsetBase
    2. Dopasuj klasy Offset i IntOffset, aby uzyskać spójną powierzchnię interfejsu API
    3. Zmień nazwę IntOffset.Origin na IntOffset.Zero, aby zachować spójność z interfejsem Offset API.
    4. Przeniesienie metody nativeCanvas z interfejsu Canvas, aby umożliwić użytkownikom tworzenie własnych instancji Canvas
    5. Utworzono szablon klasy EmptyCanvas, aby zmienić DrawScope na parametr niepusty zamiast stałej lateinit i zapewnić, że pole nie będzie puste
    6. Zmieniono nazwy typów ClipOp na Pascal Case.
    7. Zmieniono nazwy filtrów w układ Pascala.
    8. Zmieniono nazwy enumów StrokeJoin na Pascal Case.
    9. Zmieniono nazwy typów punktu na Pascal Case
    10. Zmieniono nazwy typów za pomocą Pascal Case.
    11. Zmieniono nazwy typów ścieżki w układ Pascala.
    12. Zmieniono nazwy enumów StrokeCap na Pascal Case.
    13. Zaktualizowano implementację DrawCache, aby nie używała parametrów lateinit
    14. Zaktualizowano DrawScope, aby nie używać już nieaktywnych delegacji w przypadku wewnętrznych parametrów fillPaint i strokePaint.
    15. Zaktualizowano komponent Image, aby uniknąć korzystania z Box, co pozwoliło zmniejszyć obciążenie.
    16. Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
    17. Zaktualizowano węzeł PathNode, aby zawierał adnotacje @Immutable dla każdej instrukcji ścieżki
    18. Zaktualizowano podkompozycję wektorową, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje
    19. wycofanie metod konstruktora towarzysza Rect na rzecz konstruktorów funkcji;
    20. Zaktualizowano klasy pędzli i konstruktorów funkcji, aby używały interfejsów API @Immutable i @Stable.
    21. Zmieniono typ VertexMode na PascalCase
    22. Zaktualizowano metodę selectPaint klasy DrawScope, aby warunkowo zastępować parametry obrysu w obiekcie paint, jeśli uległy zmianie.
    23. Zaktualizowano rozmiar, aby dodać interfejs API do destrukturyzacji, zmieniono nazwę z UnspecifiedSize na Unspecified i usunięto nieużywane metody
  • Zaktualizowano interfejs API compose BlendMode, aby prawidłowo mapować tryby BlendMode w ramach Androida i PorterDuffa w zależności od poziomu interfejsu API. Wprowadziliśmy interfejs API BlendMode#isSupported, który działa jako zapytanie o możliwości. Pozwala on określić, czy urządzenie obsługuje dany tryb mieszania, zanim zostanie on użyty. (I0ef42)
  • Do parametru itemContent w przypadku list typu Lazy dodano LazyItemScope. Udostępnia ona modyfikatory do wypełniania maksymalnego rozmiaru elementu nadrzędnego, co rozwiązuje problem, gdy element ma wypełniać widok, a zwykła funkcja Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
  • Użytkownik SemanticsNodeInteraction.performPartialGesture został usunięty. Zamiast tego użyj atrybutu SemanticsNodeInteraction.performGesture. (Id9b62)
  • Nazwa LazyColumnItems została zmieniona na LazyColumnFor. Nazwa LazyRowItems została zmieniona na LazyRowFor (I84f84)
  • Pakiet foundation.shape.corner został spłaszczony do foundation.share (I46491, b/161887429)
  • Nazwa AndroidComposeTestRule została zmieniona na createAndroidComposeRule. (I70aaf)
  • Dodano więcej interfejsów API do TextLayoutResult. (Id7e04)
  • Interfejs Material FilledTextField został przemianowany na TextField, a interfejs podstawowy TextField na BaseTextField, aby ułatwić znajdowanie i używanie najprostszego żądanego interfejsu API (Ia6242, b/155482676)
  • Modifier.drawBackground został przemianowany na Modifier.background (I13677)

Wersja 0.1.0-dev15

22 lipca 2020 r.

androidx.compose.ui:ui-*:0.1.0-dev15 został zwolniony. Wersja 0.1.0-dev15 zawiera te commity.

Aktualizacja zależności

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

Zmiany w interfejsie API

  • Interfejs FocusModifier został wycofany i zastąpiony interfejsami Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. FocusState i FocusDetailedState są wycofywane na rzecz FocusState2 (I46919, b/160822875, b/160922136).
  • Dodano modyfikator do obserwowania zmiany stanu fokusa. (I05866, b/160924455, b/160923326)
  • Dodano modyfikator do prośby o zmianę punktu skupienia (I8dd73, b/161182057, b/160924778)
  • Dostosuj menu paska narzędzi, aby prawidłowo wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955)
  • Właściwości semantyczne o pojedynczej wartości używają teraz stylu wywoływania. Na przykład „semantics { hidden = true }” jest teraz zapisywane jako: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Dodano Modifier.focus, który zastępuje FocusModifier. (Ib852a, b/160924778)
  • Dodaj FloatingToolbar do wyboru pola tekstowego. (Ie8b07)
  • Dodano eksperymentalną adnotację interfejsu API dla interfejsu API związanego z kluczami wejściowymi (I53c0a).
  • Dodano eksperymentalną adnotację interfejsu API dla wszystkich interfejsów Focus (I53b24, b/160903352).
  • Dodano FocusState2, który zastąpi FocusDetailedState (I0a3ba, b/160822595).
  • Dodano ExperimentalFocus, czyli adnotację @OptIn dla interfejsu Focus API. (I1544b, b/160820961)
  • Dodano klasę jednostki IntBounds, która reprezentuje całkowite granice pikseli z układu. Interfejs API PopupPositionProvider został zaktualizowany, aby można było go używać. (I0d8d0, b/159596546)
  • Applier wymaga teraz metody clear() do usuwania kompozyt (Ibe697)
  • Metoda KeyEvent została wycofana i zastąpiona metodą KeyEvent2 (I68730)
  • Do testowania wyszukiwarek dodano nowy opcjonalny parametr useUnmergedTree. (I2ce48)
  • Dodano eksperymentalny interfejs API LayoutNode (I4f2e9)
  • Dodano metody kopiowania do różnych typów wbudowanych klas, w tym:

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

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

  • Okienka, dialogi i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).

  • Nazwa atrybutu TextDirection została zmieniona na ResolvedTextDirection (I3ff38)

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

  • Przerzuć SelectionHandles do ponownego użycia. (I420e0)

  • Możliwość kliknięcia została usunięta. Użyj modyfikatora clickable (I84bdf).

  • TestTag i Semantics zostały usunięte. Zamiast tego użyj funkcji Modifier.testTag i Modifier.semantics (I15ff0, b/158841414).

  • Przed tą zmianą wtyczka kompilatora kompozytora przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli wystąpiły one w ramach (I5205a, b/158123804)

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

  • Wartości pozycji linii wyrównania zwracane przez Placeable#get(AlignmentLine) są teraz niezerowe. Jeśli nie ma linii wyrównania, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)

  • Do komponentu AndroidView dodano parametr modyfikatora. (I48a88, b/158746303)

  • Metoda Semantics() została wycofana. Zamiast tego użyj metody Modifier.semantics(). (I72407, b/158841414)

  • Dodaj komponent viewModel(), który umożliwia tworzenie lub pobieranie już utworzonego widoku ViewModel w sposób podobny do tego, w jaki działa on w komponencie Activity lub Fragment (I5fdd1).

  • Zastąpiono użycie funkcji IntPx za pomocą funkcji Int. Zastąpiono funkcję IntPxPosition za pomocą funkcji IntOffset. Zmienna IntPxSize została zastąpiona zmienną IntSize. (Ib7b44)

  • Aby skonsolidować liczbę klas używanych do reprezentowania informacji o rozmiarze, zamiast klasy PxSize użyj klasy Size. Daje to korzyści płynące z klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinkową, aby reprezentować szerokość i wysokość jako zmiennoprzecinkową. (Ic0191)

  • Aby skonsolidować liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, zamiast klasy PxPosition użyj klasy Offset. Daje to korzyści płynące z klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinekowych, aby reprezentować przesunięcia X i Y jako zmiennoprzecinkowe. (I3ad98)

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby w przypadku parametrów pikseli używać tylko typu dp i typów prymitywnych. Usunięto całą klasę Px (I3ff33)

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i pierwotnych w przypadku parametrów pikseli (I086f4)

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (Id3434).

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I97a5a).

  • Tag testowy został wycofany. Zamiast tego użyj funkcji Modifier.testTag. (If5110, b/157173105)

  • Domyślna implementacja ParentDataModifier#modifyParentData, która nie wykonywała żadnej operacji, została usunięta, ponieważ była równoważna z nieimplementowaniem interfejsu. (I0deaa)

  • Funkcja ScaleFit, która została wycofana, została usunięta. Zamiast tego użyj atrybutu ContentScale. (Ifbc5b)

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I19d02)

  • Dodano komponent DropdownMenu w ui-material, czyli implementacji menu Material Design. (I9bb3d)

  • Usunięto wycofany interfejs LayoutTag(). Zamiast niego używaj interfejsu Modifier.tag(). Wycofano wycofany interfejs Modifier.matchParent(). Zamiast niego użyj interfejsu Modifier.matchParentSize(). (If8044)

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I57bff)

  • Element Modifier.semantics został wycofany, aby umożliwić jego użycie w przypadku komponentów wysokiego poziomu. (I4cfdc)

  • Zbiorcze CanvasScope zostały scalone, więc teraz są tylko zbiorcze zakresy rysowania i zbiorczy zakresu rysowania treści. Zbiórczy CanvasScope został przemianowany na Zbiórcze zakresy rysowania. Zaktualizowano DrawScope w celu implementacji interfejsu Density i zapewnienia kierunku układu. Usunięto podklasę DrawScope w ContentDrawScope. Painter i PainterModifier zostały zaktualizowane tak, aby nie utrzymywać własności RTL, ponieważ DrawScope zapewnia ją już bez ręcznego podawania (I1798e).

  • Filtr DoubleTapGestureFilter umożliwia teraz jednoznaczne określenie filtra SingleTapGestureFilter w drzewie. (If92b1)

  • Zaktualizowaliśmy interfejs Alignment API i dodaliśmy obsługę wyrównania bezwzględnego (które nie powoduje automatycznego lustrzanego odbicia w kontekście Rtl) (I38cd3).

  • Zmieniono interfejs API modyfikatorów DrawLayer: outlineShape został przemianowany na shape i ma domyślną wartość RectangleShape, która nie może być pusta; clipToBounds został usunięty, ponieważ jest to to samo co clip == true z RectangleShape (I7ef11, b/155075735).

  • Zaktualizowano interfejsy API wyższego poziomu, które udostępniają canvas, tak aby zamiast tego udostępniały CanvasScope. Dzięki temu użytkownicy nie muszą już samodzielnie zarządzać obiektami w Paint. Użytkownicy, którzy nadal potrzebują dostępu do Canvas, mogą użyć metody rozszerzenia drawCanvas, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania do Canvas. (I80afd)

  • Zmiana interfejsu lambda z dodatkiem Constraints. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń i kierunku układu zawiera właściwości minWidth, maxWidth, minHeight i maxHeight w pikselach (I91b9a, b/149979702)

  • Zmieniono nazwę LayoutModifier2 na LayoutModifier. (Id29f3)

  • Usunięto wycofany interfejs LayoutModifier. (I2a9d6)

  • Funkcje pomiarów wewnętrznych w Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia interfejs API zapytań wewnętrznych z domyślnie propagowanym kierunkiem układu. (Id9945)

  • Dzieci elementów Layout i LayoutModifier można mierzyć z użyciem innego kierunku układu. (Ibd731)

  • Dodano nową metodę Modifier.zIndex(), która służy do kontrolowania kolejności rysowania elementów podrzędnych w ramach tego samego układu nadrzędnego. Właściwość elevation w modyfikatorze DrawLayerModifier została przemianowana na shadowElevation i nie kontroluje już kolejności rysowania. Zmieniono kolejność parametrów metody DrawShadow: teraz pierwszą jest wysokość, a drugą – kształt z domyślnym kształtem prostokątnym. (I20150, b/152417501)

  • Usunięto metody onSizeChange i onPositionChange w klasie Owner. (I5c718)

  • Dodano Constraints2, czyli kopię Constraints, która obsługuje tylko wartości ograniczeń typu Int, a nie IntPx. IntPx zostanie usunięty, a zakładamy, że wszystkie ograniczenia liczb całkowitych będą miały wartości w pikselach, tak jak w Androidzie.

    • Dodano również IntSize, który ostatecznie zastąpi IntPxSize. (I4b43a)
  • Umożliwiono tworzenie wyrównania z dowolnymi wartościami. Dodano wyrównania 1D. (Ia0c05)

  • alignToSiblings przyjmuje teraz obiekt Measured zamiast obiektu Placeable. (I5788d)

  • (I45f09, b/152842521)

    • Zmiana nazwy ScaleFit na ContentScale
    • Przeniesienie ContentScale z modułu ui-graphics do modułu ui-core, aby znajdował się on w tym samym module co interfejs API do wyrównywania.
    • Zmieniono nazwę FillMaxDimension na Crop.
    • Zmieniono nazwę parametru FillMinDimension na Fit.
    • Zmieniono nazwę funkcji Dopasuj do wnętrza, aby lepiej pasowała do nazwy
    • Odpowiedniki ImageView.ScaleType
    • Dodano dokumentację wskazującą, że kombinacja Crop i Alignment.Center daje ten sam efekt co ImageView.ScaleType.CENTER_CROP oraz Fit używane z Alignment.Center dają ten sam efekt co ImageView.ScaleType.FIT_CENTER Inside używane z Alignment.Center dają ten sam efekt co ImageView.ScaleType.CENTER_INSIDE
  • Obsługa modyfikatorów typu draw w reklamach elastycznie wyświetlanych. (I0aaf9)

  • Opublikowano interfejs API do tworzenia obiektów Android Views z plików XML. Więcej informacji znajdziesz w prezentacji ViewInCompose. (I42916)

  • Ulepszenie interfejsu DrawModifier API:

    • Zmiana zakresu odbiornika dla metody draw() ContentDrawScope
    • Usunięto wszystkie parametry w metodzie draw().
    • DrawScope ma ten sam interfejs co poprzedni CanvasScope
    • ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067).
  • Dodano pozycję w rodzicu i zakres w rodzicu dla współrzędnych układu. (Icacdd, b/152735784)

  • Domyślne wartości parametrów clipToBounds i clipToOutline w funkcjach DrawLayerModifier i drawLayer zostały ustawione na false. (I0eb8b, b/152810850)

  • Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)

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

  • Zastąpiono operator Modifier plus funkcjami rozszerzenia fabrycznego (I225e4).

  • Dodaliśmy właściwości translationX/Y, aby umożliwić przesuwanie listy wyświetlania poleceń rysowania dla danej warstwy. Jest to przydatne, gdy chcesz przesuwać treści w odpowiedzi na animacje lub zdarzenia dotykowe. (I8641c)

  • Dodano parametry pivotX i pivotY do interfejsów API warstwy, aby umożliwić obracanie i skalowanie wokół określonego punktu na warstwie (Icf7c3).

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

  • Dodano modyfikator LayerModifier, który umożliwia dodanie węzła renderowania dla układu. Umożliwia ustawienie przycinania, krycia, obrotu, skalowania i cieni. Zastąpi ona opcję RepaintBoundary. (I7100d, b/150774014)

  • Zmieniliśmy kierunek układu tak, aby był propagowany z nadrzędnego węzła układu do podrzędnych. Dodano modyfikator kierunku układu. (I3d955)

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

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

  • Density i DensityScope zostały połączone w jeden interfejs. Zamiast ambientDensity() możesz teraz użyć DensityAmbient.current. Zamiast withDensity(gęstość) wpisz tylko with(gęstość) (I11cb1)

  • Zmiana metody LayoutCoordinates, aby ustawić parametry alignmentLines jako zbiór zamiast mapy i zamiast tego, aby zwracać wartość, użyj operatora get(). Dzięki temu modyfikatory mogą łatwiej modyfikować co najmniej 1 wartość zbioru bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)

  • Właściwość LayoutCoordinates nie ma już właściwości position. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obrotu ani skalowania. Zamiast tego programiści powinni używać funkcji parentCoordinates i childToLocal() do obliczania transformacji z jednego układu współrzędnych na inny.

    Właściwość size w metodzie LayoutCoordinates używa wartości IntPxSize zamiast PxSize. Układy używają rozmiarów w pikselach, więc wszystkie rozmiary układów powinny używać liczb całkowitych, a nie wartości zmiennoprzecinkowych. (I9367b)

  • Ulepszenia interfejsu API ograniczeń (I0fd15)

  • Utworzono interfejs CanvasScope API, który otacza obiekt Canvas, aby udostępnić bezstanową, deklaratywną powierzchnię rysowania. Transformacje są zawarte w ramach własnego zakresu odbiornika, a informacje o rozmiarach są również ograniczone do odpowiednich granic wstawki. Nie wymaga od konsumenta utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.

    • Dodano CanvasScopeSample oraz zaktualizowano aplikację demonstracyjną, aby zawierała demonstrację deklaratywnej grafiki (Ifd86d).
  • Usunięto nieużywany interfejs MaskFilter API, ponieważ ma on ograniczone zastosowanie i nie jest zoptymalizowany pod kątem przyspieszania sprzętowego w większości przypadków użycia (I54f76).

  • RectangleShape został przeniesiony z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Zastąpiono wszystkie przypadki użycia typu Color w interfejsie API, w których wartość może być null, wartością nienullową, oraz użyto Color.Unset zamiast null (Iabaa7).

  • Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter w celu obsługi rysowania podzbioru podrzędnego w podstawowym pliku ImageAsset (I0ea9e)

  • Dodano opcję Nieokreślony kolor, która reprezentuje wartość nieokreśloną bez umieszczania kolorów w ramce. (If901a)

  • Dodano metody rozszerzenia Canvas.rotate i Canvas.scale, aby można było używać opcjonalnych współrzędnych pivota do przekształceń. Te domyślne wartości są przenoszone do lewego górnego rogu bieżącego przekładu na kanwie.

    W celu zachowania spójności przeniesiono też Canvas.rotateRad do metody rozszerzenia (Ibaca6).

  • Utworzono interfejs PixelMap API, aby umożliwić wysyłanie zapytań o informacje o pikselach z obiektu ImageAsset. (I69ad6)

  • Nazwy interfejsów toFrameworkRect/toFrameworkRectF zostały zmienione na toAndroidRect/toAndroidRectF, aby pasowały do konwencji nazewnictwa konwersji obiektów między interfejsami API platformy Compose a interfejsami API platformy Android, na których są one oparte. Zaktualizowano też dokumentację dotyczącą tych interfejsów API (I86337).

  • Dodano interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API do obsługi grafik wektorowych. Wynik podkompozycji to obiekt VectorPainter, a nie DrawModifier. Wycofano poprzednie komponenty DrawVector na rzecz komponentu VectorPainter.

    Zmieniono nazwę interfejsu API Image(Painter) na PaintBox(Painter). Utworzono kompozytywny obiekt wektorowy, który zachowuje się jak kompozytywny obiekt obrazu, ale zamiast ImageAsset używa obiektu VectorAsset (I9af9a, b/149030271).

  • Zmieniliśmy nazwę Image na ImageAsset, aby lepiej odróżnić dane Image od nadchodzącego komponentu Image, który służy do tworzenia układu i rysowania zawartości. _Body:Utworzono metodę rozszerzenia w android.graphics.Bitmap, Bitmap.asImageAsset(), aby utworzyć instancję ImageAsset przydatną do łączenia tradycyjnego Androida rozwijanie aplikacji z ramami kompozytowymi (Id5bbd)

  • Dodano TextDirection.Content (I48f36).

  • Dodano operator TextDecoration.plus (I0ad1a)

  • Wartość Force została usunięta z wartości typu wyliczeniowego TextDirectionAlgorithm (Icc944)

  • Nazwa parametru TextDirectionAlgorithm została zmieniona na TextDirection (I75ce8).

  • Implementuje LongPressAndDrag dla TextField Selection. (I17919)

  • Dodano metodę AnnotatedString.getStringAnnotations, która zwraca wszystkie adnotacje w danym zakresie. (I1fa00)

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

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

  • Zmiana w interfejsie API: funkcja AnnotatedString(builder: Builder) została przemianowana na annotatedString(builder: Builder). (Ia6377)

  • Zmiana w interfejsie API: element AnnotatedString.Item został przemianowany na AnnotatedString.Range. (I2d44d)

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

  • Teraz można ukryć lub wyświetlić klawiaturę za pomocą klasy SoftwareKeyboardController, która jest dostarczana przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).

  • Dodano operator plusa dla stylu (Text/Paragraph/Span), który deleguje do funkcji merge(). (Ia1add)

  • FontWeight.lerp nie jest już stosowany. Nadal jest to klasa danych. (I521c2)

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

  • Dodaj 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ż w modułach ui-geometry występuje jej duplikat. (I1b602)

  • Dodano AdapterList, komponent listy przewijanej, który tylko składa i układa widoczne elementy. Obecne znane problemy obejmują to, że jest to tylko pion i nie obsługuje w pełni wszystkich przypadków zmian w podrzędnych. (Ib351b)

  • Dodaj parametry wypełnień, obramowania, kształtu i tła do pola tekstowego (I05027, b/148147281)

Poprawki błędów

  • Wywołanie zwrotne onFocusChange w polach tekstowych zostało przemianowane na onFocusChanged (Ida4a1).
  • Komponenty VerticalScroller i HorizontalScroller zostały wycofane. Użyj ScrollableColumn i ScrollableRow, aby uzyskać wbudowane funkcje z zachowaniem i parametrami kolumny/wiersza, lub użyj Modifier.verticalScroll i Modifier.horizontalScroll w swoim elemencie. Podobnie w przypadku ScrollerPosition zastosowano wycofanie na rzecz ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • Nazwa runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Zmieniliśmy nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie interfejsy findXYZ zostały przemianowane na onNodeXYZ. Wszystkie interfejsy doXYZ zostały przemianowane na performXYZ. (I7f164)
  • Teraz interfejs tworzenia można tworzyć w grupach widoków bez konieczności tworzenia nowego. Przykład znajdziesz w pliku ViewInteropDemo. (I9ab0b, b/160455080)
  • Dodano sortWith i removeRange do MutableVector (Icccf7)
  • Zaimplementuj uchwyty przeciągania, aby zmienić zaznaczenie pola tekstowego. (I27032)
  • Usunięto wbudowaną klasę Shader, która otaczała klasę NativeShader. Nazwa klasy NativeShader została zmieniona na Shader. Zawinięta klasa inline Shader nie wnosiła nic wartościowego do interfejsu API i była klasą inline, dlatego używaj bezpośrednio klasy NativeShader. (I25e4d)
  • Zmodyfikowaliśmy funkcję PainterModifier, aby nie skalowała ona już na podstawie podanych ograniczeń i parametru ContentScale. Implementacje funkcji Painter powinny skalować zawartość rysunku na podstawie podanego rozmiaru zakresu rysowania, do którego rysują.

    Rozwiązaliśmy problem polegający na tym, że bitmapa w pamięci podręcznej VectorPainter miała domyślny rozmiar zamiast rozmiaru do rysowania.

    Zaktualizowano ImagePainter, aby skalował on zawartość samodzielnie, zamiast polegać na funkcji PainterModifier. (I6ba90)

  • dodać funkcję najwyższego poziomu withFrameNanos do określania czasu animacji (Ie34c5)

  • Adnotacja @Untracked została wycofana. Zastąp to elementem @ComposableContract(tracked=false) (Id211e).

  • Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Wycofane zostały też komponenty TextField, FilledTextField i CoreTextField, które używają tego typu. Zamiast tego użyj interfejsu androidx.ui.input.TextFieldValue (I4066d, b/155211005).

  • Rozwiązaliśmy problem, który powodował awarię podczas przetwarzania danych wejściowych wskaźnika, jeśli podczas przetwarzania usuwane były filtry danych wejściowych wskaźnika za pomocą podkompozycji. Zostało to już rozwiązane. (I1f48b, b/157998762)

  • Rozwiązaliśmy problem, który powodował awarię podczas rozsyłania danych wejściowych wskaźnika, jeśli podczas rozkładu usunięto filtry danych wejściowych wskaźnika. Zostało to już rozwiązane. (Iab398, b/157998762)

  • Zmieniono klasę Radius na klasę wbudowaną. Usunięto metody tworzenia towarzysza na rzecz konstruktora funkcji z parametrem domyślnym, aby promień na osi y był zgodny z obowiązkowym parametrem promienia na osi x.

    Zaktualizowano DrawScope.drawRoundRect, aby używać pojedynczego parametru Radius zamiast 2 oddzielnych wartości typu float dla promienia wzdłuż osi X i Y (I46d1b).

  • Komponent Recompose nie jest już przydatną abstrakcją. Większość ponownych skompilowań powinna nastąpić w wyniku przypisania stanu zmiennego. W przypadku innych wartości zalecamy użycie funkcji invalidate, aby wywołać ponowne skompilowanie bieżącego zakresu. (Ifc992)

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (Iede0b).

  • Zmienia strategię generowania kodu kompilatora Compose. Przed wprowadzeniem tej zmiany kompilator kompozytowy przekształcał wywołania w funkcje kompozytowe. Dzięki tej zmianie modyfikujemy teraz ciało funkcji składanej, a miejsce wywołania pozostawiamy bez zmian (w większości).

    Oznacza to, że większość logiki komunikującej się z runtimem usługi Compose jest wykonywana na początku ciała funkcji, a nie w miejscu wywołania.

    Powinna to być zmiana zgodna ze źródłem we wszystkich przypadkach użycia funkcji Compose. Większość użytkowników usługi Compose nie powinna być zmuszona do aktualizowania kodu.

    Aby umożliwić to, zmieniliśmy sygnaturę JVM wszystkich funkcji kompozytowych. Funkcja składana, która akceptuje jeden parametr, jest przekształcana w funkcję akceptującą 3 parametry. Dodatkowe parametry to kompozytor, liczba całkowita „klucza” i liczba całkowita bitowa używana do propagowania metadanych przez wywołania.

    Funkcja Compose przekształca teraz również argumenty domyślne w funkcję składającą się. Robi to bez wprowadzania dodatkowego domyślnego przeciążenia funkcji, więc ta zmiana spowoduje zdefiniowanie mniejszej liczby funkcji.

    Znane celowe zmiany w zachowaniu wynikające z tego:

    1. Niektóre połączenia będą pomijane w miejscach, w których wcześniej nie były pomijane.
    2. Wyrażenia składane w domyślnych wyrażeniach argumentów są teraz prawidłowo subskrybowane i obsługiwane

    W ramach tych prac wprowadziliśmy kilka optymalizacji: 1. Wyniki porównań parametrów są propagowane przez wykres wywołania do innych funkcji kompozytowych. Spowoduje to mniejszą liczbę porównań w czasie wykonywania, zmniejszy rozmiar tabeli slotów, a także zwiększy pomijanie funkcji kompozytowych, które wcześniej nie były pomijane. Parametry, które w czasie kompilacji zostały uznane za „statyczne”, nie są już porównywane ani przechowywane w czasie wykonywania. Zmniejsza to liczbę porównań i rozmiar tabeli slotów. 3. Struktura przepływu sterowania w ciele funkcji służy do minimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli slotów i obciążenie środowiska uruchomieniowego. 4. Nieużywane parametry funkcji dispatch i receiver nie są uwzględniane przy określaniu możliwości pominięcia funkcji, jeśli nie są używane w jej treści.

    Większość zmian dotyczyła interfejsów API, na które kompilator kieruje bezpośrednio. Nie wpłynęło to na typowe korzystanie z Compose: 1. Funkcja Composer::startExpr została usunięta. Funkcja Composer::endExpr została usunięta. Funkcja Composer::call została wycofana. Zostały usunięte przeciążenia funkcji key, które nie są związane z varargs. Od teraz używaj wersji vararg. 5. Adnotacja Pivotal została wycofana. Użyj key jako zamiennika. 6. Zmieniono funkcję ScopeUpdateScope::updateScope, aby oczekiwała ona funkcji Function3 zamiast funkcji Function1. 7. Zaktualizowano funkcje restartableFunction i restartableFunctionN, aby uwzględniały dodatkowe parametry kompilacji (I60756, b/143464846).

  • Usunięto przestarzałe modyfikatory LayoutAlign. (I10877)

  • Usunięto RepaintBoundary na rzecz DrawLayerModifier (I00aa4)

  • Przyciski Button, FloatingActionButton i Clickable mają teraz oddzielny parametr enabled. Niektóre parametry przycisku zostały przemianowane lub zmieniono ich kolejność. (I54b5a)

  • Zastąpiono klasę ButtonStyle funkcjami o różnych właściwościach i usunięto przeciążenie tekstu (ciągu znaków). Informacje o użyciu znajdziesz w zaktualizowanych przykładach. (If63ab, b/146478620, b/146482131)

  • Zmiany w interfejsie API ambients. Szczegółowe informacje znajdziesz w logach i dokumentacji Ambient<T> (I4c7ee, b/143769776).

  • Zmieniono zachowanie domyślnego kierunku tekstu, aby był on określany przez kierunek układu. Jeśli kierunek układu to RTL, domyślny kierunek tekstu będzie RTL. Poprzednio: TextDirection.ContentOrLtr/Rtl (I4e803)

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

  • Dodaje do funkcji Text() często używane parametry. Jeśli obecnie tworzysz lokalny styl tekstu, aby przekazać niewielką liczbę tych parametrów, np. Text(style = TextStyle(textAlign = TextAlign.Center)), możesz teraz podać te parametry bezpośrednio: Text(textAlign = TextAlign.Center) (I82768)

  • Moduł ui-android-text został przemianowany na ui-text-android (I68cbe).