Interfejs tworzenia

Podstawowe komponenty interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu.
Najnowsza aktualizacja Wersja stabilna Kandydat do publikacji Wersja Beta Wersja alfa
17 kwietnia 2024 r. 1.6.6 - - 1.7.0-alfa07

Struktura

Tworzenie stanowi połączenie 7 identyfikatorów grupy Maven w usłudze androidx. Każda grupa zawiera wybrany podzbiór funkcji z własnym zestawem informacji o wersjach.

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

GrupaOpis
compose.animation,Twórz animacje w aplikacjach Jetpack Compose, aby zwiększyć wygodę użytkowników.
compose.buildr,Przekształć funkcje @Composable i włącz optymalizacje za pomocą wtyczki kompilatora Kotlin.
compose.foundationPisz aplikacje Jetpack Compose, korzystając z gotowych elementów składowych i rozszerzaj podstawy do tworzenia własnych elementów systemu.
compose.material,Twórz interfejsy użytkownika Jetpack Compose z gotowymi do użycia komponentami Material Design. Jest to punkt wejścia wyższego poziomu Compose, zaprojektowany z myślą o dostarczaniu komponentów pasujących do tych opisanych na stronie www.material.io.
compose.material3,Twórz interfejsy użytkownika Jetpack Compose za pomocą komponentów Material Design 3, czyli nowej ewolucji Material Design. Material 3 zawiera zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczny kolor. Został zaprojektowany tak, aby zachować spójność z nowym stylem wizualnym i interfejsem systemu Androida 12.
compose.runtime,Podstawowe elementy modelu programowania i zarządzania stanem w usłudze Compose, a także podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka Compose Compiler.
compose.ui;Podstawowe komponenty interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu.

Deklarowanie zależności

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

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

Odlotowy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Opinia

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

Utwórz nowy numer

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

Wersja 1.7

Wersja 1.7.0-alfa07

17 kwietnia 2024 r.

Aplikacja androidx.compose.ui:ui-*:1.7.0-alpha07 została zwolniona. Wersja 1.7.0-alpha07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Interfejs ClickableText został oznaczony jako wycofany. Aby dodać linki do tekstu, utwórz AnnotatedString z elementem LinkAnnotation odpowiadającym Twojemu linkowi i prześlij ten element AnnotatedString do elementu tekstowego kompozycyjnego. (I34d4b, b/323346994)
  • Wprowadź ViewConfiguration.HandwritingGestureLineMargin do obsługi gestów pisma odręcznego. Obsługa gestu JoinOrSplit dla usługi BasicTextField (Ie6e13, b/325660505)
  • Wersje FocusProperties.enter i FocusProperties.exit nie są już eksperymentalne. Wersje FocusDirection.Enter i FocusDirection.Exit nie są już eksperymentalne. FocusRequester.Cancel nie jest już eksperymentalny (I461a1, b/261564106)
  • Podczas wysyłania zapytań o współrzędne układu możesz teraz użyć argumentu excludeDirectManipulationOffset, aby wykluczyć przesunięcie ustawione przez układy nadrzędne, które rozmieściły ich elementy podrzędne za pomocą funkcji Placeable.PlacementScope.withDirectManipulationPlacement. Podobnie układ, który często zmienia pozycję swoich elementów podrzędnych, może teraz umieszczać je za pomocą elementu withDirectManipulationPlacement (np. Scroll (domyślnie zaimplementowany). W ten sposób sprawia, że animacje oparte na approachLayout są bardziej intuicyjne, a teraz można rozróżniać przesunięcie, które ma być animowane, i które stosować bezpośrednio przy podejmowaniu decyzji o animacji. (I60ec7)
  • Usunęliśmy flagę funkcji w przypadku długich zrzutów ekranu. (I28648, b/329128246)
  • LazyColumn będzie teraz prawidłowo renderować nagłówki przyklejone na długich zrzutach ekranu. (I8d239, b/329296635)
  • Źródła (NestedScroll) zostały zastąpione przez UserInput i SideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, które obejmują teraz animacje (Efekt boczny) oraz kółko myszy i klawiaturę (UserInput). (I40579)
  • Wersje ApproachLayoutModifierNode i Modifier.approachLayout są teraz stabilne. Nowe: isMeasurementApproachInProgress() i isPlacementApproachInProgress(), które zastąpią odpowiednio stare isMeasurementApproachComplete() i isPlacementApproachComplete().
  • Usunięto wycofany modyfikator intermediateLayout. (I3e91c)
  • Zmień nazwę GraphicsLayer#buildLayer, aby nagranie odzwierciedlało metody start/endRecording interfejsów API opartych na liście Displaylist, takich jak RenderNode i Picture.
  • Zaktualizowano tabelę rememberGraphicsLayer, aby wykorzystać rememberObserver. (I312c1, b/288494724, b/330758155)
  • Interfejs UrlAnnotation został wycofany. Użyj interfejsu LinkAnnotation.Url. Jeśli stosujesz motywy Material, użyj obiektu TextDefaults, aby utworzyć adnotację z tematyką Material Design (I8d180, b/323346545).
  • Oprócz normalnego stylu, najechania i zaznaczenia w linkach tekstowych została dodana opcja określania stylu w postaci klikniętego stanu (I5f864, b/139312671)
  • Nazwa użytkownika String.parseAsHtml została zmieniona na AnnotatedString.Companion.fromHtml. (I43dcd)
  • Dodano argumenty stylu (linkStyle, focusedLinkStyle, hoveredLinkStyle) i detektor interakcji z linkiem do metody parseAsHtml. Podczas analizy ciągu znaków HTML z tagami <a> ta metoda tworzy element LinkAnnotation.Url dla każdego takiego tagu i przekazuje do każdej adnotacji obiekty stylu oraz detektor interakcji z linkiem. (I7c977)
  • LinkAnnotation przyjmuje teraz argumenty stylu oparte na stanie i LinkInteractionListener. Dodaj tę adnotację do elementu AnnotatedString, aby uzyskać hiperlink. Przekazując atrybuty focusedState lub hoveredState, możesz zdefiniować wizualny configuration w linkach, które są zaznaczone lub najechane kursorem na nie. (I81ce4, b/139312671)
  • ImeOptions.hintLocales nie może już zawierać wartości null. Jeśli chcesz przekazać pustą listę języków, użyj polecenia LocaleList.Empty. (Ic5bc4)

Poprawki błędów

  • Z zręcznością obsługuje nieprawidłowe/uszkodzone historyczne dane wejściowe zdarzeń (ignoruje nieprawidłowe dane kompensacji).
  • Poprawia nieoczekiwane zdarzenia wskaźnika, gdy modyfikator danych wejściowych wskaźnika jest dodawany dynamicznie przed innym modyfikatorem danych wejściowych wskaźnika w trakcie aktywnego strumienia zdarzeń wprowadzania wskaźnika (np. między najechaniem kursorem a opóźnieniem po najechaniu kursorem [mysz/stylus]).

Wersja 1.7.0-alfa06

3 kwietnia 2024 r.

Aplikacja androidx.compose.ui:ui-*:1.7.0-alpha06 została zwolniona. Wersja 1.7.0-alpha06 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano metodę parseAsHtml dla ciągów znaków ze stylem: pozwala ona przekonwertować ciąg znaków oznaczony tagami HTML na parametr AnnotatedString. Pamiętaj, że nie wszystkie tagi są obsługiwane – na przykład nie będzie można jeszcze wyświetlać list punktowanych. (I84d3d, I30626, b/139326648)
  • Wdrożyliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania w komponencie za pomocą oficjalnego interfejsu API Androida (ScrollCaptureCallback). Ta funkcja jest w wersji eksperymentalnej i może obecnie nie obsługiwać poprawnie wszystkich przypadków. Dlatego obecnie jest ono domyślnie wyłączone. Aby to zrobić, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość true. (I2b055, b/329296471)

Zmiany w interfejsie API

  • Zmieniono wartość „fun ClipEntry.getMetadata()” na „val ClipEntry.clipMetadata”. (I50155)
  • Usunięto funkcje ClipboardManager.getClipMetadata i ClipboardManager.hasClip. Aby odczytać metadane bieżącego klipu, użyj clipEntry.getMetadata(). Aby dowiedzieć się, czy schowek zawiera bieżący klip, sprawdź też wynik funkcji ClipboardManager.getClip, jeśli ma on wartość null. (I50498)
  • Teraz możesz przekazywać obiekty GraphicsLayer do funkcji placeable.placeWithLayer() (I1b22f).
  • Aby móc wyczyścić zawartość schowka, ClipboardManager.setClip akceptuje teraz wartość null. (I7d2e9)
  • Dodano identyfikatory zasobów ułatwiające ukrywanie widoków danych używanych jako szczegóły implementacji w narzędziach do kompilacji (I99531).
  • Dodano metodę zawieszania GraphicsLayer#toImageBitmap, aby umożliwić renderowanie zawartości bitmapy w obiekcie GraphicsLayer. Jest to operacja renderowania z akceleracją sprzętową w interfejsie API na poziomie 22 i nowszym (włącznie), która obsługuje ponad 99% wszystkich urządzeń z Androidem. W przypadku Android API na poziomie 21 wraca to do renderowania programowego. (I9e114)
  • Metoda pomocnicza do konwertowania Androida z RectF na ComposeRect (I39925, b/325660505)
  • Wszystkie parametry KeyboardOptions mają teraz domyślnie nieokreśloną wartość. Dodano metodę KeyboardOptions.merge.
  • Zmieniono nazwę KeyboardOptions.autoCorrect na autoCorrectEnabled i dokonano wartości null, gdzie null oznacza, że nie określono żadnej wartości. (Ia8ba0, b/295951492)
  • Do przetwarzania działań wykonywanych za pomocą klawiatury programowej (BasicTextField(state)) i w interfejsie BasicSecureTextField używany jest teraz KeyboardActionHandler zamiast KeyboardActions. (I58dda)

Wersja 1.7.0-alfa05

20 marca 2024 r.

Aplikacja androidx.compose.ui:ui-*:1.7.0-alpha05 została zwolniona. Wersja 1.7.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

  • Wprowadzenie nowego interfejsu API GraphicsLayer do rejestrowania poleceń rysowania na liście wyświetlania, a także dodatkowych właściwości wpływających na renderowanie tej listy. Zapewnia to izolację graniczną, która umożliwia podzielenie złożonej sceny na mniejsze fragmenty, które można aktualizować pojedynczo bez odtwarzania całej sceny. Przekształcenia wprowadzone w elementach typu GraphicsLayer można wykonać bez ponownego rejestrowania listy wyświetlania. W odróżnieniu od funkcji Modifier.graphicsLayer GraphicsLayer umożliwia renderowanie treści kompozycyjnych w innych miejscach i jest przydatne w animowanych zastosowaniach, w których treści mają być renderowane w różnych scenach.

Zmiany w interfejsie API

  • GraphicsLayer.draw(Canvas) nie jest już publicznym interfejsem API. Zamiast tego do rysowania warstwy użyj funkcji rozszerzenia DrawScope.drawLayer(GraphicsLayer). (I7a7c0)
  • Podziel restrictedConstraints() na 2 metody: fitPrioritizingWidth() i fitPrioritizingHeight() (I6d7fd)
  • Wprowadzono odcinek HardwareCanvas dla Androida L (I1c3b5, b/288494724).
  • Zaktualizuj platformę tworzenia, aby udostępnić kompozycję GraphicsContext lokalnie wraz z aktualizacją implementacji modyfikatorów, DelegateableNode i drawWithCache w celu zapewnienia dostępu do GraphicsContext na potrzeby dostępu w zakresie, który automatycznie wyczyści GraphicsLayer instancji po usunięciu modyfikatorów. (I64a2f, b/288494724)
  • Wprowadzono funkcję InterceptPlatformTextInput, która ułatwia pisanie testów związanych z edytorem IME niskiego poziomu oraz innych niskopoziomowych zastosowań IME. Interfejs PlatformTextInputTestOverride został wycofany. (I862ed, b/322680547)
  • Dodano funkcję rozszerzenia GraphicsLayer.setOutline(Outline). (Ib81f4)
  • Wprowadzenie konstruktora funkcji GraphicsContext w celu utworzenia fabryki w celu utworzenia instancji GraphicsLayer (Ib98d6, b/288494724)
  • Udostępniliśmy interfejs API GraphicsLayer, aby zapewnić zdefiniowaną przez dewelopera elastyczność w rejestrowaniu poleceń rysowania, które można wykorzystać do rysowania w innym miejscu, a także do stosowania różnych efektów wizualnych do wyniku końcowego. (I80245, b/288494724)
  • Wprowadź funkcję Paragraph#getRangeForRect, która zwraca zakres tekstu zajętego przez dany prostokąt. (Iee516, b/325660505)
  • Usunięto eksperymentalne zastąpienie wartości BasicText za pomocą argumentu onLinkClicked. W przyszłości wprowadzimy zastępczy interfejs API do obsługi hiperlinków. (I107d5)

Poprawki błędów

  • Dodano Oczekiwaną/rzeczywistą definicję interfejsu API GraphicsLayer, aby umożliwić rejestrowanie i odtwarzanie poleceń rysowania z opcjonalnymi komponowanymi efektami wizualnymi i przekształceniami. Wprowadzenie interfejsu GraphicsContext, który uwzględnia zależności graficzne, w tym tworzenie instancji GraphicsLayer i zarządzanie nimi. (I4a8d6, b/288494724)
  • Naprawiono problem z interoperacyjnością podczas wyszukiwania z fokusem 1D, który powodował, że zaznaczenie zatrzymywało się w elemencie ComposeView umieszczonym wśród innych widoków. (I08fd4)

Wkład z zewnątrz

  • Element LocalLifecycleOwner został przeniesiony z interfejsu Compose do lifecycle-runtime-compose, aby można było używać jego pomocniczych interfejsów API opartych na interfejsie tworzenia wiadomości poza tym interfejsem. Dziękujemy Jake Wharton za przekazanie treści. (I6c41b, b/328263448)
  • Spójnie prezentuj właściwości swobody odchylenia dla wszystkich podtypów wyrównywania opartego na odchyleniu. (I69f0f, b/328088992)

Wersja 1.7.0-alfa04

6 marca 2024 roku

Aplikacja androidx.compose.ui:ui-*:1.7.0-alpha04 została zwolniona. Wersja 1.7.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Obsługa funkcji pisma odręcznego rysika w polu BasicTextField2 na urządzeniach z Androidem U (I002e4)
  • W tej liście dodajemy działanie semantyczne GetScrollViewportLength, aby umożliwić potokowanie informacji o przewijanych komponentach podczas tworzenia do systemu a11y. Ta lista zmian stosuje też użycie tej właściwości na listach przewijanych fundacji. (Ic5fa2)
  • FocusRequester.createRefs działa teraz stabilnie (I4d92c, b/261436820)
  • Wprowadziliśmy funkcję DelegatableNode.requireView(), która umożliwia węzłom modyfikującym pobieranie bieżącego Androida View bez lokalnego odczytywania kompozycji. (I40768)
  • Nowy interfejs API Path.reverse() do odwrócenia kierunku ścieżki (I36348)
  • Do języka KeyboardOptions dodano język hintLocales, aby umożliwić użytkownikowi TextFields dodanie instrukcji w edytorze IME z konkretnymi językami umożliwiającymi ustawienie preferowanego języka.
  • Udostępnij właściwość platformLocale z tabeli Locale, która zwraca podstawowy obiekt platformy, np. java.util.Locale. (I921c6)

Wersja 1.7.0-alfa03

21 lutego 2024 r.

Aplikacja androidx.compose.ui:ui-*:1.7.0-alpha03 została zwolniona. Wersja 1.7.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Przedstawiamy ContextualFlowRow i Ulepszony FlowRow/Column dzięki MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach w eksperymentalnych wersjach FlowRow i FlowColumn, w tym o funkcji maxLines i obsłudze dodatkowych elementów (w wersji: ContextualFlowRow i ContextualFlowColumn). Ta aktualizacja ma zapewnić optymalne działanie komponentów, przy czym ContextualFlow* jest idealnym rozwiązaniem w przypadku dużej liczby elementów korzystających z małej konfiguracji maxLines, a dynamiczna +N pozwala uzyskać więcej przycisków. FlowRow i FlowColumn to idealne rozwiązanie w przypadku niewielkiej liczby elementów, poniżej 100 elementów. Ważne: aby zachować dotychczasowe działanie funkcji FlowRow lub FlowColumn, w której tworzą się wszystkie elementy niezależnie od tego, czy mieszczą się w maksymalnej wartości na osi krzyżowej, podczas inicjowania ustaw overflow na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Poznaj ContextualFlowRowSample i FlowRowSample, aby zobaczyć przykłady tych nowych funkcji w praktyce. (Ib9135, b/293577082)
  • Dodaj właściwość semantyczną maxTextLength, którą należy ustawić dla pól tekstowych filtrujących maksymalną dozwoloną liczbę znaków. (I24d9f, b/170648072)
  • Kod Modifier.inspectable został wycofany. Ten interfejs API będzie tworzyć większą liczbę unieważnień modyfikatora niż to konieczne, więc odradzamy korzystanie z niego. Zachęcamy deweloperów do zaimplementowania metody inspectableProperties() w elemencie ModifierNodeElement, jeśli chcą udostępnić narzędzia w zakresie właściwości modyfikatora. (Ib3236)
  • Nowy konstruktor dla funkcji PopupProperties, który zapewnia pełną kontrolę nad flagami WindowManager.LayoutParams. (Ibb33e, b/312485503)
  • Wprowadzono DelegatableNode.requireLayoutCoordinates() jako sposób na uzyskanie aktualnego LayoutCoordinates dla: Modifier.Node bez konieczności zastępowania onPlaced i samodzielnego zapisywania współrzędnych w nieruchomości. (Ia8657)
  • Wprowadzono DelegatableNode.currentLayoutCoordinates jako sposób na uzyskanie aktualnego LayoutCoordinates dla: Modifier.Node bez konieczności zastępowania onPlaced i samodzielnego zapisywania współrzędnych w nieruchomości. (Iaebaa)
  • BasicTextField2 i powiązane interfejsy API w pakiecie androidx.compose.foundation.text2 są przenoszone do androidx.compose.foundation.text. (I9f635)
  • Dodaliśmy nowy interfejs API ApproachLayoutModifierNode, który umożliwia tworzenie niestandardowego podejścia w jawnym węźle modyfikatora. Dodaliśmy też nowy, eksperymentalny interfejs API DeferredTargetAnimation na potrzeby animacji, których wartość docelowa jest nieznana w momencie utworzenia. (I60745)
  • Nowe interfejsy API Path do wysyłania zapytań dotyczących kierunku ścieżki i wyodrębniania konturów z elementu Path. (I63d04)
  • Dodano PathHitTest i Path.contains(Offset), aby sprawdzić, czy Path zawiera konkretny punkt. (I3b218)
  • TextLayoutResult ujawnia teraz metodę getLineBaseline(lineIndex). Pozwala to odczytać punkt odniesienia dowolnego wiersza tekstu, a także korzystać z istniejących właściwości udogodnień firstBaseline i lastBaseline. (Ide4e8, b/237428541)
  • Dodano metodę porównywania tylko adnotacji 2 elementów AnnotatedStrings. (I32659)

Poprawki błędów

  • Rozwiązaliśmy problem ze zgodnością wsteczną w przypadku elementów SemanticsPropertyReceiver.performImeAction i SemanticsActions.PerformImeAction. (Id0528, b/322269946)

Wersja 1.7.0-alfa02

7 lutego 2024 r.

Aplikacja androidx.compose.ui:ui-*:1.7.0-alpha02 została zwolniona. Wersja 1.7.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Rozwiązaliśmy problem ze zgodnością plików binarnych z elementem SemanticsPropertyReceiver.performImeAction. (I65865, b/322269946)
  • Konstruktor PopupProperties, który przyjmuje parametr usePlatformDefaultWidth, nie jest już eksperymentalny. (I8f8d2)
  • Dodano przeciążenie ComposeTestRule.waitUntil, które wymaga dodania ciągu tekstowego opisu warunku do komunikatu o przekroczeniu limitu czasu. (I9413e)
  • Nowy interfejs API semantyki unset() usuwa właściwości semantyczne dodane 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 PointerInputChange. (I7bead)

Poprawki błędów

  • Naprawiono błąd uproszczony, który po wybraniu elementów niezawierających kart i przycisków radiowych można było kliknąć. (I2181c)
  • VelocityTracker będzie teraz mieć możliwość domyślnie dodawania punktów. W razie problemów możesz wyłączyć tę poprawkę, ustawiając atrybut VelocityTrackerAddPointsFix na wartość Fałsz. (Ib3877, b/269487059)
  • Usunięto wsteczną niezgodność plików binarnych w TextStyle i ParagraphStyle. (I179f0, b/320819734)

Wkład z zewnątrz

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

Wersja 1.7.0-alfa01

24 stycznia 2024 r.

Aplikacja androidx.compose.ui:ui-*:1.7.0-alpha01 została zwolniona. Wersja 1.7.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Rozwinięto atrybut ClipboardManager, dodając znaczniki ClipEntry i ClipMetadata, aby umożliwić obsługę dowolnych treści, takich jak obrazy.
  • Dodaje do interfejsu ui-test interfejs API DeviceConfigurationOverride, aby umożliwić lokalne zastąpienie testowanej treści – na przykład w celu określenia dostępnego rozmiaru, języka, kierunku układu, skali czcionki lub motywu.

Wersja 1.6

Wersja 1.6.6

17 kwietnia 2024 r.

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

Poprawki błędów

  • Naprawia rzadką awarię BasicTextField.

Wersja 1.6.5

3 kwietnia 2024 r.

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

Wersja 1.6.4

20 marca 2024 r.

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

Wersja 1.6.3

6 marca 2024 roku

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

Wersja 1.6.2

21 lutego 2024 r.

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

Wersja 1.6.1

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

Poprawki błędów

  • Rozwiązaliśmy problem ze zgodnością wsteczną w przypadku elementów SemanticsPropertyReceiver.performImeAction i SemanticsActions.PerformImeAction. (Ie0bb2, b/322269946)
  • Obecnie szablony zwracają błąd podczas pomiaru, gdy użytkownik zwraca nietypowo duży rozmiar. Ten rodzaj błędu zwykle występuje, gdy pomiar bezpośrednio wykorzystuje maksymalne ograniczenia bez sprawdzania parametru Constraints.Infinity. To rozwiązanie pomoże programistom znaleźć problemy z układem o nieprawidłowym rozmiarze, a nie w układzie, który go zawiera. (I339a9)

Wersja 1.6.0

24 stycznia 2024 r.

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

Wersja 1.6.0-rc01

10 stycznia 2024 r.

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

Poprawki błędów

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

Wersja 1.6.0-beta03

13 grudnia 2023 r.

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

Nowe funkcje

  • Teraz możliwe jest odłączenie węzła LayoutCoordinates bez jego odłączania. Zabezpieczaj się przed nimi w Inspektorze układu tworzenia wiadomości (If693)

Poprawki błędów

  • PlatformImeOptions jest teraz konkretną klasą, a nie interfejsem. (If40a4)
  • Naprawiono dodatkowe rekompozycje elementu źródłowego spowodowane przez dostarczanie nowych wartości LocalSoftwareKeyboardController i LocalTextInputService. (I42190, b/310510985)

Wersja 1.6.0-beta02

29 listopada 2023 r.

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

Wersja 1.6.0-beta01

15 listopada 2023 r.

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

Zmiany w interfejsie API

  • Modyfikator DragAndDropTarget bezpośrednio pobiera element DragAndDropTarget i wybiera lambda, który umożliwia połączenie z sesją przeciągania i upuszczania. DragAndDropModifierNode ma teraz 2 funkcje fabryczne. jeden do odbierania transferów, a drugi do przenoszenia danych (I69481)
  • Zaktualizowano tabelę maximumFlingVelocity, by była wyświetlana jako liczba zmiennoprzecinkowa. Zaktualizowaliśmy dokumentację, aby była bardziej przejrzysta na temat jednostki maximumFlingVelocity. (I8adc7)
  • Nazwa urządzenia onDragAndDropStart w fabryce urządzenia DragAndDropModifierNode została zmieniona na acceptDragAndDropTransfer.Element acceptsDragAndDropTransfer został dodany do modyfikatora dragAndDropTarget, aby można go było zaakceptować z sesji przeciągania i upuszczania. Ta funkcja lambda zwraca prawidłowy DragAndDropTarget, jeśli użytkownik zainteresuje się sesją typu „przeciągnij i upuść”. Zastąpiliśmy inne lambda do przetwarzania zdarzeń przeciągania. Dodaliśmy funkcję fabryczną DragAndDropTarget, która umożliwia otrzymywanie danych z sesji przeciągania i upuszczania (Iebf3a).
  • Usunięcie elementu DragAndDropInfo jako typu DragAndDropModifierNode.drag przyjmuje teraz parametry dla właściwości transferData, rozmiar dekoracji i przeciągaj lambda DrawScope

    Funkcja DragAndDropTarget zamiast pojedynczej metody abstrakcyjnej ma metody odpowiednie do określonych zdarzeń typu „przeciągnij i upuść”

    Nazwa funkcji onDragAndDropEvent w funkcji fabrycznej urządzenia DragAndDropModifierNode została zmieniona na onDragAndDropStart, aby lepiej informować, że podany parametr DragAndDropTarget jest prawidłowy tylko w danej sesji przeciągania i upuszczania

    DragAndDropEventType został usunięty (I645b1)

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

  • Poprawia możliwość przemierzania nazw interfejsów API węzłów, aby były bardziej zrozumiałe. (Ia4474)

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

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

  • Elementy podrzędne elementu SubcomposeLayout (i układów takich jak LazyColumn na jego podstawie), które zostały zachowane do ponownego wykorzystania w przyszłości, są uznawane za wyłączone. Do testowania takich węzłów wprowadzono nowy testowy interfejs API assertIsDeactivated(). Pozostałe testowe interfejsy API odfiltrowują domyślnie wyłączone węzły. (I2ef84, b/187188981)

  • Usunięto FocusDirection.In i FocusDirection.Out zamiast FocusDirection.Enter i FocusDirection.Exit (I2f660)

  • Interfejsy API Material SwipeToReveal (dla kart i układów) do tworzenia tych przedziałów używają teraz interfejsu API opartego na przedziałach (co jest zalecane w narzędziu Compose), a nie instancji opartych na klasach danych. Jest to niezbędna zmiana. Obejrzyj demonstrację i przykładowy kod z przykładami korzystania z nowego interfejsu API. (Ia8943)

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

  • Zmieniono nazwę interfejsu FontScalable na FontScaling (Ie804a)

Poprawki błędów

  • Aplikacja SoftwareKeyboardController.show() nie będzie już wyświetlać klawiatury programowej, jeśli edytor tekstu nie będzie zaznaczony. (I2165a, b/301477279)
  • Zdarzenia związane z klawiszem strzałek w górę w przypadku kluczy, które nie otrzymały żadnego zdarzenia w dół w tym samym widoku tworzenia, będą teraz ignorowane. (Ib37b4, b/305518328)
  • Dodano obsługę gradientu przez renderowanie w ArcLine. (I4d5bb)
  • W przypadku funkcji PageSize.Fixed zaimplementuj kod równości i kod skrótu. (Ie3ede, b/300134276)
  • Napraw problem ze zgodnością plików binarnych ze zmianą ustawienia Okno (Iee695)
  • Usuń warstwę materiałową z elementu Material3 Chip/Button, ponieważ mikroporównania pokazują lepszą wydajność bez niego. (I55555)
  • Do tworzenia zegarów testowych i generowania zegarów służą teraz komórki TestDispatcher zaliczone jako effectContext do tworzenia wiadomości. (Ia7178)

Wersja 1.6.0-alfa08

18 października 2023 r.

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

Zmiany w interfejsie API

  • Modifier.dragAndDrawSource Nazwę lambda onDrawDragShadow zmieniono na drawDragDecoration, a parametr rozmiaru DragAndDropInfo zmieniono na dragDecorationSize. (Id0e30, b/303904810)
  • Wprowadź SemanticsNodeInteraction.isDisplayed() i SemanticsNodeInteraction.isNotDisplayed(), aby sprawdzić, czy pasujący węzeł jest widoczny czy nie bez uwierzytelniania. (I2c196, b/302100809)
  • Wprowadziliśmy specjalną wartość Unspecified w polach TextAlign, TextDirection, Hyphens i LineBreak w ParagraphTextStyle, aby zastąpić null. Te klasy są klasami wbudowanymi, dlatego zastępując wartość null wartością Unspecified, unikamy tworzenia boksu z typami podstawowymi. Konstruktory, metody pobierania i inne metody w stylu TextStyle i stylu akapitu zostały zaktualizowane, aby akceptowały wymienione parametry jako typy niepuste. (I4197e, b/299490814)
  • Dodaj przeciążenie GoogleFont przy odczytywaniu pliku GoogleFont z pliku XML. (If8f59)
  • Zrobił(a) zajęcia LoremIpsum PreviewParameterProvider otwarte. (I41bf5, b/266918816, b/300116360)

Poprawki błędów

  • FontFamilyResolver używa teraz Dispatchers.Main do zarządzania pamięcią podręczną. (Ie8dd9)
  • AndroidViewBinding teraz synchronicznie usuwa powiększone wystąpienia Fragment, dodając do układu element FragmentContainerView jako część układu onRelease (zamiast elementu commit używanego wcześniej), co naprawia problemy z metodą edycji podczas transmisji, zastępując kompozycję po wprowadzeniu zmian.commitNow (I58fbf)

Wersja 1.6.0-alfa07

4 października 2023 r.

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

Zmiany w interfejsie API

  • Wprowadzono PlatformTextInputMethodTestOverride do pisania testów w niestandardowych edytorach tekstu. (Id159b)
  • Dodaje modyfikator dragAndDropSource do rozpoczynania sesji przeciągania i upuszczania oraz modyfikator dragAndDropTarget do odbierania wiadomości z sesji przeciągania i upuszczania. (Ib7828, b/286038936)
  • Dodano kolekcje ColorList i ColorSet, które pomijają przydziały. (I744bd)
  • Dodano tymczasową flagę DisableNonLinearFontScalingInCompose, aby wyłączyć nieliniowe skalowanie czcionek. Ustaw DisableNonLinearFontScalingInCompose = true w testach, jeśli potrzebujesz czasu na ich czyszczenie. Ta flaga zostanie usunięta z wersji Compose w wersji 1.6.0-beta01. (Ic9486)

Poprawki błędów

  • Zoptymalizowana analiza elementów rysowalnych wektorowych XML. (Ibb015)

Wersja 1.6.0-alfa06

20 września 2023 r.

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

Zmiany w interfejsie API

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

Zmiany w działaniu

  • Podczas tworzenia wiadomości używane jest teraz nieliniowe skalowanie czcionek, które zapewnia lepszą czytelność i dostępność. Gdy w ustawieniach systemowych skala czcionki przekroczy 100%, mały tekst będzie się normalnie powiększał, a już duży tekst tylko nieco się zwiększy. Ponadto wysokości linii określone w SP są automatycznie dostosowywane w taki sposób, aby zachować proporcje do zamierzonej wysokości w skali 100%. Więcej informacji znajdziesz w opisie sprawdzonych metod dotyczących skalowania czcionek (I11518).

Wersja 1.6.0-alfa05

6 września 2023 r.

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

Zmiany w interfejsie API

  • Włącz przechwytywanie treści w aplikacji AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • Prędkość przesunięcia w komponentach widoku, takich jak ScrollView i RecyclerView, jest ograniczona do ViewConfiguration.ScaledMaximumFlingVelocity. Funkcja Utwórz zawiera teraz własną wersję elementu maximumFlingVelocity, która obowiązuje teraz w odniesieniu do Draggable. (Ibf974)
  • Dodaje początkową strukturę, aby obsługiwać interfejsy API przeciągania i upuszczania platform. (If84ce)
  • Dodaj: deviceId do grupy reklam RotaryScrollEvent (Iba3bf)
  • Zaktualizowano interfejs API urządzeń ui-tooling, aby uwzględnić nowsze urządzenia (Ib25b4)

Wersja 1.6.0-alfa04

23 sierpnia 2023 r.

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

Zmiany w interfejsie API

  • Dodano metodę dezaktywacji funkcji ReusableComposition, usuwając obserwacje, ale utrzymując węzły na swoim miejscu. Dezaktywowaną kompozycję można aktywować ponownie, dzwoniąc pod numer setContent. (Ib7f31)
  • Dodano interfejs ReusableComposition, który umożliwia zarządzanie cyklem życia i ponownym używaniem podkompozycji. (I812d1, b/252846775)
  • Interfejs Modifier.focusGroup został przekształcony w stabilne interfejsy API. (I7ffa3)
  • Dodano adnotacje androidx do różnych interfejsów API grafiki, aby określić ColorInt, FloatRange, IntRange, Size i inne. (I70487, b/290950582)
  • Zaktualizowaliśmy interfejs API ColorFilter, aby uwzględnić konkretne typy podklas w celu ułatwienia sprawdzania parametrów. (I5fe29)
  • Wprowadź bibliotekę Wear-tooling-preview, aby wyświetlić listę prawidłowych urządzeń do noszenia, których można używać do wyświetlania podglądu interfejsu (Ib036e)
  • Utworzono interfejs FontScalable do obsługi skalowania czcionki w interfejsie Gęstość. (I2cf3f)

Wersja 1.6.0-alfa03

9 sierpnia 2023 r.

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

Zmiany w interfejsie API

  • Nowy typ przejścia wejścia/wyjścia, które skaluje zawartość odpowiednio do rozmiaru kontenera animowanego podczas animacji wejścia i wyjścia. LookaheadScope Funkcja kompozycji i interfejs są teraz stabilne. (Ifb2ce)
  • Dodano obsługę konfigurowania usługi privateImeOptions (Idb772).

Poprawki błędów

  • PopupPositionProvider.calculatePosition będzie teraz automatycznie aktualizować położenie wyskakującego okienka, gdy zmieni się stan odczytywany w obliczeniach. (I676a1, b/292257547)
  • Naprawione pola tekstowe wyświetlające klawiaturę i dostępne do edycji, gdy readOnly ma wartość prawda. Rozwiązaliśmy też problem z wyświetlaniem klawiatury w przypadku zmiany ustawienia readOnly z prawda na fałsz (gdy jest zaznaczony). (I34a19, b/246909589)
  • Rozszerzone zastosowanie asercji globalnych w testowaniu UI. (I1f90d)

Wersja 1.6.0-alfa02

26 lipca 2023 r.

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

Zmiany w interfejsie API

  • Dodaliśmy interfejs lokalizatora usług, który może być zaimplementowany przez osoby implementujące kompozycję. Pozwala on na implementację kompozycji, która przekazuje wyszukiwanie usług do oryginalnej kompozycji. Nie należy go używać do tworzenia eksperymentalnych interfejsów API w środowisku wykonawczym, które można znaleźć w opakowanych wersjach kompozytora, np. w module interfejsu. (I296b9)
  • Całkowicie nowy interfejs PlatformTextInput* API. (I6c93a, b/274661182, b/267235947, b/277380808)
  • Wersje SoftwareKeyboardController i LocalSoftwareKeyboardController nie są już eksperymentalne. Element LocalSoftwareKeyboardController jest teraz poprawnym elementem typu CompositionLocal. (I4c364)
  • Wersje LookaheadLayout i LookaheadLayoutScope zostały wycofane z kilku wersji i teraz usunięte. Zastąpione interfejsy API to LookaheadScope, które mogą działać z dowolnym szablonem. (I12ac3)
  • Dodano SemanticsNodeInteraction.requestFocus jako wygodniejszy i łatwiejszy do znalezienia sposób wysyłania prośby o koncentrację w testach. (Ie8722)
  • Dodaj eksperymentalne interfejsy API do rejestrowania asercji globalnych, które w przyszłości będą mogły zostać użyte przez platformy do testowania. (I12d77).

Poprawki błędów

  • Pierwsze wywołanie zwrotne update w usłudze AndroidView będzie teraz opóźnione do czasu podłączenia widoku, a nie do momentu zastosowania kompozycji, która wprowadza AndroidView. Naprawiono błąd, przez który wywołanie zwrotne update nie było unieważnione, jeśli odczytywany stan został natychmiast zmieniony w wyniku efektu. (Ie9438, b/291094055)

Wersja 1.6.0-alfa01

21 czerwca 2023 r.

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

Nowe funkcje

  • Korzystaj z tej funkcji w LazyList. Dzięki temu funkcja LazyList w widoku z wyprzedzeniem może pomijać dowolną animację (np.animację rozmieszczenia elementu, AnimatedVisibility itp.) oraz obliczać rozmiar i pozycję widoku do przodu w przypadku wszystkich elementów podrzędnych. Po przejściu z daleka dzieci z grupy LazyList mogą samodzielnie animować się do rzeczywistości, która znajduje się w widocznej części ekranu.

Zmiana działania: atrybut includeFontPadding ma teraz domyślnie wartość „false” w polu Compose

Komponent includeFontPadding ma teraz domyślnie wartość fałsz (21d806) w komponencie Compose.

includeFontPadding to starszy atrybut, który określa, czy należy umieścić dodatkowe dopełnienie nad pierwszym i ostatnim wierszem tekstu w celu wpisania znaków, które mogą wykraczać poza podstawowe lub częściowe dopełnienia tekstu.

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

W zależności od wymagań interfejsu użytkownika i używanych danych czcionek zmiany powinny być niewielkie. Możesz jednak napotkać blokady, takie jak: – Niedziałające zrzuty ekranu. W razie potrzeby napraw interfejs i ponownie wygeneruj złote obrazy. – Tekst jest nieco źle wyrównany. Usuń wszelkie niestandardowe dopełnienia wykluczające lub dodaj dopełnienie, jeśli to konieczne.

Możesz zaakceptować includeFontPadding, używając atrybutu PlatformTextStyle dla każdego tekstu:

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

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

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

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

Więcej informacji o tworzeniu wiadomości includeFontPadding znajdziesz w dokumentacji dla programistów i tym poście na blogu.

Jeśli zauważysz problemy lub błędy związane z tą zmianą, zgłoś błąd za pomocą narzędzia do śledzenia problemów.

Zmiany w interfejsie API

  • Pomoc InputConnection#requestCursorUpdates (I0c69b)
  • Dodano FocusRequester.saveFocusedChild i FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318)
  • Dodaj typ ResourceResolutionException do zawijania obiektów zgłaszanych podczas próby wczytania zasobów bitmapy z opisem ścieżki zasobu, której nie udało się wczytać. (I19f44, b/230166331, b/278424788)
  • Zoptymalizowane ułatwienia dostępu pod kątem wydajności i przydziału pamięci. (Iede48)
  • Dodano właściwości semantyczne i działania w celu obsługi tłumaczenia tekstu. (I4a6bc)
  • Nowa usługa w usłudze IntrinsincMeasureScope i jej implementacje (np. MeasureScope), aby wskazać, czy bieżące przekazywanie środków jest zgodne z zapowiedzią. (I7a812)
  • Zaktualizowaliśmy interfejs API DrawScope, aby wprowadzić możliwość ponownego kierowania renderowania na inny obszar roboczy z inną gęstością/układem i rozmiarem.
  • Zaktualizowano DrawContext, aby zapewnić obsługę konfiguracji gęstości i kierunku układu oraz możliwości konfigurowania obszaru roboczego. (Ie1f9b, b/225408150)
  • Dodano funkcję Paragraph#fillBoundingBoxes, aby obliczyć ramki ograniczające znaki. (If30ee)
  • Dodano zestaw wspólnych wyrażeń MultiPreviews (Ia5a27)

Poprawki błędów

  • Dodano interfejs FocusTargetModifierNode, którego można użyć do utworzenia niestandardowego elementu FocusTarget. (I9790e)
  • Zmieniliśmy nazwy parametrów fallback* w konstruktorze TextMeasurer na default*. (I940a5)
  • Nazwa elementu SemanticsPropertyReceiver.performImeAction została zmieniona na onImeAction oraz SemanticsActions.PerformImeAction na OnImeAction. (I8e841)
  • Dodaje koło, które umożliwia odróżnienie przewijania za pomocą myszy od przeciągania myszą w przypadku przewijania zagnieżdżonego (zwłaszcza w języku NestedScrollConnection). (Ie57e4)
  • Dodano interfejs API asComposePaint, aby zastąpić toComposePaint, ponieważ zwracany obiekt opakowuje pierwotny obiekt android.graphics.Paint (I22b4c).
  • Wycofaj parametr SemanticsProperties.imeAction i zastąp go nowym parametrem: SemanticsActions.performImeAction. (I4a587)
  • Dodano obsługę zaznaczania myszką. Zaznaczanie dotykiem będzie się powiększać o kolejne słowo, a zmniejszać po znaku. (Ic0c6c, b/180639271)
  • Metody Paragraph, które korzystały z wcześniej do rzucania AssertionError przy przesunięciach poza zakresem, teraz zwracają metodę IllegalArgumentException, tak jak robi to MultiParagraph. (I549d3, b/243338896)

Wersja 1.5

Wersja 1.5.4

18 października 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.5.4 została zwolniona. Wersja 1.5.4 zawiera te zatwierdzenia.

Wersja 1.5.3

4 października 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.5.3 została zwolniona. Wersja 1.5.3 zawiera te zatwierdzenia.

Poprawki błędów

  • (b/301209788) TextField czasami nieprawidłowo stosuje poprzednie polecenia podczas zaznaczania i wprowadzania tekstu w języku koreańskim, co prowadzi do utraty znaków.

Wersja 1.5.2

27 września 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.5.2 została zwolniona. Wersja 1.5.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodaliśmy obejście problemu awarii, gdy dostęp do interfejsu API przewijania związany z ułatwieniami dostępu był uzyskiwany z wątku w tle.
  • Napraw niedołączone węzły dodawane do drzewa semantyki.

Wersja 1.5.1

6 września 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.5.1 została zwolniona. Wersja 1.5.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawione pola tekstowe wyświetlające klawiaturę i dostępne do edycji, gdy readOnly ma wartość prawda. Rozwiązaliśmy też problem z wyświetlaniem klawiatury w przypadku zmiany ustawienia readOnly z prawda na fałsz (gdy jest zaznaczony). (I34a19, b/246909589)

Wersja 1.5.0

9 sierpnia 2023 r.

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

Wersja 1.5.0-rc01

26 lipca 2023 r.

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

Poprawki błędów

  • Naprawiono awarię, która występowała, gdy użytkownik SubcomposeLayout był używany w movableContentOf().

Wersja 1.5.0-beta03

28 czerwca 2023 r.

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

Poprawki błędów

  • Dodano interfejs FocusTargetModifierNode, którego można użyć do utworzenia niestandardowego elementu FocusTarget. (Ifb1d6)
  • Rozwiązaliśmy problem z kompozycyjnymi elementami Okno i Wyskakujące okienko, który mógł powodować, że okno podrzędne nie zmieniało się zgodnie z oczekiwaniami, gdy usePlatformDefaultWidth=true. (I112ee)

Wersja 1.5.0-beta02

7 czerwca 2023 r.

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

Zmiany w interfejsie API

  • Dodano interfejs API asComposePaint, aby umożliwić wykorzystanie instancji android.graphics.Paint podczas tworzenia wiadomości

Poprawki błędów

  • Dodano interfejs API asComposePaint, aby zastąpić toComposePaint, ponieważ zwracany obiekt opakowuje pierwotny obiekt android.graphics.Paint (I22b4c).

Wersja 1.5.0-beta01

24 maja 2023 r.

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

Zmiany w interfejsie API

  • Usunięto przydziały ze zmiany kompozycji, animacji kolorów i pliku AndroidComposeView (Ib2bfa)
  • Dodaje zabawę CacheDrawModifierNode(), aby umożliwić przekazywanie dostępu (Icf8f9)
  • Przedstawiamy właściwość isLookingAhead, dostępną z poziomu MeasureScope, aby obserwować wyniki wyszukiwania i w razie potrzeby wpływać na główną obsługę. (Ibf4c3)
  • Nowa właściwość semantyczna traversalIndex – liczba zmiennoprzecinkowa używana do zmiany kolejności węzłów w przechodzeniu TalkBack (niższe wartości występują wcześniej). (I9a81b, b/186443263)
  • Zmiana nazwy właściwości semantycznej isContainer na isTraversalGroup (I121f6)
  • ColorProducer ma teraz operator fun invoke zamiast produce (I4a9a2)
  • Dodaj interfejs Path transform API, aby zastosować przekształcenia translacji, skalowania lub rotacji do obiektów ścieżki. (I23434, b/233772232)
  • Metoda ColorProducer nazywa się produce. (I78bde)
  • Zmień nazwę toFrameworkColorSpace na toAndroidColorSpace (I4f547)
  • Zmień nazwę społeczności ColorLambda na ColorProducer. (I73b1a)
  • Wprowadzenie interfejsów API do konwertowania między typami przestrzeni kolorów Androida i tworzenia wiadomości. (Ie7db4, b/279979665)
  • Do elementu BasicText dodano parametr koloru, który umożliwia efektywne animowanie i ustawianie koloru tekstu. (Iffd88, b/246961787)
  • Nazwa elementu TextRange.constrain została zmieniona na TextRange.coerceIn. (I31be2)
  • Dodano zoptymalizowane parametry TextStyle.merge(...) z pełną listą parametrów. (Iad234, b/246961787)
  • Ustabilizowano wiele interfejsów API tekstowych, w tym Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • Ustawienie PlatformTextStyle.includeFontPadding nie jest wycofane. Pierwotnie chcieliśmy usunąć to pole, ale z opinii wynika, że deweloperzy potrzebują tej opcji konfiguracji. Dlatego wycofanie ich z pola zostanie usunięte (I98e96, b/277703184).
  • Dodano publiczną metodę TextRange.constrain. (I97912)
  • Obiekt UrlAnnotation w komórce AnnotatedString 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) jest awansowany do stabilnej wersji interfejsu API. (I79c32, b/261565383)
  • TextMeasurer i powiązane z nimi interfejsy API nie są już eksperymentalne. (I74647, b/261581753)
  • Dodano działanie semantyczne PerformImeAction w celu wywołania działania 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 pola Enum.valueOf (Ia9b89)
  • więcej zgłoszonych wyjątków od wartości enum (I818fe)
  • Wprowadziliśmy nowy, niskopoziomowy interfejs API PlatformTextInputAdapter służący do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)
  • Dodano parametr BlendMode do metod DrawScope.drawText, Paragraph.paint i MultiParagraph.paint, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508)
  • Zmień nazwę społeczności Font.MaximumAsyncTimeout na Font.MaximumAsyncTimeoutMillis. Zmień tylko nazwę. (I07af5)
  • Zaktualizowane wartości DPI @Preview urządzeń referencyjnych (Id6151, b/254528382)
  • Dodaj parametry brush i alpha do pliku BasicText, aby umożliwić sprawne animowanie i ustawianie pędzla tekstu.
  • Zdefiniuj proste typy lambda bez ramek w polach :ui:ui-unit (I6f18d, b/246961787)

Poprawki błędów

  • Usunięto wiele alokacji ze śledzenia prędkości wskaźnika (I26bae)
  • Ograniczone przydziały w zarządzaniu układem i wprowadzaniem wskaźnika (I5333a)
  • Optymalizowanie wykorzystania pamięci wektorowej i renderowania pierwszych klatek (I2f3c6)
  • Usunięcie przydziałów podczas rysowania linii i punktów w Canvas (I9f535)
  • Dodaj dokumenty: AndroidFont.fontVariationSettings (I7d9e2)

Wkład z zewnątrz

  • Zwiększona wydajność i zmniejszona liczba przydziałów w interfejsach Vector API (I906cb)

Wersja 1.5.0-alfa04

10 maja 2023 r.

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

Nowe funkcje

  • Udoskonalenia w zakresie przekazywania uprawnień Modifier.Node Dodano ulepszoną możliwość przekazywania dostępu do innych instancji Modifier.Node z poziomu DelegatingNode. Można to robić za pomocą interfejsów API delegate i undelegate. Przed tą zmianą każdy interfejs API z węzła przekazującego musiał być wyraźnie delegowany do tego węzła. Po tej zmianie interfejsy węzłów będą przekazywane domyślnie, chyba że interfejs DelegatingNode jawnie je zastąpi. (67352bc)

Zmiany w interfejsie API

  • Przedstaw NestedScrollModifierNodeNestedScroll Modifier.Node, do którego można delegować uprawnienia. (I69513)
  • Dodano parametry onReset i onRelease do funkcji kompozycyjnej AndroidViewBinding, stanowiącą powielanie elementu kompozycyjnego AndroidView i włączenie obsługi ponownego użycia widoku za pomocą ViewBinding. (I00b1e, b/276802519)
  • Zaktualizowaliśmy interfejs Compose Path API, aby zapewnić obsługę operacji przewijania do tyłu, co ułatwia przyswajanie przypadków częstego manipulacji ścieżką. (I7b797)
  • Dodano zoptymalizowane parametry TextStyle.merge(...) z pełną listą parametrów. (Iad234, b/246961787)
  • Ustabilizowano wiele interfejsów API tekstowych, w tym Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • Ustawienie PlatformTextStyle.includeFontPadding nie jest wycofane. Pierwotnie chcieliśmy usunąć to pole, ale z opinii wynika, że deweloperzy potrzebują tej opcji konfiguracji. Dlatego wycofanie ich z pola zostanie usunięte (I98e96, b/277703184).

Poprawki błędów

  • Naprawiono regresję, w przypadku której nie wyświetlała się klawiatura w przypadku pól tekstowych w oknach, które nie zostały utworzone przez funkcję Dialog kompozycyjną. (I82551, b/262140644)

Wersja 1.5.0-alfa03

19 kwietnia 2023 r.

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

Nowe funkcje

  • Nowe działanie domyślne funkcji SubcomposeLayout w interfejsie LookaheadScope: SubcomposeLayouts, które nie ma boksów warunkowych (np.TabRow, Scaffold, BoxWithConstraints itp.), teraz dobrze działa z animacjami patrzenia do przodu.

Zmiany w interfejsie API

  • Nowa domyślna wartość intermediateMeasurePolicy, która wykorzystuje zasadę pomiaru z zapowiedzi, pozwala na działanie podtypów SubcomposeLayout bez przedziałów warunkowych, takich jak Scaffold, TabRow i BoxWithConstraints, domyślnie z wyprzedzeniem. (Id84c8)
  • Narzędzie do tworzenia wiadomości utworzone dla okna Androida będzie teraz blokować wywołania withFrameNanos zamiast całej kompozycji, gdy otrzyma powiadomienie ON_STOP. Oznacza to, że okna powiązane ze zatrzymanymi aktywnościami będą nadal tworzone w celu zmiany danych, ale animacje lub inne elementy wywołujące withFrameNanos zostaną zablokowane. (Id9e7f, b/240975572)
  • Zmienia motionEventSpy na stabilny. (Ic5ec4, b/261560988)
  • Dodano publiczną metodę TextRange.constrain. (I97912)
  • Interfejs PlatformTextStyle.includeFontPadding nie jest już wycofany, aby zachęcić deweloperów do używania tego interfejsu API zgodności do zmiany i testowania ustawienia includeFontPadding na „fałsz”. (I98e96, b/277703184)

Wersja 1.5.0-alfa02

5 kwietnia 2023 r.

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

Zmiany w interfejsie API

  • Nowy interfejs API SubcomposeLayout, który wymaga dodatkowej pośredniej zasady pomiaru do obsługi logiki pomiaru/układu podczas animacji opartych na patrzeniu z wyprzedzeniem. (I017d3)
  • Funkcja PointerInput jest teraz leniwa i korzysta z funkcji Modifier.Node, aby uzyskać lepszą wydajność (przeczytaj informacje o drobnej zmianie w działaniu). (15dab9)
  • Zmienia eksperymentalne interfejsy API w stabilne z kluczowymi zdarzeniami. (I9c7d8, b/261566839, b/261567368)
  • Zmienia eksperymentalne interfejsy API na stabilne w PointerInputChange. (I1b543, b/261560988, b/261565762, b/261565749)
  • Dodaje sposób tworzenia instancji SuspendingPointerInputModifierNode na potrzeby bardziej złożonych implementacji Modifier.Node. (Ic4933)
  • Obiekt UrlAnnotation w komórce AnnotatedString 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 ich wysłaniem do klawiatury programowej (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 żądać zaznaczenia bezpośrednio, korzystając z działania semantycznego, zamiast klikać pole. (I6ed05)

Poprawki błędów

  • Czynności testowe związane z tekstem wymagają teraz włączenia pól tekstowych. (Iab328)

Wersja 1.5.0-alfa01

22 marca 2023 r.

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

Zmiany w interfejsie API

  • Modifier.secondaryLayout nie wymaga teraz jawnego LookaheadScope. Blok pomiaru w układzie pośrednim ma element IntermediateMeasureScope jako odbiornik, który udostępnia wygodne funkcje CoroutineScope, LookaheadScope i MeasureScope.(Ibe2e5).
  • Funkcja LookaheadUkład została zastąpiona funkcją LookaheadScope, która nie jest już układem. Dzięki temu treści chid w LookaheadScope mogą być bezpośrednio kontrolowane przez zasadę nadrzędnego MeasurePolicy. (Ibe2e5)
  • Dodaje Modifier.Node#coroutineScope, aby umożliwić Modifier.Nodes uruchamianie współprogramów. (I76ef9)
  • Zezwalaj obiektowi Modifier.Nodes na odczyt obiektu CompositionLocals za pomocą interfejsu CompositionLocalConsumerModifierNode. (Ib44df)
  • Propagacja @wycofanej klasy do właściwości. (I882d1)

Wersja 1.4

Wersja 1.4.3

3 maja 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.4.3 została zwolniona. Wersja 1.4.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem z nieprawidłowym układem elementu AndroidView przy niektórych modyfikatorach. (I4dc77, b/274797771)
  • Poprawiono błąd w funkcji wyszukiwania szczegółów w 2D, który wpływał na menu DropDown (b/276811828).
  • Poprawiono błąd we właściwościach wprowadzania/wyjścia niestandardowego fokusu, który uruchamiał tylko blok Enter/exit po pierwszym wywołaniu funkcji lambda (b/277234245).
  • Naprawiono regresję w systemie fokusu, która spowodowała awarię podczas odczytu funkcji focusProperties. (b/271324781, b/274897776)

Wersja 1.4.2

19 kwietnia 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.4.2 została zwolniona. Wersja 1.4.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd, który powodował, że funkcja AndroidView nieprawidłowo ponownie używała modyfikatorów, co mogło prowadzić do nieoczekiwanego działania i awarii. (Ib67ee, b/275919849)
  • Naprawiona regresja, która polegała na tym, że w polach tekstowych w oknach tekstowych, które nie zostały utworzone w ramach funkcji kompozycyjnej Dialog (I82551, b/262140644) nie pojawiała się klawiatura

Wersja 1.4.1

5 kwietnia 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.4.1 została zwolniona. Wersja 1.4.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięto problem z błędem ParentDataModifier, który nie wpływa na AndroidView (b/274797771)

Wersja 1.4.0

22 marca 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.4.0 została zwolniona. Wersja 1.4.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.3.0

  • Dodaliśmy nowy interfejs API PinnableContainer, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane, gdy zostaną przewinięte poza zakres. Na przykład Modifier.focusable() używa tego mechanizmu do przypinania aktualnie aktywnego elementu. (Ib8881, b/259274257, b/195049010)
  • System fokusu został przepisany za pomocą nowych, eksperymentalnych interfejsów API Modifier.Node. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/5/184} b/5184
  • Dodano we właściwości semantycznej IsContainer w platformach. Ta właściwość będzie używana w późniejszej zmianie, która określa kolejność przechodzenia między elementami na podstawie semantycznego znaczenia elementów, takich jak powierzchnie. (I63379)
  • Dodano nową rolę ułatwień dostępu DropdownList. Można to wykorzystać, aby odtworzyć działanie funkcji TalkBack, gdy skupisz się na android.widget.Spinner. (I177e5, b/236159001)
  • Możesz teraz użyć PlatformTextStyle(emojiSupportMatch), aby opcjonalnie wyłączyć przetwarzanie emotikonów w pojedynczym akapicie. (Ia7100, b/139326806)
  • Testy interfejsu Android Compose będą teraz obsługiwać układ każdej klatki podczas wykonywania klatek w celu przejścia w stan bezczynności (np. za pomocą waitForIdle). Może to mieć wpływ na testy dotyczące poszczególnych klatek animacji układu. (I8ea08, b/222093277)
  • Do funkcji TextStyle dodano eksperymentalną funkcję TextMotion, która umożliwia określenie tekstu jako Static(default) lub animowany. Użyj funkcji TextMotion.Animated, jeśli tekst ma być skalowany, przetłumaczony lub obracany w animacji. (I24dd7)

Wersja 1.4.0-rc01

8 marca 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.4.0-rc01 została zwolniona. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano przeciążenie funkcji kompozycyjnej AndroidView, która akceptuje parametr onReset. Umożliwia ponowne korzystanie z instancji Widoków, gdy ich węzeł w kompozycji został odrzucony i ponownie użyty w zgodny sposób. Jest to szczególnie przydatne w przypadku LazyRows i LazyColumns wyświetleń. (I3f10d, b/230099236)
  • Wprowadziliśmy nowy, niskopoziomowy interfejs API PlatformTextInputAdapter służący do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)

Poprawki błędów

  • Semantyka SetText elementu BasicTextField spowoduje teraz zaktualizowanie bufora tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (np. performTextReplacement).
  • Funkcje testowania tekstu performTextClearance, performTextReplacement i performTextSelection używają teraz SemanticsActions. (I0807d, b/269633168, b/269624358)

Wersja 1.4.0-beta02

22 lutego 2023 roku

Aplikacja androidx.compose.ui:ui-*:1.4.0-beta02 została zwolniona. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto interfejs API modifierElementOf(). Rozszerz ją bezpośrednio z adresu ModifierNodeElement. (I2256b)
  • Dodano nowe wywołanie zwrotne Modifier.Node.onReset(), które umożliwia zresetowanie stanu lokalnego, by prawidłowo obsługiwać przypadek użycia elementu Layout (np. jako elementu elementu LazyColumn). Poprawiono działanie FocusTargetModifierNode, aby prawidłowo zresetować aktywny stan. (I65495, b/265201972)
  • Dodano parametr BlendMode do metod DrawScope.drawText, Paragraph.paint i MultiParagraph.paint, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508)

Poprawki błędów

  • Ulepszyliśmy algorytm wyboru kolejności fokusu w ułatwieniach dostępu, na przykład pasek górny i dolny częściej wyświetla się jako pierwszy/ostatni (74e9c5).

Wersja 1.4.0-beta01

8 lutego 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.4.0-beta01 została zwolniona. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniono nazwę PinnableContainer.PinnedHandle.unpin() na release() (I4667a)
  • Do interfejsu ComposeTestRule dodano eksperymentalne interfejsy API: waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists i waitUntilDoesNotExist, co zwiększyło zakres interfejsu API waitUntil o dowolną liczbę dopasowań i dowolną liczbę węzłów. Dalszą dokumentację znajdziesz na stronie ComposeTestRule. (Ifa1b9, b/226934294)
  • Zmień nazwę społeczności Font.MaximumAsyncTimeout na Font.MaximumAsyncTimeoutMillis. (I07af5)
  • Usunięto dokument GoogleFont.Provider.AllFontsListUri i dołączono do niego link w dokumencie ktdoc. (I16f29)

Poprawki błędów

  • Dodaj dokumenty: AndroidFont.fontVariationSettings (I7d9e2)

Wersja 1.4.0-alfa05

25 stycznia 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.4.0-alpha05 została zwolniona. Wersja 1.4.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTest i funkcji create*ComposeRule, które akceptują parametry CoroutineContext. Kontekst będzie używany na potrzeby kompozycji testowej oraz wszelkich wywołań funkcji LaunchedEffect i rememberCoroutineScope() w kompozycji. (I10614, b/265177763)
  • Dodaj nowy interfejs API, aby śledzić prędkość wymiarową w jednym wymiarze (If5a82)
  • Element FocusRequester jest teraz oznaczony jako @Stable. (I580ee)
  • Usuń eksperymentalną adnotację z konstruktora DialogProperties, który przyjmuje parametr usePlatformDefaultWidth. (Ic4048)
  • Dodano funkcję do obliczenia pozycji i stycznego w odległości na ścieżce – z PathMeasure.getPosition() i PathMeasure.getTangent() (I3b47c)
  • Usunięto przypadkowo ujawniony obiekt ustawiający w usłudze PlatformParagraphStyle. (I07f47)
  • Więcej typów/wartość null funkcji wbudowanych/wycofanych ukrytych (I24f91)
  • Dodaj funkcję AnnotatedString.hasStringAnnotations, aby wysłać zapytanie o adnotacje bez przydziałów. (I94dfe, b/246960758)
  • Dodaliśmy nowe przeciążenie funkcji TextMeasurer.measure, która przyjmuje String jako tekst. (I47b2d, b/242705342)
  • Interfejsy API LineBreak i Hyphens w TextStyle zostały przełączone na wersję stabilną. (Ic1e1d).

Wkład z zewnątrz

  • Metody notifyFocusedRect w TextInputSession i TextInputService nie zostały ponownie wycofane. (I23a04, b/262648050)

Wersja 1.4.0-alfa04

11 stycznia 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.4.0-alpha04 została zwolniona. Wersja 1.4.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaliśmy nowy interfejs API PinnableContainer, który umożliwia przypinanie elementów leniwej listy, dzięki czemu nie są one usuwane, gdy zostaną przewinięte poza zakres. Na przykład Modifier.focusable() używa tego mechanizmu do przypinania aktualnie aktywnego elementu. (Ib8881, b/259274257, b/195049010)
  • System fokusu został przepisany za pomocą nowych, eksperymentalnych interfejsów API Modifier.Node. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/5/184} b/5184
  • Dodano we właściwości semantycznej IsContainer w platformach. Ta właściwość będzie używana w późniejszej zmianie, która określa kolejność przechodzenia między elementami na podstawie semantycznego znaczenia elementów, takich jak powierzchnie. (I63379)
  • Dodano nową rolę ułatwień dostępu DropdownList. Można to wykorzystać do powtórzenia działania funkcji TalkBack's, gdy aktywujesz ustawienie android.widget.Spinner. (I177e5, b/236159001)
  • Możesz teraz użyć PlatformTextStyle(emojiSupportMatch), aby opcjonalnie wyłączyć przetwarzanie emotikonów w pojedynczym akapicie. (Ia7100, b/139326806)
  • Testy interfejsu Android Compose będą teraz obsługiwać układ każdej klatki podczas wykonywania klatek w celu przejścia w stan bezczynności (np. za pomocą waitForIdle). Może to mieć wpływ na testy dotyczące poszczególnych klatek animacji układu. (I8ea08, b/222093277)
  • Do funkcji TextStyle dodano eksperymentalną funkcję TextMotion, która umożliwia określenie tekstu jako Static(default) lub animowany. Użyj funkcji TextMotion.Animated, jeśli tekst ma być skalowany, przetłumaczony lub obracany w animacji. (I24dd7)

Zmiany w interfejsie API

  • Zastąpiono argument maxSize: IntSize w drawText na size: Size, aby był wbudowany z innymi funkcjami DrawScope. size ma domyślnie wartość Size.Unspecified, co nie powinno zmieniać poprzedniego działania domyślnego. (Icd27d)
  • Usunięto wycofany eksperymentalny konstruktor czcionek. (I8a724, b/261435386)
  • Klasa danych narzędzia interfejsu Group ma teraz pole isInline, które wskazuje, czy grupa jest przeznaczona na wywołanie wbudowanej funkcji kompozycyjnej. Jeśli isInline to true, wywołanie dotyczy wbudowanej funkcji kompozycyjnej. Wartość może jednak mieć wartość false dla wywołań wbudowanych funkcji kompozycyjnych pochodzących z modułów skompilowanych z wersją wtyczki kompilatora compose, która nie generuje informacji o funkcji wbudowanej. (Idb846)
  • Część dotychczasowych eksperymentalnych interfejsów API zmieniono na stabilne
  • Interfejs Rotary Scroll Event API jest teraz stabilny (I42ad3, b/261561229)
  • Interfejs API FontVariation jest teraz stabilny (I8779f, b/241016309)
  • Wszystkie konstruktory Font() są teraz stabilnymi interfejsem API (I5948b, b/261435386)
  • DeviceFontFamilyName działa teraz stabilnie (I8b640, b/261435386)
  • Konstruktor AndroidFont z elementem variationSettings jest teraz stabilnym interfejsem API i można go używać do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807)
  • Interfejs createFontFamilyResolver API jest teraz stabilny. Pozwala to wykryć niewykryte wyjątki podczas asynchronicznego wczytywania czcionki. (Ibb481, b/261435386)
  • Interfejs Font.loadingStrategy API jest teraz stabilny. (I5937c, b/261435386)
  • Interfejs GoogleFont API jest teraz stabilny. (Ic90b0, b/261435386)
  • TextUnit(float, TextUnitType) to teraz stabilny interfejs API. (I90c84, b/261561612)
  • pluralStringResource to teraz stabilny interfejs API. (I09849, b/261439703)

Wersja 1.4.0-alfa03

7 grudnia 2022 r.

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

Zmiany w interfejsie API

  • Usuwam ExperimentalComposeUiApi z: PointerIcon (I23af8)
  • Wprowadź działania związane z ułatwieniami dostępu na stronie: PageUp, PageDown, PageLeft, PageRight. Pamiętaj, że są one dostępne tylko w interfejsie API 29. (Ida4ab).
  • Widok parametrów rememberNestedScrollConnection został zmieniony z widoku głównego na widok hosta. (Ia5200)
  • Dodano interfejs Modifier API do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych. (I2ba9d, b/203141462).
  • Używane w interfejsie Clickable do prawidłowego opóźnienia interakcji z naciśnięciami, gdy gesty mogą stać się zdarzeniami przewijania.
  • Naprawiono nieprawidłowe opóźnianie zmarszczek Clickables występującego w obrębie elementu Scrollable ViewGroup.
  • Zaktualizowano Szuflady i Arkusze, aby prawidłowo opóźniać naciśnięcia, jeśli gesty mogą zmienić się w zdarzenia przewijania.
  • Nazwa CompositingStrategy.Always została zmieniona na Offscreen, aby wskazać, że graphicsLayer zawsze będzie renderowany do bufora pośredniego (I47dc1)
  • Przeciążenie układu z wieloma boksami na treści jest teraz stabilne (I10566, b/248294649)
  • Dodaliśmy nowe, eksperymentalne interfejsy API PerfettoTrace.record {} i PerfettoTraceRule, które umożliwiają rejestrowanie logów czasu Perfetto (nazywanych też śladami systemu) w ramach testu w celu badania zachowania i wydajności testu. (I3ba16)
  • W testach interfejsu za pomocą reguły tworzenia kontynuacje wznawiane w trakcie wywołań zwrotnych withFrameNanos nie będą wysyłane, dopóki nie zakończą się wykonywanie wszystkich wywołań zwrotnych ramek. Odpowiada to zachowaniu tworzenia wiadomości w normalnym trybie działania. Jednak testy oparte na starym działaniu mogą się nie powieść. Powinno to mieć wpływ tylko na kod, który bezpośrednio wywołuje withFrameNanos lub withFrameMillis i działa logikę poza wywołaniem zwrotnym, przekazywanej do tych funkcji, które być może trzeba będzie przenieść wewnątrz wywołań zwrotnych. Przykłady możesz zobaczyć w testach animacji w tej liście zmian.
  • 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 programów wywołujących. (Idb413, b/254115946, b/222093277, b/255802670)
  • Dodano Emotikon do tworzenia wiadomości (Ibf6f9, b/139326806).
  • Do aplikacji @Preview dodano nowy parametr tapety na potrzeby dynamicznej obsługi kolorów (I9f512)

Poprawki błędów

  • Powiadomienia o zastosowaniu zrzutu są teraz wysyłane po zakończeniu wprowadzania zmian przez aplikację Recomposer. (Iad6c0, b/222093277)
  • Wprowadzono zmiany w captureToImage, które umożliwiają tworzenie zrzutów ekranu w wielu oknach. Jest to przydatne podczas testów zrzutów ekranu, które korzystają z wyskakujących okienek tworzenia wiadomości. (I169c5)

Aktualizacje zależności

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

Wersja 1.4.0-alfa02

9 listopada 2022 r.

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

Zmiany w interfejsie API

  • Zaktualizowano GraphicsLayerScope, aby pokazywać bieżący rozmiar elementu graphicsLayer. Przydaje się to do obliczania transformacji graphicsLayer jako funkcji rozmiaru kompozycyjnego. (If8c43,b/181387080)
  • Wprowadzono funkcję CompositingStrategy, aby określić, kiedy należy używać pozaekranowej warstwy komponującej do renderowania treści w formacie graphicsLayer. Automatyczne zachowuje działanie domyślne, które wewnętrznie korzysta z warstwy po zastosowaniu wersji alfa lub funkcji RenderEffect/Overscroll. Zawsze będzie wprowadzać bufor poza ekranem, dzięki któremu ModulateAlpha unika użycia takiego bufora i zamiast tego będzie modyfikować wszystkie zarejestrowane instrukcje rysowania w pliku graphicsLayer. Użycie usługi ModulateAlpha nadal będzie korzystać z bufora poza ekranem w przypadku użycia funkcji RenderEffect/Overscroll (I25e82, b/256382834)
  • Do funkcji Modifier.Node dodano funkcję invalidateSubtree(), aby umożliwić unieważnienie całych hierarchii układu i rysunków. (I4bd90)
  • Zmień wersję rememberNestedScrollInteropConnection na stabilną. Wprowadziliśmy możliwość przekazywania widoku głównego do interfejsu rememberNestedScrollInteropConnection. Dzięki temu widok niestandardowy może lepiej reagować na ograniczenia przewijania, zwłaszcza w widokach niestandardowych (np. ModalBottomSheetDialog). (I9e107)
  • Dodano interfejs ObserverNode, który może być używany w implementacjach Modifier.Node, które muszą otrzymywać powiadomienia, gdy zmieni się wartość odczytana przez nie (I5728b, b/247716483)
  • Do interfejsu Paint dodano nowy konstruktor, który akceptuje natywny android.graphics.Paint. Dodaliśmy też funkcję rozszerzenia toComposePaint(), która konwertuje istniejący obiekt Paint do formatu Compose Paint. (Ica91b)
  • Dodaj nowe urządzenie FontFamily.Resolver.resolveAsTypeface do użytku na Androidzie. (I8950b)
  • Dodaj ToolingState, aby umożliwić narzędziom zmienianie wewnętrznych stanów funkcji kompozycyjnej (Ie6614)
  • Narzędzia do refaktoryzacji zapewniające lepszą obsługę nowo dodanych animacji (I8677b)
  • Dodano parametr minLines do elementów Material i Material3 Text, TextField i OutlinedTextField, co umożliwia ustawienie minimalnej wysokości komponentu w postaci liczby wierszy (I4af1d).

Wersja 1.4.0-alfa01

24 października 2022 r.

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

Zmiany w interfejsie API

  • Dodano nową metodę awaitEachGesture() do wykrywania gestów. Działanie tej funkcji jest podobne do funkcji forEachGesture(), ale zapętlenie gestów odbywa się tylko w obrębie interfejsu AwaitPointerEventScope, więc zdarzenia nie są pomijane w kolejnych iteracjach.
  • Interfejs forEachGesture() został wycofany i zastąpiony komponentem awaitEachGesture(), ponieważ dopuszcza on utratę zdarzeń między gestami. (Iffc3f, b/251260206)
  • Wycofujemy recykling obiektów ułatwień dostępu w Androidziex. Nawet w najstarszych obsługiwanych wersjach zmiany wydajności są niezauważalne. (I0a961)
  • Dodano atrybut DrawStyle jako atrybut eksperymentalny w elementach TextStyle i SpanStyle, aby umożliwić rysowanie konspektu. (If24b8, b/155421273)
  • AnnotatedString.Builder korzysta teraz z implementacji kotlin.text.Appendable. (I1a061, b/231030444)
  • AnnotatedString.Builder ma teraz metodę append(AnnotatedString, start: Int, end: Int), która dołącza podłańcuch elementu AnnotatedString i przecinające się style.
  • Do funkcji malowania elementów Paragraph i MultiParagraph dodano parametr DrawStyle, który umożliwia rysowanie konturu tekstu. (Ic8102, b/155421273)

Wkład z zewnątrz

  • Dziękujemy za dodanie telewizorów do podglądu (Ie15cd) za vighnesh

Wersja 1.3

Wersja 1.3.3

11 stycznia 2023 r.

Aplikacja androidx.compose.ui:ui-*:1.3.3 została zwolniona. Wersja 1.3.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawa błędu występującego czasami na Androidzie 9, gdy Aktywność zapisuje stan widoku tworzenia wiadomości. (I0b755, b/260322832)

Wersja 1.3.2

7 grudnia 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.3.2 została zwolniona. Wersja 1.3.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano do wersji Profobuf 3.21.8, która pozwala uniknąć alertu bezpieczeństwa w protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

Wersja 1.3.1

9 listopada 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.3.1 została zwolniona. Wersja 1.3.1 zawiera te zatwierdzenia.

Wersja 1.3.0

24 października 2022 r.

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

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 pakiet interfejsów API Modifier.Node (wydajniejsza alternatywa dla Modifier.composed)
  • Ulepszona obsługa wstawiania okien.
  • Skup się na obsłudze padów kierunkowych i klawiatury sprzętowej w ramach listy LazyList.
  • Maksymalna obsługiwana wysokość w oknach dialogowych i wyskakujących okienkach została zmniejszona do 8 dp (zmiana niekorzystności działania w niektórych niestandardowych systemach projektowania – uzasadnienie w informacjach o wersji beta01)
  • Wiele drobnych, nieustępujących ulepszeń interfejsu API.
  • Usunięcie wielu błędów i ulepszenie działania aplikacji

Wersja 1.3.0-rc01

5 października 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.3.0-rc01 została zwolniona. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy nowe, eksperymentalne łączniki interfejsu API, które umożliwiają automatyczne łączenie w tekście (Iaa869).

Poprawki błędów

  • Czcionki DeviceFontFamilyName nie będą domyślnie konfigurować ustawień wersji wght i ital. Zamiast tego w przypadku wczytywania elementu Typeface używane są ustawienia platformy. (Ia7a6d, b/246989332)
  • Usunięto wyciek pamięci w usłudze LazyColumn – w przypadku ponownego użycia modyfikatorów nie wywoływano metody onModifierLocalsUpdated z wartością domyślną (b/230168389)

Wersja 1.3.0-beta03

21 września 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.3.0-beta03 została zwolniona. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj opcje dostosowywania podziału wierszy w tekście. (I86907)
  • Zmieniono argument size:IntSize o constraints: Constraints w metodzie TextMeasurer.measure, aby obsługiwał ograniczenia minimalnej szerokości. (I37530, b/242707525)

Poprawki błędów

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

Wersja 1.3.0-beta02

7 września 2022 roku

Aplikacja androidx.compose.ui:ui-*:1.3.0-beta02 została zwolniona. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalne przeciążenie w elemencie Układ, który akceptuje listę wielu funkcji lambda treści kompozycyjnych, co umożliwia odmienne umieszczanie wymiernych zagrożeń w różnych lambdach treści (Ic1b4e).

Zmiany w eksperymentalnych interfejsach API Focus:

  • Metody FocusDirection.In i FocusDirection.Out zostały wycofane i zastąpione przez FocusDirection.Enter i FocusDirection.Exit. (Ia4262, b/183746982)
  • Dodano 2 nowe właściwości fokusu – wejście i wyjście, aby określić zachowanie niestandardowe dla funkcji FocusManager.moveFocus(Enter) i FocusManager.moveFocus(Exit). (I5f3f9, b/183746982)
  • Możesz teraz użyć FocusRequester.Cancel, aby anulować przeniesienie zaznaczenia. Funkcji FocusRequester.Cancel można używać w każdej z tych właściwości: w górę, w dół, w lewo, w prawo, dalej, wstecz, początek, koniec, wejście i wyjście. (IB300F)

Wersja 1.3.0-beta01

24 sierpnia 2022 r.

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

Refaktor węzłów modyfikujących

Warstwa, która obsługuje instancje Modifier/Modifier.Element i koordynuje ich działanie w LayoutNodes, została gruntownie zmodyfikowana. W obecnej postaci była to refaktoryzacja, która nie miała wpływu na publiczny interfejs API żadnego z wielu modyfikatorów dostępnych w funkcji Compose. Można ją traktować jako zmianę polegającą tylko na implementacji. Mimo to jest to ważna z wielu powodów. (Ie4313)

Podsumowanie zmian

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

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

Ryzyko

Ta zmiana jest całkowicie zgodna z poprzednimi wersjami i ma być zgodna wstecznie pod względem dostrzegalnego działania w miarę praktycznego i uzasadnionego działania. Mimo to niewiele zostało podsystemów obejmujących ten refaktoryzację i prawdopodobnie zmienił się sposób działania, którego nie udało się sprawdzić w naszych testach, a które jeszcze nie zostały wykryte i rozwiązane.

Zachowaj ostrożność podczas uaktualniania tej wersji. Jeśli uważasz, że coś poszło nie tak, daj nam znać.

Eksperymentalne interfejsy API

Dodano różne eksperymentalne interfejsy API związane z nową koncepcją „węzła modyfikatora”. Węzły modyfikator.Węzły 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

Zmiana powodująca naruszenie zasad

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

Maksymalna obsługiwana wysokość okien dialogowych i wyskakujących okienka została zmniejszona z 30 do 8 dp. Ta zmiana dotyczy zarówno materiałowych, jak i niestandardowych okien dialogowych i wyskakujących okienek. Ta zmiana ma wyeliminować błąd ułatwień dostępu na urządzeniach z Androidem w wersjach starszych niż S oraz zapewnić, że usługi ułatwień dostępu w tych oknach będą mogły wchodzić w interakcje z zawartością okna lub wyskakującego okienka.

Ta zmiana będzie widoczna tylko w przypadku tworzenia niestandardowego okna dialogowego lub implementacji wyskakującego okienka z wysokością ustawioną na poziomie wyższym niż 8 dp. Rozważ obniżenie wysokości okna lub wyskakującego okienka. Jeśli chcesz zrezygnować z tego nowego działania, rozważ rozwidlenie własnego okna lub wyskakującego okienka z odpowiednimi ustawieniami wysokości. Nie jest to zalecane, ponieważ może to negatywnie wpłynąć na ułatwienia dostępu. To deweloper powinien zadbać o to, aby dolna część okna lub wyskakującego okienka była interaktywna i czytelna dla usług ułatwień dostępu.

Zmiany w interfejsie API

  • Rozwiązaliśmy problem, który powodował, że usługa painterResource nie aktualizowała się po zmianie konfiguracji (I58e73, b/228862715)
  • rememberTextMeasurer nie przyjmuje już parametrów FontFamily.Resolver, Density ani LayoutDirection. Aby podać niestandardowe wartości tych parametrów, użyj konstruktora TextMeasurer. (Ia1da3)
  • Dodano właściwość DialogProperties.decorFitsSystemWindows, aby umożliwić obsługę okien 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 zbędny operator z kilku definicji równości – to nie ma żadnego efektu. (I6c309)
  • FontVariation.Setting to uszczelniony interfejs, który w przyszłości umożliwia ograniczanie zakresu interfejsów API. (I11021, b/143703328)
  • Dodaj CompositionGroup.findParameters do SlotTree.kt. Dzięki temu narzędzia mogą pobierać parametry dotyczące elementu CompositionGroup bez konieczności analizowania całej tabeli przedziałów. (I124fe)

Wersja 1.3.0-alfa03

10 sierpnia 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.3.0-alpha03 została zwolniona. Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • LayoutCoordinates.findRootCoordinates() jest teraz publiczny (I7fa37, b/204723384)
  • Dodano eksperymentalny interfejs API, aby pobrać LayoutCoordinates w PlacementScope. Dzięki temu programiści będą wiedzieć, gdzie obecny układ ma umieścić elementy podrzędne względem swojej pozycji. (I5482b, b/238632578)
  • Dodano funkcję LayoutCoordinates.transformFrom, aby uzyskać przekształcenie macierzy z jednego elementu typu LayoutCoordinates do drugiej. (Ic5ab1, b/238632578)
  • Wycofano element SemanticsModifier.id i przenieśliśmy identyfikator semantyki do jednostki organizacyjnej LayoutInfo.semanticsId. (Iac808, b/203559524)
  • Czcionki zasobów obsługują teraz ustawianie wariantów czcionek (API w wersji 26 i nowszych). (I900dd, b/143703328)
  • Obsługa zmiennych czcionek w języku DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Konstruktory czcionek akceptują teraz listę FontVariation.Setting do konfigurowania czcionek zmiennych na urządzeniach O+. (I11a9d, b/143703328)
  • Dodano interfejs API FontVariation do definiowania i używania zmiennych czcionek. (I3c40c, b/143703328)
  • Konstruktor LineHeightStyle.Alignment jest teraz publiczny (eksperymentalny) (I4bbbe, b/235876330)
  • Akapit jest teraz oczekiwany|rzeczywisty i zdefiniowany w Androidzie i na komputerach. (Id387e, b/239962983)
  • Akapit interfejsu jest teraz zapieczętowanym akapitem interfejsu. Nie ma zastosowania w przypadku podziału akapitu na podgrupy. Jeśli ta zmiana Cię dotyczy, skontaktuj się z nami. (If5247, b/239962983)
  • Usunięto eksperymentalną adnotację z: PlatformTextStyle i LineHeightStyle. (I64bef)
  • Wycofaj: TextInputService.show|hideSoftwareKeyboard. Zamiast niego użyj SoftwareKeyboardController w kodzie aplikacji i TextInputSession w kodzie zarządzania IME. (I14e4c, b/183448615)
  • Dodawanie nowego interfejsu API dla istniejących typów animacji (I26179)

Poprawki błędów

  • Dodano @RequiresPermission do interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w pakiecie SDK 33 i nowszych wersjach. (Ie542e, b/238790278)

Wersja 1.3.0-alfa02

27 lipca 2022 roku

Aplikacja androidx.compose.ui:ui-*:1.3.0-alpha02 została zwolniona. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano nową właściwość PointerInputChange#pressure, aby pobierać informacje o ciśnieniu. (I45a5e, b/205164819)
  • Dodano funkcję rememberTextMeasurer, aby łatwo tworzyć i zapamiętywać wystąpienia TextMeasurer w kompozycji. (I8d66e)
  • Rect, RoundRect i MutableRect obsługują teraz składnię in Kotlin na potrzeby wywoływania funkcji contains. (Ie42b0, b/238642990)
  • Usuń niepotrzebne funkcje z KeyInjectionScope, ponieważ można je łatwo wdrożyć przy użyciu uproszczonych części interfejsu API. Usunięto funkcje pressKeys, keysDown i keysUp. (I81d77)
  • Zrefaktoryzowano nazwy stałych i parametrów w polu KeyInjectionScope, dodając sufiks „Millis”, gdzie jednostki wspomnianych stałych i parametrów są wyrażone w milisekundach. (Iabef5)
  • Dodano metodę toStringForLog() do interfejsu EditCommand, aby ułatwić rozwiązywanie problemów z edytowaniem tekstu. (I53354, b/228862731)
  • Dodano funkcję rozszerzenia drawText w DrawScope, aby umożliwić rysowanie wielostylowego tekstu w elementach kompozycyjnych i modyfikatorach, które działają na elementach DrawScope, takich jak Canvas i drawBehind. (I16a62, b/190787898)
  • Wprowadź nowy, eksperymentalny interfejs API o nazwie TextMeasurer, który umożliwia obliczanie dowolnego układu tekstu i generuje identyczne wyniki co BasicText, niezależnie od środowiska wykonawczego tworzenia wiadomości. (I17101).
  • Dodaj mapTree do SlotTree.kt. Dzięki temu narzędzia mogą sprawdzać element SlotTree bez wcześniejszego tworzenia kopii w pamięci, tak jak robi to asTree. W przypadku Inspektora układu ta wartość zwiększa wydajność o około 10. (I5e113)
  • W podglądzie tworzenia wiadomości zmieniono przechowywanie plików wyjściowych w plikach binarnych, aby umożliwić programistom zapisywanie i wykorzystywanie adnotacji MultiPreview z bibliotek. (I85699, b/233511976)

Poprawki błędów

  • Gdy dodasz zdarzenia InputEventChange do trackera Velocity, weźmiemy teraz pod uwagę delta zamiast pozycji. Dzięki temu prędkość będzie obliczana prawidłowo we wszystkich przypadkach nawet wtedy, gdy element docelowy się porusza (Icea9d, b/216582726, b/223440806, b/227709803).
  • Napraw NPE wywoływany przez zasadę AnnotatedString.toUpperCase, gdy dostępne są adnotacje. (I0aca2, b/210899140)

Wersja 1.3.0-alfa01

29 czerwca 2022 r.

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

Zmiany w interfejsie API

  • Nowy LookaheadLayout, który obsługuje widok z wyprzedzeniem przed rzeczywistym pomiarem lub układem. Umożliwia to wstępne obliczenie układu w przypadku zmiany, a jednocześnie pozwala na wykorzystanie wstępnie obliczonego rozmiaru/pozycji do animowania rozmiaru i pozycji względem wartości docelowej. SubcomposeLayouts nie jest jeszcze obsługiwany, ale będzie dostępny w kolejnej wersji. (I477f5)
  • Dodaj opcjonalny parametr alfa do typu pędzla TextStyle i SpanStyle, aby zmienić przezroczystość całego parametru Text. (Ic2fac, b/234117635)
  • Wprowadzono typ adnotacji UrlAnnotation i powiązane metody, aby umożliwić obsługę linków TalkBack w AnnotatedString. (I1c754, b/231495122)
  • Przenoszenie funkcji narzędzi do środowiska wykonawczego (I4f729)

Poprawki błędów

Wkład z zewnątrz

  • Dodano nowy interfejs API WindowInfo.keyboardModifiers, który umożliwia obserwowanie jego stanu w funkcjach kompozycyjnych lub za pomocą zrzutuFlow (Icdb8a).

Wersja 1.2

Wersja 1.2.1

10 sierpnia 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.2.1 została zwolniona. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono wartość nullpointer w inspektorze (b/237987764)
  • Naprawiono wyjątek przesyłania zajęć podczas zapamiętywania w inspektorze (b/235526153)

Wersja 1.2.0

27 lipca 2022 roku

Aplikacja androidx.compose.ui:ui-*:1.2.0 została zwolniona. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Ulepszenia w przemierzaniu fokusu:

    • Przewijanie list leniwego opartych na koncentracji działa teraz przy użyciu nowego podstawowego interfejsu API BeyondBoundsLayout
    • Nowe interfejsy API dostosowywania zachowań w regionach FocusOrder i FocusProperties
    • Ulepszone działanie klawiatury fizycznej lub pilota do telewizora
  • Nowe interfejsy API:

    • Wstawki w okienku
    • Podstawowe elementy podstawowe w animacjach opartych na gestach, nieskończonych i z układem
    • GraphicsLayer funkcji, w tym RenderEffect
  • Usunięcie wielu błędów i ulepszenie działania aplikacji

Wersja 1.2.0-rc03

29 czerwca 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.2.0-rc03 została zwolniona. Wersja 1.2.0-rc03 zawiera te zatwierdzenia.

  • Brak zmian od wersji 1.2.0-rc02.

Wersja 1.2.0-rc02

22 czerwca 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.2.0-rc02 została zwolniona. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.

Wersja 1.2.0-rc01

15 czerwca 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.2.0-rc01 została zwolniona. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Interfejsy w bibliotekach tworzenia wiadomości są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1)
  • Do interfejsu KeyInjectionScope dodano funkcje wyższego rzędu do wstrzykiwania naciśnięć klawiszy, gdy inne klawisze są przytrzymywane lub włączone. Te funkcje to withKeysDown, withKeysToggled itp. Dodano również właściwości służące do sprawdzania, czy dany metatag jest wyłączony, np. isCtrlDown w celu sprawdzenia, czy został naciśnięty jeden z klawiszy sterujących. Dokumentację poszczególnych funkcji znajdziesz w KeyInjectionScope. (I9f6cd, b/229831515)
  • Wprowadziliśmy eksperymentalną funkcję OverscrollEffect, aby umożliwić stosowanie niestandardowych efektów nadmiernego przewijania, oprócz przeciążeń Modifier.scrollable, które je akceptują.
  • Eksperymentalny LocalOverScrollConfiguration został przeniesiony z pakietu foundation.gesture do pakietu podstawowego i jego nazwa została zmieniona na LocalOverscrollConfiguration (If19fb, b/204650733)
  • Zmień nazwę runComposeUiTestWithoutActivity {} na runEmptyComposeUiTest {}, aby wyrównać ją z createEmptyComposeRule() (I6fed7)

Wersja 1.2.0-beta03

1 czerwca 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.2.0-beta03 została zwolniona. Wersja 1.2.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano użytkownika pressKeyTimes oraz isCapsLockOn i znajomych do grupy KeyInjectionScope. Dodatkowo interfejs API obsługuje teraz łączone wzorce wstrzykiwania myszą i klawiatury, np. kliknięcie przycisku myszy przy przytrzymanym klawiszu meta. (I4c8da, b/229831515)
  • Dodano eksperymentalną obsługę wstrzykiwania kluczowych zdarzeń. Używaj funkcji performKeyInput, aby wysyłać kluczowe zdarzenia, lub przesyłaj je przez właściwość key obiektu MultiModalInjectionScope podczas multimodalnego gestu wprowadzania za pomocą performMultiModalInput. Dokumentację interfejsu API znajdziesz na KeyInjectionScope. (Ic5000, b/229831515)
  • Dodaj nowy element GoogleFont.Provider.AllFontsListUri, aby pobrać kanoniczne źródło internetowe czcionek Google Fonts obsługiwanych przez Androida.
  • Popraw wyświetlanie komunikatów o błędach ponownie, gdy nie uda się wczytać czcionek GoogleFonts podczas tworzenia wiadomości. (I0416c)

Poprawki błędów

  • Podczas dodawania zdarzeń InputEventChange do narzędzia Velocity Tracker weźmiemy teraz pod uwagę delta zamiast pozycji. Dzięki temu prędkość będzie obliczana prawidłowo we wszystkich przypadkach nawet wtedy, gdy element docelowy się porusza (I51ec3, b/216582726, b/223440806, b/227709803)
  • Ustawienie Show Layout Bounds będzie teraz stosowane do funkcji kompozycyjnych natychmiast po przełączeniu go w kafelku szybkich ustawień bez konieczności opuszczania i ponownego włączaniu się do działania. (I843d5, b/225937688)
  • Wyszukiwanie ciągu dotyczącego ułatwień dostępu nie powoduje wczytania czcionki. Wcześniej próbowano załadować czcionki dla adresu StyleSpans, co powodowało awarię w przypadku zastąpienia elementu FontFamily.Resolver. (I4609d)
  • Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie powoduje awarii.
  • Argumenty konstruktora DeleteSurroundingTextCommand i DeleteSurroundingTextInCodePointsCommand muszą być teraz nieujemne. (Ica8e6, b/199919707)

Wersja 1.2.0-beta02

18 maja 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.2.0-beta02 została zwolniona. Wersja 1.2.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Ponowne wykorzystanie funkcji w innych typach podglądu (I19f39)

Poprawki błędów

  • Nazwa ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer została zmieniona na DisposeOnDetachedFromWindowOrReleasedFromPool, aby lepiej odzwierciedlić moment wyrzucenia, a nie tylko sytuacje, gdy nic się nie dzieje. (If15ca)

Wersja 1.2.0-beta01

11 maja 2022 roku

Aplikacja androidx.compose.ui:ui-*:1.2.0-beta01 została zwolniona. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • To jest pierwsza wersja beta 1.2.

Zmiany w interfejsie API

  • Dodano eksperymentalną funkcję BeyondBoundsInterval, której można używać w niestandardowych implementacjach LazyList, gdy elementy układu wykraczają poza widoczne granice (Ifabfb, b/184670295)
  • Wersje Modifier.composed z kluczem są teraz stabilnymi interfejsem API (Ie65e4, b/229988420)
  • Uproszczono interfejs API rememberNestedScrollConnection, aby używać lokalnych kompozycji do pozyskiwania informacji o bieżącym widoku (I67ca7)
  • Adnotacja i adnotacje @ComposableTarget oznaczone przez @ComposableTargetMarker mogą być teraz używane w zakresie plików z wykorzystaniem prefiksu @file. Użycie adnotacji docelowej w zakresie pliku spowoduje, że kompilator przyjmie, że wszystkie funkcje kompozycyjne w pliku są kierowane na powiązaną aplikację. Na przykład użycie polecenia @file:UiComposable deklaruje, że wszystkie funkcje @Composable są kierowane na aplikację interfejsu użytkownika tworzenia wiadomości. Funkcja, która musi być kierowana na innego użytkownika, musi wyraźnie podać adnotację w znaczniku docelowym dla odpowiedniego aplikatora. (I40804)
  • Wprowadziliśmy nowy eksperymentalny, niezależny od platformy interfejs API: interface ComposeUiTest oraz fun runComposeUiTest(block: ComposeUiTest.() -> Unit), którego można używać do testowania interfejsu Compose Ui bez potrzeby korzystania z TestRule. Aby przeprowadzić test bez funkcji ComposeTestRule, zadaj test jako lambda do runComposeUiTest i użyj metod i elementów w zakresie odbiorcy ComposeUiTest, które są takie same jak w metodzie ComposeContentTestRule.

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

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

    Migrację testu z ComposeTestRule do ComposeUiTest można wykonać w ten sposób (przykład 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 funkcje ComposeContentTestRule i ComposeTestRule nie wykraczają poza zakres ComposeUiTest, co oznacza, że funkcji rozszerzeń w domenie ComposeUiTest nie można jeszcze wywoływać w interfejsie TestRule. Gdy ComposeUiTest przejdzie na stabilną wersję interfejsu API, wartości ComposeContentTestRule i ComposeTestRule zostaną zmienione na rozszerzenia z ComposeUiTest. (Ib4e90)

  • Nazwa zasobu LineHeightBehavior została zmieniona na LineHeightStyle

  • Nazwa zasobu LineVerticalAlignment została zmieniona na LineHeightStyle.Alignment

  • Zmienia nazwę elementu LineHeightTrim na LineHeightStyle.Trim

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

  • Do elementów TextStyle i SpanStyle dodano atrybut Brush, który umożliwia rysowanie tekstu przy użyciu koloru gradientowego. (I53869, b/187839528)

  • trimFirstLineTop, trimLastLineBottom atrybutów obiektu LineHeightBehavior zostało zmienionych w jedną wartość wyliczeniową: LineHeightTrim. LineHeightTrim ma wartości 4 stanów zdefiniowanych przez 2 wartości logiczne: FirstLineTop, LastLineBottom, oba i Brak (Ifc6a5, b/181155707)

  • Dodano: LineHeightBehavior do: TextStyle i ParagraphStyle. LineHeightBehavior określa, czy wysokość wiersza ma być stosowana do górnej i dolnej linii pierwszego wiersza. Określa też wyrównanie linii w miejscu udostępnianym przez funkcję TextStyle(lineHeight).

    Można na przykład uzyskać działanie podobne do tego, co określa CSS w zasadzie LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

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

  • Funkcje PlatformParagraphStyle.lerp i PlatformSpanStyle.lerp zostały przekształcone w funkcje najwyższego poziomu (I9a268).

Poprawki błędów

  • Dokumentacja PointerInputChange::copy prawidłowo informuje teraz, że jest to kopia zapasowa. (I182f5)
  • Obsługuj wielokropek, gdy wysokość jest ograniczona i nie pasuje do wszystkich wierszy tekstu (Ie528c, b/168720622).
  • Włączono domyślne ustawienie includeFontPadding. Możesz wyłączyć includeFontPadding za pomocą atrybutu TextStyle.platformTextStyle. W najbliższej przyszłości zmienimy działanie domyślne, ale do tego czasu umożliwi nam to lepszą integrację ulepszonej wysokości linii (aosp/2058653) i rozwiązywanie problemów z przycinaniem w TextField. (I01423, b/171394808)

Wkład z zewnątrz

  • Tabela MouseInjectionScope.scroll(delta = someDelta) jest teraz odwrócona na Androidzie, gdy przewijamy w pionie (jeśli wartość parametru Delta ma wartość dodatnią, przewija się w dół) (Ifb697, b/224992993)

Wersja 1.2.0-alfa08

20 kwietnia 2022 r.

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

Zmiany w interfejsie API

  • Funkcje pluralStringResource zostały oznaczone jako eksperymentalne, aby w ewolucji umożliwianie lepszej internacjonalizacji w przyszłości. (If24e4)
  • Akapit i MultiParagraph akceptują teraz parametr Ograniczenia. Zdanie Constraints.maxHeight jest obecnie niemożliwe, ale umożliwi w przyszłości wykonywanie obliczeń, np. elipsy na podstawie wysokości. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akceptuje teraz niestandardową klasę MutableSet-like, która nie pozwala na dodawanie do niej nowych elementów. (Icd314)
  • PointerIcon to teraz interfejs @Stable (I9dafe)
  • Częściowe wykorzystanie (pozycja niżej LUB) zostało wycofane w PointerInputChange. Możesz użyć consume(), aby w pełni zastosować tę zmianę. Za pomocą funkcji isConsumed możesz sprawdzić, czy ktoś inny korzystał wcześniej ze zmiany.
  • Teraz usługa PointerInputChange::copy() zawsze tworzy małą kopię. Oznacza to, że po wykorzystaniu jednej z nich kopie PointerInputChange zostaną zużyte. Jeśli chcesz utworzyć niepowiązany obiekt PointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)
  • Włącz współdziałanie zagnieżdżonego przewijania między tworzeniem a widokiem w kierunku Utwórz > Widok. Oznacza to, że element nadrzędny tworzenia może otrzymywać zagnieżdżone delta przewijania z zagnieżdżonego widoku przewijania. (If7949, b/174348612)
  • Nowa funkcja SemanticsProperty testTagsAsResourceId, dzięki której można sprawić, aby funkcja Compose była zgodna z testami UIAutomator przeznaczonymi dla systemu View. (I39c20)
  • Podczas korzystania z FontFamily.SansSerif wyświetlaj wszystkie dostępne wagi czcionek systemowych na Androidzie. Spowoduje to wewnętrznie użycie zastępczych nazw czcionek, takich jak Sans-serif-medium, w interfejsie API 21–28. Jest to zmiana sposobu działania, ponieważ wcześniej w interfejsach API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992)
  • Nauczyciele akapitu i wielu akapitów zmieniają kolejność argumentów pozycjonujących na przed opcjonalnymi argumentami. (Idafaa)
  • Funkcja AndroidFont przyjmuje teraz parametr typefaceLoader jako parametr konstruktora. (I2c971)

Wersja 1.2.0-alfa07

6 kwietnia 2022 roku

Aplikacja androidx.compose.ui:ui-*:1.2.0-alpha07 została zwolniona. 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 odczytywanych podczas tego bloku. Może się ono przydać w przypadkach, gdy chcesz korzystać z bezpiecznego zapisu/odczytu na podstawie zrzutów, ale chcesz mieć możliwość odczytania wartości bez konieczności wprowadzania zmian w strukturze ani ponownego pomiaru. (I9f365, b/214054486)
  • Właściwość rozszerzenia consumeWindowInsets interfejsu ComposeView umożliwia programistom wyłączenie korzystania z Androida WindowInsets. Dzięki temu różne elementy ComposeViews w hierarchii mogą stosować do każdego z nich WindowInsets bez zakłócania siebie. (I0ef08, b/220943142)
  • Dodano element KeyboardType.Decimal jako alternatywę dla Keyboard.Number w celu uwzględnienia separatora dziesiętnego w edytorze IME. (Iec4c8, b/209835363)
  • PointerEventType.Scroll i PointerEvent.scrollDelta to obecnie stabilne interfejsy API (I574c5, b/225669674)
  • Włącz interoperacyjność z zagnieżdżonym przewijaniem między widokami i tworzeniem na potrzeby współpracy klas widoku danych. Oznacza to, że funkcja tworzenia może wysyłać delty przewijania do elementu nadrzędnego widoku (współpracy). (I5d1ac, b/174348612)
  • Zaktualizowano FontFamily.Resolver, aby zintegrować ustawienie ułatwień dostępu do pogrubienia tekstu w całym systemie (I6c1e7)
  • Interfejs Font(AssetManager, String, ...) został wycofany i zastąpiony funkcją Font(String, AssetManager, ...). To jest eksperymentalny interfejs API. (I1c7a4)
  • Dodaj nowy deskryptor czcionek Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane w systemie podczas łańcuchów zastępczych czcionek. (I30468, b/219754572)
  • Dodaliśmy tymczasową konfigurację zgodności dla elementu includeFontPadding w elemencie TextStyle/ParagraphStyle. includeFontPadding można zmienić w TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Jest to tymczasowa opcja konfiguracji, która umożliwia włączenie migracji i zostanie usunięta. (If47be, b/171394808)
  • Aby ułatwić debugowanie, dodaj rozszerzenie GoogleFont.Provider.isAvailableOnDevice. (I64e31)
  • Dodaj konstruktor GoogleFont.Provider do użycia z @ArrayRes (Ic5ee1, b/225984280)
  • Compose GoogleFont nazywa się teraz Font(GoogleFont). W przeciwnym razie interfejs API jest stabilny. (I125f2)

Poprawki błędów

  • Dodanie kontroli lindów w materiale/Scaffold, by zapewnić, że używane jest dopełnienie wewnętrzne (Ifb111).

Wersja 1.2.0-alfa06

23 marca 2022 r.

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

Zmiany w interfejsie API

  • Dodano działanie semantyczne RequestFocus, aby zażądać skupienia na celu, który można zaznaczyć. (I17b71)
  • Zaktualizowano analizowanie elementów rysowanych wektorowych, aby umożliwić automatyczne odbicie lustrzane w celu odwrócenia zawartości elementu VectorPainter, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237)
  • Zaktualizowano kolory cienia i otoczenia, aby stały się parametrami końcowymi interfejsu Modifier.graphicsLayer w celu zapewnienia zgodności z interfejsem API (I3f864, b/160665122)

  • W GraphicsLayerScope dodano domyślne implementacje do koloru cienia i oświetlenia, aby zmiany w interfejsie API nie zakłócały działania interfejsu API

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

  • FocusOrder Został scalony w FocusProperties i focusProperties() ma teraz wszystkie możliwości focusOrder(). Reguły FocusOrder i focusOrder() zostały wycofane. Parametr focusOrder(), który akceptuje focusRequester, należy zastąpić modyfikatorem focusRequester() w połączeniu z wartością focusProperties(). Dzięki temu modyfikatory lepiej rozdzielają potencjalne problemy. (I601b7)

  • Przejście na wyższą wersję RecyclerView i Compose znacznie usprawnia przewijanie obiektów RecyclerView z widokami Compose w ramach elementów podrzędnych.

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

  • Dodaj strategię ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer, która jest nową strategią domyślną, która prawidłowo obsługuje łączenie kontenerów, np. RecyclerView. (If7282)

  • Dodaliśmy obsługę dodawania adnotacji do klas adnotacji z @Preview jako pierwszym krokiem dodawania funkcji podglądu wielu elementów. Takich adnotacji można używać do dodawania adnotacji do metod kompozycyjnych lub innych klas adnotacji. Można je uznać za pośrednie adnotacje z danym elementem @Preview. (I12eff).

  • Urządzenia referencyjne zostały dodane do listy urządzeń dla @Preview (I071c9)

Poprawki błędów

  • Zaktualizowaliśmy interfejsy API grafiki wektorowej, aby używały prawidłowej adnotacji kompozycyjnej @VectorComposable zamiast @UiComposable (I942bc)
  • Usuń tekst w tekście z tekstu AnnotatedString.Builder.withStyle (If84d5)

Wkład z zewnątrz

  • compose-ui: dodaj do pliku GraphicsLayerScope właściwości ambientShadowColor i spotShadowColor (I1ba1a, b/160665122)
  • Liczba mnoga jest teraz obsługiwana przez funkcje pluralStringResource. (Ib2f23, b/191375123)

Wersja 1.2.0-alfa05

9 marca 2022 r.

Aplikacja androidx.compose.ui:ui-*:1.2.0-alpha05 została zwolniona. Wersja 1.2.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • TextToolbar przyjmuje teraz argumenty lambda zamiast ActionCallback. (Ib2eb9, b/197950089)
  • Zaktualizowana wartość null w Core i appcompat, aby dopasować ją do Tiramisu DP2 (I0cbb7).
  • Pomiar interfejsu ujawnia teraz właściwość rodzica (I3313f)
  • Modifier.onPlaced i interfejs OnPlacedModifier są teraz stabilne. (Ib5482)
  • Hurra! W Opcjach programistycznych jest teraz obsługiwane ustawienie „Skala czasu trwania animacji” w ramach tworzenia animacji. (I5a4fc, b/161675988)
  • Dodano lokalny modyfikator BeyondBoundsLayout (If8b51, b/184670295)
  • Opcja Text: includeFontPadding jest teraz domyślnie wyłączona. W przypadku wysokich skryptów problemy z przycinaniem wynikające z metody includeFontPadding=false są obsługiwane. Przycinanie nie powinno występować. (I31c84, b/171394808)

Poprawki błędów

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

Wkład z zewnątrz

  • Zaktualizowano, aby używać współprogramów Kotlinx 1.6.0 (I3366d)

Wersja 1.2.0-alfa04

23 lutego 2022 r.

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

Zmiany w interfejsie API

  • Dodano właściwości ComposableTarget, ComposableTargetMarker i ComposableOpenTarget, które umożliwiają kompilowanie raportowania czasu, gdy funkcja kompozycyjna jest wywoływana w celu kierowania na aplikację, do której nie została zaprojektowana.

    W większości przypadków adnotacje mogą zostać wywnioskowane przez wtyczkę kompilatora compose, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Przypadki, których nie można wywnioskować, obejmują tworzenie i używanie niestandardowych aplikacji, abstrakcyjnych funkcji kompozycyjnych (takich jak metody interfejsu), pól lub zmiennych globalnych, które są zmiennymi kompozycyjnymi (wywnioskowane są zmienne lokalne i parametry) oraz korzystanie z funkcji ComposeNode lub powiązanych funkcji kompozycyjnych.

    W przypadku aplikacji niestandardowych funkcje kompozycyjne, które wywołują funkcje ComposeNode lub ReusableComposeNode, muszą dodać adnotację ComposableTarget do funkcji i dowolnych typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji z adnotacją ComposableTargetMarker, a następnie użycie oznaczonej adnotacji bezpośrednio zamiast ComposableTarget. Adnotacja kompozycyjna oznaczona za pomocą atrybutu ComposableTargetMarker jest odpowiednikiem ComposbleTarget z pełną i jednoznaczną nazwą klasy atrybutu jako parametru stosującego. Przykład użycia właściwości ComposableTargetMarker znajdziesz tutaj: anroidx.compose.ui.UiComposable. (I38f11)

  • Font(resId, ...) wykorzystuje teraz stabilny interfejs API loadStrategy. (Ief3d2)

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

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

  • Dodaj interfejs API mostka, aby przekonwertować niestandardowy obiekt Font.ResourceLoader na FontFamily.Resolver. (Ia0060)

Poprawki błędów

  • Podane właściwości FontFamily.Resolver są przekazywane do podkompozycji, takich jak Wyskakujące okienko.
  • Podane właściwości Font.ResourceLoader są przekazywane do podkompozycji, takich jak Wyskakujące okienko. (I48fa5)

Wersja 1.2.0-alfa03

9 lutego 2022 r.

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

Zmiany w interfejsie API

  • Metody notifyFocusedRect w TextInputSession i TextInputService zostały wycofane i nie będą wywoływane. Użyj w zamian pola BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Wprowadzono metodę destroyDisplayListData w klasie kodu RenderNode (I1e659, b/216660268)
  • Dodano nowy interfejs API, który umożliwia wstępne pomiary elementów podrzędnych utworzonych przez Ciebie SubcomposeLayout. (I857ea)
  • Dodano funkcję movableContentOf, która konwertuje funkcję lambda kompozycyjną na obiekt lambda, który przenosi jego stan, a także odpowiadające mu węzły do każdej nowej lokalizacji. Gdy poprzednie wywołanie opuści kompozycję, stan jest tymczasowo zachowywany, a jeśli do kompozycji pojawi się nowe wywołanie funkcji lambda, stan i powiązane z nim węzły są przenoszone do lokalizacji nowego wywołania. Jeśli nie dodasz żadnego nowego wywołania, stan zostanie trwale usunięty, a obserwatorzy zostaną powiadomieni.

    Jeśli lambda movableContentOf zostanie wywołana wiele razy w tej samej strukturze, dla każdego wywołania zostanie utworzony nowy stan i węzły. Gdy wywołania opuszczają kompozycję i wchodzą nowe, stan jest przenoszony z pierwszych wywołań do wywołań w kolejności ich wywoływania. Wszystkie stany, które nie zostały zajęte przez nowe wywołania, są trwale usuwane. (Ib4850)

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

  • Dodano createFontFamilyResolver(context) i createFontFamilyResolver(context, coroutineScope), by utworzyć nowe resolvery FontFamily (poza ich użyciem).

  • Akapit i wieloakapit zajmują teraz FontFamily.Resolver

  • Plik TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolver używany w tym układzie, który został wycofany z wersji TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)

  • Obsługa asynchronicznego i opcjonalnego wczytywania czcionek z działaniem zastępczym. Ta ścieżka jest używana przez TextField i udostępniana przez FontFamilySolver

  • Obsługa wstępnego wczytywania czcionek przez FontFamilyResolver.preload

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

  • Dodaliśmy AndroidFont – nowy niskopoziomowy interfejs API do obsługi nowych typów deskryptorów zasobów czcionek na Androidzie. Dotyczy to na przykład wczytywania czcionek z backendu właściwego dla aplikacji, opcjonalnie lokalizowania wstępnie zainstalowanych czcionek na urządzeniu lub wczytywania czcionki z zasobu, który nie jest obecnie dostępny przez fabryki czcionek.

  • Rozwinięto interfejs Font.ResourceLoaded API, aby umożliwić opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy, aby deweloperzy aplikacji używali tego interfejsu API bezpośrednio. Aby dodać nowe typy czcionek, wejdź na stronę AndroidFont.

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

  • Do czcionek opartych na zasobach dodaliśmy parametr loadingStrategy, by umożliwić wczytywanie asynchroniczne, gdy czcionka zasobu odwołuje się do pliku XML z czcionkami do pobrania. (Ie5aea, b/174162090)

  • Konstruktor Typeface(FontFamily) został wycofany. Wcześniej było to używane do wstępnego wczytywania czcionek, co mogło zająć do 10 sekund w przypadku czcionek do pobrania. W przypadku czcionek do pobrania to wywołanie może zostać zablokowane na 10 sekund. Zamiast niego użyj FontFamilyResolver.preload.

  • Interfejs fontResource(FontFamily): Typeface został wycofany. Wcześniej było to używane do wstępnego wczytywania czcionek, co mogło zająć do 10 sekund w przypadku czcionek do pobrania. Zamiast tego użyj FontFamilyResolver.preload (If8e7c, b/174162090)

  • Konstruktor SubcomposeLayoutState akceptujący maxSlotsToRetainForReuse jest teraz przestarzały. Zamiast tego dostępny jest nowy konstruktor akceptujący SubcomposeSlotReusePolicy – nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które przedziały powinny być zachowane do wykorzystania w przyszłości. (I52c4d)

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

  • Wycofaliśmy interfejs AndroidComposeTestRule.AndroidComposeStatement, który nie był dostępny w publicznym interfejsie API i w Twoim przypadku nie zadziałał. (IBc46b)

  • Wygenerowana wewnętrznie nazwa klasy kt (Ia0b9e, b/174162090)

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

  • Globalny program ładujący czcionki to teraz FontFamilyResolver. (I4f773, b/174162090)

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

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

Poprawki błędów

  • Pola tekstowe będą teraz zachowywane nad klawiaturą, gdy są zaznaczone, a klawiatura jest widoczna, gdy tryb nietrwałego wprowadzania to ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Komputer korzysta z lokalnej kompozycji w usłudze FontFamily.Resolver
  • Komputer FontLoader został wycofany
  • Nowa fabryka urządzenia createFontFamilyResolver na komputerze (I6bbbb, b/174162090)
  • Typ wprowadzania danych z klawiatury programowej nie migocze przy zmianie zaznaczenia między polami tekstowymi. (I1bf50, b/187746439)

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

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

Zmiany w interfejsie API

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

Wkład z zewnątrz

  • Język PointerEvent.scrollDelta.y na Androidzie jest teraz odwrócony (teraz zwraca wartość 1 zamiast -1, gdy przechylimy kółko myszy w prawo) (Ia9811)

Wersja 1.2.0-alfa01

12 stycznia 2022 r.

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

Zmiany w interfejsie API

  • Wycofano: FontFamily.canLoadSynchronously. Ta właściwość nie ma znaczenia semantycznego. (Ica5ef)
  • Do interfejsu CompositionData dodano pole tożsamości, aby umożliwić generowanie identyfikatorów niewariantów w inspektorze układu. (Ic116e)
  • Do listy urządzeń w wersji testowej (I93232) dodano identyfikatory urządzeń z Wear OS.

Aktualizacje zależności

  • Teraz zależy od Kotlin 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

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

Poprawki błędów

Wersja 1.1.0

9 lutego 2022 r.

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

Ważne zmiany od wersji 1.0.0

  • Stabilna obsługa efektu sygnalizowania końca przewijania w Androidzie 12.
  • Ulepszenia rozmiaru docelowych elementów dotykowych
    • Pamiętaj, że w przypadku interfejsu Compose 1.0 komponenty Material będą rozszerzały swoją przestrzeń układu, aby spełnić wytyczne dotyczące ułatwień dostępu w zakresie rozmiaru docelowego elementu dotykowego. Na przykład element dotykowy przycisku rozwinie się do minimalnego rozmiaru 48 x 48 dp, nawet jeśli ustawisz jego mniejszy rozmiar. Dzięki temu interfejs Compose Material jest taki sam jak w przypadku komponentów Material Design, co zapewnia spójne zachowanie w przypadku łączenia widoków i tworzenia. Ta zmiana sprawi też, że gdy tworzysz interfejs z użyciem komponentów Compose Material, będą one spełnione minimalne wymagania dotyczące ułatwień dostępu w elementach dotykowych.
  • Stabilna obsługa kolei nawigacyjnej
  • Przekształcanie wielu wcześniej eksperymentalnych interfejsów API w stabilne
  • obsługa nowszych wersji Kotlin,

Wersja 1.1.0-rc03

26 stycznia 2022 r.

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

Poprawki błędów

  • Zaktualizowano do obsługi Material Design w wersji 1.1.0-rc03

Wersja 1.1.0-rc01

15 grudnia 2021 roku

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

Poprawki błędów

  • Usunięto błąd, który powodował brakujące działania związane z ułatwieniami dostępu (I7cbfb)
  • SemanticsNodeInteraction.captureToImage() będzie teraz działać także wtedy, gdy HardwareRenderer.isDrawingEnabled() ma wartość false, włączając ją na czas rozmowy (Idf3d0)

Wersja 1.1.0-beta04

Grudzień 1, 2021

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

Nowe funkcje

  • Zaktualizowano w celu zapewnienia zgodności z Kotlin 1.6.0

Zmiany w interfejsie API

  • Wyczyszczono wartość null w androidx.core.view (I7078a, b/204917439)
  • Dodano eksperymentalne interfejsy API, które umożliwiają użytkownikom korzystanie z PointerInputchange w całości lub sprawdzanie, czy zostały one wykorzystane. (I2e59d)
  • Dodaje obsługę zdarzeń kółka przewijania myszy w warstwie interfejsu użytkownika. (Ia14eb, b/198214718)
  • Dodaj eksperymentalne przeciążenia typu Modifier.composed, które przyjmują klucze do porównania pod kątem równości i kwalifikują się do pomijania optymalizacji. (Ice799, b/205851704)
  • Rozszerzenie ComposeNotIdleException rozciąga się teraz od Exception, a nie bezpośrednio z Throwable. Pamiętaj, że oznacza to, że klauzule typu catch, które przechwytują Exception, mogą teraz wychwytywać klauzule ComposeNotIdleException, gdzie wcześniej tego nie robili. (I9c217)

Poprawki błędów

  • Naprawa nieruchomych uchwytów tekstowych w przypadku zmiany widoczności IME. (I25f2e)

Wersja 1.1.0-beta03

17 listopada 2021 r.

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

Zmiany w interfejsie API

  • Dodano nowy modyfikator Modifier.onPlaced, co umożliwia obserwowanie zmiany miejsca docelowego. Dzięki temu można wprowadzić dodatkowe zmiany przesunięcia modyfikatora podrzędnego na podstawie zaobserwowanej zmiany miejsca docelowego. (I558fd)
  • Usunięto InjectionScope.flush() i InjectionScope.dispose(). Usunięcie wszystkich zdarzeń i pozbycie się zakresu ma teraz miejsce na końcu wywołanej metody performance*Input(), tak jak przedtem. (I2bed8)
  • Usunięto MultiModalInjectionScope.Touch i MultiModalInjectionScope.Mouse. Aby wstrzykiwać zdarzenia dotyku i myszy w przypadku gestów multimodalnych, możesz używać teraz zdarzeń MultiModalInjectionScope.touch() i MultiModalInjectionScope.mouse(). Oba akceptują one lambda, które ma zakres odbiorcy tej modalności. (Idde18).

Poprawki błędów

  • Domyślna wartość durationMillis w tabeli TouchInjectionScope.swipeWithVelocity jest teraz obliczana w taki sposób, aby można było przesunąć palcem. (I19deb)

Wersja 1.1.0-beta02

3 listopada 2021 r.

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

Zmiany w interfejsie API

  • Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie żądania do elementów nadrzędnych tak, aby przewijali je i wyświetlili dany element (Ib918d, b/195353459).
  • Nowe interfejsy API animacji do obsługi narzędzi. W szczególności pozwalają one narzędziom sprawdzać animacje i ich konfiguracje w przejściach. (I4116e)

Wkład z zewnątrz

  • Dodano Modifier.pointerHoverIcon (I95f01)

Wersja 1.1.0-beta01

27 października 2021 roku

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

Zmiany w interfejsie API

  • Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysyłanie żądania do elementów nadrzędnych, aby umożliwić im przewijanie i wyświetlenie elementu (Ib918d, b/195353459).
  • Nowe interfejsy API animacji do obsługi narzędzi. W szczególności pozwalają one narzędziom sprawdzać animacje i ich konfiguracje w przejściach. (I4116e)

Wersja 1.1.0-alfa06

13 października 2021 r.

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

Zmiany w interfejsie API

  • Usuń ExperimentalComposeUiApi z ViewRootForInspector i LayoutInfo.ownerViewId (I5c2e3)
  • Zastosowano w przypadku Układu przeciążenie bez elementów podrzędnych z większą wydajnością (Ib0d9a).
  • Usunięto element InternalCompilerApi z metod narzędzia Composer, które muszą być wywoływane przez moduły (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction zwraca teraz wartość SemanticsNodeInteraction, która została wywołana przez funkcję. (I9e5db)
  • Dodano element LocalInputModeManager CompositionLocal w celu wykrywania TouchMode/NonTouchMode. (I6a83c, b/175899786)
  • Dodano atrybut viewConfiguration: ViewConfiguration do elementu LayoutInfo, aby umożliwić klientom wyświetlanie prawidłowych wartości takich jak długi czas oczekiwania na reklamę. (I76ca6)
    • Do funkcji InjectionScope dodano funkcję viewConfiguration: ViewConfiguration, która umożliwia testom dostosowywanie wstrzykiwania danych wejściowych na podstawie takich elementów jak czas oczekiwania na długie naciśnięcie lub odchylenie od dotyku.
    • Zmieniono domyślny czas przytrzymywanego i dwukrotnego kliknięcia w przypadku dotyku i kliknięcia za pomocą myszy. Został on oparty na wartościach z pliku InjectionScope.viewConfiguration.
  • Implementacja ExposedDropdownMenu na podstawie ExposedDropdownMenuBox z polem tekstowym i menu rozwijanym (If60b2)
  • Została dodana do klasy PopupWłaściwości funkcja OdrzućOnOutsideClick, która zastąpiła wycofaną już regułę removeOnClickOutside. Nowa właściwość otrzymuje pozycję kliknięcia i granice zakotwiczenia, co daje dokładniejszą kontrolę nad tym, czy wywoływanie żądania onDismissRequest ma być wywoływane. Może to na przykład zapobiec odrzuceniu reklamy zakotwiczonej po jej dotknięciu.
    • Do funkcji PopupWłaściwości dodano funkcję updateAndroidWindowManagerFlags, która zapewnia niskopoziomową kontrolę nad flagami przekazywanymi przez wyskakujące okienko do interfejsu Android WindowManager. Parametrem funkcji lambda są flagi obliczone na podstawie wartości PopupWłaściwości, które skutkują flagami WindowManagera, np. „możliwy do zaznaczenia”. Wynikiem funkcji lambda będą ostatnie flagi, które zostaną przekazane do interfejsu Android WindowManager. Domyślnie flaga updateAndroidWindowManagerFlags pozostawia bez zmian flagi obliczone na podstawie parametrów. Tego interfejsu API należy używać ostrożnie tylko w przypadkach, gdy wyskakujące okienko ma bardzo szczególne wymagania dotyczące działania. (I6e9f9)
  • Tabela Recomposer.state została wycofana i zastąpiona przez Recomposer.currentState, aby zmienić jej typ na StateFlow (Ic2ab3, b/197773820)
  • Dodano użytkowników flush() i dispose() do listy InjectionScope. Użyj ich, gdy chcesz natychmiast opróżnić wszystkie zdarzenia umieszczone w kolejce lub gdy chcesz pozbyć się zakresu. (Ifb73a)
  • Dodano element performScrollToNode(matcher: SemanticsMatcher), który umożliwia przewijanie przewijanego kontenera do treści pasującej do podanej funkcji dopasowania. (Ic1cb8)
  • InjectionScope implementuje teraz Density, co pozwala na łatwą konwersję między px i dp w performTouchInput i znajomych. (I8fe1f)

Poprawki błędów

  • AndroidView przekazuje teraz do swojego widoku element LocalLifecycleOwner i LocalSavedStateRegistryOwner w swoim widoku za pomocą obiektów ViewTreeLifecycleOwner i ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
  • Naprawianie problemów z obsługą przesunięcia palcem w Wear OS w tej sekcji. (I9387e)
  • Domyślny czas między wstrzykiwanymi zdarzeniami wejściowymi zmienił się z 10 ms na 16 ms. Może to wpłynąć na wyniki testów, które wykonują gesty wejściowe, takie jak konkretne przesunięcie. (I829fd)

Wersja 1.1.0-alfa05

29 września 2021 r.

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

Zmiany w interfejsie API

  • Dodano obsługę komunikacji między modyfikatorami (Id5467, b/198826874).
  • Dodano eksperymentalne wskaźniki historyczne do pola PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
  • Dodano użytkowników density: Density i layoutDirection: LayoutDirection do listy LayoutInfo. Dzięki temu użytkownicy tagu LayoutInfo mogą prawidłowo zinterpretować wymiary i pozycję elementów w polu LayoutInfo. (I002f1)
  • Dodano eksperymentalną obsługę wstrzykiwania zdarzeń myszy. Użyj performMouseInput, aby zacząć wysyłać zdarzenia myszy, lub wysyłaj je za pomocą właściwości Mouse obiektu MultiModalInjectionScope podczas multimodalnego gestu wprowadzania za pomocą performMultiModalInput. Dokumentację dostępnego interfejsu API znajdziesz w MouseInjectionScope. (Iaa4a8, b/190493367)

Poprawki błędów

  • Rozwiązanie problemu z ułatwieniami dostępu w przypadku elementów przewijanych (zarówno leniwych, jak i nieleniwych) w zakresie przewijania (I6cdb0).
  • Poprawiono funkcję TouchInjectionScope.swipeWithVelocity. Akceptuje teraz szerszy zakres zmiennych wejściowych i sugeruje zmiany w danych wejściowych, jeśli nie można utworzyć przesunięcia (I40fbe, b/182477143)

Wersja 1.1.0-alfa04

15 września 2021 r.

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

Zmiany w interfejsie API

  • PointerEvent Komponent PointerEventType obsługuje zdarzenia najechania kursorem. (I091fa)
  • Zezwalaj elementom podrzędnym na akceptowanie danych wejściowych wskaźnika poza granicami danych wejściowych wskaźnika nadrzędnego. Rodzice mogą przechwytywać te wywołania za pomocą właściwości PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
  • Wycofane funkcje performGesture i GestureScope, które zostały zastąpione przez performTouchInput i TouchInjectionScope. (Ia5f3f, b/190493367)
  • Do elementu SemanticsNode dodano element touchBoundsInRoot, który uwzględnia minimalny rozmiar docelowych elementów dotykowych, aby deweloperzy mogli zagwarantować, że docelowe elementy dotykowe spełniają minimalne wymagania związane z ułatwieniami dostępu. (I2e14b, b/197751214)
  • Ponów wdrożenie możliwego do sprawdzenia (I927bc, b/191017532)
  • Nazwa parametru możliwego do zbadania została zmieniona, aby dopasować ją do utworzonego (I3a482, b/191017532)
  • Wprowadziliśmy performTouchInput i TouchInjectionScope jako zastąpienie rozwiązań performTouchInput i TouchInjectionScope. Przygotowaliśmy dla Ciebie drogę dla innych modalności (takich jak mysz).

    TouchInjectionScope używa tych samych metod co GestureScope z wyjątkiem właściwości movePointerTo i movePointerBy, które zostały zmienione na updatePointerTo i updatePointerBy. Pozostałe metody są takie same.

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

    1. Jeśli wyślesz zdarzenie w dół, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia przeniesienia (czyli użyto zdarzenia updatePointerTo(), ale nie move(), a następnie wywołano down()), poprzednia implementacja przesunęła czas zdarzenia i wysłała zdarzenie przeniesienia przed wysłaniem zdarzenia w dół. Nowa implementacja nadal wysyła zdarzenie ruchu, ale nie przyspiesza go w tym konkretnym scenariuszu.
    2. Jeśli wysyłanie zdarzenia polegającego na przeniesieniu wskaźników zostało przeniesione bez wysyłania zdarzenia przeniesienia (podobnie jak powyżej), poprzednia implementacja przyspieszała czas zdarzenia i wysyłała zdarzenie przeniesienia przed wysłaniem zdarzenia ruchu. Nowa implementacja nic nie robi: nowe pozycje wskaźników będą odzwierciedlane tylko przez zdarzenie w górę.

    Na koniec TouchInjectionScope wprowadza nową metodę currentPosition(pointerId: Int), która pozwala określić bieżącą pozycję wskaźnika. (If1191, b/190493367)

Poprawki błędów

  • Zezwól, by klip przekroczył granice docelowego elementu dotykowego poza region klipu. (I43e10, b/171509422)
  • Na urządzeniach z Androidem 12 dodaliśmy obsługę rozszerzonego przewijania. (Iccf3c, b/171682480)

Wersja 1.1.0-alfa03

1 września 2021 roku

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

Nowe funkcje

  • Zaktualizowano element Tworzenie 1.1.0-alpha03, aby bazował na Kotlin 1.5.30. (I74545)

Zmiany w interfejsie API

  • Dodano element Modifier.inspectable do zawijania innych modyfikatorów. (I1909b, b/191017532)
  • Dodaliśmy interfejs API BlurredEdgeTreatment, aby uprościć przypadki użycia rozmycia w powszechniej używanych kombinacjach flag klipów i funkcji TileModes. Większość przypadków użycia obejmuje albo zezwalanie na wyrenderowanie rozmytej treści poza granicami oryginalnej treści i zamazywanie obszarów poza tymi granicami przezroczystą czernią lub przycinanie treści do granic treści z próbkowaniem najbliższej krawędzi w przypadku jąder rozmycia, które wykraczają poza granice treści. (I6b4b7, b/166927547)
  • Dodaliśmy obsługę RenderEffect w interfejsie tworzenia nowej wiadomości na komputerze. Wprowadzenie przesunięcia i modyfikatora rozmycia pozwoliło w prosty sposób wprowadzić efekty wizualne rozmycia do części hierarchii kompozycji. (I0f6aa, b/166927547)
  • Wprowadziliśmy interfejs RenderEffect API, który można opcjonalnie skonfigurować w elemencie Modifier.graphicsLayer, aby zmieniać zawartość samej warstwy. Pozwala to rozmyć zawartość elementów kompozycyjnych i podrzędnych elementów kompozycyjnych w hierarchii kompozycji. (I47c4d, b/166927547)
  • AwaitPointerEventScope ma teraz funkcje withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Do klasy ViewConfiguration dodaliśmy minimalny rozmiar docelowego elementu dotykowego, który można wykorzystać w semantyce i wprowadzaniu wskaźnika w celu zapewnienia dostępności. (IE861c)
  • Dodano obsługę funkcji TileMode.Decal, która jest przydatna przy definiowaniu zachowania krawędzi w przypadku obiektów RenderEffects opartych na rozmyciu. (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction i hasScrollToKeyAction to teraz stabilny interfejs API (I142ae, b/178483889)
  • Dodano metodę testową, która pozwala uzyskać obcięte progi. (I6b28e)

Poprawki błędów

  • Usunięto metodę „isBounded” z metody BlurredEdgeTreatment na rzecz wyraźnego sprawdzenia, czy parametr kształtu ma wartość null. (I85d68)

Wersja 1.1.0-alfa02

18 sierpnia 2021 r.

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

Zmiany w interfejsie API

  • Funkcja PointerEvent obsługuje teraz stan przycisku myszy i modyfikatora klawiatury. (I6310c, b/180075467)
  • Wstrzykiwane gesty używają teraz czasu ze strony MainTestClock jako źródła informacji o czasie. Bieżąca godzina wstrzykiwanych zdarzeń w obiekcie performGesture zostanie zainicjowana do bieżącej godziny w parametrze MainTestClock. (Ifb364, b/192064452)
  • Dodano konstruktor DpRect(DpOffset, DpSize) (I2cf16, b/194219828)
  • Dodano klasę DpSize (I7abb1, b/194219828).

Poprawki błędów

  • Aktualizacja pliku XML grafiki wektorowej w celu obsługi właściwości ColorStateLists jako właściwości odcienia koloru głównego w elementach VectorDrawable. (I86915, b/195668138)

Wersja 1.1.0-alfa01

4 sierpnia 2021 r.

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

Zmiany w interfejsie API

  • RelocationRequester.bringIntoView akceptuje teraz prostokąt jako parametr, który umożliwia wyświetlenie części funkcji kompozycyjnej (Ice2c5, b/194330245)
  • AnimatedImageVector i powiązane z nim interfejsy API są teraz w nowym module androidx.compose.animation:animation-graphics. (I60873)
  • Dodano eksperymentalny modyfikator do obsługi żądań relokacji. (I65a97, b/178211874)
  • Wprowadziliśmy interfejs BrushPainter API, który umożliwia rysowanie dowolnych pędzli w aplikacji Painter, podobnej do ColorPainter

    Zaktualizowaliśmy interfejs Brush API, aby zawierał wewnętrzny parametr rozmiaru, którego dotyczy zapytanie w BrushPainter (Ia2752, b/189466433).

  • Zaktualizowano metodę DrawScope#drawImage, która korzysta z prostych ustawień źródła i miejsca docelowego w celu konsumpcji opcjonalnego parametru SafeSearch. Jest to przydatne w przypadku grafiki pikselowej, która po skalowaniu ma być pikselowana. Zaktualizowano narzędzie BitmapPainter i obraz kompozycyjny, aby aktywowało też opcjonalny parametr FilterQuality (Ie4fb0, b/180311607).

  • Dodano metodę GestureScope.advanceEventTime, która zapewnia większą kontrolę nad czasem występowania zdarzeń w przypadku gestu (Ibf3e2).

Poprawki błędów

  • Aby lepiej obsługiwać łańcuch modyfikatorów rysowania, zadbaj o to, aby implementacja Modifier.paint wywołała metodę rysowania treści. Do tej pory funkcja Modifier.paint oczekiwała się na węzeł liścia w łańcuchu modyfikatorów, ale uniemożliwiłby to jego skonfigurowanie w kontenerze kompozycyjnym (np. ramkę) i dodanie na nim dodatkowych elementów dekoracyjnych, takich jak Modifier.paint().border(). Wywoływanie metody DresContent po narysowaniu zawartości przez narzędzie Modifier.paint zapewnia większą spójność zachowania z wzorcem modyfikatora. (Ibb2a7, b/178201337, b/186213275)
  • Okna są teraz zgodne z rozmiarem platformy. Aby zastąpić to działanie, ustaw usePlatformDefaultWidth na false (fałsz). (Iffaed, b/192682388)
  • Przeniesiono InfiniteAnimationPolicy do :compose:ui (I5eb09, b/160602714)
  • Przewijanie za pomocą działań semantycznych w przypadku komponentów leniwego przewijania i komponentów zwykłego przewijania jest teraz animowane (Id9066, b/190742024).

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

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

Poprawki błędów

  • Usunięto problem ze śledzeniem awarii w przypadku instancji pochodnej klasy. (Aosp/1792247)

Wersja 1.0.4

13 października 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano w celu dopasowania do Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano w celu dopasowania do Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

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

Zaktualizowano, aby obsługiwać wersję 1.0.2 tworzenia wiadomości. Funkcja Utwórz 1.0.2 jest nadal zgodna z Kotlinem 1.5.21.

Wersja 1.0.1

4 sierpnia 2021 r.

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

Aktualizacje zależności

  • Zaktualizowano zgodnie z kotlinem 1.5.21.

Wersja 1.0.0

28 lipca 2021 roku

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

Główne funkcje wersji 1.0.0

To jest pierwsza stabilna wersja funkcji Compose. Więcej informacji znajdziesz na oficjalnym blogu dotyczącym wydania wiadomości.

Znane problemy

  • Jeśli używasz Androida Studio Bumblebee Canary 4 lub AGP 7.1.0-alpha04/7.1.0-alpha05, może wystąpić ta awaria:

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

    Aby rozwiązać ten problem, tymczasowo zwiększ wartość minSdkVersion do poziomu 24+ w pliku build.gradle. Ten problem zostanie rozwiązany w następnej wersji Androida Studio Bumblebee i interfejsu API 7.1. (b/194289155)

Wersja 1.0.0-rc02

14 lipca 2021 roku

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

Poprawki błędów

  • Okna są teraz zgodne z rozmiarem platformy. Aby zastąpić to działanie, ustaw usePlatformDefaultWidth na false (fałsz). (Iffaed, b/192682388)

Wersja 1.0.0-rc01

1 lipca 2021 r.

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

Nowe funkcje

  • Podziel moduł narzędzi interfejsu na ui-tooling i ui-tooling-preview (Iefa28, b/190649014)

Zmiany w interfejsie API

  • Usunięto wycofane eksperymentalne wersje FocusManager#moveFocusIn i FocusManager#moveFocusOut (I227d7, b/170154986, b/186567354, b/168510304)
  • Canvas obsługuje teraz parametr contentDescription związany z ułatwieniami dostępu. (Ib547c)
  • Nazwa elementu useDefaultMaxWidth w domenie PopupProperties została zmieniona na usePlatformDefaultWidth. (I05710).
  • Okna mogą teraz zajmować całą szerokość ekranu. (I83929, b/190810877)
  • Dodaliśmy eksperymentalną obsługę obrazów w kolorach HSV i HSL. (Id7cf8, b/180731008)

Zmiany w działaniu

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

Poprawki błędów

  • Przeniesiono InfiniteAnimationPolicy do androidx.compose.ui:ui (I5eb09, b/160602714)
  • W celu zmiany struktury modułu tymczasowo usunięto element AnimeImageVector. (I41906, b/160602714)

Wersja 1.0.0-beta09

16 czerwca 2021 r.

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

Zmiany w interfejsie API

  • Zmień rolę wyliczenia i LiveRegionMode na klasy wbudowane za pomocą prywatnego konstruktora (Id1890)
  • Wielkie litery z klawiatury są przekształcane w klasy wbudowane. (Id5a1c).
  • Zmień klasę HapticFeedbackType na klasę wbudowaną. (I255ec)
  • Parametr Modifier.pointerInteropFilter to @ExperimentalComposeUiApi. (Iede6c)
  • Textalign, FontSynthesis i TextDirection to teraz wbudowane klasy. (I212fe)
  • Wartość TextOverflow została zmieniona na klasę wbudowaną. (I433af)
  • FontStyle jest teraz klasą wbudowaną. (I9e48b)

Poprawki błędów

  • Najważniejsze stałe stałe to obecnie @ExperimentalComposeUiApi. Wykorzystanie kodu może zadeklarować stałe prywatne przed stabilizacją. (Ia5d48)
  • Testy tworzenia można teraz uruchamiać w Robolectric. Do tej pory zidentyfikowano te ograniczenia:
    • Nie ma natywnej bitmapy, więc ImageBitmap() prowadzi do NullPointerWyjątek.
    • Nie ma rysowania, więc captureToImage() bezterminowo będzie oczekiwać na następne rysowanie (tzn. w przeciwnym razie).
    • Nie załadowano czcionki, co oznacza, że każdy tekst zostanie zmierzony nieprawidłowo. Wszystkie znaki mają stałą wysokość około 20 pikseli i szerokość 1 piksela.
    • ComposeTestRule.waitUntil {} nie uruchamia głównego wątku podczas oczekiwania, przez co jest on taki sam jak ComposeTestRule.mainClock.advanceTimeUntil {}. W przyszłości prawdopodobnie określisz więcej ograniczeń. (I284fa)

Dodane reguły profilu

Ta wersja dodaje 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 podobnym. Każda reguła jest podana w pliku w oddzielnym wierszu. W tym przypadku reguła jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART zrozumiałego dla człowieka, który jest używany podczas korzystania z funkcji adb shell profman --dump-classes-and-methods .... Reguły te mogą mieć 2 formy kierowania na metody lub klasy.

  • Reguła metody będzie miała następujący wzorzec:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Reguła dotycząca klasy będzie miała następujący wzorzec:

    <CLASS_DESCRIPTOR>
    
  • <FLAGS> to co najmniej jeden ze znaków H, S i P wskazujący, czy ta metoda ma być oznaczona jako „Hot”, „Startup” lub „Post Startup”.

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

  • <METHOD_SIGNATURE> to podpis metody, który zawiera nazwę, typy parametrów oraz zwracane typy metody. Na przykład metoda fun isPlaced(): Boolean na LayoutNode ma podpis isPlaced()Z.

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

Jaką rolę pełnią reguły?

  • 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 ona wywoływana podczas uruchamiania i powinna zostać skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretowania jej podczas uruchamiania.

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

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

Jak to działa?

  • Biblioteki mogą definiować te reguły, które zostaną spakowane do artefaktów AAR. Gdy zostanie utworzona aplikacja, która zawiera te artefakty, reguły te są scalane, a scalone reguły są wykorzystywane do stworzenia kompaktowego binarnego profilu ART specyficznego dla danej aplikacji. ART może wykorzystać ten profil, gdy aplikacja jest zainstalowana na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji w celu zwiększenia wydajności aplikacji, zwłaszcza jej przy pierwszym uruchomieniu. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.

Wersja 1.0.0-beta08

2 czerwca 2021 r.

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

Zmiany w interfejsie API

  • Wyliczenie NestedScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
  • Nazwa usługi FocusManager.clearFocus(forcedClear = true) została zmieniona na FocusManager.clearFocus(force = true) (Ia0c41)
  • Zrefaktoryzowano przypadki użycia wyliczenia w klasach wbudowanych, aby uniknąć problemów z wyczerpywaniem ich zakresu przy dodawaniu nowych wartości enum. (I2b5eb)
  • Usuń @ExperimentalComposeUiApi z konta PopupProperties. (I01fa6)
  • Pole PointerType zostało zmienione z wyliczenia na klasę wbudowaną (If5058)
  • Właściwości ContentDescription i semantyka tekstu nie są już pojedynczymi wartościami, tylko listami. Dzięki temu można je scalić w takiej postaci, w jakiej są, zamiast konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które pozwalają wykorzystać te zmiany (Ica6bf, b/184825850).
  • Interfejs Modifier.focusModifier() został wycofany i zastąpiony przez komponent Modifier.focusTarget() (I6c860)
  • Funkcje Modifier.onSizeChanged() i Modifier.onGloballyPositioned() nie są już wstawione (I727f6, b/186109675)
  • Wyliczenie KeyboardType zostało zastąpione klasą wbudowaną. (I73045, b/187055290)
  • Zastąpiono wyliczenie FocusState interfejsem FocusState (Iccc1a, b/187055290).
  • Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
  • Klasa PlaceholderVerticalAlign zostanie przekonwertowana na klasę wbudowaną. (If6290)
  • TextUnitType jest teraz klasą wbudowaną. (I4cba9)
  • AnnotatedString.withAnnotation to teraz ExperimentalTextApi, a nie ExperimentalComposeApi. (I0cd0a)
    • Konstruktor TextUnit o typie TextUnitType jest teraz nazywany ExperimentalTextApi zamiast ExperimentalComposeApi.

Poprawki błędów

  • Naprawiliśmy błąd związany z wersją beta07, który powodował, że elementy LazyColumn/Row były częściowo wyświetlane po przewinięciu (I8c9ac, b/188566058).
  • Teraz detectDragGesures, detectVerticalGestures i detectHorizontalGestures automatycznie przejmują zmianę pozycji, nie trzeba wywoływać funkcji change.consumePositionChange w wywołaniach zwrotnych onDrag (I42fc4, b/185096350, b/187320697)
  • Naprawiono modyfikatory układu, zapewniające linie wyrównania. Naprawiony został błąd, który powodował, że po zmianie linii wyrównania elementów podrzędnych nie był przeprowadzany ponowne pomiary. (I4401f, b/174315652)
  • Parametr Modifier.onGloballyPositioned() został zmieniony tak, by raportować współrzędne tego modyfikatora w łańcuchu modyfikatora, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że teraz kolejność modyfikatorów wpływa na to, jakie współrzędne będą raportowane. (Ieb67d, b/177926591)

Wersja 1.0.0-beta07

18 maja 2021 r.

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

Zmiany w interfejsie API

  • Dodano interfejs ViewRootForInspector do użytku w inspektorze (Ib70df)
  • W SubcomposeLayoutState można teraz ustawiać liczbę przedziałów wielokrotnego użytku. Układ będzie aktywny do tej liczby przedziałów, a nie zostanie wyrzucony (Ieb981). Dzięki temu możemy ponownie użyć innego przedziału.
  • Wyliczenie KeyEventType zostało zastąpione klasą wbudowaną. (Id670a, b/187055290)
  • Wyliczenie FocusDirection zostało zastąpione klasą wbudowaną. (Ib6d03, b/187055290, b/184086802)
  • Umożliwia pobieranie stanu SubcomposeLayout, co pozwala wstępnie skomponować zawartość w ramach identyfikatora slotId, co przyspieszy uzyskanie kolejnego wskaźnika, ponieważ gdy następnym razem spróbujemy utworzyć podkomponowanie z danym identyfikatorem boksu, następnym razem nie trzeba będzie tworzyć żadnej kompozycji. (I42580, b/184940225)
  • Dodano uchwyt wyboru klipu (Iff80d, b/183408447)
  • Usunęliśmy nieużywane interfejsy API związane z obsługą narzędzia LayoutInspector. (I2ac78)

Poprawki błędów

  • LazyColumn/Row zachowa teraz maksymalnie 2 widoczne wcześniej elementy (nie wyrzucone), nawet jeśli zostaną już przewinięte. Dzięki temu komponent może ponownie wykorzystywać aktywne kompozycje podrzędne, gdy trzeba utworzyć nowy element, który zwiększa szybkość przewijania. (IE5555)
  • Reguły TextGeomerticTransform i TextDecoration w dniu AnnotatedString zostaną zastosowane jako podane. (I61900, b/184760917)

Wersja 1.0.0-beta06

5 maja 2021 roku

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

Zmiany w interfejsie API

  • Rozwiąż konflikt gestu nawigacji (I1145e)
  • @ComposeCompilerApi nie ma już stanu @RequiresOptIn (Iab690)
  • Dodaliśmy interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które pozwalają oznaczać kolekcję i jej elementy na potrzeby usług ułatwień dostępu (Id54ef, b/180479017).
  • Dodano element SemanticsActions.ScrollToIndex, aby przewijać listę ze zindeksowanymi elementami do elementu o określonym indeksie oraz SemanticsProperties.IndexForKey, aby pobierać indeks elementu na liście z elementami oznaczonymi jako kluczem. Oba działania są zaimplementowane za pomocą LazyList.
    • Dodano element SemanticsNodeInteraction.performScrollToIndex, który przewija listę do danego indeksu, i SemanticsNodeInteraction.performScrollToKey, który przewija listę do elementu o danym kluczu. (I4fe63, b/178483889, b/161584524)
  • Dodano element ownerViewId do elementu GraphicLayerInfo (I19f62).
  • Dodano przeciążenia Font() przy wczytywaniu czcionek z zasobów, FileDescriptor i FileDescriptor (I5d382).
  • Dodano interfejs Accessibility API error, który umożliwia oznaczenie węzła zawierającego nieprawidłowe dane wejściowe (I12997, b/180584804, b/182142737).
  • Dodano przeciążenia (Font()) w celu wczytywania czcionek z zasobów, FileDescriptor (I43007)
  • Obsługa zapisu AdnotatedString w TextFieldValue.Saver. Do tablicy AnnotatedString.Builder dodano funkcje addTtsAnnotation i funkcje służące do adnotacji (I8cbdc, b/178446304)
  • Dodano funkcję konstruktora TextUnit TextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

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

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żywać tego interfejsu w żadnym publicznym interfejsie API ani nie było go w kodzie. (I34a02, b/184003208)
  • Wycofano funkcję TextLayoutResult/createTextLayoutResult. To nieużywana funkcja publiczna, która została dodana do testów. Nie wykonuje ona niczego, co można by użyć w interfejsach API tworzenia tekstu. Ta funkcja jest teraz wycofana i później zostanie usunięta. (I80413)

Poprawki błędów

  • Naprawiliśmy czynności związane z przewijaniem ułatwień dostępu w usługach ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight i accessibilityActionScrollDown. Zamiast przewijania do końca przewijany będzie teraz o jeden ekran w danym kierunku. (Ieccb0)
  • Pliki AndroidManifest z elementów 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.

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

Zmiany w interfejsie API

  • Zmień nazwy hideSoftwareKeyboard i showSoftwareKeyboard w systemie SoftwareKeyboardController na hide() i show().
    • Udostępniaj pełny interfejs CompositionLocal na kontrolerze lokalnego oprogramowania klawiaturowego, umożliwiając jego skonfigurowanie (przydatne zwłaszcza w testach) (I579a6).
  • Dodano interfejs API LiveRegion ułatwień dostępu. Jeśli węzeł jest oznaczony jako aktywny region, usługi ułatwień dostępu automatycznie powiadamiają użytkownika o zmianach (Idcf6f, b/172590946)
  • Wprowadziliśmy TextOverflow.visible. (Ic8f89)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że elementy LazyColumn/LazyRow znajdujące się na krawędziach były nieprawidłowo umiejscowione po szybkim przesuwaniu (Ie4d13, b/183877420)
  • AndroidViewBinding prawidłowo usuwa teraz fragmenty rozszerzone za pomocą FragmentContainerView, gdy element AndroidViewBinding jest usuwany z hierarchii tworzenia. (Ib0248, b/179915946)
  • Teraz AndroidViewBinding prawidłowo zagnieżdża fragmenty rozszerzone za pomocą FragmentContainerView, gdy ComposeView znajduje się w zakresie Fragment, naprawiając problemy z zapisywaniem i przywracaniem stanu tych fragmentów. (I70eb0, b/179915946)
  • Tworzenie wiązania widoku tworzenia zależy teraz od fragmentu 1.3.2 i teraz po zmianie konfiguracji konsekwentnie pokazuje fragmenty zawyżone za pomocą FragmentContainerView. (I0743d, b/179915946)

Wersja 1.0.0-beta03

24 marca 2021 r.

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

Zmiany w interfejsie API

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

Wersja 1.0.0-beta02

10 marca 2021 r.

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

Zmiany w interfejsie API

  • Dodano nowy lokalny interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKeyboardController w TextField. (I5951e, b/168778053)
  • Dodano nowy lokalny interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił 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)
  • Element SemanticsMatchers został oznaczony jako @ ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • Dodano te komponenty SemanticsMatcher:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2F502)

Poprawki błędów

  • Egzekwuj ograniczenia dotyczące publicznego użytkowania eksperymentalnych interfejsów API (I6aa29, b/174531520)
  • androidx.compose.ui:ui nie zależy już od AppCompat ani Fragment. Jeśli korzystasz z komponentu ComposeView w swojej aplikacji, a korzystasz z fragmentu lub komponentu AppCompat, upewnij się, że korzystasz z komponentu AppCompat 1.3 lub nowszego bądź fragmentu w wersji 1.3 lub nowszej. Te wersje są niezbędne do poprawnego ustawienia właścicieli cyklu życia i zapisanych stanów wymaganych w przypadku ComposeView. (I1d6fa, b/161814404)
  • Naprawiono problem z nieprawidłowym atrybutem rememberSaveable { mutableStateOf(0) } użytym w miejscu docelowym nawigacji-komponent. (I1312b, b/180042685, b/180701630)
  • Dodano nowy lokalny interfejs API kompozycji LocalSoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKeyboardController w TextField. (I658b6, b/168778053)
  • Poprawiliśmy rzadki wyjątek NoSuchElementException w elemencie tearDownRegistry() interfejsu ComposeRootRegistry (Iddce1).

Wersja 1.0.0-beta01

24 lutego 2021 r.

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

To jest pierwsza wersja beta funkcji tworzenia wiadomości w wersji 1.0.0.

Zmiany w interfejsie API

  • Dodano wywołanie zwrotne onStart do numeru detectDragGestures (I67269, b/179995594)
  • Modyfikatory rozmiaru dla jednostek wewnętrznych nie są już eksperymentalne. (I15744)
  • Nazwa MeasureBlocks została zmieniona na MeasurePolicy, dzięki czemu stała się ona ciekawym interfejsem. Interfejsy Layout API zostały zaktualizowane lub uproszczone, tak aby można było używać MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • Element InteractionState został zastąpiony elementem [Mutable]InteractionSource
    • Interfejsy odpowiadają za generowanie / zbieranie zdarzeń interakcji.
    • Zamiast przekazywać atrybut interactionState = remember { InteractionState() } do komponentów takich jak Button i Modifier.clickable(), użyj interactionSource = remember { MutableInteractionSource() }.
    • Zamiast Interaction.Pressed in interactionState używaj funkcji rozszerzenia InteractionSource, takich jak InteractionSource.collectIsPressedAsState().
    • W złożonych przypadkach użycia możesz użyć funkcji InteractionSource.interactions, aby obserwować strumień interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Dodano interfejs AccessibilityMananger i elementy LocalAccessibilityMananger w komponencie CompositionLocals (I53520)
  • Usunięto wycofane metody LayoutCoordinates. Użyj funkcji zamiast właściwości w przypadku właściwości positionInParent i boundsInParent (I580ed, b/169874631, b/175142755)
  • Aliasy typu zastąpione podstawowymi typami:
    • ColorStop to teraz Pair<Float, Color>
    • SpanStyleRange to teraz „AnnotatedString.Range”.
    • ParagraphStyleRange to teraz AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation to teraz AnnotatedString.Range<String>
    • (I8dd1a)
  • Utworzono nowe TextInputSession na potrzeby sesji wejściowych z komponentów tekstowych niskiego poziomu, takich jak CoreTextField. (I8817f, b/177662148)
  • Element Placeable umieszcza teraz MeasurementSize, czyli rozmiar, do którego zmierzył układ podrzędny. Ten rozmiar może nie spełniać ograniczeń dotyczących pomiarów. (Ib2729, b/172560206, b/172338608)
  • Dodaj modyfikator selectGroup, który umożliwia oznaczenie kolekcji kart lub opcji na potrzeby ułatwień dostępu (Ie5c29).
  • Pole defaultFactory dla właściwości compositionLocalOf i staticCompositionLocalOf jest teraz wymagane zamiast opcjonalnego.

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

    W przypadku typów z wartością null rozważ podanie { null } jako domyślnej fabryki.

    Nie zalecamy używania lokalnych z typami bez wartości null, chyba że możesz podać rozsądną wartość domyślną. Jeśli nie ma żadnej rozsądnej wartości domyślnej, lambda defaultFactory powinna zgłosić wyjątek. Złożenie wyjątku oznacza jednak, że konsumenci będą pośrednio zależnić od jego podania, który nie jest egzekwowany przez system typów. (Ifbd2a)

  • Usunięto wycofane metody z modułów UI (I646f6)

  • Zmieniono nazwę modyfikatorów rozmiaru. Nazwa parametru Modifier.width/height/size została zmieniona na requiredwidth/requiredHeight/requiredSize. Nazwa parametru Modifier.preferredWidth/preferredHeight/preferredSize została zmieniona na szerokość/wysokość/rozmiar. (I5b414)

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

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

  • Orientacja została przeniesiona do pakietu podstawowych. Usługa VelocirtTracker została przeniesiona z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)

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

  • Podklasy AnimationClockObservable zostały usunięte. Usunięto Animację. (Icde52, b/177457083)

  • Nazwa dostawców została zmieniona na CompositionLocalProvider

    • Konstruktor kompozycji nie akceptuje już parametru klucza i został wycofany.
    • Element currentCompositeKeyHash został przekształcony w kompozycyjną właściwość najwyższego poziomu zamiast funkcji kompozycyjnej najwyższego poziomu.
    • CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling
    • Obiekt ComposableLambda został przekształcony w interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
    • Obiekt ComposableLambdaN został przekształcony w interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
    • Funkcja zrzutFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
    • Metoda scalania SnapshotMutationPolicy nie jest już eksperymentalna
    • Funkcja @TestOnly najwyższego poziomu clearRoots została usunięta. Nie jest już potrzebna.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Element Composer.collectKeySourceInformation został usunięty. Nie jest już potrzebna.
    • Metody isJoinedKey,joinKeyLeft i joinKeyRight zostały usunięte. Nie są już potrzebne.
    • Różne interfejsy API najwyższego poziomu zostały przeniesione i uporządkowane w różne pliki. Ze względu na semantykę klasy plików stosowanej przez Kotlin powoduje to przerwanie zgodności plików binarnych, ale nie zgodności ze źródłem. U większości użytkowników nie powinno to stanowić problemu.
    • (I99b7d, b/177245490)
  • Aplikacja ComponentActivity.setContent() została usunięta z interfejsu compose:ui. Użyj tego, który oferuje androidx.activity:activity-compose:1.3.0-alpha01. Urządzenia viewModel() i LocalViewModelStoreOwner zostały usunięte z interfejsu compose:ui. Użyj tych od: androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b)

  • Ulepszyliśmy funkcję Modifier.scrollable. Teraz zamiast klasy ScrollableController używa interfejsu ScrollableControl (I4f5a5, b/174485541, b/175294473).

  • Obsługa funkcji CustomEvens w PointerInputModifier została usunięta (I02707, b/175294473)

  • Narzędzie SnapshotStateObserver nie ma już funkcji eksperymentalnych (Id2e6a)

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

  • Usunięto tryb longPressGeFilter i dwukrotnego kliknięcia gestów. Użyj też funkcji Modifier.pointerInput z funkcjami pomocniczymi, np. wykrywaj gesty dotknięcia (I2fedf, b/175294473).

  • Usunięto przypadki użycia interfejsu String.format API w różnych metodach toString, aby nie wykorzystywać wewnętrznie ciągu znaków.format. (Id1290).

  • Usunięto asercje dp (I798d2)

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

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

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

  • Pozycja przewijania w funkcji Modifier.vertical Scroll()/horizontal Scroll() jest teraz reprezentowana przy użyciu funkcji Ints (I81298).

  • Nazwa FlingConfig została zmieniona na FlingBehavior, co pozwala na dostosowanie animacji zawieszenia zamiast wstępnie zdefiniowanego rozpadu. (I02b86, b/175294473)

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

  • Ze wszystkich pól tekstowych usunęliśmy wywołanie zwrotne SoftwareKeyboardController. Wkrótce zastąpimy je nowym interfejsem API. (Iae869, b/168778053)

  • FontSpan i FontWeigthStyleSpan nie są już używane i usuwane. (Ie5b56, b/177423444)

  • Wprowadzono te zmiany w interfejsie Material API:

    • Dodano parametr contentPadding do Top/bottomAppBar, aby umożliwić dostosowanie domyślnego dopełnienia.
    • Zmieniono kolejność parametrów w BackdropScaffold, by były zgodne z wytycznymi API. Wymagane parametry znajdowały się przed parametrami opcjonalnymi.
    • Parametr icon w elemencie bottomPoruszaItem został przeniesiony za parametr selected i onClick.
    • Zmieniono nazwę parametru alwaysShowLabels w elemencie {Down PojawiItem na alwaysShowLabel.
    • Zmieniono nazwy parametrów bodyContent w kilku komponentach na content.
    • Zmieniła się kolejność parametrów w tabeli ButtonDefaults.buttonColors(). Uwaga: ponieważ rodzaj parametrów się nie zmienił, nie spowoduje to błędu w kodzie. Pamiętaj, by używać nazwanych parametrów lub zaktualizować kolejność ręcznie. W przeciwnym razie kod nie będzie działać tak samo jak poprzednio.
    • Dodano parametr secondaryVariant do tabeli darkColors(). Ten kolor jest zwykle taki sam jak kolor secondary w ciemnym motywie, ale jest dodatkowy dla zachowania spójności i możliwości dostosowania.
    • Usunęliśmy elementy ElevationDefaults i animmateElevation() z publicznej platformy interfejsu API, ponieważ nie były one powszechnie używane lub przydatne.
    • Zmieniono nazwę onValueChangeEnd w Slider na onValueChangeFinished i sprawiliśmy, że może ona mieć wartość null.
    • Zmieniono nazwę parametru text w Snackbar na content, aby zachować spójność.
    • Dodano parametr contentPadding do elementu DropdownMenuItem, aby umożliwić dostosowanie domyślnego dopełnienia, i ustawiliśmy content jako rozszerzenie w RowScope.
    • Nazwa elementu ModalDrawerLayout została zmieniona na ModalDrawer.
    • Nazwa elementu BottomDrawerLayout została zmieniona na BottomDrawer.
    • (I1cc66)

Poprawki błędów

  • Dodano interfejs API do korzystania z zasobów LivelyVectorDrawable w komponencie Compose. Użyj funkcji animatedVectorResource, aby wczytać plik XML <animated-vector> jako obiektAnimationImageVector i utworzyć animację przy użyciu narzędzia PaintterFor (I8ea91).
  • Dodano nowy lokalny interfejs API kompozycji Local SoftwareKeyboardController, który zastąpił poprzedni interfejs SoftwareKeyboardController w polu TextField. (I658b6, b/168778053)

Wersja 1.0.0-alfa12

10 lutego 2021 r.

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

Zmiany w interfejsie API

  • Obsługa grup widoków została usunięta z aplikacji UiApplier. Wycofane elementy kompozycyjne emitView zostały usunięte. (Ifb214)
  • Modifier.pointerInput wymaga teraz zapamiętania klawiszy, aby wskazać, kiedy powinna ponownie uruchomić się sterownik wykrywania danych wejściowych wskaźnika w przypadku nowych zależności. (I849cd)
  • Nazwa elementu CompositionReference zmieniła się na CompositionContext (I53fcb).
  • Ograniczenia zostały zmienione na DpRect (I4b32a)
  • Testowanie aktualizacji: funkcja hasText() sprawdzi zarówno dane wejściowe, jak i tekst etykiety, podpowiedzi/zastępczego tekstu w polu tekstowym (Iab803).
  • Element kompozycyjny viewModel() i LocalViewModelStoreOwner zostały przeniesione do folderu androidx.lifecycle.viewmodel.compose. Aby jej używać, musisz teraz dodać oddzielną zależność androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
  • zezwolić na działanie null w AccessibilityAction, zmienić etykietę działania w AccessibilityAction i CustomAccessibilityAction z CharSequence na String (I0dc82);
  • Aby zapewnić lepsze dopasowanie do konwencji nazewnictwa w formatach ImageBitmap i ImageVector, nazwa ImagePainter została zmieniona na BitmapPainter. (Iba381, b/174565889)
  • Lepsze interfejsy API do testowania podłańcuchów z podłańcuchem jako argumentem (Icbe78)
  • Dodano obiekt Modifier.focusOrder(), który akceptuje obiekt FocusRequester bez określania niestandardowej kolejności fokusu w elemencie lambda. Jest to przydatne, gdy trzeba określić tylko odwołanie, a nie niestandardową kolejność zaznaczenia elementu kompozycyjnego (I4f52a, b/179180978)
  • Komponent KomponentActivity.setContent został przeniesiony do strony androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
  • Metody niszczenia struktury i metody copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
  • Przeniesiono wyskakujące okienko, aby zależało od konkretnej platformy. Nazwa AndroidPopupWłaściwości została zmieniona na PopupWłaściwości, a atrybut isFocusable został przeniesiony do parametru focusable w PopupProperties (Ieeea5)
  • Przeniesiono okno dotyczące konkretnej platformy. Nazwa elementu AndroidDialogWłaściwości została zmieniona na DialogProperty. (I4ef69, b/179138130)
  • Utworzono wewnętrzny LayoutNode (I8a7b1, b/175103944)
  • Constraints.enforce została zastąpiona przez Constraints.constrain. (I8b8ea)
  • Funkcja loadFontResource została wycofana. Użyj interfejsu fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj elementu paintterResource. (I6b809)
  • Ze względu na wydajność semantyka ScrollAxisRange zwraca teraz lambda wartości zmiennoprzecinkowe zamiast bezpośrednich wartości zmiennoprzecinkowych. (If4a35, b/178657186)
  • Dodano semantyka EditableText wskazującą edytowalny tekst wejściowy w polu tekstowym na potrzeby ułatwień dostępu oraz odpowiadające im metody testowe do sprawdzania semantyki (I8e07a).
  • Dodano płaszczyznę WłaścicielLayer/OwnerScope/OwnerSnapshotObserver (I4ffaf, b/175103944)
  • Nazwa funkcji toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290).
  • Nazwa IntBounds została zmieniona na IntRect, a interfejs API został ulepszony. (I1f6ff)
  • Zaktualizowaliśmy interfejs Snapshot API, aby był bardziej zgodny ze wskazówkami dotyczącymi interfejsu API oraz ukrywał wewnętrzne klasy implementacji z publicznego interfejsu API. (Id9e32).
  • Dodano działania semantyczne rozwijania i zwijania. Dodano rozwinięcie i połowę w polu ModalbottomSheetState (Ib5064)
  • Funkcja Modifier.draggesFilter została wycofana. Użyj w zamian zasady Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć metody Modifier.draggable dla jednej osi przeciągnięć (I0ba93, b/175294473)
  • Zmieniono nazwy trybu Ambients, aby dopasować je do nazwy Ambient -> CompositionLocal. Oświetlenie nazywane wcześniej AmbientFoo, teraz CompositionLocals to LocalFoo. (I2d55d)
  • Wycofane pole BaseTextField zostało usunięte. Użyj interfejsu BasicTextField. (I71368)
  • Zaznaczenie zostało przeniesione do podstawy. (I7892b)
  • Podobnie jak w przypadku wcześniejszego usunięcia funkcji state { 0 } z funkcji kompozycyjnej, a teraz promujemy korzystanie z funkcji takiej jak remember { mutableStateOf(0) }, usuniemy właściwość savedInstanceState { 0 }. Użyj zamiast niego metody rememberSaveable { mutableStateOf(0) }. Zapisze ona i przywróci automatycznie, jeśli typ używany w obrębie MutableState może zostać zapisany w pakiecie. Jeśli wcześniej przekazywano niestandardowy obiekt oszczędzania, teraz musisz użyć nowego przeciążenia zasobów saveSaveable, które zawiera parametr stateSaver. Użycie będzie wyglądać tak: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Dodano semantyka haseł na potrzeby ułatwień dostępu (I231ce).
  • Dodano element ProgressBarRangeInfo.Indeterminate, aby oznaczać nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05).
  • Narzędzia emptyContent() i (@Composable () -> Unit).orEmpty() zostały wycofane, ponieważ nie mają już pozytywnego wpływu na wydajność i nie mają już żadnej wartości (I0484d)
  • snapshotFlow i withMutableSnapshot nie są już eksperymentalne (I6a45f)
  • Narzędzie do tworzenia kopii zapasowych można teraz zamknąć. Zamknięte narzędzia do rekompozycji będą kontynuowane do momentu ukończenia komponowania podrzędnych współużytkowań. Nazwa Recomposer.shutDown została zmieniona, aby anulować i kontrastować z zamknięciem. (Ib6d76)
  • Nazwa UiSavedStateRegistry została zmieniona na SaveableStateRegistry, a AmbientUiSavedStateRegistry zmieniła nazwę na AmbientSaveableStateRegistry i została przeniesiona do pakietu androidx.compose.runtime.saveable. (I30224)
  • Nazwa artefaktu androidx:compose:runtime:runtime-saved-instance-state została zmieniona na androidx:compose:runtime:runtime-saveable (I6dcac)
  • Wiele wycofanych od dawna interfejsów API z pakietu UI zostało usuniętych. (I2f2dc)
  • Artefakt compose:runtime-dispatch został wycofany. Element MonotonicFrameClock można teraz znaleźć w komponencie compose:runtime, a AndroidUiDispatcher – w kompozycji:ui. (Ib5c36)
  • Klasy Outline.* nie są już klasami danych (I4879e, b/178001427).
  • Usunięto view.captureToImage() bez zamiennika. (I7fcd2)
  • Wprowadzenie interfejsu ColorMatrix API służącego do modyfikowania wartości RGB treści źródłowych. Zrefaktoryzowany interfejs ColorFilter API jako interfejs pasował do implementacji PathEffect. (Ica1e8).
  • Dodaj parametr układDirection do elementu createOutline kształtu. Pozwala to tworzyć kształty z uwzględnieniem kierunku układu. (I57c20, b/152756983)
  • Funkcja onImeActionPerformed została wycofana. Zamiast niej użyj KeyboardActions (If0bbd, b/179071523)
  • Wprowadziliśmy element kontekstu współużytkowania InfiniteAnimationPolicy, który będzie stosowany w nieskończonych animacjach. Domyślnie nie są zainstalowane żadne zasady z wyjątkiem testowania przy użyciu ComposeTestRule. (I50ec4, b/151940543)
  • Element canDrag został usunięty z interfejsu Modifier.scrollable. (Id66e7, b/175294473)
  • Zmieniliśmy nazwę LayoutCoordinates.parentCoordinates na LayoutCoordinates.parentUkładCoordinates, aby umożliwić dodanie nowej właściwości „parentCoordinates”. Właściwość nadrzędnaCoordinates udostępnia teraz właściwości LayoutCoordintes głównego modyfikatora. Pozwoli to uzyskać pełniejsze przypadki użycia funkcji onSizeChanged() i onGloballyPositioned() (Idfbfd, b/177926591).
  • Metody tapGeFilter, doubleTapGeFilter, longPressGeFilter i PressIndicaitongesFilter zostały wycofane. Użyj zamiast tego funkcji Modifier.clickable lub Modifier.pointerInput z funkcjądetectTapgess. (I6baf9, b/175294473)
  • Parametr unregisterProvider klasy SaveableStateRegistry został usunięty. Zamiast tego funkcja recordProvider() zwraca teraz obiekt SaveableStateRegistry.Entry, którego można użyć do wyrejestrowania (Ic4274, b/178583739).
  • Nazwa parametru saveCacheState() została zmieniona na zapamiętajSaveable() i została przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)
  • Usunięto CoreText i CoreTextField z publicznego interfejsu API.
    • Usunięto wycofane przeciążenie SelectionContainer
    • (I99c19)
  • Testy, w których funkcja Compose jest używana w hierarchiach dodawanych lub usuwanych bezpośrednio w narzędziu WindowManager, są teraz bardziej stabilne. (Ie81ed, b/175765614)
  • Usunięto element Recomposer.current(). [Abstract]ComposeView teraz domyślnie ustawia leniwe tworzenie funkcji Recomposer z zakresem okna, które są wywoływane przez element ViewTreeLifecycleOwner dla okna. Zmiana kompozycji i znaczniki animacji oparte na ramceNanos są wstrzymywane, gdy cykl życia hosta jest zatrzymywany. (I38e11)
  • Funkcja Recomposer.runningRecomposers oferuje teraz globalny przepływ stanu kompozycji (tylko do odczytu) obiektu RecomposerInfo, który umożliwia obserwowanie ciągłego stanu kompozycji w trakcie tego procesu. Wolę ten interfejs API niż Recomposer.current(), który został już wycofany. (If8ebe)
  • Oszczędzanie, listSaver(), mapSaver(), autoSaver zostało przeniesione z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6)
  • W poleceniach EditCommand można używać adnotacji AnnotatedString. Jest to jednak zmiana związana tylko z interfejsem API, a edycja tekstu w wielu stylach nie została jeszcze wdrożona. (I4c3ea)
  • Czas działania i czas trwania zostały usunięte. (Ib9bf4, b/177420019)
  • Interfejs CompositionData.asTree() i powiązane z nim interfejsy API zostały przeniesione do osobnego modułu ui-tooling-data i oznaczone jako eksperymentalne (Ic95b8).
  • Zmieniono nazwę parametrów w atrybutach RounderCornerkształt, CutCornerkształt i CornerBasedCharacter z lewej/prawej na początek/koniec. Umożliwiono obsługę automatycznego odbicia lustrzanego kształtu w kierunku RTL. Na potrzeby sytuacji, w których automatyczne odbicie lustrzane nie jest pożądane, wprowadziliśmy funkcje absolutrounderCornerkształt i obiekty absolutneCornerkształty. (I61040, b/152756983)
  • Interfejs API, na który kierowana jest wtyczka kompilatora Compose, został refaktoryzowany tak, aby używał interfejsu zamiast konkretnej klasy. Interfejs nie używa już parametru typu.

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

  • Usuń nieumyślnie publiczną funkcję StringBuilder.deleteAt (Id6ed9)

Poprawki błędów

  • Obiekty ComposeView umieszczone w hierarchiach widoków danych, które są elementami podrzędnymi innej kompozycji, zawierają teraz kompozycje podrzędne swoich przodków (I92883)
  • Zaktualizowaliśmy interfejs API imageFromResource komponentu compose, aby umożliwiał ponowne korzystanie z pamięci podręcznej z możliwością pobierania zasobów podczas wczytywania obiektów ImageBitmap. (If3627, b/178751994)

Wersja 1.0.0-alfa11

28 stycznia 2021 roku

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

Zmiany w interfejsie API

  • Funkcja WithConstraints została zmieniona na BoxWithConstraints, a następnie przeniesiono ją do Foundation.layout. (I9420b, b/173387208)
  • Interfejs Key.DPadUp został wycofany. Użyj interfejsu Key.DirectionUp. (Iab335, b/177954892)
  • Interfejs właściciela od teraz wewnętrzny. (If8e35)
  • Dodano interfejs API FocusManager.moveFocus(), który umożliwia automatyczne przenoszenie zaznaczenia. (I045cb, b/177681839)
  • Zmienia element PopupPositionProvider tak, aby używał współrzędnych zależnych od okna, a nie globalnych. Zmienia nazwę elementu nadrzędnyGlobalBounds na AnchorBounds i zmienia parametr windowGlobalBounds na wartość windowSize: IntSize (I2994a)
  • Czas trwania i czas działania zostaną zastąpione długimi milisekundami, a ten krok eliminuje zależność danych wejściowych wskaźnika od tych klas. (Ia33b2, b/175142755, b/177420019)
  • Element AmbientSavedStateRegistryOwner został dodany podobnie do dotychczasowych AmbientLifecycleOwner i AmbientViewModelStoreOwner (I9a3e8, b/176756365).
  • Zaktualizowaliśmy interfejs API grafiki wektorowej, aby obsługiwać analizę barwników zastosowanych do źródła grafiki wektorowej. (Id9d53, b/177210509)
  • Do elementu PointerInputChange dodano element narzędziaType, który pozwala rozróżniać urządzenia (Iac787, b/175142755).
  • Nazwa usługi AmbientWindowManager została zmieniona na AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • Wycofaliśmy metody globalnych współrzędnych i wprowadziliśmy nowe metody współrzędnych opartych na oknach. (Iee284)
  • Dodano element Modifier.toolingGraphicsLayer, który dodaje modyfikator warstwy grafiki po włączeniu inspekcji. (I315df)
  • Element FocusRequester.createRefs jest teraz oznaczony jako eksperymentalny, ponieważ może się zmienić. (I2d898, b/177000821)
  • Nazwa elementu SemanticsPropertyLocationr.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. StanOpisRange został zmieniony na progressBarRangeInfo. Nazwa Accessibility ScrollState została zmieniona na ScrollAxisRange. horizontalAccessibility8State ma teraz nazwę leveltal ScrollAxisRange. Zmiana nazwy parametru Accessibility ScrollState na pionowy ScrollAxisRange. (Id3148)
  • Usunięto PointerInputData i zmodyfikowano PointerInputChange, aby dać mu wszystkie pola PointerInputData. Stworzono wewnętrzne PointerInputEvent i PointerInputEventData, ponieważ nie są one używane w publicznym interfejsie API. (Ifff97, b/175142755)
  • Zaktualizowana wartość GraphicsLayerScope pozwala na obsługę konwersji dp na nieprzetworzone piksele. (Ied528, b/176819695)
  • Zaktualizowaliśmy interfejs API macierzy, aby zapewnić zgodność z głównym porządkowaniem wierszy i dostarczać stałe indeksu ułatwiające konwersję między różnymi reprezentacjami macierzy w celu dopasowania logiki konwersji platformy między SkMatrix i Matrix4. (I432e6)
  • Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374)
  • Przenieś elementy String.fintPrecedingBreak i String.fingFollowingBreak do InternalTextApi. (I657c4)
  • Interfejs androidx.compose.ui.util.isSurrogatepair został usunięty z publicznego interfejsu API. (Ia9494)
  • Nazwa TransformedText.transformedText została zmieniona na TransformedText.text
    • TransformedText nie jest już klasą danych (Ie672a)
  • Użytkownik data class został usunięty z tych zajęć:
    • Zawartość wbudowanego tekstu
    • LocaleList (I605c7)
  • Te klasy nie są już klasami danych:
    • Ciąg z adnotacjami
    • Styl akapitu
    • Styl spanu
    • Styl tekstu
    • Grubość czcionki
    • Dekoracje tekstu
    • TextGeometricTransform
    • Indeks tekstu
    • WynikUkład tekstu
    • TekstUkład wejściowy (Iaff99)
  • Zmieniono VisualTransformation na interfejs funkcjonalny (I3bba4).
  • Dodaliśmy typ parametru odniesienia do funkcji (I5e1bd).
  • Dodaj przekształcone granice do węzła InspectorNode (Ice42f)

Poprawki błędów

  • Interfejsy onCommit, onDispose i onActive zostały wycofane i zastąpione przez SideEffect oraz DisposableEffect API (If760e)
  • Zmiany w funkcjach fabrycznych dotyczących czcionek, rodziny czcionek i krojów czcionek

    • dodane funkcje fabryczne rozpoczynające się wielką literą,
    • Wycofane funkcje fabryczne z pierwszymi małymi literami
    • Nowe funkcje fabryczne zwracają FontFamily zamiast podklas,
    • Ukryto konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
    • Nazwa Font.asFontFamily została zmieniona na Font.toFontFamily (I42aa7).
  • Wprowadzono nazwę ComposeContentTestRule, która obejmuje zakres ComposeTestRule i określa nazwę setContent, która została usunięta z ComposeTestRule. Dodano metodę fabryczną createEmptyComposeRule(), która zwraca wartość ComposeTestRule i nie uruchamia dla Ciebie aktywności. Użyj go, gdy chcesz uruchomić swoją aktywność podczas testu, np. używając ActivityScenario.launch (I9d782, b/174472899)

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

  • Do obrazu i ikony dodano parametr Opis treści. Jest używany do dodawania opisu do usług ułatwień dostępu (I2ac4c).

  • Usuń parametr displaySize, którego należy unikać. Zwykle lepiej jest użyć rozmiaru onRoot() lub co najmniej rozmiaru okna. (I62db4)

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

  • Interfejs API emit() i wszystkie przeciążenia zostały wycofane i zmienione na ComposeNode. Interfejsy API są identyczne, ale mają inną nazwę zgodną z konwencjami nazewnictwa stosowanymi w narzędziu I4137b.

  • TextFieldValue akceptuje ciąg AnnotatedString. Jest to jednak zmiana związana tylko z interfejsem API, a edycja tekstu w wielu stylach nie została jeszcze wdrożona.

    • Usunięto element initial z parametrów konstruktora EditBuffer. (I326d5)
  • Metody metody invalidate i enterpriseReference() zostały teraz wycofane. Zastąpiły one obecne RecomposeScope i zapamiętaCompositionReference. (I583a8)

  • Parametr AnnotatedString został zmieniony w taki sposób, aby wykraczał poza kotlin.CharSequence. Dlatego też długość i sekwencja podrzędna są teraz funkcjami instancji, a funkcje rozszerzeń zostały usunięte. (Iaf429)

  • PamiętajObserver zastępuje CompositionLifecycleObserver, a usługa CompositionLifecycleObserver została wycofana.

    RememberObserver zastępuje CompositionLifecycleObserver zmodyfikowaną semantyką i nowymi metodami. Przejście na nowy interfejs API można wprowadzić mechanicznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to i nadal jest zalecane. Jeśli jednak odwołanie zostało zapisane więcej niż raz w kompozycji, funkcja onRemembered jest wywoływana dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. Obiekt onEnter został wywołany wiele razy, jeśli był używany w kompozycjach podrzędnych, takich jak WithConstraints i Scaffold, przez co pojedyncze wywołanie onEnter było niewiarygodne i został usunięty dla RememberObserver.

    RememberObserver dodaje element onAbandoned, który jest wywoływany, jeśli instancja RememberObserver jest zwracana z wywołania zwrotnego przekazanego do remember, ale nie została zapamiętana w stanie kompozycji, dlatego nigdy nie będzie wywoływana onRemembered. Może się tak zdarzyć, gdy wyjątek zakończy kompozycję przed ukończeniem lub zostanie ona odrzucona, ponieważ państwo tworzy kompozycję, która jest już nieaktualna lub z innego powodu nie jest już potrzebna. Jeśli instancja RememberObserver zgodnie z powyższym zaleceniem referencyjnym śledzi zasób zewnętrzny, zarówno onForgotten, jak i onAbandoned oznacza, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte zadania lub zasoby przydzielone w onRemembered, element onAbandoned może zostać zignorowany, ponieważ nie zostanie wywołany po wywołaniu funkcji onRemembered. (I02c36)

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

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

  • Kolumna ScrollableColumn/Row została wycofana. Używanie ScrollableColumn jest mniej wydajne niż użycie LazyColumn w przypadku dużych przewijanych treści, ponieważ za pomocą LazyColumn możemy tylko tworzyć, mierzyć i rysować widoczne elementy. Aby uchronić użytkowników przed nieodpowiednim sposobem, zdecydowaliśmy się wycofać funkcję ScrollableColumn i ScrollableRow i zastosować zamiast nich użycie LazyColumn i LazyRow. Użytkownicy mogą zdecydować, że nie potrzebują leniwego działania, i używać modyfikatorów bezpośrednio w ten sposób: Column(Modifier.vertical Scroll(remember ScrollState())) (Ib976b, b/170468083).

  • Nowa metoda fabryczna items(count: Int) dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) i itemsIndexed(items: List) to teraz funkcje rozszerzeń, więc jeśli ich użyjesz, musisz je zaimportować ręcznie. Nowe przeciążenia rozszerzeń dla tablic: items(items: Array) i itemsIndexed(Array) (I803fc, b/175562574)

  • Użyj ImeAction.None zamiast ImeAction.NoAction

    • Użyj ImeAction.Default zamiast ImeAction.Unspecified (Ie1bcc)
  • Wykorzystywanie narzędzia TestCoroutineDispatcher do testowania (I532b6)

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

  • Przejście na podstawie TransitionDefinition zostało wycofane (I0ac57)

  • Usunięto element TextUnitType.Inherit. Użyj interfejsu TextUnitType.Unspecified. (I9ff64)

Wersja 1.0.0-alfa10

13 stycznia 2021 r.

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

Znacząca zmiana

  • Zmiana struktury wewnętrznego interfejsu API kompilatora umożliwia grupowanie zmian w węzłach wygenerowanych w wyniku kompozycji na etapie stosowania zmian po zakończeniu wszystkich funkcji @Composable.

    Jest to zmiana powodująca przerwy w działaniu, która może mieć wpływ na kod aplikacji, ponieważ węzły nie są już dostępne w wewnętrznych i eksperymentalnych interfejsach API do czasu zastosowania zmian. Zwykle można obejść ten problem, ujmując kod w takie zależności w kompozycji SideEffect w celu odroczenia wykonania kodu do momentu utworzenia i zainicjowania węzłów. (I018da)

Zmiany w interfejsie API

  • Dodano funkcję Modifier.focusOrder(), której można używać do określania niestandardowej kolejności przechodzenia pomiędzy elementami (I90cf5, b/175899543, b/170155556, b/170155429).
  • Usunięto wycofane użycie funkcji powerFocusObserver w trybie onFocusChanged lub onFocusEvent (I3ecb9, b/175156387).
  • Zmiany interfejsu EditOperations API
    • Nazwa operacji Editoperation została zmieniona na EditCommand
    • Dodano sufiks polecenia do konkretnych implementacji EditOperation.
    • Polecenia EditCommand nie są już klasami danych
    • Nazwa funkcji EditOperation.process została zmieniona na applyTo
    • Zmieniono nazwę elementu FeedEventListener na informacje o funkcji InternalEventCallback
    • (I0a366)
  • Usunięto nieużywane PxSquared, PxCubed, PxInverse. Zmieniono atrybut size.center() na właściwość. (I973f7)
  • Moduł ui-test będzie teraz mógł konfigurować tworzenie obiektów Rekompozytorów dla testowanych interfejsów (Ibebd8)
  • Zmodyfikowano prędkość, by uzyskać części składowe i działania matematyczne. (Ib0447)
  • Zmieniono nazwę @ExperimentalTesting na @ExperimentalTestApi, aby zachować spójność z podobnymi eksperymentalnymi adnotacjami interfejsu API (Ia4502, b/171464963)
  • Nazwa funkcji Color.useOrElse() została zmieniona na Color.takeOrElse() (Ifdcf5)
  • Usunięto nieużywane klasy DpInverse, DpSquared i DpCubed. (I4d62b)
  • Opcja Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
  • Dodaj wywołanie zwrotne, które będzie powiadamiać właściciela o zmianie granic węzła układu. (I72fd1)
  • Dodano atrybut isokreślony, nieokreślony i nieokreślony, a także operator orElse dla klas wbudowanych z nieokreśloną stałą. (I93f7b, b/174310811)
  • Rozwiń interfejsy [Abstract]ComposeView API, aby umożliwić recykling widoków opartych na Compose, tak aby ich kompozycję można było odtworzyć później. Dodaj interfejsy API do instalowania i wykrywania ograniczonych do okna obiektów Recomposers i CompositionReferences w celu tworzenia kompozycji podrzędnych.

    Dodano element ViewCompositionStrategy w strategii usuwania kompozycji w obiektach [Abstract]ComposeViews. Działanie domyślne to utylizacja po odłączeniu okna. (I860ab)

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

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

  • Dodaj przełącznik do podstawowych plików Strings.kt (I4a5b7, b/172366489)

  • Przeniesiono klasę natywny do modułu i stan wewnętrzna. Zaktualizowano przypadki użycia natywnej klasy w implementacjach równa się, tak aby zamiast niej używała „is MyClass”. (I4f734)

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

  • Wprowadzono funkcję SelectionRegistrar.notifySelectableChange, aby powiadamiać o aktualizacjach z możliwością wyboru w menedżerze wyboru. (I6ff30, b/173215242)

  • Wprowadzono właściwość Outline.bounds w celu uzyskiwania prostokątnego ograniczenia na potrzeby różnych implementacji konspektów. (I16e74, b/175093504)

  • Wycofano narzędzie TestUiDispatcher. Zamiast niej użyj Dispatchers.Main (Ic171f, b/175385255)

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

  • Zmiany interfejsu VisualTransformation API

    • Zmieniono nazwę OffsetMap na OffsetMapping
    • Zmieniono nazwę OffsetMapping.identityOffsetMap na OffsetMapping.Identity
    • PasswordTransformation nie jest już klasą danych
    • Przeniesiono OffsetMapping do własnego pliku
    • (I0bdf3)
  • Zmieniono nazwę pozycji na DpOffset i usunięto funkcję getDISTANCE() (Ib2dfd)

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

Poprawki błędów

  • Narzędzie Recomposer ujawnia teraz przepływ w jego bieżącym stanie, umożliwiając monitorowanie jego aktywności i aktywności powiązanych efektów. (Ifb2b9)
  • Dostęp do natywnego zdarzenia KeyEvent można teraz uzyskać za pomocą polecenia keyEvent.nativeKeyEvent (I87c57, b/173086397).
  • Pole animate() jest teraz zastąpione wartością animateAsState(), która zwraca wartość State<T> zamiast T. Zwiększa to skuteczność, ponieważ zakres unieważniania można zawęzić do miejsca, w którym jest odczytywana wartość stanu. (Ib179e)
  • Dodaj interfejs Semantics role API i dodaj Role jako parametr do możliwego do kliknięcia, wyboru i przełączania SemanticsModifier. Zmieniliśmy mechanizm Modifier.progressSemantics, aby mógł on również używać suwaka. (I216cd)
  • Nowy interfejs API Animatable oparty na współczynnikach, który zapewnia wzajemne wykluczanie się animacji.
    • Nowa specyfikacja DecayAnimationSpec do obsługi wielowymiarowych animacji rozkładu
    • (I820f2, b/168014930)

Wersja 1.0.0-alfa09

16 grudnia 2020 roku

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

Zmiany w interfejsie API

  • Wycofana funkcja KeyEvent.Alt została usunięta. Użyj interfejsu KeyEvent.isAltPressed. (Idd695)
  • Modifier.keyInputFilter i Modifier.previewKeyInputFilter zostały wycofane i używają zamiast nich elementów Modifier.onKeyEvent i Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
  • Interfejs Modifier.focusObserver został wycofany. Użyj interfejsu Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
  • W przypadku interfejsów API do wprowadzania danych zawieszania wskaźnika zmieniono nazwę HandlePointerInputScope na AwaitPointerEventScope, a handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)
  • Interfejs Autofill API to teraz eksperymentalny, który wymaga akceptacji (I0a1ec)
  • Dodanie deklaracji demontażu struktury w celu utworzenia instancji FocuSRequester (I35d84, b/174817008)
  • Nazwa opcji „AccessibilityLabel” została zmieniona na contentDescription. Nazwa „accessibilityValue” to „StateDescription”. (I250f2)
  • Zdarzenia niestandardowe zostały usunięte z interfejsu API zawieszania danych wejściowych wskaźnika (Ia54d5, b/175142755)
  • Wprowadziliśmy kilka nowych funkcji w interfejsie SelectionRegistrar, a także nazwę onPositionChange. (Ifbaf7)
  • Więcej członków Układu, oznaczonych jako wewnętrzne (I443c6).
  • Układ LayoutInfo został wprowadzony do użytku w narzędziach i testowaniu (I9b190).
  • AndroidOwner – wewnętrzny (Ibcad0, b/170296980)
  • Usunięto adnotację ExperimentalPointerInput (Ia7a24)
  • Dodano system zagnieżdżonego przewijania. Więcej informacji znajdziesz w artykule Modifier.nested Scroll (I36e15, b/162408885).
  • Element subcomposeInto(UkładNode) został zmieniony na wewnętrzny (Id724a)
  • Interfejs Applier został zmieniony tak, aby uprościć tworzenie drzew od dołu, a nie z góry.

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

    Dodano nową metodę: insertBottomUp().

    W zależności od tego, który wariant ma lepszą skuteczność, aplikacja wstawia węzły do edytowanego drzewa za pomocą metody insertTopDown() lub insertBottomUp().

    W przypadku niektórych drzew, np. LayoutNode i View, konstruowanie od dołu jest znacznie skuteczniejsze niż w przypadku drzew rosnących. Przed tą zmianą wdrożyliśmy stos wstawek w celu wdrożenia modelu oddolnego, który trzeba kopiować do każdego wnioskodawcy, który w celu zwiększenia skuteczności wymagał tworzenia oddolnego poziomu. W związku z tą zmianą właściwość Applier zastępuje właściwość insertBottomUp(), aby utworzyć strukturę od dołu do góry, a element insertTopDown() – od góry. (Icbdc2)

  • Dodano właściwości closeOnBackPress i closeOnClickOutside do klasy AndroidDialogDialog. Pozwalają one na skonfigurowanie czasu wywoływanego w oknie lambda parametru onDismissRequest. (If5e17)

  • Dodano interfejs API Painter do obsługi nieprzezroczystego wczytywania obiektów Painter z formatów zasobów zrastrowanych (np. PNG) lub VectorDrawable. Konsumenci nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter dla obiektów kompozycyjnych obrazu i modyfikatorów malarskich. (I2c703, b/173818471)

  • Dodano modyfikację Modifier.clearAndSetSemantics, aby wyczyścić semantykę elementów podrzędnych i ustawić nowe. (I277ca)

  • Element ContentDrawScope został przeniesiony do modułu ui-graficznego w celu zastosowania DrawScope. (Iee043, b/173832789)

  • Wprowadzenie graficznie interfejsu PathEffects do obsługi rysowanych kształtów o różnych wzorach. Wycofaliśmy używanie metody NativePathEffect na rzecz oczekiwania/rzeczywistej implementacji parametru PathEffect. (I5e976, b/171072166)

  • Do interfejsu Compose dodano interfejsy IdlingResource, które są wariantem nieaktywnych zasobów Espresso w wersji Compose. Można je rejestrować i wyrejestrowywać za pomocą reguły ComposeTestRule (I433f3).

  • Usunięto globalną (nierejestrowaną) rejestrację zasobu ComposeIdlingResource i globalną (nie) rejestrację zegarów w komponencie ComposeIdlingResource (I32660)

Poprawki błędów

  • Lambda w modyfikatorach przesunięcia zwraca teraz wartość IntOffset, a nie liczbę zmiennoprzecinkową. (Ic9ee5, b/174137212, b/174146755)
  • Usunięto SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Są one teraz dostępne tylko w module tworzenia wiadomości.

    Funkcje CompositionData i CompositionGroup zostały dodane jako zamienniki interfejsu API narzędzi do interfejsu i wykorzystywane do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie powinny być używane poza interfejsem API ui-tooling, ponieważ zawierają nieprzetworzone informacje interpretowane przez ten interfejs API (I31a9c).

  • Zrefaktoryzowano ShaderBrush, aby leniwie utworzyć instancję cieniowania, gdy dostępne są informacje o rozmiarze środowiska rysowania. Jest to przydatne do definiowania gradientów, które zajmują pełne granice obiektu kompozycyjnego w momencie kompozycji, bez konieczności implementowania niestandardowych implementacji DrawModifier.

    Wycofano interfejsy API konstruktora funkcji gradientu zamiast metod fabrycznych w obiekcie Gradient. (I511fc, b/173066799)

  • Wycofaliśmy LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego użyj LazyColumn i LazyRow (I5b48c)

  • Wycofany plik BuildCompat.isAtLeastR (Idb37e)

  • Dodano funkcję fabryki buildAnnotatedString, by utworzyć obiekt AnnotatedString. Wycofano funkcję kompilacji annotatedString. (Idfe0b).

  • Usunęliśmy metody rozszerzeń w liczbach zmiennoprzecinkowych i podwójnych, aby przekonwertować wartości na radiany. Przeniesiono 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-alfa08

Grudzień 2, 2020

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

Zmiany w interfejsie API

  • Dodaj semantykę odrzucenie działania (I2b706)
  • Interfejsy DrawModifier API zostały przeniesione z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifier przypisane.kt, aby uwzględnić metody typealiases/helper w celu ułatwienia migracji z wycofanych interfejsów API do obecnych. (Id6044, b/173834241)
  • Zmieniliśmy nazwę Modifier.drawLayer na Modifier.graphicsLayer. Zgodnie z opiniami dotyczącymi interfejsu API zaktualizowaliśmy też powiązane klasy do GraphicsLayer. (I0bd29, b/173834241)
  • Dodano nowe metody placeable.placeWithLayer() i placeable.placeRelativeWithLayer(), które umożliwiają stosowanie niestandardowych układów i modyfikatorów układu do umieszczania elementu podrzędnego przez wprowadzenie warstwy graficznej do rysowania. Po wykonaniu tych czynności możemy w pierwszej kolejności zoptymalizować przerysowywanie, więc gdy trzeba będzie przenieść dziecko, nie trzeba będzie ponownie rysować jego zawartości (Ibd8f6, b/170296989, b/171493718, b/173030831).
  • Element <T> został usunięty z deklaracji układu podrzędnego. Możesz go teraz użyć bez określania typu. (IB60c8)
  • W ramach wygody dodaliśmy interfejsy API Modifier.scale/rotate.
    • Nazwa Modifier.drawOpacity została zmieniona na Modifier.alpha
    • Zmieniono nazwę Modifier.drawShadow na Modifier.shadow (I264ca, b/173208140)
  • Wprowadzono wartość niedopuszczającą wartości null w polach czasu działania i pozycji PointerInputData. (Id468a)
  • MaterialTheme ustawia teraz poprawne kolory uchwytów wyboru i tła wyboru. Aplikacje inne niż Material mogą ręcznie wybierać kolory używane do zaznaczania, używając AmbientTextSelectionColors. (I1e6f4, b/139320372, b/139320907)
  • Dodano obiekt WindowManager.isWindowFocused, aby sprawdzać, czy okno hosta jest aktywne, oraz obiekt WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
  • Zaktualizowano interfejs TransformOrigin API, tak aby jego składnia zmieniała się tak, aby zwracała wartości pivotFractionX oraz pivotFractionY jako component1 i component2 (If43c4, b/173586560)
  • Dodano sprawdzanie lintowania pod kątem nazewnictwa i pozycji parametrów kompozycyjnych lambda w celu sprawdzenia zgodności ze wskazówkami dotyczącymi tworzenia wiadomości. Przeprowadzono też migrację niektórych interfejsów API, używając children jako nazwy końcowej lambda do content, zgodnie ze sprawdzaniem lintowania i wskazówkami. (Iec48e).
  • Dodano interfejs API sprawdzający, czy podczas wysyłania zdarzenia kluczowego zostały naciśnięte klawisze modyfikujące Alt, Ctrl, Meta lub Shift. (I50ed9)
  • Dodano nowe przeciążenie typu Modifier.drawLayer(). W nowym elemencie GraphicsLayerScope jest używany blok lambda umożliwiający zdefiniowanie parametrów warstwy w taki sposób, aby możliwe było pomijanie rekomponowania i przekazywania w przypadku zmiany stanu. DrawLayerModifier przygotowuje się teraz do przeniesienia swojej logiki do metody Placeable.placeWithLayer() obiektu LayoutModifier (I15e9f, b/173030831)
  • Wycofano elementy otoczenia, których sufiks to Ambient, i zastąpiono je nowymi usługami z przedrostkiem Ambient zgodnie z innymi wytycznymi dotyczącymi interfejsu Ambients i Compose. (I33440)
  • Przeniesiono androidx.compose.ui.text.Typeface do androidx.compose.ui.text.font.Typeface (Ic2b81)
  • Nazwa argumentu semantyka scalAllDescendants została zmieniona na mergeDescendants. (Ib6250)
  • Nowy wzorzec do wykrywania gestów przeciągania, zawieszający interfejs API do wprowadzania danych wskaźnika, w tym blokowanie orientacji. (Icef25)
  • Nazwa zasobu VectorAsset została zmieniona na ImageVector. Zgodnie z wytycznymi dotyczącymi interfejsu API zasób VectorAsset został przeniesiony na Builder i jest teraz klasą wewnętrzną klasy ImageVector. Dodano alias typu VectorAssetBuilder, aby połączyć z ImageVector.Builder. (Icfdc8)
  • Zmieniliśmy nazwę obiektu ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
  • Dodaj parametr zIndex do funkcji Place() klasy PlacementScope, dzięki czemu Modifier.zIndex() będzie teraz działać jako LayoutModifier, a każdy układ niestandardowy będzie mógł ustawiać elementy zIndex dla elementów podrzędnych w bloku miejsc docelowych (I711f7, b/171493718).
  • Właściwości semantyki podstawowych zostały przeniesione do UI (I6f05c)
  • Wycofaj właściwość „place(Offset)” i „placeRelative” (odsunięcie). Zamiast tego użyj przeciążeń z przesunięciami całkowitymi (I4c5e7)
  • Poprzednio wycofane interfejsy API zostały usunięte: usunięto interfejs Modifier.onPositioned. Użyj interfejsu Modifier.onGloballyPositioned. Usunięto modyfikator.onDraw, użyj modyfikatora Modifier.onDrawBehind. Usunięto modyfikator.plus. Użyj elementu Modifier.then. Usunięto ustawienie Kolor.Nie określono. Użyj wartości Kolor.Nieokreślony. Klasa PxBounds została usunięta. Zamiast niej użyj Rect. (Ie9d02, b/172562222)
  • Interfejs wyrównania został zaktualizowany i działa już prawidłowo. (I46a07, b/172311734)
  • Czujnik gestów dotykania, 2-krotnego dotykania, przytrzymywania i naciśnięcia, został dodany jako wskaźnik zawieszenia. Dodaliśmy też kilka narzędzi, które ułatwiają programistom pisanie własnych wzorców do wykrywania gestów. (I00807)
  • Zmieniono nazwę użytkownika id na layoutId dla konta LayoutIdParentData. Zmieniono nazwę etykiety Measurable.id na Measurable.layoutId. (Iadbcb, b/172449643)
  • Nowy wykrywacz gestów wielodotykowych, w tym elementy pomocnicze do wykrywania obrotu, powiększenia i przesuwania. (IC459d)
  • Wprowadzono interfejsy API SweepGradientShader i SweepGradientBrush. (Ia22c1)
  • Kontrola czasu w testach (TestAnimationClock i jej zastosowania) jest obecnie w fazie eksperymentalnej (I6ef86, b/171378521)
  • Dodaj interfejsy API przewijania oparte na współużytkowaniu:

    Dodaje LazyListState.snapToItem i LazyListState.smooth ScrollBy, a także interfejsy API niższego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania, które pozwalają kontrolować przewijanie, które czeka na zakończenie przewijania, zanim nastąpi jego zwrócenie. (Ie5642)

  • Trzeba dodać funkcję Modifier.focusable. Służy do dodawania do komponentu zachowań, które można zaznaczyć, z poprawną semantyką i ułatwieniami dostępu. (I41eb9, b/152525426, b/162865824)

  • Udostępnij domyślne implementacje i właściwości metod i właściwości w AnimationClockTestRule, które można przekazać do reguły clock (I7ea3d, b/173399709).

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

  • Obiekt TextLayoutResult.getLinevisibleEnd został wycofany. Zamiast elementu TextLayoutResult.getLineEnd używany jest teraz nowy parametr „visibleEnd”. (I73282)

  • Zaktualizowano interfejs TextFieldValue API

    • przyznano TextFieldValue.composition tylko do odczytu
    • usunięto wyjątek dla nieprawidłowego zakresu wyboru (I4a675, b/172239032)
  • Obsługuj adnotacje TtsAnnotation dla mechanizmu zamiany tekstu na mowę. (I54cc6)

  • Nowe interfejsy API do uruchamiania animacji w współprogramach (Ied662)

Poprawki błędów

  • Nazwa parametru wyrównywania pola Box została zmieniona na contentalignment. (I2c957)
  • Zmieniono nazwę modyfikatorów shiftPx na przesunięcie. Przyjmują teraz parametry lambda zamiast stanu. (Ic3021, b/173594846)
  • Dodano parametr resetInput do TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • Dodaliśmy sprawdzanie lintków w parametrach modyfikatora w funkcjach kompozycyjnych. Ta kontrola lintowania sprawdza nazwę, typ zwracanej wartości, wartość domyślną i kolejność parametru pod kątem spójności ze wskazówkami dotyczącymi tworzenia. (If493b)
  • Tymczasowo dodana opcja pozwalająca na uruchamianie funkcji TestAnimationClock przez parametr MonotonicFrameClock (I1403b, b/173402197).
  • Dodano opakowanie kroju czcionki Androida. Krój czcionki Androida można wczytać za pomocą funkcji typeface, np. typeface(Typeface.DEFAULT). Zmieniono też nazwę typefaceFromFontFamily() na typeface() (I52ab7)
  • Dodaliśmy sprawdzanie lintowania, aby sprawdzić, czy funkcje fabryki modyfikatorów są zdefiniowane jako rozszerzenia w Modyfikatorze, dzięki czemu można je płynnie łączyć. (I07981)
  • Usuń stary moduł testu interfejsu użytkownika i jego wycinki (I3a7cb)
  • Narzędzie Recomposer nie akceptuje już elementu EmbeddingContext. Wymagane zależności harmonogramu są pobierane z efektuCoroutineContext. Interfejs FrameManager został wycofany. Integracje z platformami powinny zainicjować własną obsługę zrzutów globalnych. (I02369)
  • Przekaż informacje o stylu do węzła ułatwień dostępu. (If5e8d)
  • Nazwa elementu TextUnit.Inherit została zmieniona na TextUnit.Nie określono w celu zachowania spójności z innymi jednostkami. (Ifce19)

Interfejs tworzenia wiadomości w wersji 1.0.0-alfa07

11 listopada 2020 roku

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

Zmiany w interfejsie API

  • Wprowadzono klasę wbudowanej ScaleFactor do reprezentowania współczynników skali dla osi poziomej i pionowej niezależnie od siebie w celu obsługi niejednolitego skalowania.
    • Dodano metodę computeScaleFactor do ContentScale.
    • Dodano element ContentScale.FillBounds, aby umożliwić skalowanie nierównomierne w celu rozciągania granic źródła do pełnego obszaru docelowego.
    • Dodaliśmy metody operatora do obliczania parametrów ScaleFactor z użyciem parametrów Rozmiar.
    • (Ic96a6, b/172291582)
  • Do tworzenia wyrównania dodano fabryki BiasWyrównajment i BiasBezwzględne wyrównanie. (Iac836, b/169406772)
  • Deweloper powinien mieć możliwość wyraźnego usunięcia zaznaczenia. (I90372)
  • Naprawiono błąd, który powodował, że wysokość nie była rysowana w widokach w widoku tworzenia wiadomości. (If7782)
  • Utworzono interfejs onDrawBehind API w ContentDrawScope, aby dopasować konwencję nazewnictwa do interfejsu Modifier.drawBehind. (I4fc3a, b/171955269)
  • Dodano obsługę odległości kamery w celu uzupełnienia przekształceń 3D obrótX/obrotuY w interfejsach API warstwy. (I40213, b/171492100)
  • Dodano obiekt SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Usunięto adnotację ExperimentalSubcomposeLayoutApi. SubcomposeLayout można teraz używać bez dodawania @OptIn (I708ad)
  • FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7)
  • Usunęliśmy przezroczystość z modyfikatora DrukShadow(), ponieważ była myląca. (I82c62, b/171624638)
  • Parametr MeasureResult został przeniesiony poza 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 wycofane ustawienie FocusState2 (I686cb, b/168686446)
  • ZIndexModifier jest teraz wewnętrzny (I1808b, b/171493718)
  • Zaktualizowaliśmy zwracany typ metody lerp w parametrach rozmiaru, aby zwracać wartość niepustą „Rozmiar” i uniknąć niepotrzebnego pakowania elementów. (Ib0044)
  • Dodano TestMonotonicFrameClock do testowania kodu, który korzysta z funkcji MonotonicFrameClock w komponencie do oczekiwania na zdarzenia ramki kompozycji przy użyciu metody runlockTest z narzędzia kotlinx-coroutines-test (I4402f).
  • Usunięto gesScope.localToGlobal (I15299, b/171462785)
  • Dodano wyszukiwarkę onAllNodesWithSubstring (I81dd7, b/171462889)
  • Moduł androidx.ui.test został wycofany. Przejdź na androidx.compose.ui.test i androidx.compose.ui.test.junit4 (I452e8)

Poprawki błędów

  • CapToBitmap przeniesiono do recordToImage. (I86385)
  • Fundacja.Text została wycofana i zastąpiona przez materiał.Text. Podstawowy, niezrozumiały interfejs API tekstu, który nie przetwarza wartości z motywu, znajdziesz na stronie androidx.compose.foundation.PodstawyText. (If64cb)
  • Zaktualizuj pola tekstowe, aby akceptowały KeyboardOptions (Ida7f3)
  • Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
  • Przeniesiono klawisze KeyboardType i ImeAction do opcji KeyboardOptions (I910ce).
  • Jako alternatywę do obsługi dźwięków otoczenia dodano system ProvideDefault. Można go użyć do określenia wartości otoczenia, które będą ustawiane tylko wtedy, gdy nie podano jeszcze wartości otoczenia. (Id6635, b/171024925)
  • Pole BaseTextField zostało wycofane. Użyj interfejsu BasicTextField. (I896eb)
  • Wprowadzenie modułu ui-test-junit4 (Ib91f8)
  • Zmieniono nazwę etykiety relativePaddingFrom na paddingFrom. Dodano modyfikator paddingFromBaseline, aby ułatwić określanie odległości od granic układu do punktów odniesienia tekstu. (I0440a, b/170633813)
  • Nazwa LaunchedTask została zmieniona na LaunchedEffect, aby zapewnić spójność z interfejsami SideEffect i DisposableEffect API. Parametr LaunchedEffect bez parametrów podmiotu jest niedozwolony, by zachęcić użytkowników do stosowania sprawdzonych metod. (Ifd3d4)
  • Wprowadzono zasoby kompozycyjne, które są skomponowane ponownie po aktualizacji konfiguracji. (I6387c, b/167352819)
  • Aplikacja Recomposer wymaga teraz elementu CoroutineContext na etapie budowy (Ic4610)
  • Zsumuj wartości zIndex po zastosowaniu wielu wartości Modifier.zIndex(). Wcześniej pierwsza z nich okazała się sukcesem. (Ic514c, b/170623936)
  • Zmiany w wewnętrznej implementacji SlotTable, które nie powinny mieć wpływu na publiczny interfejs API. (If9828)
  • Dodano opcję automatycznej korekty IME klawiatury (I57b8d)
  • Plik androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb)
  • Usunięto KlawiaturaOptions.toImeOptions z publicznego interfejsu API. (Ic2e45).

Wkład z zewnątrz

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

Wersja 1.0.0-alfa06

28 października 2020 r.

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

Zmiany w interfejsie API

  • Funkcja ponownego kompozytora to teraz element CompositionReference i prawidłowy element nadrzędny kompozycji. Funkcja jednoznacznego rekomponowania jest teraz wymagana w mniejszej liczbie miejsc. (I4036f)
  • Zrezygnuj z funkcji VectorPainter na rzecz PamiętajVectorPainter, aby móc lepiej wskazać, że kompozycyjny interfejs API wykorzystuje wewnętrznie „pamięć” do przechowywania danych w komponentach. (Ifda43)
  • Zaktualizowaliśmy interfejs API Modifier.drawWithCache, aby udostępnić ContentDrawScope jako zakres odbiorcy zamiast DrawScope w celu zapewnienia implementacji możliwości zmiany kolejności poleceń rysunkowych. Jest to przydatne w przypadkach mieszania/barwiania, w których piksele treści muszą zostać wyrenderowane najpierw, aby odpowiedni algorytm trybu mieszania był stosowany prawidłowo. (Ie7ec8)
  • Przenieś kontener SimpleContainer do PopupTestUtils.kt (I78c57)
  • ConsumedData nie jest już klasą danych. Szczegółowe informacje znajdziesz na stronie https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • Ustal pozycję uchwytu Rtl. (I6e1e0).
  • Zrefaktoryzowano DrawScope i ContentDrawScope, były interfejsami zamiast klas abstrakcyjnych.
    • Utworzenie implementacji CanvasDrawScope dla DrawScope
    • Zrefaktoryzowano implementacje DrawScope, aby zamiast nich używać CanvasScope
    • Utworzono element DrawContext, który pozwala opakować zależności dla DrawScope
    • Usunięto wycofane metody w DrawScope (I56f5e)
  • Zmiana niezbędna: usunięto wartość zwracaną z metody PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o konsumpcji. Zamiast zwracać dane z metody PointerInputFilter.onPointerEvent(...), możesz teraz po prostu modyfikować dane wykorzystania przekazywane przez zdarzenia PointerEvents. (I6acd0).
  • Utworzono interfejsy MeasureScope i IntrinsicMeasureScope. (I1a087, b/170461665)
  • Funkcja scalania dla OutlineLine została ukryta. (I9da1a, b/170612900, b/170611568)
  • Dodano możliwość określania informacji inspektora w modyfikatorze tworzenia (Idee08, b/163494569)
  • Do menu wyboru dodano opcję SelectAll (Ief02b).
  • Zaktualizowano DrawTransform.rotate tak, by przyjmowała domyślny parametr przestawny „center” zgodnie z dokumentacją.
    • Zaktualizowano aplikację DrawScope.rotateRad tak, aby używała przesunięcia dla punktu przestawnego, aby pasowała do innych metod przekształcania.
    • Wycofano przeciążenie DrawScope.rotateRad, które wychwytywało wartości zmiennoprzecinkowe dla współrzędnych x i y w tabeli przestawnej.
    • (Iffcbb, b/170434992)

Poprawki błędów

  • Sprawdzanie lint interfejsu API pod kątem brakującego GetterMatchingBuilder jest włączone w Androidzie (I4bbea, b/138602561)
  • Dodaj test. (I6b8ae)
  • Włącz przejścia w elemencie ComposeTestRule. Usuń tę opcję, aby włączyć migający kursor w elemencie ComposeTestRule. (If0de3)
  • Dodano opcję IME do wprowadzania wielkich liter z klawiatury (I8ac38).
  • Dodano opcję klawiatury jednowierszowej do CoreTextField (I72e6d).
  • Przenieś kontener SimpleContainer do PopupTestUtils.kt (I65c3e)
  • Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlić jego użycie w komponencie. Zaktualizowana dokumentacja potwierdza, że ujemne promienie narożników są zaciśnięte do zera. (I130c7, b/168762961)
  • Poprawiono współdziałanie z Androidem przez dalsze wysyłanie zdarzeń MotionEvents do podrzędnych widoków Androida, które zwracają wartość false dla onTouchEvent w przypadku wszystkich działań oprócz ACTION_DOWN (I94c5a, b/170320973).
  • Aplikacja Box została przekształcona w funkcję wbudowaną. (Ibce0c, b/155056091)

Wkład z zewnątrz

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

Wersja 1.0.0-alfa05

14 października 2020 r.

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

Zmiany w interfejsie API

  • Dodaj DSL do określania informacji o inspektorze (Ic9a22)
  • Przenieś element LongPress do tekstu. (Iff2bc)
  • Eksperymentalny modyfikator zawieszenia danych wejściowych Modifier.pointerInput (Ia77d2)
  • Dodano działania ułatwień dostępu Kopiuj/wklej/wycinaj (I6db4f).
  • Usunięto publiczny konstruktor AndroidOwner (Iacaef)
  • Wyskakujące okienka i okna dialogowe dziedziczą teraz ustawienie FLAG_SECURE z okna nadrzędnego. Dodaliśmy też opcję jawnej konfiguracji (I64966, b/143778148, b/143778149).
  • Dane o konsumpcji można teraz zmieniać. Wywołania funkcji rozszerzeń, które wykorzystują dane, nie zwracają już nowej wartości PointerInputChange, ale zamiast tego modyfikują podaną wartość PointerInputChange.

    To pierwszy krok w dwuetapowym procesie, dzięki któremu można zmienić dane zdarzenia PointerEvent w taki sposób, aby kod użytkownika nie mógł edytować innych danych wskaźnika. Drugim krokiem będzie usunięcie zwracanego typu List<PointerInputChange> z tabeli PointerInputFilter.onPointerEvent(...). (Id067e).

  • Wyłącz zaznaczanie w tekście oraz prezentację. (Ie7e97).

  • Made onGloballyPositioned – wstawiona funkcja (I15830)

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

  • Dodano właściwość hasPendingMeasureOrUkład do właściwości właściciela, informując o tym, czy właściciel oczekuje na pracę z układem. (I3d9f8, b/169038599)

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

  • Czcionka PointerInputFilter.onPointerInput(...) została usunięta. Zamiast niej należy użyć parametru PointerInputFilter.onPointerEvent(...). (I6f04a)

  • Zmiany rozmiaru

    • Usunięto size.getFlipped
    • Usunięto size.rem
    • Usunięto rozmiar.truncDiv (Ief44d, b/169790720)
  • W ramach standaryzacji wartości wskaźnika dla klas wbudowanych zmień nazwę Kolor.Unset to Color.Nieokreślony, aby zachować spójność z innymi klasami w tekście (I97611, b/169797763).

  • Dodaliśmy funkcję TextOverflow.None. Gdy wartość atrybutu nadmiarowego ma wartość Brak, tekst nie będzie już obsługiwać tego rozmiaru, a jego rzeczywisty rozmiar zostanie zgłoszony do Układu Node. (I175c9, b/158830170)

  • Parametr zakresu w obrębie AnnotatedString.Builder.addStringAnnotation został zmieniony na tag w celu zapewnienia spójności interfejsu API. (I7c8cb)

Poprawki błędów

  • Wydajność przewijania leniwych kolumn/wiersza poprawia się dzięki zmniejszeniu ilości pracy w kompozycji podrzędnej przy każdym przewijaniu. Dodano nową metodę hasInvalidations() klasy Composition. Metoda hasPendingChanges() z systemu Recomposer została zmieniona na hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371).
  • Zaktualizowano wartość Float.NaN zamiast Float.POSITIVE_INFINITY, aby określić nieokreślone parametry. Zaktualizowano implementacje malarskie, aby porównywały je z rozmiarami nieokreślonymi i nieskończonymi. (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)
  • Dodanie „odcinków” klas Androida na starszych platformach, aby uniknąć korzystania z refleksji w miarę możliwości. (Ia1790)
  • Naprawiony błąd: jeśli wyświetlana klawiatura programowa powodowała tłumaczenie aplikacji, współrzędne wprowadzania wskaźnika byłyby nieprawidłowe. (Ic4cec, b/163077821)

Wersja 1.0.0-alfa04

1 października 2020 roku

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

Zmiany w interfejsie API

  • Dodano obiekt WłaścicielScope, który umożliwia zbieranie zakresów obserwacji i rysowanie, gdy przestaną być prawidłowe. (Ic4cf8)
  • Dodano funkcję OnRemeasuredModifier i onSizeChanged(), aby otrzymywać wywołanie zwrotne po ponownym zmierzeniu układu treści lub zmianie rozmiaru. (I657cf, b/154108792)
  • Dodaj semantykę długiego kliknięcia (I6281b, b/156468846)
  • Ustawienie FocusManagera jako prywatnego. (I7872f)
  • Zaktualizowaliśmy implementację, aby utworzyć dedykowaną implementację DrawCacheModifier, zamiast dodawać opcjonalne właściwości w DrawModifier.

    Zaktualizowana dokumentacja różnych metod (Ibd166)

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

  • Nie można już odczytywać miejsca PlacementScope#parentWidth i PlacementScope#parentUkładDirection z bloku miejsc docelowych w układzie niestandardowym. (Icc1ae, b/168295623)

  • dodać Accessibility ScrollState do właściwości semantycznych. (Ifeda9)

  • Wprowadzono funkcję Modifier.drawWithCache, aby umożliwić tworzenie obiektu rysowania, który warunkowo odtwarza zależności oparte na informacjach o rozmiarze i stanie (I376dc).

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

Poprawki błędów

  • Zaktualizowano wiele interfejsów Graphics API.
    • Zaktualizowaliśmy interfejsy API przekształcania skalowania i rotacji, aby przetwarzać pojedynczy parametr przesunięcia do reprezentowania współrzędnych obrotu, zamiast osobnych parametrów x/y dla współrzędnych x/y w DrawScope i DrawTransform
    • Usunięto metody Rect.expandToinclude i Rect.join
    • Zaktualizowaliśmy dokumentację wyznaczania promienia, aby podawać wymiary eliptyczne i eliptyczne.
    • Dodaliśmy dokumentację wskazującą, że publiczny konstruktor klasy promieniowania wbudowanego nie może być wywoływany bezpośrednio, ale instancje promieni powinny być tworzone za pomocą ich konstruktorów funkcji.
    • Usunęliśmy interfejsy RoundRect API, które umożliwiają wysyłanie zapytań dotyczących górnegoRight, dołuRight, dołuCenter itp.
    • Wycofanie funkcji Rect.shift na rzecz Rect.translate
    • Usunięto interfejsy API RoundRect.grow i Rect.shrink
    • Nazwa okna RoundRect.outerRect została zmieniona na Rect.boundingRect
    • Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Nazwa RoundRect.longestSide została zmieniona na RoundRect.maxDimension
    • Nazwa RoundRect.shortestSide została zmieniona na RoundRect.minDimension
    • Zmieniono funkcję RoundRect.center, a nie funkcję.
    • Zaktualizowano konstruktor RoundRect, tak aby korzystał z właściwości promienia zamiast poszczególnych parametrów promienia x/y
    • Usunięto interfejsy API rozmiaru, które zakładały, że był to prostokąt o źródle równym 0,0.
    • Do promienia dodano niszczycielski interfejs API
    • Funkcje rozszerzeń RoundRect zostały przeniesione do właściwości właściwości.
    • (I8f5c7, b/168762961)
  • Fundacja.Box została wycofana. Użyj parametru Foundation.layout.Box. (Ie5950, b/167680279)
  • Nazwa stosu została zmieniona na Box. Obecna wersja Box zostanie zastąpiona nową usługą Box (compose.foundation.layout). Nowa funkcja Box gromadzi elementy podrzędne jedna nad drugą, gdy ma wiele elementów podrzędnych. Działa to inaczej niż w przypadku poprzedniego pola, które działa podobnie jak kolumna. (I94893, b/167680279)
  • Parametry dekoracji pól zostały wycofane. Jeśli chcesz użyć dekoracji/dopełnienia pola, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.dopełnienie) (Ibae92, b/167680279).
  • Zaktualizowano wiele interfejsów Graphics API.
    • Zaktualizowaliśmy interfejsy API DrawScope o metody przekształcania zakresu, aby wskazać, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po wywołaniu wywołania zwrotnego
    • Zaktualizowana dokumentacja clipPath, która odnosi się do ścieżki zamiast do zaokrąglonego prostokąta
    • Stałe odstępy w dokumentacji dla właściwego parametru w ClipPath
    • Nazwa DrawScope.drawCanvas została zmieniona na DrawScope.drawCanvas, a parametr rozmiaru został usunięty.
    • Zmieniliśmy nazwy parametrów dx/dy w metodzie wstawiania na poziome i pionowe.
    • Dodano przeciążenie, które zapewnia tę samą wartość wstawienia we wszystkich 4 granicach
    • Usunęliśmy dokumentację dotyczącą metody wstawiania wskazującej, że wstawienie zostanie zastosowane do wszystkich 4 stron
    • Zaktualizowana dokumentacja klasy Rect
    • Zaktualizowano komentarze do parametrów Rect, aby pasowały do stylu kdoc
    • Usunięto Rect.join i Rect.expandToDołącz
    • Utworzono przeciążenie obiektu Rect.translate(offset) i wycofano Rect.shift
    • (If086a, b/167737376)
  • z adnotacjami: rootAnimationClockFactory, przejściesEnabled,blinkingCursorEnabled i textInputServiceFactory z @visibleForTesting, wewnętrzny interfejs API i ukrycie pliku kdoc (I554eb, b/168308412).
  • Usuń element SelectionContainer z góry, aby wyłączyć wybór domyślny i uniknąć nieoczekiwanego działania. W tym celu możesz użyć kontenera SelectionContainer, aby zapakować zawartość, którą zamiast tego należy wybrać. (I8dfe0, b/158459594)

Wersja 1.0.0-alfa03

16 września 2020 roku

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

Zmiany w interfejsie API

  • Usuń działania semantyczne przewijania do przodu i do tyłu. Dodaliśmy kroki w funkcji AccessibilityRangeInfo. (Ia47b0)
  • Usunięto onInvalidate() z Owner -- OwnedLayer unieważnienie uchwytów. (Ica72b, b/162061312)
  • W interfejsie size API usunięto metody operatora, które używają parametrów przesunięcia. Wynik tych operacji jest niejasny, a typ wyników jest nieoczekiwany. Np. powinien mieć rozmiar – przesunięcie zwraca przesunięcie lub wynik rozmiaru z różnicą?

    Usunięto też wycofane metody z klasy rozmiaru. (Iec902, b/166514214)

Poprawki błędów

  • Poprawiono czasami nieprawidłowe rysowanie elementów LazyColumn, co również powodowało awarie w niektórych warunkach. (Ibcf17, b/163066980, b/165921895)
  • Ograniczenia DpConstraints i interfejsy API, które ich używają, zostały wycofane. (I90cdb, b/167389835)
  • Przeniesiono createAndroidComposeRule i AndroidInputDispatcher z androidx.ui.test.android do androidx.ui.test (Idef08, b/164060572)
  • Nazwy przypadków użycia grawitacji były spójne pod kątem wyrównywania lub wyrównywania w interfejsach API układu. (I2421a, b/164077038)
  • Dodano metody globalne onNode i inne metody globalne w ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)

Wersja 1.0.0-alfa02

2 września 2020 r.

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

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 w ścieżkach grafiki wektorowej, aby obsługiwać wycięcia kształtów zgodnie z regułami wypełniania ścieżki równomiernie i NonZero. (I43dd2)
  • Czas działania i szybkość są teraz klasami wbudowanymi (I48f4a)
  • Czas trwania jest teraz klasą wbudowaną (I565eb)
  • Dodaj wywołanie zwrotne, które będzie powiadamiać właściciela o zmianie granic węzła układu. (Ic40b3)
  • Rozwiązanie problemu, który polegał na tym, że konstruktor funkcji prostokątnej z przesunięciem i promieniem tworzył prostokąt w kolejności od lewej, prawej, górnej, dolnej, a nie lewego, górnego, prawego i dolnego.

    W rect usunięto wycofane metody towarzyszące, a zamiast nich konstruktory funkcji.

    Dodano testy do weryfikacji metod w Rect.kt (I08460, b/165822356)

Poprawki błędów

  • Dodano prostokąt MutableRect, który można modyfikować. (I71bd2, b/160140398)
  • Macierz4 została zastąpiona przez Matrix. Pozostałe części pakietu vectormath zostały usunięte. (Ibd665, b/160140398)
  • Zmieniła się konwencja wywoływania funkcji kompozycyjnych. Jest to zmiana powodująca uszkodzenie danych binarnych. Aby działały z tą wersją wtyczki kompilatora compose, wszystkie biblioteki muszą zostać ponownie skompilowane.

    Ta zmiana nie spowoduje zmiany powodującej niezgodność na poziomie źródła, ponieważ zmienione interfejsy API są tylko interfejsami API kompilatora z wyraźną zgodą. (I7afd2, b/158123185)

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

Wersja 1.0.0-alfa01

26 sierpnia 2020 r.

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

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

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

Zmiany w interfejsie API

  • Interfejs emitView został wycofany. W miarę możliwości używaj zasady AndroidView do generowania wyświetleń w ramach tworzenia wiadomości. Uwaga: bezpośrednie tworzenie widoków danych i grup widoków nie będzie obsługiwane w przyszłości, chyba że będą to liście w drzewie kompozycji – w sytuacji, gdy można to osiągnąć za pomocą AndroidView. (I29b1e, b/163871221)
  • Interfejs FocusState2 został wycofany i zastąpiony przez FocusState (Ia8b79, b/160822876, b/160923332)
  • Wycofane przeciążenia AndroidView zostały usunięte. (I946b9, b/163802393)
  • Niestandardowe emisje mogą teraz deklarować, że co najmniej 1 z ich ustawień można pominąć i utworzyć ponownie niezależnie od nich. (Ibbd13).
  • Klasy wektorów zostały zmienione, aby nie były już klasami danych, ponieważ ta sama instancja obiektu jest używana do kompozycji.

    Dodano flagę mutableStateOf do narzędzia VectorPainter, która pozwala warunkowo rysować ponownie w przypadku zmiany zawartości wektora.

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

    Zaktualizowano GroupKomponenty i PathKomponent, tak aby ich pola nazw były zmienne (Ieae45, b/151378808)

  • Usunięto onChildPositioned i OnChildPositionedModifier. W układzie podrzędnym deweloperzy powinni używać onPositioned i OnPositionedModifier. (I4522e, b/162109766)

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

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

  • Usunięto wycofany obiekt FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • Dodano lambda mergePolicy do tablicy SemanticsPropertyKey. Możesz go użyć do zdefiniowania niestandardowej zasady łączenia semantyków kreatora e-mailiDescendants. Zgodnie z zasadą domyślną jest używana wartość nadrzędna, jeśli istnieje już wartość. W przeciwnym razie jest używana wartość podrzędna. (Iaf6c4, b/161979921)

  • Ograniczenia to teraz klasa wbudowana (I88736).

  • Dodano obiekt FocusManager, który przenosi wspólną logikę zaznaczenia z AndroidComposeView (I528ef, b/161487952, b/162206799)

  • Zaktualizowano nazwy PointerEventPass dla wersji alfa. (Ifda6f)

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

  • IntSize jest teraz klasą wbudowaną (I2bf42).

  • Nazwa elementu (PlacementScope.placeAbsolute()) została zmieniona na PlacementScope.place(), a poprzednia nazwa „PlacementScope.place()” – „PlacementScope.placeRelative()”. W rezultacie metoda PlacementScope.place() nie będzie już automatycznie powielać pozycji w kontekstach od prawej do lewej. Jeśli chcesz, użyj zasady PlacementScope.placeRelative(). (I873ac, b/162916675)

  • AlertDialog korzysta teraz z FlowRow w przypadku przycisków (I00ec1, b/161809319, b/143682374)

  • Ukryto niektóre narzędzia testowe, ponieważ nie są tam, gdzie się znajdują. W przyszłości zostanie upubliczniona. (I32ab1).

  • Zrefaktoryzowana organizacja kodu wejściowego wskaźnika. (Ie3f45)

  • Wycofano atrybuty PxBound za pomocą Rect. Zaktualizowano wszystkie przypadki użycia PxBound z użyciem prostokąta i dodano odpowiednie wycofanie lub zastąpienie ich adnotacjami, aby wspomóc migrację. (I37038, b/162627058)

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

  • KeyEvent ma właściwość Unicode, która pozwala pobrać znak Unicode wygenerowany przez podaną kombinację stanu klucza i meta (If3afc)

  • Zrobiliśmy zdarzenie niestandardowe OpóźnienieUp i powiązane z nim klasy jako opcjonalny interfejs API, ponieważ z dużym prawdopodobieństwem mogą się zmienić. (I56d6f)

  • Usunęliśmy 2 niepotrzebne obiekty PointerEventPass. (I3dd9d)

  • Dodawanie parametru color [kolor], shadow i TextPattern (kolor) do akapitu.paint. Ta funkcja pozwala uniknąć niepotrzebnego tworzenia akapitu. (I81689)

Poprawki błędów

  • Usunięto wywołania zwrotne onFocusChanged z pola tekstowego. Użyj interfejsu Modifier.focusObserver. (I51089, b/161297615)
  • Funkcja Modifier.drawBorder została wycofana. Użyj interfejsu Modifier.border. Klasa danych obramowania została zastąpiona przez BorderStroke (I4257d, b/158160576)
  • Usunięto wycofane wywołania FrameManagera.

    Zmieniono wewnętrzne interfejsy API do tworzenia wiadomości, aby zmniejszyć obciążenie wynikające ze śledzenia obiektów stanu, takich jak mutableStateof() (I80ba6)

  • Funkcje Vertical Scroller i Horizontal Scroller zostały usunięte. Użyj zamiast tego elementu ScrollableColumn/Row. Usunięto element Modifier.drawBackground. Użyj elementu Modifier.background (I73b0d, b/163019183)

  • Awaria, gdy naprawiono element, który zapisuje stan używany w pętli for. Teraz stosowanie tego samego klucza w zapisanej instancjiState() jest dozwolone, więc interfejs API UiSavedStateRegistry został dostosowany do tego nowego wymogu (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

  • Funkcja kompozycyjna state { ... } została wycofana i wycofana z funkcji remember { mutableStateOf(...) }, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem i dopasowywane do wzorca by mutableStateOf() na potrzeby przekazywania właściwości klasy. (Ia5727)

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

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

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

Zmiany w interfejsie API

  • Funkcja OnChildPositioned została wycofana. Zamiast tego użyj opcji OnPositioned w elemencie podrzędnym. (I87f95, b/162109766)
  • Funkcja setViewContent została wycofana. Zamiast niej należy używać funkcji setContent. (I7e497, b/160335130)
  • Dodano interfejs AndroidViewBinding API do nadmuchiwania i tworzenia zasobów układu na podstawie ViewBinding. (I081c6)
  • KeyEvent2 jest zastąpione elementem KeyEvent (I2d770, b/162097585)
  • Dodano obsługę klawisza sprzętowego Alt (I9036b).
  • Obiekt FocusManager został wycofany. Użyj interfejsu Modifier.focus(), Modifier.focusObserver() i Modifier.focusRequester(). (I74ae4, b/162211322)
  • loadVectorResource obsługuje atrybuty trimPath (I808fe)
  • Przenieś okno do UI (I47fa6)
  • Usunęliśmy 2 niepotrzebne obiekty PointerEventPass. (I33ca7)
  • Wdrożony obiekt PointerInteropModifier, który umożliwia odbieranie zdarzeń MotionEvents i umożliwia interakcję z funkcją tworzenia wiadomości tak, jakby była implementacją widoku Androida. (Ieb08c)
  • Usunięto wycofany modyfikator tagu. Zamiast tego użyj parametru layoutId. (Idaa05, b/162023919)
  • Interfejsy API do obsługi tekstu od prawej do lewej zostały zaktualizowane. Dodano element LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Usunięto interfejsy Modifier.rtl i Modifier.ltr. (I080b3)
  • Obsługa przycinania ścieżki w grafice wektorowej (Ie16c9, b/158188351)
  • Dodano funkcję Modifier.layout(), która pozwala w wygodny sposób tworzyć niestandardowy modyfikator układu (I73b69, b/161355194).
  • Dodaliśmy nowy interfejs AndroidView API i wycofaliśmy dotychczasowe. (I5bcfd)
  • Funkcja Modifier.plus została wycofana. Zamiast niej użyj elementu Modifier.then. „Następnie” zawiera silniejszy sygnał porządkowania, ale zabrania też wpisywania Modifier.padding().background() + anotherModifier, co powoduje pęknięcie łańcucha i jest trudniejsze do odczytania (Iedd58, b/161529964).
  • Dodanie podklas widoku [Abstract]ComposeView do hostowania treści tworzenia wiadomości w hierarchii widoków danych. (I46357)
  • Parametry Row i Column są teraz wbudowane, co znacznie zmniejsza koszty związane z ich używaniem. (I75c10)
  • Układ podrzędny został dodany. Jest to element podstawowy niskiego poziomu, który umożliwia utworzenie elementów podrzędnych podczas pomiaru, jeśli chcemy użyć wartości dostępnych później dla składu drzewa podrzędnego. Na przykład element WithConstraints nie jest implementowany przy użyciu układu podrzędnego. (I25cc8)
  • Dodano element SemanticsNode.positionInRoot, aby uzyskać pozycję węzła SeemanticsNode względem poziomu głównego hierarchii tworzenia (Icdf26, b/161336532).
  • Zdarzenia MotionEvents przeszły z Androida do funkcji Compose, a następnie z powrotem do Androida. (I14be8, b/158034713)
  • Usunięto wyskakujące okienko. (I00430).
  • Stała pozycja wyskakującego okienka na wyświetlaczu z wycięciem. (Idd7dd)
  • Dodaj działanie ułatwień dostępu, aby uzyskać TextUkładResult (I9d6e6)
  • Dodano moduł RemeasurementModifier. Pozwala on na synchroniczną ponowny pomiar układu. Zwykle nie jest on potrzebny, ponieważ ponowne pomiary/przekazywanie odbywa się automatycznie, ale używamy ich w ramach elementów LazyColumnItems podczas przewijania. (I5f331, b/160791058)
  • Usunięto metodę getLineEllipsisOffset/getLineEllipsisCount. Użyj w zamian opcji getLinevisibleEnd/getLineEnd/isLineEllipSize. (I85aa2)
  • Dodaj znaczniki/adnotacje, aby poznać sprawdzone metody. (I66b20)
  • Ujawnij więcej interfejsów API wierszy w TextLayoutResult. (I79bd2)
  • Wbudowane konwertery wektorowe umożliwiające konwertowanie jednostek wbudowanych są teraz dostępne przez Foo.VectorConverter, np. Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter itp. (I3e273)

Poprawki błędów

  • Wprowadzono poprawki dla przybliżonego interfejsu API (I077bc).
    1. Usuń nieużywany interfejs OffsetBase
    2. wyrównaj 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 natywnejCanvas z interfejsu Canvas w celu umożliwienia konsumentom tworzenia własnych instancji Canvas
    5. Utworzono klasę EmptyCanvas w celu refaktoryzacji DrawScope na parametr niepusty zamiast lateinit i zapewnił brak wartości null w polu
    6. Zmieniono nazwy wyliczenia ClipOp na Pascal Case
    7. Zmieniono nazwy wyliczeń filtra Quality Quality na Pascal Case
    8. Zmiana nazw wyliczeń StrokeJoin na Pascal Case
    9. Zmieniono nazwy wyliczeń PointMode na wielkość liter Pascal
    10. Zmieniono nazwy wyliczeń w PaintingStyle na Pascal Case
    11. Zmieniono nazwy wyliczeń PathFillType na Pascal
    12. Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
    13. Zaktualizowano implementację DrawCache, aby nie używać już parametrów latinit
    14. Zaktualizowano DrawScope, aby nie używać już leniwego przekazywania w parametrach wewnętrznych fillPaint i fingerPaint
    15. Zaktualizowano obraz kompozycyjny, aby uniknąć użycia Box i zminimalizować koszty
    16. Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
    17. Zaktualizowano PathNode, dodając do każdej instrukcji ścieżki @Stałe adnotacje
    18. Zaktualizowana podkompozycja wektorowa zawiera zbędne kontrole warunkowe pod kątem równości, ponieważ są one już obsługiwane
    19. Wycofaliśmy metody konstruktorów towarzyszących prostokątne na rzecz konstruktorów funkcji,
    20. Zaktualizowanie klas pędzla i konstruktorów funkcji za pomocą interfejsów API @Immutable i @Stable
    21. Zmieniono wyliczenie VertexMode na PascalCase
    22. Zaktualizowano metodę DrawScope selectPaint, aby warunkowo zastępować parametry kreski na obrazie, jeśli ulegną one zmianie
    23. Zaktualizowano rozmiar, aby dodać interfejs API destrukturyzacji, zmienić nazwę UnspecifiedSize na Nieokreślone i usunięte nieużywane metody
  • Zaktualizowaliśmy wykorzystanie interfejsu API tworzenia BlendMode, aby prawidłowo zmapować tryby BlendModes platformy Androida i PorterDuff w zależności od poziomu interfejsu API. Wprowadzono interfejs API BlendMode#isSupported, który służy jako zapytanie dotyczące możliwości w celu określenia, czy urządzenie BlendMode jest obsługiwane na urządzeniu przed jego użyciem. (I0ef42)
  • Dodano element LazyItemScope dla parametru itemContent w listach Leniwych. Zawiera modyfikatory wypełniające maksymalny rozmiar nadrzędny. To rozwiązanie sprawdza się w sytuacji, gdy element powinien wypełnić widoczny obszar, a zwykła metoda Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
  • Czcionka SemanticsNodeInteraction.performPartialGesture została usunięta. Użyj w zamian zasady SemanticsNodeInteraction.performGesture. (Id9b62).
  • Zmieniono nazwę etykiety LazyColumnItems na LazyColumnFor. Nazwa LazyRowItems została zmieniona na LazyRowFor (I84f84)
  • Pakiet foundation.shape.corner został spłaszczony do foundation.share (I46491, b/161887429)
  • Nazwa elementu AndroidComposeTestRule została zmieniona na createAndroidComposeRule. (I70aaf)
  • Do aplikacji TextLayoutResult dodano więcej interfejsów API. (Id7e04).
  • Nazwa materiału FilledTextField została zmieniona na TextField, a podstawowy TextField to BaseTextField, aby najprostszy interfejs API był łatwy do znalezienia i obsługi (Ia6242, b/155482676)
  • Nazwa Modifier.drawBackground została zmieniona na Modifier.background (I13677).

Wersja 0.1.0-dev15

22 lipca 2020 r.

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

Aktualizacja zależności

  • Aby korzystać z wersji tworzenia wiadomości w wersji 0.1.0-dev15, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu podanymi powyżej w sekcji Deklarowanie zależności.

Zmiany w interfejsie API

  • Interfejs FocusModifier został wycofany i zastąpiony przez Modifier.focus, Modifier.focusRequester i modifier.focusObserver. Opcje FocusState i FocusState zostały wycofane i zostały zastąpione FocusState2 (I46919, b/160822875, b/160922136)
  • Dodano modyfikator umożliwiający obserwowanie zmiany stanu skupienia. (I05866, b/160924455, b/160923326)
  • Dodano modyfikator żądania zmiany zaznaczenia (I8dd73, b/161182057, b/160924778)
  • W menu paska narzędzi należy wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955)
  • Właściwości semantyki pojedynczej wartości używają teraz stylu wywołującego. Na przykład zapis „semantics { hide = true }” został zapisany jako: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Dodano element Modifier.focus, który zastępuje FocusModifier. (Ib852a, b/160924778)
  • Dodaj element FloatingToolbar do zaznaczania pola tekstowego. (IE8B07)
  • Dodano eksperymentalną adnotację API dla interfejsu API związanej z wprowadzaniem kluczy (I53c0a).
  • Dodano eksperymentalną adnotację API dla wszystkich interfejsów API Focus (I53b24, b/160903352)
  • Dodano element FocusState2, który zastąpi FocusDetailsState (I0a3ba, b/160822595).
  • Dodano element ExperimentalFocus będący adnotacją @OptIn dla interfejsu Focus API. (I1544b, b/160820961)
  • Dodano klasę jednostki IntBounds, reprezentującą granice pikseli w postaci liczby całkowitej z układu. Interfejs API PopupPositionProvider został zaktualizowany, aby z niego korzystać. (I0d8d0, b/159596546)
  • Applier wymaga teraz metody clear() do usuwania kompozycji (Ibe697)
  • Element KeyEvent został wycofany i zastąpiony przez parametr KeyEvent2 (I68730)
  • Do testujących narzędzia do wyszukiwania dodaliśmy nową opcjonalną flagę useUnmergedTree. (I2ce48)
  • Utworzono eksperymentalny interfejs API UkładNode (I4f2e9)
  • Dodaliśmy metody kopiowania do różnych typów klas wbudowanych, w tym:

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

    • Wycofana metoda obiektu towarzyszącego size.copy zamiast metody kopiowania instancji (Ife290, b/159905651)

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

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

  • Usunięto parametr kierunku układu z bloku pomiaru w funkcji Układ(). Kierunek układu jest jednak dostępny w wywołaniu zwrotnym za pomocą obiektu zakresu pomiaru (Ic7d9d)

  • refaktoryzuj uchwyty wyboru do ponownego użycia. (I420e0)

  • Usunięto klikalne elementy. Użyj elementu Modifier.clickable (I84bdf)

  • Znacznik testowy i Semantyka zostały usunięte. Zamiast tego użyj elementów Modifier.testTag i Modifier.semantics (I15ff0, b/158841414).

  • Przed tą zmianą wtyczka kompilatora compose w łatwy sposób przechwytuje wywołania konstruktorów wewnątrz funkcji @Composable, jeśli istniała ona (I5205a, b/158123804)

  • Nazwa parametru Modifier.tag została zmieniona na Modifier.layoutId, aby uniknąć nieporozumień z elementem Modifier.testTag. (I995f0)

  • Pozycje całkowite linii wyrównania zwrócone przez funkcję Placeable#get(BalancementLine) nie mają teraz wartości null. Jeśli brakuje żądanej linii wyrównania, zostanie zwrócona wartość TrackingLine.Unspecified. (I896c5, b/158134875)

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

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

  • Dodanie funkcji kompozycyjnej viewModel(), która umożliwia utworzenie lub uzyskanie już utworzonego obiektu ViewModel, podobnie jak działa to w przypadku aktywności lub fragmentu (I5fdd1).

  • Zastąpiono użycie IntPx wartością IntPx wartością IntPxPosition zastąpioną wartością IntOffset. Zastąpiono wartość IntPxSize wartością IntSize. (Ib7b44)

  • Aby skonsolidować liczbę klas używanych do reprezentowania informacji o rozmiarze, ustandaryzuj wykorzystanie klasy size zamiast PxSize. Dzięki temu klasa wbudowanej wykorzystuje wartości zmiennoprzecinkowe do pakowania 2 wartości zmiennoprzecinkowych do reprezentowania szerokości i wysokości w postaci liczby zmiennoprzecinkowej. (Ic0191).

  • Aby skonsolidować liczbę klas służących do reprezentowania informacji o pozycjonowaniu, ustandaryzuj wykorzystanie klasy Offset zamiast PxPosition. Dzięki temu klasa wbudowanej wykorzystuje wartości zmiennoprzecinkowe do pakowania typu „long-to pack” (wartości zmiennoprzecinkowe) reprezentujące przesunięcia X i Y w postaci liczby zmiennoprzecinkowej. (I3ad98)

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu parametrów pikseli tylko na typach Dp i podstawowych. Usunięto całą klasę Px (I3ff33)

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (I086f4).

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (Id3434).

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (I97a5a).

  • Funkcja TestTag została wycofana. Zamiast tego użyj parametru Modifier.testTag. (If5110, b/157173105)

  • Domyślna (bez działania) implementacja ParentDataModifier#modifyParentData została usunięta. Było to równoważne z brakiem implementacji interfejsu. (I0deaa)

  • Wcześniej wycofany ScaleFit. Zamiast tego użyj ContentScale. (Ifbc5b)

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (I19d02).

  • W interfejsie ui-material dodano komponent Menu DropdownMenu (interfejs menu Material Design). (I9bb3d)

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

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (I57bff).

  • Funkcja Modifier.semantics została wycofana, aby można było korzystać z komponentów wysokiego poziomu. (I4cfdc)

  • Skonsolidowaliśmy wdrożenia CanvasScope. Teraz dostępne są tylko DrawScope i ContentDrawScope Nazwa CanvasScope została zmieniona na DrawScope. Zaktualizowaliśmy DrawScope, aby wdrożyć interfejs Density i udostępnić podklasę Układ Usunięto DrawScope w ContentDrawScope Painter i PainterModifier zostały zaktualizowane tak, aby nie zarządzały już właściwością RTL, ponieważ DrawScope już ją udostępnia (I1798e)

  • Teraz element DoubleTapgesFilter odróżnia teraz element SingleTapgesFilter po drzewie. (If92b1)

  • Zaktualizowany interfejs Tracking API i dodatkowa obsługa wyrównania bezwzględnego (które nie powoduje automatycznego odbicia lustrzanego w kontekście Rtl) (I38cd3)

  • Interfejs API modyfikatorów DrawLayer został zmieniony: outlinekształt zmienił się na kształt i ma teraz wartość domyślną banner shape, a teraz nie może mieć wartości null; element clipToOutline został zmieniony na clip

  • Zaktualizowane interfejsy API tworzenia wyższego poziomu, które udostępniają obiekt Canvas na potrzeby korzystania z CanvasScope. Dzięki temu nie muszą oni utrzymywać własnych obiektów Paint. Klienci, którzy nadal potrzebują dostępu do Canvas, mogą użyć metody rozszerzenia pullCanvas, która udostępnia wywołanie zwrotne do wysyłania poleceń rysowania za pomocą bazowego obiektu Canvas. (I80afd)

  • Zmieniono interfejs API lambda na końcu WithConstraints. Zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń i układu DirectionDirections udostępnia właściwości minWidth, maxWidth, minHeight i maxHeight w Dp (I91b9a, b/149979702).

  • Zmieniliśmy nazwę elementu LayoutModifier2 na LayoutModifier. (Id29f3).

  • Usunięto wycofany interfejs LayoutModifier. (I2a9d6)

  • Funkcje pomiarów wewnętrznych w funkcjach Layout i UkładModifier2 mają teraz odbiornik IntrinsicMeasureScope, który zapewnia wewnętrzny interfejs API zapytań z niejawnie rozpowszechnianym kierunkiem układu. (Id9945)

  • Elementy podrzędne Layout i LayoutModifier można mierzyć, korzystając z innego kierunku układu. (Ibd731)

  • Dodano nową funkcję Modifier.zIndex() w celu kontrolowania kolejności rysowania elementów podrzędnych w tym samym układzie nadrzędnym. Właściwość poziomu w elemencie DrawLayerModifier została zmieniona na shadowElevation i nie kontroluje już kolejności rysowania. Kolejność parametrów w DrawShadow zmieniła się: wysokość jest teraz pierwszą wartością, a kształt jest drugim z domyślną wartością Battery shape. (I20150, b/152417501)

  • Usunięto opcje onSizeChange i onPositionChange z panelu Właściciel. (I5c718)

  • Dodano ograniczenia 2 – kopię ograniczeń, która obsługuje tylko wartości ograniczeń wewnętrznych, a nie wartości IntPx. Obiekt IntPx zostanie usunięty, a wszystkie ograniczenia dotyczące liczb całkowitych będą uznawane za piksele, tak jak w przypadku Androida.

    • Dodaliśmy też parametr IntSize, który z czasem zastąpi IntPxSize. (I4b43a)
  • Utworzono wystąpienia wyrównania z dowolnymi wartościami. Dodano wyrównanie w 1D. (Ia0c05)

  • alignToSiblings; teraz akceptowalny obiekt Measured zamiast Placeable. (I5788d)

  • (I45f09, b/152842521)

    • Zmieniono nazwę ScaleFit na ContentScale
    • Przeniesiono element ContentScale z elementu ui-graficznego do modułu ui-core, aby znalazł się w tym samym module co interfejs Tracking API.
    • Nazwa wymiaru FillMax została zmieniona na Przycięcie
    • Zmieniono nazwę wymiaru FillMin na dopasowanie
    • Zmieniliśmy nazwę Fit na Wewnątrz, by lepiej dopasować
    • Odpowiedniki ImageView.ScaleType
    • Dodaliśmy dokumentację potwierdzającą, że kombinacja Crop i terminy.Center daje takie same wyniki jak w przypadku klasy ImageView.ScaleType.CENTER_CROP i Fit, które jest używane w przypadku elementu Tracking.Center. Wynik ten jest taki sam jak w przypadku elementu ImageView.ScaleType.FIT_CENTER Zastosowanie wewnątrz z ustawieniem Tracking.Center zapewnia taki sam wynik jak w przypadku elementu ImageView.ScaleType.CENTER_INSIDE.
  • Obsługa RTL w przypadku modyfikatorów rysowania. (I0aaf9)

  • Udostępniliśmy interfejs API do zwiększania liczby wyświetleń na Androidzie z kodu XML. Zobacz demonstrację ViewInCompose, aby dowiedzieć się więcej. (I42916)

  • Ulepsz DrawModifier API:

    • Utworzono zakres odbiornika pull() ContentDrawScope
    • Usunięto wszystkie parametry z funkcji pull()
    • DrawScope ma ten sam interfejs co poprzednia wersja CanvasScope
    • ContentDrawScope ma metodę pullContent() (Ibaced, b/152919067)
  • Dodano element positionInParent i boundsInParent do współrzędnych układu. (Icacdd, b/152735784)

  • W metodach DrawLayerModifier i drapLayer() są teraz domyślne ustawienie clipToBounds i clipToOutline na false. (I0eb8b, b/152810850)

  • Nazwa elementu LayoutResult została zmieniona na MeasureResult. (Id8c68)

  • Dodano UkładModifier2 – nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac)

  • Zastąpiono operator plusa z funkcjami rozszerzeń fabrycznych (I225e4).

  • Dodano właściwości translacjiX/Y umożliwiające przesunięcie listy poleceń rysowania dla danej warstwy. Jest to przydatne, gdy chcemy przenosić treści w odpowiedzi na animacje lub zdarzenia dotknięcia. (I8641c)

  • Do interfejsów API warstw dodano parametry przestawne i przestawne Y, aby umożliwić obsługę obracania i skalowania wokół określonego punktu w warstwie (Icf7c3).

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

  • Dodaliśmy LayerModifier – modyfikator, który umożliwia dodanie obiektu RenderNode do szablonu. Umożliwia ustawianie przycinania, przezroczystości, obrót, skalowania i cieni. Spowoduje to zastąpienie obiektu RepaintBoundary. (I7100d, b/150774014)

  • Umożliwiono rozpowszechnianie kierunku układu z nadrzędnego węzła układu do elementów podrzędnych. Dodano modyfikator kierunku układu. (I3d955)

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

  • Wstępna obsługa Rtl w układzie Compose (Ia5519)

  • Połączyliśmy funkcje DensityScope i DensityScope w jeden interfejs. Zamiast parametru nieaktywnyDensity() możesz teraz użyć funkcji DensityAmbient.current. Zamiast parametru Gęstość(gęstość) tylko w wartości(gęstość) (I11cb1)

  • Zmieniono układ LayoutCoordinates, aby zamiast mapy w interfejsie LayoutCoordinates ustawić opcję ProvideMatchLines Ułatwia to modyfikatorom modyfikowanie jednej lub wielu wartości w zestawie bez konieczności tworzenia nowego zbioru dla każdego modyfikatora. (I0245a)

  • W przypadku układu UkładCoordinates nie ma już właściwości pozycji. Właściwośćposition nie ma sensu przy rozważaniu użycia modyfikatorów układu, rotacji czy skalowania. Zamiast tego do obliczenia przekształcenia z jednego koordynatora układu do innego programiści powinni używać funkcji nadrzędnych i podrzędnych (childToLocal()).

    Układ LayoutCoordinates używa właściwości „size” z atrybutu IntPxSize, a nie PxSize. Układy używają liczb całkowitych w pikselach w przypadku układów, dlatego we wszystkich układach należy stosować liczby całkowite, a nie liczby zmiennoprzecinkowe. (I9367b)

  • Ulepszenia powierzchni interfejsu API Ograniczeń (I0fd15)

  • Utworzono interfejs CanvasScope API, który opakowuje obiekt Canvas w celu udostępnienia bezstanowej, deklaratywnej powierzchni interfejsu API do rysowania. Przekształcenia są zawarte w zakresie odbiorcy, a informacje o rozmiarze również są ograniczone do odpowiednich granic w tekście. Nie wymaga ona utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.

    • Dodaliśmy CanvasScopeSample oraz zaktualizowaliśmy aplikację demonstracyjną, dodając do niej deklaratywną wersję demonstracyjną (Ifd86d).
  • Usunięto nieużywany interfejs MaskFilter API, ponieważ ma ograniczone zastosowanie i w większości przypadków nie jest zoptymalizowany pod kątem akceleracji sprzętowej (I54f76).

  • Prostota kształtu została przeniesiona z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Zastąpiono wszystkie używane w interfejsie wartości null wartości koloru w interfejsie API wartością niedopuszczalną i użyliśmy wartości Color.Unset zamiast wartości null (Iabaa7).

  • Wprowadź do ImagePainter dodatkowy opcjonalny parametr rect, aby umożliwić rysowanie podsekcji bazowego zasobu ImageAsset (I0ea9e).

  • Dodano nieskonfigurowany kolor, aby reprezentować wartość nieoznaczoną bez obramowań – Kolory. (If901a)

  • Dodano metody rozszerzenia Canvas.rotate i Canvas.Scaled do wykorzystania opcjonalnych współrzędnych obrotu na potrzeby przekształceń. Domyślnie znajdują się one w lewym górnym rogu bieżącego tłumaczenia na płótnie.

    Ponadto przenieśliśmy Canvas.rotateRad na metodę rozszerzenia umożliwiającą zachowanie spójności (Ibaca6).

  • Utworzyliśmy interfejs PixelMap API, aby umożliwić obsługę wysyłania zapytań o informacje o pikselach z komponentów ImageAsset. (I69ad6)

  • Zmieniliśmy nazwę na „FrameworkRect/toFrameworkRectF” na AndroidRect/toAndroidRectF, aby zapewnić zgodność z konwencją nazewnictwa konwersji obiektów między tworzeniem a interfejsami API platformy Androida, na których są oparte. Zaktualizowano też dokumentację tych interfejsów API (I86337)

  • Dodaliśmy interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API w grafice wektorowej. W efekcie złożoności podrzędnej powstają w wyniku użycia obiektu VectorPainter, a nie DrawModifier. Wycofano poprzedni element kompozycyjny DrawVector na rzecz VectorPainter.

    Zmieniono nazwę interfejsu API Image(Painter) na PaintBox(Painter) Utworzono obiekt kompozycyjny wektorowy, który zachowuje się jak element kompozycyjny obrazu, ale z wyjątkiem komponentów VectorAsset zamiast ImageAsset (I9af9a, b/149030271)

  • Zmieniliśmy nazwę komponentu ImageAsset, aby lepiej odróżnić dane obrazu od nowego elementu kompozycyjnego obrazu, który będzie używany do określania układu i rysowania zawartości. _Body:Utworzono metodę rozszerzenia w metodzie android.graphics.Bitmap (Bitmap.asImageAsset()), by utworzyć instancję obiektu ImageAsset, która może być przydatna do połączenia tradycyjnego tworzenia aplikacji na Androida z platformą composesu (Id5bbd).

  • Dodano TextDirection.Content (I48f36)

  • Dodano operator Textdecorationion.plus (I0ad1a)

  • Element Force został usunięty z wartości wyliczeniowych TextDirectionAlgorithm (Icc944)

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

  • Implementacja narzędzia LongPressAndDrag do zaznaczania pola tekstowego. (I17919)

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

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

  • Kursor w polu TextField ma migającą animację (Id10a7)

  • Zmiana interfejsu API: parametr AnnotatedString(builder: Builder) jest zmieniany na annotatedString(builder: Builder). (Ia6377)

  • Zmiana interfejsu API: parametr AnnotatedString.Item został zmieniony na AnnotatedString.Range. (I2d44d).

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

  • Teraz można ukryć lub wyświetlić klawiaturę programową za pomocą narzędzia SoftwareKeyboardController obsługiwanego przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).

  • Dodaliśmy operator plusa dla stylu (tekst/akapit/span) Style, który przekazuje funkcję scal(). (Ia1add).

  • Plik FontWeight.lerp nie jest już przyciągany. Nadal jest to klasa danych. (I521c2)

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

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

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

  • Usunięto nieużywaną klasę rozmiaru, ponieważ w module ui-geometry występuje zduplikowana klasa rozmiaru, która jest używana. (I1b602)

  • Dodaliśmy AdapterList – komponent przewijanej listy, który tylko komponuje i rozmieszcza widoczne elementy. Znane problemy obejmują między innymi to, że usługa działa tylko w pionie i nie obsługuje w pełni wszystkich przypadków zmian w elementach podrzędnych. (Ib351b)

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

Poprawki błędów

  • Wywołanie zwrotne onFocusChange w polach tekstowych zostało zmienione na onFocusChanged (Ida4a1)
  • Funkcje Vertical Scroller i Horiziontal Scroller zostały wycofane. Użyj funkcji ScrollableColumn i ScrollableRow, aby wbudowane funkcje związane z zachowaniem i parametrami dotyczącymi kolumn/wierszy. Własne atrybuty Modifier.vertical poprawne przewijanie oraz Modifier.horizontal Scroll umożliwiają. Podobnie parametr ScrollerPosition został wycofany i zastąpiony przez ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • Nazwa etykiety runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Zmieniono nazwy kilku testowych interfejsów API, aby były bardziej intuicyjne. Nazwy wszystkich interfejsów API FindXYZ zostały zmienione na onNodeXYZ. Nazwy wszystkich interfejsów API doXYZ zostały zmienione na performXYZ. (I7f164)
  • Interfejs tworzenia można teraz tworzyć w grupach ViewGroups bez konieczności tworzenia nowej kompozycji. Przykład znajdziesz w ViewInteropDemo. (I9ab0b, b/160455080)
  • Dodano argumenty sortWith i deleteRange do obiektu MutableVector (Icccf7).
  • Zastosuj uchwyty wyboru przeciągania, aby zmienić zaznaczenie pola tekstowego. (I27032)
  • Usunięto klasę wbudowanej aplikacji Shader, która opakowała klasę NativeShader, i oczekuje zmiany nazwy klasy NativeShader na Shader. Opakowana klasa wbudowanej aplikacji Shader nie dodała niczego wartościowego do powierzchni interfejsu API, ponieważ była klasą wbudowaną, więc użyj bezpośrednio klasy NativeShader. (I25e4d)
  • Zrefaktoryzowany model PainterModifier nie zapewnia już skalowania na podstawie danych ograniczeń i parametru ContentScale. Implementacje Painter to samej skalowalności zawartości rysowania w zależności od podanego rozmiaru obiektu DrawScope, do którego rysują.

    Rozwiązaliśmy problem polegający na tym, że mapa bitowa pamięci podręcznej VectorPainter była dostosowywana do domyślnego rozmiaru, a nie podanego rozmiaru do rysowania.

    Zaktualizowano komponent ImagePainter, aby skalował swoją zawartość, zamiast korzystać z niego w imieniu PainterModifier. (I6ba90)

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

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

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

  • Rozwiązaliśmy problem polegający na tym, że wysyłanie danych wejściowych za pomocą wskaźnika powodowało awarię, jeśli w trakcie rozsyłania za pomocą komponentu PointerInputFilters zostały usunięte za pomocą podkompozycji. Zostało to już rozwiązane. (I1f48b, b/157998762)

  • Rozwiązaliśmy problem polegający na tym, że wysyłanie danych wejściowych za pomocą wskaźnika powodowało awarię, jeśli podczas wysyłania zostały usunięte elementy PointerInputFilters za pomocą podkompozycji. Zostało to już rozwiązane. (Iab398, b/157998762)

  • Zrefaktoryzowano klasę promienia na klasę wbudowaną. Usunęliśmy metody tworzenia elementów towarzyszących na rzecz konstruktora funkcji z domyślnym parametrem, dzięki któremu promień na osi Y odpowiadał obowiązkowemu parametrowi promienia osi X.

    Zaktualizowano element DrawScope.drawRoundRect tak, aby w przypadku promienia wzdłuż osi x i Y przetwarzał 1 parametr Radius zamiast 2 osobnych wartości zmiennoprzecinkowych (I46d1b).

  • Funkcja kompozycyjna ponownie nie jest już przydatną abstrakcją. Większość zmian powinna pojawić się w wyniku przypisania MutableState. W przypadku pozostałych elementów zalecamy użycie funkcji invalidate do aktywowania zmiany kompozycji bieżącego zakresu. (Ifc992)

  • Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach refaktoryzacji polegającej na stosowaniu tylko typów Dp i typów podstawowych w parametrach piksela (Iede0b).

  • Zmienia strategię generowania kodu kompilatora Compose. Przed tą zmianą kompilator composeing przekształcał wywołania na funkcje kompozycyjne. Dzięki tej zmianie przekształcamy treść funkcji kompozycyjnej i pozostawiamy stronę wywołania bez zmian (w większości przypadków).

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

    Powinna to być zmiana zgodną ze źródłem w przypadku całego korzystania z funkcji tworzenia. Dzięki tej zmianie większość użytkowników funkcji tworzenia wiadomości nie będzie musiała aktualizować żadnego kodu.

    Aby było to możliwe, zmienił się podpis JVM wszystkich funkcji kompozycyjnych. Funkcja kompozycyjna akceptująca pojedynczy parametr jest przekształcana w funkcję akceptującą 3 parametry. Dodatkowe parametry to funkcja Composer, liczba całkowita w postaci klucza. Liczba całkowita służąca do rozpowszechniania metadanych w wywołaniach.

    Tworzenie przekształca teraz również domyślne argumenty w funkcję kompozycyjną. Odbywa się to bez wprowadzania dodatkowego syntetycznego przeciążenia samej funkcji, więc ta zmiana spowoduje definiowanie mniejszej liczby funkcji.

    Znane, zamierzone zmiany w zachowaniu wynikające z:

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

    W ramach tych prac wprowadziliśmy kilka optymalizacji: 1. Wyniki porównania parametrów są przekazywane na wykresie wywołań do innych funkcji kompozycyjnych. Spowoduje to zmniejszenie liczby porównań w czasie działania, zmniejszenie rozmiaru tabeli przedziałów, a także większą liczbę pominięć funkcji kompozycyjnych, które nie były wcześniej pomijane. 2. Parametry, które są określane jako „statyczne” podczas kompilacji, nie są już porównywane ani przechowywane w środowisku wykonawczym. Zmniejsza to liczbę porównań i rozmiar tabeli przedziałów. 3. Struktura przepływu kontroli w treści funkcji jest używana do zminimalizowania liczby generowanych grup. Zmniejsza to rozmiar tabeli przedziałów i zmniejsza nakład pracy podczas działania środowiska wykonawczego. 4. Nieużywane parametry wysyłki i odbiorcy do funkcji 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 powodujących niezgodność dotyczyła interfejsów API, na które kompilator bezpośrednio kieruje reklamy. Typowe zastosowania metody composeyfikacji nie ulegną zmianie: 1. Usługa Composer::startExpr została usunięta 2. Usunięto narzędzie Composer::endExpr 3. Funkcja Composer::call została wycofana. 4. Przeciążenia inne niż Vararg zostały usunięte z grupy key. Od tej pory używaj wersji vararg. 5. Adnotacja Pivotal została wycofana. Użyj w zamian key. 6. Wartość ScopeUpdateScope::updateScope została zmieniona tak, aby oczekiwała właściwości Function3 zamiast Function1. 7. Zaktualizowaliśmy funkcję restartableFunction i restartableFunctionN z dodatkowych parametrów czasu kompilacji (I60756, b/143464846)

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

  • Usunięto parametr RepaintBoundary na rzecz funkcji DrawLayerModifier (I00aa4)

  • Button, FloatingActionButton i Clickable mają teraz osobny parametr enabled. Nazwy niektórych parametrów elementu Button zostały zmienione lub zmieniono ich kolejność. (I54b5a)

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

  • Najważniejsze zmiany w interfejsie API wygaszacza. Szczegółowe informacje znajdziesz w dzienniku i dokumentacji Ambient<T> (I4c7ee, b/143769776).

  • Zmieniliśmy działanie domyślnego elementu TextDirection, który jest określany przez element LayoutDirection, np. jeśli parametr LayoutDirection ma wartość RTL, domyślnym ustawieniem TextDirection będzie RTL. Wcześniej było to TextDirection.ContentOrLtr/Rtl (I4e803).

  • Naprawiono błąd: gdy szerokość i styl czcionki są zagnieżdżone w AdnotatedString, tekst nie jest poprawnie renderowany. (I77a9d)

  • Dodaje często używane parametry do funkcji Text(). Jeśli obecnie tworzysz lokalny styl tekstu, który przekazuje niewielką liczbę tych parametrów, np. Text(style = TextWyrównaj = TextWyrównaj.Center), możesz teraz bezpośrednio podać parametry: Text(textWyrównaj = Text.Center) (I82768)

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