Interfejs tworzenia
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphs
androidx.compose.ui.platform
androidx.compose.ui.test
(Zapoznaj się z dokumentacją interfejsu API dotyczącą wszystkich pakietów tworzenia)
Najnowsza aktualizacja | Wersja stabilna | Kandydat do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
12 czerwca 2024 r. | 1,6.8 | - | 1.7.0-beta03 | - |
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.
Grupa | Opis |
---|---|
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.foundation | Pisz 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.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli 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.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.7
Wersja 1.7.0-beta03
12 czerwca 2024 r.
Aplikacja androidx.compose.ui:ui-*:1.7.0-beta03
została zwolniona. Wersja 1.7.0-beta03 zawiera te zatwierdzenia.
Wersja 1.7.0-beta02
29 maja 2024 r.
Aplikacja androidx.compose.ui:ui-*:1.7.0-beta02
została zwolniona. Wersja 1.7.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmieniono nazwę
SemanticsProperties.Editable
naIsEditable
, a wartośćSemanticsPropertyReceiver.editable
naisEditable
. Właściwość jest teraz wartością logiczną i zawsze jest określana przez pola tekstowe. (I8acd8) - Zmień nazwę parametru testu porównawczego ułatwień dostępu. (I3d440)
- Zaktualizowany interfejs API do określania stylu linków:
TextLinkStyles
jest teraz częścią konstruktoraLinkAnnotation
i metodyAnnotatedString.fromHtml
(I90b2b). Usunięto też:TextDefaults
z materiału (I5477b)
Poprawki błędów
- Nazwa elementu
LayoutCoordinates.introducesFrameOfReference
została zmieniona naLayoutCoordinates.introducesMotionFrameOfReference
, aby lepiej odzwierciedlić jego przeznaczenie. Zmieniliśmy nazwę powiązanej funkcji, aby obliczać współrzędne na podstawie tej flagi. (I3a330)
Wersja 1.7.0-beta01
14 maja 2024 r.
Aplikacja androidx.compose.ui:ui-*:1.7.0-beta01
została zwolniona. Wersja 1.7.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nazwa elementu
performCustomAccessibilityActionLabelled
została zmieniona naperformCustomAccessibilityActionWithLabel
orazperformCustomAccessibilityActionWhere
naperformCustomAccessibilityActionWithLabelMatching
. (I5387F) AnnotatedString.hasEqualsAnnotations
to terazhasEqualAnnotations
(I685c0)- Zaktualizowaliśmy interfejs API umożliwiający pobieranie linków o tematyce Material w tekście. W szczególności usunęliśmy z
TextDefaults
metody tworzenia tematycznychLinkAnnotations
oraz analizowania kodu HTML za pomocą linków tematycznych. Zamiast tego dodaliśmy klasęTextLinkStyles
, która pozwala określić styl linków jako parametr elementu tekstowego kompozycyjnego. (I31b93)
Poprawki błędów
- Poprawia dodatkowe przypadki użycia związane z dynamicznym dodawaniem modyfikatorów danych wejściowych wskaźnika podczas zdarzeń 63e1504
Wersja 1.7.0-alfa08
1 maja 2024 r.
Aplikacja androidx.compose.ui:ui-*:1.7.0-alpha08
została zwolniona. Wersja 1.7.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaje obsługę implementacji zmiennych kształtów. Obserwacja
Shape#createOutline
jest teraz obserwowana wewnątrz warstw graficznych, więc odczytywanie wartości stanu w nich powoduje unieważnienie w przypadku zmiany stanu, co pozwala uzyskać bardziej wydajne animacje kształtów. (Id1629, b/326070216) - Nazwa elementu
isPositionedByParentWithDirectManipulation
została zmieniona naintroducesFrameOfReference
. Pamiętaj, że teraz ma to odwrotny skutek. Oznacza to, że domyślnie większość znacznikówLayoutCoordinates
wprowadza układ odniesienia. Tylko w przypadku bezpośredniej manipulacji właściwość będzie mieć wartość fałsz. Aby zapytanie o pozycję obejmowało tylko te elementy, które wprowadzają układ odniesienia, użyjpositionInLocalFrameOfReference(...)
. LubpositionInLocalLookaheadFrameOfReference
z przeglądarkiLookaheadScope
. (Ifc5f7) - Interfejsy API
LookaheadScope
są stabilne (I21507) - Zmień parametr lambda działania w przypadku
getScrollViewportLength
zgodnie z opiniami rady API. (Ibc74a) - Zaktualizowaliśmy interfejsy API do zarządzania
GraphicsLayer
, aby używały parametrów liczb zmiennoprzecinkowych zamiast int. Usunięto wartości parametruUnsetOffset/UnsetSize IntSize
na rzecz istniejących już nieokreślonych stałych w klasach wbudowanych opartych na przesunięcia i rozmiarze (I2fb03, b/333863462) - Podczas wstrzykiwania danych wejściowych myszą podczas testów
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
akceptują teraz parametrbutton: MouseButton
, aby był bardziej uniwersalny. Wartość domyślna toMouseButton.Primary
w przypadku wszystkich metod. (I31a23, b/190493367, b/261439695) - Zmieniono nazwę
onClicked
naonClick
wLinkInteractionListener
. (Iaa35c) - Zmień nazwę społeczności
TextInclusionStrategy.isInside
naisIncluded
. Ustaw zwracany typParagraph/MultiParagraph#getRangeForRect()
bez wartości null. (I51f26)
Poprawki błędów
- Naprawiono tworzenie długiego zrzutu ekranu w przypadku przewijanych kontenerów za pomocą funkcji
reverseScrolling=true
. (I7c59c)
Wkład z zewnątrz
- Dodano obsługę wczytywania z wyprzedzeniem w zagnieżdżonych elementach
LazyLists
(np.LazyColumn
, który renderuje zagnieżdżone elementyLazyRows
). Ta zmiana powinna ograniczyć liczbę klatek podczas przewijania w przypadku tych elementówLazyLists
. Domyślnie w implementacji są pobierane z wyprzedzeniem 2 pierwsze zagnieżdżone elementy, ale to zachowanie można kontrolować za pomocą nowych interfejsów APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
iLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
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órzAnnotatedString
z elementemLinkAnnotation
odpowiadającym Twojemu linkowi i prześlij ten elementAnnotatedString
do elementu tekstowego kompozycyjnego. (I34d4b, b/323346994) - Wprowadź
ViewConfiguration.HandwritingGestureLineMargin
do obsługi gestów pisma odręcznego. Obsługa gestuJoinOrSplit
dla usługiBasicTextField
(Ie6e13, b/325660505) - Wersje
FocusProperties.enter
iFocusProperties.exit
nie są już eksperymentalne. WersjeFocusDirection.Enter
iFocusDirection.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ą funkcjiPlaceable.PlacementScope.withDirectManipulationPlacement
. Podobnie układ, który często zmienia pozycję swoich elementów podrzędnych, może teraz umieszczać je za pomocą elementuwithDirectManipulationPlacement
(np. Scroll (domyślnie zaimplementowany). W ten sposób sprawia, że animacje oparte naapproachLayout
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 przezUserInput
iSideEffect
, 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
iModifier.approachLayout
są teraz stabilne. Nowe:isMeasurementApproachInProgress()
iisPlacementApproachInProgress()
, które zastąpią odpowiednio stareisMeasurementApproachComplete()
iisPlacementApproachComplete()
. - 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 jakRenderNode
i Picture. - Zaktualizowano tabelę
rememberGraphicsLayer
, aby wykorzystaćrememberObserver
. (I312c1, b/288494724, b/330758155) - Interfejs
UrlAnnotation
został wycofany. Użyj interfejsuLinkAnnotation.Url
. Jeśli stosujesz motywy Material, użyj obiektuTextDefaults
, 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 naAnnotatedString.Companion.fromHtml
. (I43dcd) - Dodano argumenty stylu (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) i detektor interakcji z linkiem do metodyparseAsHtml
. Podczas analizy ciągu znaków HTML z tagami<a>
ta metoda tworzy elementLinkAnnotation.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 iLinkInteractionListener
. Dodaj tę adnotację do elementuAnnotatedString
, aby uzyskać hiperlink. Przekazując atrybutyfocusedState
lubhoveredState
, możesz zdefiniować wizualnyconfiguration
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 poleceniaLocaleList.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 parametrAnnotatedString
. 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
iClipboardManager.hasClip
. Aby odczytać metadane bieżącego klipu, użyjclipEntry.getMetadata()
. Aby dowiedzieć się, czy schowek zawiera bieżący klip, sprawdź też wynik funkcjiClipboardManager.getClip
, jeśli ma on wartość null. (I50498) - Teraz możesz przekazywać obiekty
GraphicsLayer
do funkcjiplaceable.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 obiekcieGraphicsLayer
. 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
naComposeRect
(I39925, b/325660505) - Wszystkie parametry
KeyboardOptions
mają teraz domyślnie nieokreśloną wartość. Dodano metodęKeyboardOptions.merge
. - Zmieniono nazwę
KeyboardOptions.autoCorrect
naautoCorrectEnabled
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 interfejsieBasicSecureTextField
używany jest terazKeyboardActionHandler
zamiastKeyboardActions
. (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 typuGraphicsLayer
można wykonać bez ponownego rejestrowania listy wyświetlania. W odróżnieniu od funkcjiModifier.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 rozszerzeniaDrawScope.drawLayer(GraphicsLayer)
. (I7a7c0)- Podziel
restrictedConstraints()
na 2 metody:fitPrioritizingWidth()
ifitPrioritizingHeight()
(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
idrawWithCache
w celu zapewnienia dostępu doGraphicsContext
na potrzeby dostępu w zakresie, który automatycznie wyczyściGraphicsLayer
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. InterfejsPlatformTextInputTestOverride
został wycofany. (I862ed, b/322680547) - Dodano funkcję rozszerzenia
GraphicsLayer.setOutline(Outline)
. (Ib81f4) - Wprowadzenie konstruktora funkcji
GraphicsContext
w celu utworzenia fabryki w celu utworzenia instancjiGraphicsLayer
(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ą argumentuonLinkClicked
. 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 interfejsuGraphicsContext
, który uwzględnia zależności graficzne, w tym tworzenie instancjiGraphicsLayer
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 dolifecycle-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 AndroidaView
bez lokalnego odczytywania kompozycji. (I40768) - Nowy interfejs API
Path.reverse()
do odwrócenia kierunku ścieżki (I36348) - Do języka
KeyboardOptions
dodano językhintLocales
, aby umożliwić użytkownikowiTextFields
dodanie instrukcji w edytorze IME z konkretnymi językami umożliwiającymi ustawienie preferowanego języka. - Udostępnij właściwość
platformLocale
z tabeliLocale
, 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 UlepszonyFlowRow
/Column
dzięki MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach w eksperymentalnych wersjachFlowRow
iFlowColumn
, w tym o funkcji maxLines i obsłudze dodatkowych elementów (w wersji:ContextualFlowRow
iContextualFlowColumn
). Ta aktualizacja ma zapewnić optymalne działanie komponentów, przy czymContextualFlow*
jest idealnym rozwiązaniem w przypadku dużej liczby elementów korzystających z małej konfiguracjimaxLines
, a dynamiczna +N pozwala uzyskać więcej przycisków.FlowRow
iFlowColumn
to idealne rozwiązanie w przypadku niewielkiej liczby elementów, poniżej 100 elementów. Ważne: aby zachować dotychczasowe działanie funkcjiFlowRow
lubFlowColumn
, w której tworzą się wszystkie elementy niezależnie od tego, czy mieszczą się w maksymalnej wartości na osi krzyżowej, podczas inicjowania ustawoverflow
naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. PoznajContextualFlowRowSample
iFlowRowSample
, 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 metodyinspectableProperties()
w elemencieModifierNodeElement
, 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 flagamiWindowManager.LayoutParams
. (Ibb33e, b/312485503) - Wprowadzono
DelegatableNode.requireLayoutCoordinates()
jako sposób na uzyskanie aktualnegoLayoutCoordinates
dla:Modifier.Node
bez konieczności zastępowaniaonPlaced
i samodzielnego zapisywania współrzędnych w nieruchomości. (Ia8657) - Wprowadzono
DelegatableNode.currentLayoutCoordinates
jako sposób na uzyskanie aktualnegoLayoutCoordinates
dla:Modifier.Node
bez konieczności zastępowaniaonPlaced
i samodzielnego zapisywania współrzędnych w nieruchomości. (Iaebaa) BasicTextField2
i powiązane interfejsy API w pakiecieandroidx.compose.foundation.text2
są przenoszone doandroidx.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 APIDeferredTargetAnimation
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 elementuPath
. (I63d04) - Dodano
PathHitTest
iPath.contains(Offset)
, aby sprawdzić, czyPath
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
ilastBaseline
. (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
iSemanticsActions.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 parametrusePlatformDefaultWidth
, 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ść semantycznaisOpaque
. (I8c583, b/317966058, b/246056649) - Usunięto
originalEventPosition
z metody kopiowania w publicznym interfejsie APIPointerInputChange
. (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 atrybutVelocityTrackerAddPointsFix
na wartość Fałsz. (Ib3877, b/269487059)- Usunięto wsteczną niezgodność plików binarnych w
TextStyle
iParagraphStyle
. (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 znacznikiClipEntry
iClipMetadata
, aby umożliwić obsługę dowolnych treści, takich jak obrazy. - Dodaje do interfejsu
ui-test
interfejs APIDeviceConfigurationOverride
, 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.8
12 czerwca 2024 r.
Aplikacja androidx.compose.ui:ui-*:1.6.8
została zwolniona. Wersja 1.6.8 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono niespójności w skalowaniu czcionek, gdy skala czcionki jest mniejsza niż najniżej zdefiniowana tabela. W tym przypadku interpolujemy teraz liniową skalę 1x a najniższą zdefiniowaną tabelę, tak aby rozmiar czcionki rośnie monotonicznie wraz ze wzrostem skali. (Icbae3)
Wersja 1.6.7
1 maja 2024 r.
Aplikacja androidx.compose.ui:ui-*:1.6.7
została zwolniona. Wersja 1.6.7 zawiera te zatwierdzenia.
Wersja 1.6.6
17 kwietnia 2024 r.
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
iSemanticsActions.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
iLocalTextInputService
. (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 elementDragAndDropTarget
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 jednostkimaximumFlingVelocity
. (I8adc7) - Nazwa urządzenia
onDragAndDropStart
w fabryce urządzeniaDragAndDropModifierNode
została zmieniona naacceptDragAndDropTransfer
.ElementacceptsDragAndDropTransfer
został dodany do modyfikatoradragAndDropTarget
, aby można go było zaakceptować z sesji przeciągania i upuszczania. Ta funkcja lambda zwraca prawidłowyDragAndDropTarget
, 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 typuDragAndDropModifierNode.drag
przyjmuje teraz parametry dla właściwościtransferData
, rozmiar dekoracji i przeciągaj lambdaDrawScope
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ądzeniaDragAndDropModifierNode
została zmieniona naonDragAndDropStart
, aby lepiej informować, że podany parametrDragAndDropTarget
jest prawidłowy tylko w danej sesji przeciągania i upuszczaniaDragAndDropEventType
został usunięty (I645b1)Nazwa elementu
PlatformTextInputModifierNode.runTextInputSession
została zmieniona naestablishTextInputSession
. (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 narunTextInputSession
. (Ie9c6b)Elementy podrzędne elementu
SubcomposeLayout
(i układów takich jakLazyColumn
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 APIassertIsDeactivated()
. Pozostałe testowe interfejsy API odfiltrowują domyślnie wyłączone węzły. (I2ef84, b/187188981)Usunięto
FocusDirection.In
iFocusDirection.Out
zamiastFocusDirection.Enter
iFocusDirection.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 konstruktoraFontStyle.Normal
lubFontStyle.Italic
. (I66610)Zmieniono nazwę interfejsu
FontScalable
naFontScaling
(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 jakoeffectContext
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ę lambdaonDrawDragShadow
zmieniono nadrawDragDecoration
, a parametr rozmiaruDragAndDropInfo
zmieniono nadragDecorationSize
. (Id0e30, b/303904810)- Wprowadź
SemanticsNodeInteraction.isDisplayed()
iSemanticsNodeInteraction.isNotDisplayed()
, aby sprawdzić, czy pasujący węzeł jest widoczny czy nie bez uwierzytelniania. (I2c196, b/302100809) - Wprowadziliśmy specjalną wartość
Unspecified
w polachTextAlign
,TextDirection
,Hyphens
iLineBreak
wParagraphTextStyle
, 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 styluTextStyle
i stylu akapitu zostały zaktualizowane, aby akceptowały wymienione parametry jako typy niepuste. (I4197e, b/299490814) - Dodaj przeciążenie
GoogleFont
przy odczytywaniu plikuGoogleFont
z pliku XML. (If8f59) - Zrobił(a) zajęcia
LoremIpsum
PreviewParameterProvider
otwarte. (I41bf5, b/266918816, b/300116360)
Poprawki błędów
FontFamilyResolver
używa terazDispatchers.Main
do zarządzania pamięcią podręczną. (Ie8dd9)AndroidViewBinding
teraz synchronicznie usuwa powiększone wystąpieniaFragment
, dodając do układu elementFragmentContainerView
jako część układuonRelease
(zamiast elementucommit
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 roku
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 modyfikatordragAndDropTarget
do odbierania wiadomości z sesji przeciągania i upuszczania. (Ib7828, b/286038936) - Dodano kolekcje
ColorList
iColorSet
, które pomijają przydziały. (I744bd) - Dodano tymczasową flagę
DisableNonLinearFontScalingInCompose
, aby wyłączyć nieliniowe skalowanie czcionek. UstawDisableNonLinearFontScalingInCompose = 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 zwrotneonRestoreFailed()
(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 kategoriiPreviewScreenSizes
(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
iRecyclerView
, jest ograniczona doViewConfiguration.ScaledMaximumFlingVelocity
. Funkcja Utwórz zawiera teraz własną wersję elementumaximumFlingVelocity
, która obowiązuje teraz w odniesieniu doDraggable
. (Ibf974) - Dodaje początkową strukturę, aby obsługiwać interfejsy API przeciągania i upuszczania platform. (If84ce)
- Dodaj:
deviceId
do grupy reklamRotaryScrollEvent
(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 numersetContent
. (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 ustawieniareadOnly
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
iLocalSoftwareKeyboardController
nie są już eksperymentalne. ElementLocalSoftwareKeyboardController
jest teraz poprawnym elementem typuCompositionLocal
. (I4c364) - Wersje
LookaheadLayout
iLookaheadLayoutScope
zostały wycofane z kilku wersji i teraz usunięte. Zastąpione interfejsy API toLookaheadScope
, 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łudzeAndroidView
będzie teraz opóźnione do czasu podłączenia widoku, a nie do momentu zastosowania kompozycji, która wprowadzaAndroidView
. Naprawiono błąd, przez który wywołanie zwrotneupdate
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 funkcjaLazyList
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 grupyLazyList
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
iFocusRequester.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 elementuFocusTarget
. (I9790e) - Zmieniliśmy nazwy parametrów
fallback*
w konstruktorzeTextMeasurer
nadefault*
. (I940a5) - Nazwa elementu
SemanticsPropertyReceiver.performImeAction
została zmieniona naonImeAction
orazSemanticsActions.PerformImeAction
naOnImeAction
. (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 obiektandroid.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 rzucaniaAssertionError
przy przesunięciach poza zakresem, teraz zwracają metodęIllegalArgumentException
, tak jak robi toMultiParagraph
. (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 roku
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 ustawieniareadOnly
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 wmovableContentOf()
.
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 instancjiandroid.graphics.Paint
podczas tworzenia wiadomości
Poprawki błędów
- Dodano interfejs API
asComposePaint
, aby zastąpićtoComposePaint
, ponieważ zwracany obiekt opakowuje pierwotny obiektandroid.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 poziomuMeasureScope
, 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 przechodzeniuTalkBack
(niższe wartości występują wcześniej). (I9a81b, b/186443263) - Zmiana nazwy właściwości semantycznej
isContainer
naisTraversalGroup
(I121f6) ColorProducer
ma terazoperator fun invoke
zamiastproduce
(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
natoAndroidColorSpace
(I4f547) - Zmień nazwę społeczności
ColorLambda
naColorProducer
. (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 naTextRange.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órceAnnotatedString
można teraz otwierać za pomocą usług ułatwień dostępu takich jakTalkBack
. (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 metodDrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508) - Zmień nazwę społeczności
Font.MaximumAsyncTimeout
naFont.MaximumAsyncTimeoutMillis
. Zmień tylko nazwę. (I07af5) - Zaktualizowane wartości DPI
@Preview
urządzeń referencyjnych (Id6151, b/254528382) - Dodaj parametry
brush
ialpha
do plikuBasicText
, 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 instancjiModifier.Node
z poziomuDelegatingNode
. Można to robić za pomocą interfejsów APIdelegate
iundelegate
. 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 interfejsDelegatingNode
jawnie je zastąpi. (67352bc)
Zmiany w interfejsie API
- Przedstaw
NestedScrollModifierNode
–NestedScroll Modifier.Node
, do którego można delegować uprawnienia. (I69513) - Dodano parametry
onReset
ionRelease
do funkcji kompozycyjnejAndroidViewBinding
, stanowiącą powielanie elementu kompozycyjnegoAndroidView
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 interfejsieLookaheadScope
: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ówSubcomposeLayout
bez przedziałów warunkowych, takich jakScaffold
,TabRow
iBoxWithConstraints
, 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 powiadomienieON_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ącewithFrameNanos
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 ustawieniaincludeFontPadding
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 implementacjiModifier.Node
. (Ic4933) - Obiekt
UrlAnnotation
w komórceAnnotatedString
można teraz otwierać za pomocą usług ułatwień dostępu takich jakTalkBack
. (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 naAndroidView
(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ładModifier.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 funkcjiTalkBack
, gdy skupisz się naandroid.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 jakoStatic(default)
lub animowany. Użyj funkcjiTextMotion.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 parametronReset
. 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 przypadkuLazyRows
iLazyColumns
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
elementuBasicTextField
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
iperformTextSelection
używają terazSemanticsActions
. (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 adresuModifierNodeElement
. (I2256b) - Dodano nowe wywołanie zwrotne
Modifier.Node.onReset()
, które umożliwia zresetowanie stanu lokalnego, by prawidłowo obsługiwać przypadek użycia elementuLayout
(np. jako elementu elementuLazyColumn
). Poprawiono działanieFocusTargetModifierNode
, aby prawidłowo zresetować aktywny stan. (I65495, b/265201972) - Dodano parametr
BlendMode
do metodDrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508)
Poprawki błędów
- 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()
narelease()
(I4667a) - Do interfejsu
ComposeTestRule
dodano eksperymentalne interfejsy API:waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
iwaitUntilDoesNotExist
, co zwiększyło zakres interfejsu APIwaitUntil
o dowolną liczbę dopasowań i dowolną liczbę węzłów. Dalszą dokumentację znajdziesz na stronieComposeTestRule
. (Ifa1b9, b/226934294) - Zmień nazwę społeczności
Font.MaximumAsyncTimeout
naFont.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 funkcjicreate*ComposeRule
, które akceptują parametryCoroutineContext
. Kontekst będzie używany na potrzeby kompozycji testowej oraz wszelkich wywołań funkcjiLaunchedEffect
irememberCoroutineScope()
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 parametrusePlatformDefaultWidth
. (Ic4048) - Dodano funkcję do obliczenia pozycji i stycznego w odległości na ścieżce – z
PathMeasure.getPosition()
iPathMeasure.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 przyjmujeString
jako tekst. (I47b2d, b/242705342) - Interfejsy API
LineBreak
iHyphens
w TextStyle zostały przełączone na wersję stabilną. (Ic1e1d).
Wkład z zewnątrz
- Metody
notifyFocusedRect
wTextInputSession
iTextInputService
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ładModifier.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 funkcjiTalkBack's
, gdy aktywujesz ustawienieandroid.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 jakoStatic(default)
lub animowany. Użyj funkcjiTextMotion.Animated
, jeśli tekst ma być skalowany, przetłumaczony lub obracany w animacji. (I24dd7)
Zmiany w interfejsie API
- Zastąpiono argument
maxSize: IntSize
wdrawText
nasize: Size
, aby był wbudowany z innymi funkcjamiDrawScope
.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 poleisInline
, które wskazuje, czy grupa jest przeznaczona na wywołanie wbudowanej funkcji kompozycyjnej. JeśliisInline
totrue
, 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 elementemvariationSettings
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 elementuScrollable 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 naOffscreen
, aby wskazać, żegraphicsLayer
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 {}
iPerfettoTraceRule
, 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łujewithFrameNanos
lubwithFrameMillis
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 parametronPerformTraversals: (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 elementugraphicsLayer
. Przydaje się to do obliczania transformacjigraphicsLayer
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 formaciegraphicsLayer
. Automatyczne zachowuje działanie domyślne, które wewnętrznie korzysta z warstwy po zastosowaniu wersji alfa lub funkcjiRenderEffect/Overscroll
. Zawsze będzie wprowadzać bufor poza ekranem, dzięki któremuModulateAlpha
unika użycia takiego bufora i zamiast tego będzie modyfikować wszystkie zarejestrowane instrukcje rysowania w plikugraphicsLayer
. Użycie usługiModulateAlpha
nadal będzie korzystać z bufora poza ekranem w przypadku użycia funkcjiRenderEffect/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 interfejsurememberNestedScrollInteropConnection
. 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 implementacjachModifier.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 natywnyandroid.graphics.Paint
. Dodaliśmy też funkcję rozszerzeniatoComposePaint()
, 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
iOutlinedTextField
, 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 funkcjiforEachGesture()
, ale zapętlenie gestów odbywa się tylko w obrębie interfejsuAwaitPointerEventScope
, więc zdarzenia nie są pomijane w kolejnych iteracjach. - Interfejs
forEachGesture()
został wycofany i zastąpiony komponentemawaitEachGesture()
, 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 elementachTextStyle
iSpanStyle
, aby umożliwić rysowanie konspektu. (If24b8, b/155421273) AnnotatedString.Builder
korzysta teraz z implementacjikotlin.text.Appendable
. (I1a061, b/231030444)AnnotatedString.Builder
ma teraz metodęappend(AnnotatedString, start: Int, end: Int)
, która dołącza podłańcuch elementuAnnotatedString
i przecinające się style.- Do funkcji malowania elementów
Paragraph
iMultiParagraph
dodano parametrDrawStyle
, 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 dlaModifier.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ń wersjiwght
iital
. Zamiast tego w przypadku wczytywania elementuTypeface
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 metodyonModifierLocalsUpdated
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
oconstraints: Constraints
w metodzieTextMeasurer.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 komponencieDialog
. (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
iFocusDirection.Out
zostały wycofane i zastąpione przezFocusDirection.Enter
iFocusDirection.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)
iFocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982) - Możesz teraz użyć
FocusRequester.Cancel
, aby anulować przeniesienie zaznaczenia. FunkcjiFocusRequester.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ówFontFamily.Resolver
,Density
aniLayoutDirection
. Aby podać niestandardowe wartości tych parametrów, użyj konstruktoraTextMeasurer
. (Ia1da3)- Dodano właściwość
DialogProperties.decorFitsSystemWindows
, aby umożliwić obsługę okienWindowInsets
. (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
doSlotTree.kt
. Dzięki temu narzędzia mogą pobierać parametry dotyczące elementuCompositionGroup
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
wPlacementScope
. 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 typuLayoutCoordinates
do drugiej. (Ic5ab1, b/238632578) - Wycofano element
SemanticsModifier.id
i przenieśliśmy identyfikator semantyki do jednostki organizacyjnejLayoutInfo.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
iLineHeightStyle
. (I64bef) - Wycofaj:
TextInputService.show|hideSoftwareKeyboard
. Zamiast niego użyjSoftwareKeyboardController
w kodzie aplikacji iTextInputSession
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 uprawnieniaPOST_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ąpieniaTextMeasurer
w kompozycji. (I8d66e) Rect
,RoundRect
iMutableRect
obsługują teraz składnięin
Kotlin na potrzeby wywoływania funkcjicontains
. (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 funkcjepressKeys
,keysDown
ikeysUp
. (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 interfejsuEditCommand
, aby ułatwić rozwiązywanie problemów z edytowaniem tekstu. (I53354, b/228862731) - Dodano funkcję rozszerzenia
drawText
wDrawScope
, aby umożliwić rysowanie wielostylowego tekstu w elementach kompozycyjnych i modyfikatorach, które działają na elementachDrawScope
, takich jakCanvas
idrawBehind
. (I16a62, b/190787898) - Wprowadź nowy, eksperymentalny interfejs API o nazwie
TextMeasurer
, który umożliwia obliczanie dowolnego układu tekstu i generuje identyczne wyniki coBasicText
, niezależnie od środowiska wykonawczego tworzenia wiadomości. (I17101). - Dodaj
mapTree
doSlotTree.kt
. Dzięki temu narzędzia mogą sprawdzać elementSlotTree
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 trackeraVelocity
, 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
iSpanStyle
, aby zmienić przezroczystość całego parametruText
. (Ic2fac, b/234117635) - Wprowadzono typ adnotacji
UrlAnnotation
i powiązane metody, aby umożliwić obsługę linkówTalkBack
wAnnotatedString
. (I1c754, b/231495122) - Przenoszenie funkcji narzędzi do środowiska wykonawczego (I4f729)
Poprawki błędów
TextLayoutResult.getLineForOffset
nie rusza. (Idc5d6, b/235876324)
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
iFocusProperties
- Ulepszone działanie klawiatury fizycznej lub pilota do telewizora
- Przewijanie list leniwego opartych na koncentracji działa teraz przy użyciu nowego podstawowego interfejsu API
Nowe interfejsy API:
- Wstawki w okienku
- Podstawowe elementy podstawowe w animacjach opartych na gestach, nieskończonych i z układem
GraphicsLayer
funkcji, w tymRenderEffect
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 towithKeysDown
,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 wKeyInjectionScope
. (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 pakietufoundation.gesture
do pakietu podstawowego i jego nazwa została zmieniona naLocalOverscrollConfiguration
(If19fb, b/204650733) - Zmień nazwę
runComposeUiTestWithoutActivity {}
narunEmptyComposeUiTest {}
, aby wyrównać ją zcreateEmptyComposeRule()
(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
orazisCapsLockOn
i znajomych do grupyKeyInjectionScope
. 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
obiektuMultiModalInjectionScope
podczas multimodalnego gestu wprowadzania za pomocąperformMultiModalInput
. Dokumentację interfejsu API znajdziesz naKeyInjectionScope
. (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 elementuFontFamily.Resolver
. (I4609d) - Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie powoduje awarii.
- Argumenty konstruktora
DeleteSurroundingTextCommand
iDeleteSurroundingTextInCodePointsCommand
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 naDisposeOnDetachedFromWindowOrReleasedFromPool
, 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 implementacjachLazyList
, 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
orazfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, którego można używać do testowania interfejsu Compose Ui bez potrzeby korzystania zTestRule
. Aby przeprowadzić test bez funkcjiComposeTestRule
, zadaj test jako lambda dorunComposeUiTest
i użyj metod i elementów w zakresie odbiorcyComposeUiTest
, które są takie same jak w metodzieComposeContentTestRule
.Dodawane są
interface AndroidComposeUiTest
ifun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
związane z Androidem, aby zapewniać dostęp do bazowej aktywności, podobnie jakAndroidComposeTestRule
. 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
doComposeUiTest
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
iComposeTestRule
nie wykraczają poza zakresComposeUiTest
, co oznacza, że funkcji rozszerzeń w domenieComposeUiTest
nie można jeszcze wywoływać w interfejsieTestRule
. GdyComposeUiTest
przejdzie na stabilną wersję interfejsu API, wartościComposeContentTestRule
iComposeTestRule
zostaną zmienione na rozszerzenia zComposeUiTest
. (Ib4e90)Nazwa zasobu
LineHeightBehavior
została zmieniona naLineHeightStyle
Nazwa zasobu
LineVerticalAlignment
została zmieniona naLineHeightStyle.Alignment
Zmienia nazwę elementu
LineHeightTrim
naLineHeightStyle.Trim
Domyślne wartości konstruktora z
LineHeightStyle
zostały usunięte (I582bf, b/181155707)Do elementów
TextStyle
iSpanStyle
dodano atrybutBrush
, który umożliwia rysowanie tekstu przy użyciu koloru gradientowego. (I53869, b/187839528)trimFirstLineTop
,trimLastLineBottom
atrybutów obiektuLineHeightBehavior
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
iParagraphStyle
.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, gdyincludeFontPadding
ma wartość fałsz. (I97332, b/181155707)Funkcje
PlatformParagraphStyle.lerp
iPlatformSpanStyle.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ą atrybutuTextStyle.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 wTextField
. (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ą funkcjiisConsumed
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 kopiePointerInputChange
zostaną zużyte. Jeśli chcesz utworzyć niepowiązany obiektPointerInputChange
, 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
interfejsuComposeView
umożliwia programistom wyłączenie korzystania z AndroidaWindowInsets
. Dzięki temu różne elementyComposeViews
w hierarchii mogą stosować do każdego z nichWindowInsets
bez zakłócania siebie. (I0ef08, b/220943142) - Dodano element
KeyboardType.Decimal
jako alternatywę dlaKeyboard.Number
w celu uwzględnienia separatora dziesiętnego w edytorze IME. (Iec4c8, b/209835363) PointerEventType.Scroll
iPointerEvent.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ć wTextStyle(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ę terazFont(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 APIDodano godzinę wydarzenia do wydarzeń RSB (Ief8ae)
FocusOrder
Został scalony wFocusProperties
ifocusProperties()
ma teraz wszystkie możliwościfocusOrder()
. RegułyFocusOrder
ifocusOrder()
zostały wycofane. ParametrfocusOrder()
, który akceptujefocusRequester
, należy zastąpić modyfikatoremfocusRequester()
w połączeniu z wartościąfocusProperties()
. Dzięki temu modyfikatory lepiej rozdzielają potencjalne problemy. (I601b7)Przejście na wyższą wersję
RecyclerView
iCompose
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ślnejDodaj 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ściambientShadowColor
ispotShadowColor
(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 zamiastActionCallback
. (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 interfejsOnPlacedModifier
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łaszaIllegalStateException
, 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
iComposableOpenTarget
, 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
lubReusableComposeNode
, 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 zamiastComposableTarget
. Adnotacja kompozycyjna oznaczona za pomocą atrybutuComposableTargetMarker
jest odpowiednikiemComposbleTarget
z pełną i jednoznaczną nazwą klasy atrybutu jako parametru stosującego. Przykład użycia właściwościComposableTargetMarker
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
naFontFamily.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
wTextInputSession
iTextInputService
zostały wycofane i nie będą wywoływane. Użyj w zamian polaBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Wprowadzono metodę
destroyDisplayListData
w klasie koduRenderNode
(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 wLocalFontFamilyResolver.current
Dodano
createFontFamilyResolver(context)
icreateFontFamilyResolver(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 wersjiTextLayoutResult.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 utworzenieFont.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żyjFontFamilyResolver.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żyjFontFamilyResolver.preload
(If8e7c, b/174162090)Konstruktor
SubcomposeLayoutState
akceptującymaxSlotsToRetainForReuse
jest teraz przestarzały. Zamiast tego dostępny jest nowy konstruktor akceptującySubcomposeSlotReusePolicy
– 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
zwracaState<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()
iModifier.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
- Popraw
NullPointerException
na stronieandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Naprawiono awarię spowodowaną zawartością schowka podczas odczytu ze schowka na Androidzie. (I06020, b/197769306)
- Stały RTL w
LazyVerticalGrid
(aosp/1931080, b/207510535)
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, gdyHardwareRenderer.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 odException
, a nie bezpośrednio zThrowable
. Pamiętaj, że oznacza to, że klauzule typu catch, które przechwytująException
, mogą teraz wychwytywać klauzuleComposeNotIdleException
, 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()
iInjectionScope.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
iMultiModalInjectionScope.Mouse
. Aby wstrzykiwać zdarzenia dotyku i myszy w przypadku gestów multimodalnych, możesz używać teraz zdarzeńMultiModalInjectionScope.touch()
iMultiModalInjectionScope.mouse()
. Oba akceptują one lambda, które ma zakres odbiorcy tej modalności. (Idde18).
Poprawki błędów
- Domyślna wartość
durationMillis
w tabeliTouchInjectionScope.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
zViewRootForInspector
iLayoutInfo.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 elementuLayoutInfo
, 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
.
- Do funkcji
- 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 przezRecomposer.currentState
, aby zmienić jej typ na StateFlow (Ic2ab3, b/197773820) - Dodano użytkowników
flush()
idispose()
do listyInjectionScope
. 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 terazDensity
, co pozwala na łatwą konwersję między px i dp wperformTouchInput
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
ilayoutDirection: LayoutDirection
do listyLayoutInfo
. Dzięki temu użytkownicy taguLayoutInfo
mogą prawidłowo zinterpretować wymiary i pozycję elementów w poluLayoutInfo
. (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ściMouse
obiektuMultiModalInjectionScope
podczas multimodalnego gestu wprowadzania za pomocąperformMultiModalInput
. Dokumentację dostępnego interfejsu API znajdziesz wMouseInjectionScope
. (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
KomponentPointerEventType
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
iGestureScope
, które zostały zastąpione przezperformTouchInput
iTouchInjectionScope
. (Ia5f3f, b/190493367) - Do elementu
SemanticsNode
dodano elementtouchBoundsInRoot
, 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
iTouchInjectionScope
jako zastąpienie rozwiązańperformTouchInput
iTouchInjectionScope
. Przygotowaliśmy dla Ciebie drogę dla innych modalności (takich jak mysz).TouchInjectionScope
używa tych samych metod coGestureScope
z wyjątkiem właściwościmovePointerTo
imovePointerBy
, które zostały zmienione naupdatePointerTo
iupdatePointerBy
. Pozostałe metody są takie same.Działanie
TouchInjectionScope
jest prawie takie samo jakGestureScope
, z 2 drobnymi szczegółami:- Jeśli wyślesz zdarzenie w dół, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia przeniesienia (czyli użyto zdarzenia
updatePointerTo()
, ale niemove()
, a następnie wywołanodown()
), 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. - 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)- Jeśli wyślesz zdarzenie w dół, gdy wskaźniki zostały przeniesione bez wysyłania zdarzenia przeniesienia (czyli użyto zdarzenia
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 Kotlin1.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
ihasScrollToKeyAction
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 moduleandroidx.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 API7.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
iui-tooling-preview
(Iefa28, b/190649014)
Zmiany w interfejsie API
- Usunięto wycofane eksperymentalne wersje
FocusManager#moveFocusIn
iFocusManager#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 domeniePopupProperties
została zmieniona nausePlatformDefaultWidth
. (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 jakrememberLauncherForActivityResult()
zależnych od obecnego właściciela. (Ib13d1, b/185693006) - Funkcja Compose
@Preview
udostępnia teraz obiektLocalOnBackPressedDispatcherOwner
, który umożliwia wyświetlanie podglądu elementów kompozycyjnych, które korzystają z interfejsów API takich jakBackHandler
zależnych od obecnego właściciela. (Ia1c05, b/185693006)
Poprawki błędów
- Przeniesiono
InfiniteAnimationPolicy
doandroidx.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 jakComposeTestRule.mainClock.advanceTimeUntil {}
. W przyszłości prawdopodobnie określisz więcej ograniczeń. (I284fa)
- Nie ma natywnej bitmapy, więc
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 katalogusrc/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 funkcjiadb 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ówH
,S
iP
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 klasaandroidx.compose.runtime.SlotTable
miałaby deskryptor o wartościLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
to podpis metody, który zawiera nazwę, typy parametrów oraz zwracane typy metody. Na przykład metodafun isPlaced(): Boolean
naLayoutNode
ma podpisisPlaced()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 naFocusManager.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 kontaPopupProperties
. (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 komponentModifier.focusTarget()
(I6c860) - Funkcje
Modifier.onSizeChanged()
iModifier.onGloballyPositioned()
nie są już wstawione (I727f6, b/186109675) - Wyliczenie
KeyboardType
zostało zastąpione klasą wbudowaną. (I73045, b/187055290) - Zastąpiono wyliczenie
FocusState
interfejsemFocusState
(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
idetectHorizontalGestures
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
iTextDecoration
w dniuAnnotatedString
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 orazSemanticsProperties.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, iSemanticsNodeInteraction.performScrollToKey
, który przewija listę do elementu o danym kluczu. (I4fe63, b/178483889, b/161584524)
- Dodano element
- 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 tablicyAnnotatedString.Builder
dodano funkcjeaddTtsAnnotation
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)
iFocusManager.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
iaccessibilityActionScrollDown
. 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
ishowSoftwareKeyboard
w systemieSoftwareKeyboardController
nahide()
ishow()
.- 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 elementAndroidViewBinding
jest usuwany z hierarchii tworzenia. (Ib0248, b/179915946)- Teraz
AndroidViewBinding
prawidłowo zagnieżdża fragmenty rozszerzone za pomocąFragmentContainerView
, gdyComposeView
znajduje się w zakresieFragment
, 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
istartY
/endY
do funkcjiswipeUp
/swipeDown
/swipeLeft
/swipeRight
wGestureScope
. (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()
interfejsuComposeRootRegistry
(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 jakButton
iModifier.clickable()
, użyjinteractionSource = 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 terazPair<Float, Color>
SpanStyleRange
to teraz „AnnotatedString.Range”. ParagraphStyleRange
to terazAnnotatedString.Range<ParagraphStyle>
StringAnnotation
to terazAnnotatedString.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ścicompositionLocalOf
istaticCompositionLocalOf
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 zasadyModifier.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 oferujeandroidx.activity:activity-compose:1.3.0-alpha01
. UrządzeniaviewModel()
iLocalViewModelStoreOwner
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 parametrselected
ionClick
. - Zmieniono nazwę parametru
alwaysShowLabels
w elemencie {Down PojawiItem naalwaysShowLabel
. - Zmieniono nazwy parametrów
bodyContent
w kilku komponentach nacontent
. - 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 tabelidarkColors()
. Ten kolor jest zwykle taki sam jak kolorsecondary
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
wSlider
naonValueChangeFinished
i sprawiliśmy, że może ona mieć wartość null. - Zmieniono nazwę parametru
text
wSnackbar
nacontent
, aby zachować spójność. - Dodano parametr
contentPadding
do elementuDropdownMenuItem
, aby umożliwić dostosowanie domyślnego dopełnienia, i ustawiliśmycontent
jako rozszerzenie wRowScope
. - Nazwa elementu
ModalDrawerLayout
została zmieniona naModalDrawer
. - Nazwa elementu
BottomDrawerLayout
została zmieniona naBottomDrawer
. - (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 parametrufocusable
wPopupProperties
(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 jakremember { mutableStateOf(0) }
, usuniemy właściwośćsavedInstanceState { 0 }
. Użyj zamiast niego metodyrememberSaveable { 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 parametrstateSaver
. 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
iwithMutableSnapshot
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życiuComposeTestRule
. (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 zakresComposeTestRule
i określa nazwęsetContent
, która została usunięta zComposeTestRule
. 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ącActivityScenario.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)
- Usunięto element
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ępujeCompositionLifecycleObserver
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, funkcjaonRemembered
jest wywoływana dla każdego odwołania, w którym elementonEnter
jest wywoływany tylko raz. ObiektonEnter
został wywołany wiele razy, jeśli był używany w kompozycjach podrzędnych, takich jakWithConstraints
iScaffold
, przez co pojedyncze wywołanieonEnter
było niewiarygodne i został usunięty dlaRememberObserver
.RememberObserver
dodaje elementonAbandoned
, który jest wywoływany, jeśli instancjaRememberObserver
jest zwracana z wywołania zwrotnego przekazanego doremember
, ale nie została zapamiętana w stanie kompozycji, dlatego nigdy nie będzie wywoływanaonRemembered
. 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 instancjaRememberObserver
zgodnie z powyższym zaleceniem referencyjnym śledzi zasób zewnętrzny, zarównoonForgotten
, jak ionAbandoned
oznacza, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte zadania lub zasoby przydzielone wonRemembered
, elementonAbandoned
może zostać zignorowany, ponieważ nie zostanie wywołany po wywołaniu funkcjionRemembered
. (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)
iitemsIndexed(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)
iitemsIndexed(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>
zamiastT
. 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 nainsertTopDown()
.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()
lubinsertBottomUp()
.W przypadku niektórych drzew, np.
LayoutNode
iView
, 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 elementinsertTopDown()
– 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 naModifier.alpha
- Zmieniono nazwę
Modifier.drawShadow
naModifier.shadow
(I264ca, b/173208140)
- Nazwa
- 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
orazpivotFractionY
jakocomponent1
icomponent2
(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 docontent
, 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
doandroidx.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
nalayoutId
dla kontaLayoutIdParentData
. Zmieniono nazwę etykietyMeasurable.id
naMeasurable.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()
natypeface()
(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
napaddingFrom
. Dodano modyfikatorpaddingFromBaseline
, 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ściModifier.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 metodyPointerInputFilter.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
iAnnotatedString.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 tabeliPointerInputFilter.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ć parametruPointerInputFilter.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()
zOwner
--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
iAndroidInputDispatcher
zandroidx.ui.test.android
doandroidx.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 zasadyAndroidView
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 przezFocusState
(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
iOnChildPositionedModifier
. W układzie podrzędnym deweloperzy powinni używaćonPositioned
iOnPositionedModifier
. (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 tablicySemanticsPropertyKey
. 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 naPlacementScope.place()
, a poprzednia nazwa „PlacementScope.place()
” – „PlacementScope.placeRelative()
”. W rezultacie metodaPlacementScope.place()
nie będzie już automatycznie powielać pozycji w kontekstach od prawej do lewej. Jeśli chcesz, użyj zasadyPlacementScope.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 funkcjiremember { mutableStateOf(...) }
, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem i dopasowywane do wzorcaby 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
iColumn
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).
- Usuń nieużywany interfejs OffsetBase
- wyrównaj klasy Offset i IntOffset, aby uzyskać spójną powierzchnię interfejsu API,
- Zmień nazwę IntOffset.Origin na IntOffset.Zero, aby zachować spójność z interfejsem Offset API
- Przeniesienie metody natywnejCanvas z interfejsu Canvas w celu umożliwienia konsumentom tworzenia własnych instancji Canvas
- Utworzono klasę EmptyCanvas w celu refaktoryzacji DrawScope na parametr niepusty zamiast lateinit i zapewnił brak wartości null w polu
- Zmieniono nazwy wyliczenia ClipOp na Pascal Case
- Zmieniono nazwy wyliczeń filtra Quality Quality na Pascal Case
- Zmiana nazw wyliczeń StrokeJoin na Pascal Case
- Zmieniono nazwy wyliczeń PointMode na wielkość liter Pascal
- Zmieniono nazwy wyliczeń w PaintingStyle na Pascal Case
- Zmieniono nazwy wyliczeń PathFillType na Pascal
- Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
- Zaktualizowano implementację DrawCache, aby nie używać już parametrów latinit
- Zaktualizowano DrawScope, aby nie używać już leniwego przekazywania w parametrach wewnętrznych fillPaint i fingerPaint
- Zaktualizowano obraz kompozycyjny, aby uniknąć użycia Box i zminimalizować koszty
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano PathNode, dodając do każdej instrukcji ścieżki @Stałe adnotacje
- Zaktualizowana podkompozycja wektorowa zawiera zbędne kontrole warunkowe pod kątem równości, ponieważ są one już obsługiwane
- Wycofaliśmy metody konstruktorów towarzyszących prostokątne na rzecz konstruktorów funkcji,
- Zaktualizowanie klas pędzla i konstruktorów funkcji za pomocą interfejsów API @Immutable i @Stable
- Zmieniono wyliczenie VertexMode na PascalCase
- Zaktualizowano metodę DrawScope selectPaint, aby warunkowo zastępować parametry kreski na obrazie, jeśli ulegną one zmianie
- 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 zasadySemanticsNodeInteraction.performGesture
. (Id9b62). - Zmieniono nazwę etykiety
LazyColumnItems
naLazyColumnFor
. NazwaLazyRowItems
została zmieniona naLazyRowFor
(I84f84) - Pakiet
foundation.shape.corner
został spłaszczony dofoundation.share
(I46491, b/161887429) - Nazwa elementu
AndroidComposeTestRule
została zmieniona nacreateAndroidComposeRule
. (I70aaf) - Do aplikacji
TextLayoutResult
dodano więcej interfejsów API. (Id7e04). - Nazwa materiału
FilledTextField
została zmieniona naTextField
, a podstawowyTextField
toBaseTextField
, 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ń
- Ruch
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)
-
- 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 narunOnIdle
(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:
- Niektóre połączenia będą pomijane tam, gdzie wcześniej nie były.
- Wyrażenia kompozycyjne w domyślnych wyrażeniach argumentów są teraz prawidłowo subskrybowane i obsługiwane
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 wersjivararg
. 5. Adnotacja Pivotal została wycofana. Użyj w zamiankey
. 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).