WindowManager
Najnowsza aktualizacja | Wersja stabilna | Kandydat do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
29 maja 2024 r. | 1.3.0 | - | - | - |
Deklarowanie zależności
Aby dodać zależność od WindowManagera, 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.window:window:1.3.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.3.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.3.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.3.0" // For testing implementation "androidx.window:window-testing:1.3.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.3.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.3.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.3.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.3.0") // For testing implementation("androidx.window:window-testing:1.3.0") }
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.3
Wersja 1.3.0
29 maja 2024 r.
Aplikacja androidx.window:window-*:1.3.0
została zwolniona. Wersja 1.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.2.0
- Wieloplatformowa obsługa klas rozmiaru okna Kotlin.
Wersja 1.3.0-rc01
14 maja 2024 r.
WindowManager
Jetpack 1.3 zapewnia obsługę wieloplatformową Kotlin w przypadku funkcji WindowSizeClass
oraz wiele poprawek błędów.
Aplikacja androidx.window:window-*:1.3.0-rc01
została zwolniona. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Wersja 1.3.0-beta02
1 maja 2024 r.
Aplikacja androidx.window:window-*:1.3.0-beta02
została zwolniona. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wyłącz obsługę tworzenia i używania niestandardowych elementów
WindowSizeClass
. (Id1143).
Poprawki błędów
- Poprawki
KotlinReflectionInternalError
związane z usunięciem przez usługę ProPard niektórych plików w niektórych implementacjach na urządzeniach. (I01b02)
Wersja 1.3.0-beta01
3 kwietnia 2024 r.
Aplikacja androidx.window:window-*:1.3.0-beta01
została zwolniona. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Wersja 1.3.0-alfa03
6 marca 2024 roku
Aplikacja androidx.window:window-*:1.3.0-alpha03
została zwolniona. Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Podziel
WindowSizeClassUtil
na bardziej precyzyjne metody. (Ie9292) - Przywróć
WindowSizeClass#compute
(I21355, b/324293374)
Poprawki błędów
- Naprawia awarię, w wyniku której podany kontekst nie był prawidłowo wyodrębniony. (94d10ce , b/318787482)
Wersja 1.3.0-alfa02
7 lutego 2024 r.
Aplikacja androidx.window:window-*:1.3.0-alpha02
została zwolniona. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Zmiany w interfejsie API interfejsu Window size Class API, które mają na celu zwiększenie elastyczności dla deweloperów, którzy chcą używać własnych klas rozmiarów.
Zmiany w interfejsie API
- Dodaj ograniczenia wysokości do selektora szerokości. (I23393)
- Dodaj funkcje narzędziowe umożliwiające wybranie urządzenia
WindowSizeClass
z zestawu. Dodanie eksperymentalnych funkcji punktacji, aby programiści mogli tworzyć własne selektory. Dodaj funkcję rozszerzenia selektora, aby wybrać najszerszyWindowSizeClass
w podanym zakresie. (I0c944) - Otwórz konstruktor
WindowSizeClass
, aby móc dodawać niestandardowe punkty przerwania. (Ic1ff3) - Dodaj funkcję ułatwiającą tworzenie klasy rozmiaru na podstawie szerokości, wysokości i gęstości. (If67f4)
Poprawki błędów
- Napraw wyjątek, który polega na obcięciu wartości zmiennoprzecinkowej do 0. (272ffac)
Wersja 1.3.0-alfa01
15 listopada 2023 r.
Aplikacja androidx.window:window-*:1.3.0-alpha01
została zwolniona. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Udostępnij eksperymentalne interfejsy API okien, aby uzyskać dostęp do tylnego ekranu.
- Testowe interfejsy API do tworzenia
FoldingFeature
są teraz stabilne. - Testowe interfejsy API do konfigurowania fałszywych wartości
ActivityEmbedding
są teraz stabilne. WindowLayoutInfoPublisherRule
zgłasza teraz zastąpienie podczas uzyskiwania wartości zUiContext
.WindowInfoTracker
przekazuje dane cech składanych do parametrówUiContext
.- Udostępnij wersję rozszerzenia na urządzeniu.
WindowProperties
stałej wartości zastąpienia użytkownika na aplikację:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
– informuje system, że aplikacja wyłączyła zastępowanie zgodności formatu obrazu użytkownika.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
– informuje system, że aplikacja zrezygnowała z opcji pełnego ekranu w ustawieniach zastępowania współczynnika zgodności obrazu użytkownika.
Wersja 1.2
Wersja 1.2.0
15 listopada 2023 r.
Aplikacja androidx.window:window-*:1.2.0
została zwolniona. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
- Udostępnij eksperymentalne interfejsy API okien, aby uzyskać dostęp do tylnego ekranu.
- Testowe interfejsy API do tworzenia
FoldingFeature
są teraz stabilne. - Testowe interfejsy API do konfigurowania fałszywych wartości
ActivityEmbedding
są teraz stabilne. WindowLayoutInfoPublisherRule
zgłasza teraz zastąpienie podczas uzyskiwania wartości zUiContext
.WindowInfoTracker
przekazuje dane cech składanych do parametrówUiContext
.- Udostępnij wersję rozszerzenia na urządzeniu.
Wersja 1.2.0-rc01
1 listopada 2023 roku
Aplikacja androidx.window:window-*:1.2.0-rc01
została zwolniona. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Udostępnij eksperymentalne interfejsy API okien, aby uzyskać dostęp do tylnego ekranu.
- Testowe interfejsy API do tworzenia
FoldingFeature
są teraz stabilne. - Testowe interfejsy API do konfigurowania fałszywych wartości
ActivityEmbedding
są teraz stabilne. WindowLayoutInfoPublisherRule
zgłasza teraz zastąpienie podczas uzyskiwania wartości zUiContext
.WindowInfoTracker
przekazuje dane cech składanych do parametrówUiContext
.- Udostępnij wersję rozszerzenia na urządzeniu.
Wersja 1.2.0-beta04
18 października 2023 r.
Aplikacja androidx.window:window-*:1.2.0-beta04
została zwolniona. Wersja 1.2.0-beta04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usuń niestabilne interfejsy API. (Ibc534, b/302380585)
Wersja 1.2.0-beta03
20 września 2023 r.
Aplikacja androidx.window:window-*:1.2.0-beta03
została zwolniona. Wersja 1.2.0-beta03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaj testy
RequiresApi
pod kątem interfejsów API, które do prawidłowego działania wymagają konkretnej wersji rozszerzeń. - Dodaj interfejs API, aby udostępnić wersję rozszerzeń na urządzeniu.
Zmiany w interfejsie API
- Dodaj adnotację do wymaganej wersji rozszerzenia okna SDK w publicznych interfejsach API.
- Usuń element
isXXXSupported
z komponentu Umieszczanie aktywności. (Ie3dae)
- Usuń element
- Wprowadź
WindowSdkExtensions
, aby zgłosić wersję rozszerzenia na urządzeniu.- Wprowadź
RequiresWindowSdkExtension
, aby dodać adnotację do minimalnej wymaganej wersji rozszerzenia. (I05fd4)
- Wprowadź
- Sprawia, że
WindowAreaInfo#getCapability
nie może być wartością null. (I17048)
Wersja 1.2.0-beta01
26 lipca 2023 r.
Aplikacja androidx.window:window-*:1.2.0-beta01
została zwolniona. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Udostępnij eksperymentalne interfejsy API okien, aby uzyskać dostęp do tylnego ekranu.
- Testowe interfejsy API do tworzenia
FoldingFeature
są teraz stabilne. - Testowe interfejsy API do konfigurowania fałszywych wartości
ActivityEmbedding
są teraz stabilne. WindowLayoutInfoPublisherRule
zgłasza teraz zastąpienie podczas uzyskiwania wartości zUiContext
.WindowInfoTracker
przekazuje dane cech składanych do parametrówUiContext
.
Zmiany w interfejsie API
- Oznacza interfejs API
WindowArea
jako eksperymentalny, aby umożliwić kontynuowanie zmian w interfejsie API w wersji stabilnej 1.3 (I857f5) - Zaktualizowano pliki interfejsu API, aby dodać adnotacje do pomijania zgodności (I8e87a, b/287516207)
Wersja 1.2.0-alfa03
21 czerwca 2023 r.
Aplikacja androidx.window:window-*:1.2.0-alpha03
została zwolniona. Wersja 1.2.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Usunięcie wycofanych interfejsów API z platformy API.
- Dodaj interfejsy API umożliwiające obsługę równoczesnych wyświetlaczy.
- Dodaj właściwość, aby zrezygnować z wymuszonego zastąpienia rozmiaru.
- Dodaj właściwość, aby zrezygnować z zastępowania minimalnego współczynnika proporcji.
- Ustabilizuj ustawienie
ActivityEmbeddingRule
, aby umożliwić testowanie jednostkowe umieszczania aktywności w witrynie.
Zmiany w interfejsie API
Poprawki błędów
- Dodanie właściwości rezygnacji z kompatybilności do zastępowania wymuszania zmiany rozmiaru (Ie7ab1)
- Usuwa język
SESSION_STATE_CONTENT_INVISIBLE
z interfejsu rozszerzeń. (I6ed19) - Ustabilizuj
ActivityEmbeddingRule
, aby umożliwić testowanie jednostkowe umieszczania aktywności. (I8d6b6) - Dodano właściwość kompatybilności z możliwością rezygnacji dla zastąpienia minimalnego współczynnika proporcji. (I66390)
- Usuwa wycofane interfejsy API WindowArea (Ieb67c)
- Zmień nazwę właściwości pętli żądania orientacji na
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
. (Ie2fbd) - Aktualizuje nazwy stałych sesji w obszarze okna (I83675)
- Dodanie właściwości zgodnej z rezygnacją użytkownika, która ignoruje pętlę żądania orientacji, gdy zostanie wykryta (I0a7a2)
- Dodaj
WindowAreaComponent#STATUS_ACTIVE
, aby wskazać, że funkcja jest już aktywna. (I62bc3) - Dodawanie interfejsów API
RearDisplayPresentationMode
(I0401c) - Aby zapewnić stabilność, usuń interfejs API kolorów tła. (I34c3e)
- Ukryj interfejsy Window Area API. (I39de0)
- Dodaj metody, aby zastąpić
SplitInfo
w tabeliSplitController
. Dodaj metody testowe, aby utworzyć typ zmiennoprzecinkowySplitInfo
iActivityStack
. (Icd69f) - Ustaw tag jako opcjonalny dla
ActivityRule.Builder
. (Ib0b44) - Usuń
RatioSplitType
,ExpandContainersSplit
iHingeSplitType
. To terazSplitType
.- Zastąp
#splitEqually()
,#expandContainers()
i#splitByHinge
stałąSplitType SPLIT_TYPE_EQUAL
,SPLIT_TYPE_EXPAND
iSPLIT_TYPE_HINGE
- Usuń funkcję, aby ustawić zastępczy typ podziału zawiasów. Jeśli nie można zastosować typu podziału zawiasów ze względu na bieżący stan urządzenia lub okna, zostanie użyta opcja zastępczego podziału nadrzędnego kontenera zadań po równo. Aby dostosować typ podziału awaryjnego, użyj opcji
SplitController#setSplitAttributesCalculator
. (Ifcc59)
- Zastąp
- Wycofaj
add
/removeSplitCallback
- Przenieś
add
/removeSplitCallback
do folderuSplitControllerCallbackAdapter
- Dodaj obsługę języka
Flow
, aby uzyskać listęSplitInfo
(I7f1b6)
- Przenieś
- Dodaj regułę testową dla:
ActivityEmbeddingController
(I42e9b) - Zmieniam nazwę
ActivityOptionsCompat
naActivityEmbeddingOptions
(I89301) - Dodaj atrybut
splitSupportStatus
, aby wskazać, czy umieszczanie aktywności jest dostępne. (I10024). - Wprowadź
SplitAttributes.BackgroundColor
, aby lepiej odzwierciedlić wartośćDEFAULT
. Wyjaśnić, że nieprzezroczysty kolor tła animacji nie jest obsługiwany – wszystkie nieprzezroczyste kolory będą traktowane jako domyślne, co oznacza, że używany jest bieżący kolor tła okna motywu. (Ic6b95) - Zastąp
alwaysAllow()
ialwaysDisallow()
elementamiALWAYS_ALLOW
iALWAYS_DISALLOW
. (I3057b) - Dodaj interfejsy API dla:
SplitRule
,SplitAttributes
,SplitAttributesCalculator
. (I92d23) - Dodaj
TestActivityStack
, aby utworzyćActivityStack
na potrzeby testów- Dodaj
TestSplitInfo
, aby utworzyćSplitInfo
na potrzeby testów. (I8e779)
- Dodaj
- Dodaj sposób tworzenia fałszywego elementu
SplitAttributesCalculatorParams
, aby deweloperzy mogli zweryfikować niestandardowe elementy w domenieSplitAttributesCalculator
(Id4a6e) - Dodaj
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)
iWindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)
(I66c7f)
Wersja 1.2.0-alfa02
7 czerwca 2023 r.
Aplikacja androidx.window:window-*:1.2.0-alpha02
została zwolniona. Wersja 1.2.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizuj interfejs API, aby mieć stałą dla nieokreślonych funkcji zwijania.
- Zastąpienie właściwości
WindowLayoutInfoPublishRule
spowoduje zastąpienie wszystkich wartości parametruwindowLayoutInfo
, w tym interfejsu API zależnego od kontekstu.
Zmiany w interfejsie API
- Dodaj stałą dla nieokreślonej funkcji zwijania środkowego. (I7530c)
Poprawki błędów
- Zaktualizuj
WindowLayoutInfoPublishRule
, aby obsługiwać zastąpienia w systemieContext
na podstawieWindowLayoutInfo
. (I2037a)
Wersja 1.2.0-alfa01
24 maja 2023 r.
Aplikacja androidx.window:window-*:1.2.0-alpha01
została zwolniona. Wersja 1.2.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Ustabilizuj interfejsy API do testowania w zakresie umieszczania aktywności i WindowLayoutInfoTracker
. Gra ActivityEmbeddingRule
została zmieniona na wersję stabilną.
Gra WindowMetricsCalculatorRule
została zmieniona na wersję stabilną.
Funkcje narzędziowe do tworzenia funkcji FoldingFeature
na potrzeby testów zostały przekształcone w stabilne.
Zmiany w interfejsie API
- Ustabilizuj
ActivityEmbeddingRule
, aby umożliwić testowanie jednostkowe umieszczania aktywności. (I8d6b6) WindowMetrisCalculatorTestRule
jest stabilny, co pozwala na wykorzystanie wskaźników wycinków w testach JVM. Aby uzyskać dokładne wyniki, zalecamy użycie emulatora.- Ustabilizuj testowe interfejsy API dla usługi
WindowLayoutInfo
, aby obsługiwały testy JVM. (Ie036e). - Aby przetestować wartości funkcji zwijania, dodaj
IntRange
. (I69f7d)
Wersja 1.1
Wersja 1.1.0
7 czerwca 2023 r.
Aplikacja androidx.window:window-*:1.1.0
została zwolniona. Wersja 1.1.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.0.0
Umieszczanie aktywności
- W pliku manifestu aplikacji dodano właściwość
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
jako właściwość wartości logicznej tagu<application>
. - Wycofano atrybut
isSplitSupported
i zastąpiono go funkcjąsplitSupportStatus
, aby podać bardziej szczegółowe informacje o tym, dlaczego podział funkcji jest niedostępny. - Dodano zagnieżdżoną klasę
SplitController.SplitSupportStatus
, aby określić stałe stanowe właściwościsplitSupportStatus
. - Element
SplitController
został zrefaktoryzowany w kilku modułach:- Moduł
ActivityEmbeddingController
dla interfejsów APIActivity
lubActivityStack
. - Element
isActivityEmbedded
został przeniesiony zSplitController
doActivityEmbeddingController
. - Moduł
RuleController
naEmbeddingRule
powiązanych operacji: - Usunięto
SplitController
interfejsów API: clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- Dodano
RuleController
interfejsów API: addRule()
– dodaje regułę lub aktualizuje regułę zawierającą ten sam tag.removeRule()
– usuwa regułę ze zbioru zarejestrowanych reguł.setRules()
– określa zbiór reguł.clearRules()
– usuwa wszystkie zarejestrowane reguły.parseRules()
– analizuje reguły na podstawie definicji reguł XML.
- Moduł
- Wszystkie moduły wymagają kontekstu do zainicjowania za pomocą metody
#getInstance()
, w tym:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- Dodano klasę
EmbeddingAspectRatio
do definiowania stałych zachowań typu enum związanych ze współczynnikiem proporcji wyświetlacza. - Dodano klasę
SplitAttributes
w celu zdefiniowania układu podziału. - W interfejsie
SplitController
dodano funkcje kalkulatora (SplitAttributes
), aby dostosować układy podziału:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
, aby sprawdzić, czy urządzenie obsługuje interfejsy APISplitAttributesCalculator
- Dodano pole
EmbeddingRule#tag
. - Aktualizacje interfejsów API w
SplitRule
:- Dodano
defaultSplitAttributes
– określa domyślny układ podziału; zastępujesplitRatio
ilayoutDirection
. - Do języka
defaultSplitAttributes
dodano tłumaczenie właściwości XMLsplitRatio
isplitLayoutDirection
. - Zmieniliśmy definicje minimalnych wymiarów, aby zamiast pikseli używać pikseli niezależnych od gęstości (dp).
- Dodano
minHeightDp
o wartości domyślnej 600 dp. - Zmieniono
minWidth
naminWidthDp
. Wartość domyślna to 600 dp. - Zmieniono
minSmallestWidth
naminSmallestWidthDp
. Wartość domyślna to 600 dp. - Dodano element
maxAspectRatioInHorizontal
o wartości domyślnejALWAYS_ALLOW
. - Dodano
maxAspectRatioInPortrait
z wartością domyślną 1,4. - Zdefiniowano zagnieżdżoną klasę
FinishBehavior
, która zastąpi stałe zachowania zakończenia. - Zastosowano zmiany właściwości do zagnieżdżonej klasy konstruktora
SplitPairRule
iSplitPlaceholderRule
.
- Dodano
- Tekst
SplitInfo#getSplitRatio()
zastąpiono wartościąSplitInfo#getSplitAttributes()
, aby podać dodatkowe informacje dotyczące podziału.
Układ okna
- W interfejsie
WindowInfoTracker
dodano eksperymentalną obsługę kontekstu nieaktywności interfejsu użytkownika. - Do interfejsu
WindowMetricsCalculator
dodano eksperymentalny kontekst nieaktywności interfejsu.
Etapy migracji
- Aby włączyć umieszczanie aktywności w częściach, aplikacje muszą dodać do tagu
<application>
pliku manifestu właściwośćPROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
Pozwala to systemowi z wyprzedzeniem zoptymalizować sposób podziału w przypadku aplikacji. - Współczynnik:
SplitInfo
- Sprawdź, czy bieżący podział jest skumulowany:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- Sprawdź bieżący format obrazu:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- Sprawdź, czy bieżący podział jest skumulowany:
- Migracje ze SplitController:
SplitController.getInstance()
zmienia się w:SplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
zmienia się w:RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
zmienia się w:ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
zmienia się w:RuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
zmienia się w:RuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
zmienia się w:RuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
zmienia się w:RuleController.getInstance(Context).getRules()
.
- Migracje usługi
SplitRule
:minWidth
iminSmallestWidth
używają teraz jednostek dp zamiast pikseli. Aplikacje mogą używać tego wywołania:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
lub po prostu podzielićminWith
w pikselach przezdisplayMetrics#density
.
- Stałe zachowania zakończenia muszą zostać przeniesione do stałych klasy typu wyliczeniowego
FinishBehavior
:FINISH_NEVER
zmienia się w:FinishBehavior.NEVER
.FINISH_ALWAYS
zmienia się w:FinishBehavior.ALWAYS
.FINISH_ADJACENT
zmienia się w:FinishBehavior.ADJACENT
.
- Kierunek układu należy przenieść na
SplitAttributes.LayoutDirection
:ltr
zmienia się w:SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
zmienia się w:SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
zmienia się w:SplitAttributes.LayoutDirection.LOCALE
.- Konto
splitRatio
należy przenieść doSplitAttributes.SplitType.ratio(splitRatio)
.
- Migracje (
SplitPairRule.Builder
):SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
zmiany w:kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
isetSplitRatio(ratio)
zmieniają się w:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
isetFinishSecondaryWithPrimary
przyjmują stałe podobne do enumFinishBehavior
. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.- Użyj
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, aby pokazać podziały na urządzeniach pionowo.
- Migracje (
SplitPlaceholder.Builder
):- Ma tylko parametry
filters
iplaceholderIntent
. Pozostałe właściwości są przenoszone do ustawiania. Więcej informacji znajdziesz w sekcji „SplitSparujRule.Builder”. - Funkcja
setFinishPrimaryWithPlaceholder
przyjmuje stałe podobne do wyliczeniowejFinishBehavior
. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”. setLayoutDirection(layoutDirection)
isetSplitRatio(ratio)
zmieniają się na:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- Użyj
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, aby pokazać podziały na urządzeniach pionowo.
- Ma tylko parametry
Wersja 1.1.0-rc01
10 maja 2023 r.
Aplikacja androidx.window:window-*:1.1.0-rc01
została zwolniona. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Wersja
ActivityEmbedding
jako stabilna wersja API. - Naprawiono różne błędy.
Wersja 1.1.0-beta02
5 kwietnia 2023 r.
Aplikacja androidx.window:window-*:1.1.0-beta02
została zwolniona. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- Poprawki wewnętrzne i czyszczenie danych.
Wersja 1.1.0-beta01
22 marca 2023 r.
Aplikacja androidx.window:window-*:1.1.0-beta01
została zwolniona. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.
Umieszczanie aktywności
- W pliku manifestu aplikacji dodano właściwość
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
jako właściwość wartości logicznej tagu<application>
. - Wycofano atrybut
isSplitSupported
i zastąpiono go funkcjąsplitSupportStatus
, aby podać bardziej szczegółowe informacje o tym, dlaczego podział funkcji jest niedostępny. - Dodano zagnieżdżoną klasę
SplitController.SplitSupportStatus
, aby określić stałe stanowe właściwościsplitSupportStatus
. - Element
SplitController
został zrefaktoryzowany w kilku modułach:- Moduł
ActivityEmbeddingController
dla interfejsów APIActivity
lubActivityStack
. - Element
isActivityEmbedded
został przeniesiony zSplitController
doActivityEmbeddingController
. - Moduł
RuleController
naEmbeddingRule
powiązanych operacji: - Usunięto interfejsy API
SplitController
:clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- Dodano interfejsy API (
RuleController
):addRule()
– dodaje regułę lub aktualizuje regułę zawierającą ten sam tag.removeRule()
– usuwa regułę ze zbioru zarejestrowanych reguł.setRules()
– określa zbiór reguł.clearRules()
– usuwa wszystkie zarejestrowane reguły.- `parseRules() – analizuje reguły z definicji reguł XML.
- Moduł
- Wszystkie moduły wymagają kontekstu do zainicjowania za pomocą metody
#getInstance()
, w tym:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- Dodano klasę
EmbeddingAspectRatio
do definiowania stałych zachowań typu enum związanych ze współczynnikiem proporcji wyświetlacza. - Dodano klasę
SplitAttributes
w celu zdefiniowania układu podziału. - W interfejsie
SplitController
dodano funkcje kalkulatora (SplitAttributes
), aby dostosować układy podziału:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
, aby sprawdzić, czy urządzenie obsługuje interfejsy SplitAttributesCalculator API
- Dodano pole
EmbeddingRule#tag
. - Aktualizacje interfejsów API w
SplitRule
:- Dodano
defaultSplitAttributes
– określa domyślny układ podziału; zastępujesplitRatio
ilayoutDirection
. - Do języka
defaultSplitAttributes
dodano tłumaczenie właściwości XMLsplitRatio
isplitLayoutDirection
. - Zmieniliśmy definicje minimalnych wymiarów, aby zamiast pikseli używać pikseli niezależnych od gęstości (dp).
- Dodano
minHeightDp
o wartości domyślnej 600 dp. - Zmieniono
minWidth
naminWidthDp
. Wartość domyślna to 600 dp. - Zmieniono
minSmallestWidth
naminSmallestWidthDp
. Wartość domyślna to 600 dp. - Dodano element
maxAspectRatioInHorizontal
o wartości domyślnejALWAYS_ALLOW
. - Dodano element
maxAspectRatioInPortrait
o wartości domyślnej1.4
. - Zdefiniowano zagnieżdżoną klasę
FinishBehavior
, która zastąpi stałe zachowania zakończenia. - Zastosowano zmiany właściwości do zagnieżdżonej klasy
Builder
SplitPairRule
iSplitPlaceholderRule
.
- Dodano
- Tekst
SplitInfo#getSplitRatio()
zastąpiono wartościąSplitInfo#getSplitAttributes()
, aby podać dodatkowe informacje dotyczące podziału.
Układ okna
- W interfejsie
WindowInfoTracker
dodano obsługę kontekstu nieaktywności interfejsu użytkownika. - Do elementu
WindowMetricsCalculator
dodano kontekst nieaktywności interfejsu użytkownika.
Etapy migracji
- Aby włączyć umieszczanie aktywności w częściach, aplikacje muszą dodać do tagu
<application>
pliku manifestu właściwośćPROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
Pozwala to systemowi z wyprzedzeniem zoptymalizować sposób podziału w przypadku aplikacji. - Współczynnik:
SplitInfo
- Sprawdź, czy bieżący podział jest skumulowany:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- Sprawdź bieżący format obrazu:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- Sprawdź, czy bieżący podział jest skumulowany:
- Migracje (
SplitController
):SplitController.getInstance()
zmienia się w:SplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
zmieni się w:RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
zmienia się w:ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
zmienia się w:RuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
zmienia się w:RuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
zmienia się w:RuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
zmienia się w:RuleController.getInstance(Context).getRules()
.
- Migracje usługi
SplitRule
:minWidth
iminSmallestWidth
używają teraz jednostek dp zamiast pikseli. Aplikacje mogą używać tego wywołania:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
lub po prostu podzielićminWith
w pikselach przezdisplayMetrics#density
.
- Stałe zachowania zakończenia muszą zostać przeniesione do stałych klasy typu wyliczeniowego
FinishBehavior
:FINISH_NEVER
zmienia się w:FinishBehavior.NEVER
.FINISH_ALWAYS
zmienia się w:FinishBehavior.ALWAYS
.FINISH_ADJACENT
zmienia się w:FinishBehavior.ADJACENT
.
- Kierunek układu należy przenieść na
SplitAttributes.LayoutDirection
:ltr
zmienia się w:SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
zmienia się w:SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
zmienia się w:SplitAttributes.LayoutDirection.LOCALE
.- Konto
splitRatio
należy przenieść doSplitAttributes.SplitType.ratio(splitRatio)
.
- Migracje (
SplitPairRule.Builder
):SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
zmiany w:kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
isetSplitRatio(ratio)
zmieniają się nakotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
isetFinishSecondaryWithPrimary
przyjmują stałe podobne do enumFinishBehavior
. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.- Użyj
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, aby pokazać podziały na urządzeniach pionowo.
- Migracje (
SplitPlaceholder.Builder
):- Ma tylko parametry
filters
iplaceholderIntent
. Pozostałe właściwości są przenoszone do ustawiania. Więcej informacji znajdziesz w sekcji „SplitSparujRule.Builder”. - Funkcja
setFinishPrimaryWithPlaceholder
przyjmuje stałe podobne do wyliczeniowejFinishBehavior
. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”. setLayoutDirection(layoutDirection)
isetSplitRatio(ratio)
zmieniają się na:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- Użyj
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, aby pokazać podziały na urządzeniach pionowo.
- Ma tylko parametry
Wersja 1.1.0-alfa06
22 lutego 2023 roku
Aplikacja androidx.window:window-*:1.1.0-alpha06
została zwolniona. Wersja 1.1.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Udostępnij eksperymentalną wersję pobierania
WindowLayoutInfo
z kontekstu interfejsu.
Zmiany w interfejsie API
- Dodaj atrybut
splitSupportStatus
, aby wskazać, czy umieszczanie aktywności jest dostępne. (I10024). - Ustaw interfejs API
WindowLayoutInfo
kontekstu jako eksperyment. (I58ee0) - Wprowadza funkcje
WindowAreaController
i interfejsy API umożliwiające włączenie trybuRearDisplay
w celu przeniesienia bieżącego okna do wyświetlacza dopasowanego do tylnego aparatu. (Iffcbf) - Zaktualizuj domyślny kolor tła. (I1ac1b)
- Dodaj
SplitAttributes
parametrów. (I18bdd) - Dodaj interfejsy API dla:
SplitRule
,SplitAttributes
,SplitAttributesCalculator
. (I92d23) - Ulepsz interfejsy API w okolicy
maxAspectRatio
:- Zastąp
alwaysAllow()
ialwaysDisallow()
elementamiALWAYS_ALLOW
iALWAYS_DISALLOW
. - Zaktualizuj dokumentację interfejsu API dotyczącą @see za pomocą samodzielnej dokumentacji. (I3057b)
- Zastąp
- Poniższe konstruktory zostały usunięte z publicznych interfejsów API, ponieważ nie powinny być wywoływane przez aplikacje.
- Konstruktor
SplitInfo
- Konstruktor
ActivityStack
(Ide534)
- Konstruktor
SplitRule
ma terazmaxAspectRatioInPortrait/Landscape
. Zezwala na dzielenie działań tylko wtedy, gdy współczynnik proporcji na poziomie nadrzędnym jest mniejszy lub równy żądanej wartościmaxAspectRatio
. (Ia5990)- Zmień
RuleController#parseRules
na statyczny (I785df) - Usprawnienie interfejsów API w obszarze ActivityEmbedding
- Dopasuj nazwy interfejsów API – użyj funkcji add/remove w przypadku wielu instancji:
registerRule
zmiany w elemencieaddRule
unregisterRule
zmiany w elemencieremoveRule
- Zastąp
getSplitRules
wartościągetRules
, ponieważActivityRule
nie jest regułą podziału - Dodaj zasadę
RuleController#setRules
, aby ustawić kilka reguł - Wyodrębnij interfejsy API związane z regułą z
SplitController
do singletonuRuleController
. Oto oni: addRule
removeRule
getRules
setRules
clearRules
parseRules
- Wyodrębnij
#isActivityEmbedded
z zakresuSplitController
do singletonuActivityEmbeddingController
. Oto oni: isActivityEmbedded
- Usuń
SplitController#initialize
. Aby ustawić reguły z pliku XML, użyj elementówRuleController#parseRules
i#setRules
. Przed tą zmianą:SplitController.initialize(context, R.xml.static_rules)
Po tej zmianie:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
- Nie rozróżniamy już reguł statycznych od reguł środowiska wykonawczego. Wywołanie metody
#clearRules
w celu wyczyszczenia wszystkich reguł niezależnie od tego, czy są one zarejestrowane ze statycznymi definicjami reguł XML czy w czasie działania. Aby zachować starsze działanieSplitController#clearRegisteredRules
, wywołaj metodęRuleController#parseRules
z identyfikatorem zasobów XML i wywołajRuleController#setRules
, aby ponownie ustawić reguły. Przed tą zmianą:SplitController.getInstance(context).clearRegisteredRules()
Po tej zmianie:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
(Ib3967)
- Ulepsz interfejsy SplitRule API:
- Dla parametru
SplitRule
ustaw minimalne wymiary w DP zamiast pikseli. - Zrefaktoryzuj konstruktor
SplitRule
, aby przyjąć minimalne wymiary jako opcjonalne. (I95f17)
- Dla parametru
- Przekazywanie kontekstu, by zainicjować
SplitController
(I42549) - Nazwa elementu
SplitRule#layoutDir
została zmieniona na#layoutDirection
orazSplitRule Builder#setLayoutDir
naBuilder#setLayoutDirection
. (I3f6d1)
Wersja 1.1.0-alfa04
9 listopada 2022 r.
Aplikacja androidx.window:window-*:1.1.0-alpha04
została zwolniona. Wersja 1.1.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Udostępnij metodę, aby sprawdzić, czy element
ActivityStack
jest pusty dlaActivityEmbedding
. - Usunięto eksperymentalne tagi interfejsu API z interfejsów API
ActivityEmbedding
. - Ukryj konstruktor
ActivityRule
, ponieważBuilder
jest preferowanym sposobem konstruowania. - Dodaj metodę eksperymentalną, aby uzyskać
WindowInsets
naWindowMetrics
. - Zaktualizuj pole
SplitPlaceholderFinishBehavior
, aby nie dopuścić do zakończenia działania symbolu zastępczego. Zakończenie obsługi symbolu zastępczego powodowało pewne zamieszanie.
Zmiany w interfejsie API
- Zmień wartość
isEmpty
na publiczną, aby zastąpić niąisEmpty
. - Zmień nazwę aktywności parametru
ActivityStack
naactivitiesInProcess
. (Ia5055) - Usuń te zasady:
ActivityFilter#matchesClassName
iActivityFilter#matchesClassNameOrWildCard
, ponieważ są mylące. - Dodaj
ActivityFilter#componentName
abdActivityFilter#intentAction
, aby umożliwić rozmówcy rozróżnianie różnych filtrów (I41f22) - Usuń interfejsy API
@Deprecated
z eksperymentalnego interfejsu API (I216b3) - Usuwanie elementu
@ExperimentalWindowApi
z interfejsów API do umieszczania aktywności (I69ebe) - Ukryj konstruktor
ActivityRule
, zamiast tego użyj konstruktora. (If4eb6) - Dodaj interfejsy API, aby sprawdzić, czy aktywność jest częścią zasobu
ActivityFilter
. (Ia43cf) - Zaktualizuj pliki interfejsu API, aby uwzględnić zmiany w klasach
WindowMetrics
iWindowMetricsCalculatorCompat
(I667fe) - Zaktualizuj dokument Javadoc właściwości
ActivityEmbedding
i nazwę klasy (Ia1386) - Dodaję nazwy tagów właściwości
ActivityEmbedding
, które będą używane w pliku AndroidManifest.xml (Id1ad4) - Dodano nowe interfejsy API
SplitPlaceholderFinishBehavior
iSplitPlaceholderRule.finishPrimaryWithPlaceholder
. Zastąpiły one istniejący elementSplitPlaceholderRule.finishPrimaryWithSecondary
, który określa, kiedy działania tymczasowe kończą się, i jak powinny zachowywać się powiązane aktywności w Osawaniu aktywności. (I64647)
Poprawki błędów
- Wprowadza funkcje
WindowAreaController
i interfejsy API umożliwiające włączenie trybuRearDisplay
w celu przeniesienia bieżącego okna do wyświetlacza dopasowanego do tylnego aparatu. (I388ab)
Wersja 1.1.0-alfa03
27 lipca 2022 roku
Aplikacja androidx.window:window-*:1.1.0-alpha03
została zwolniona. Wersja 1.1.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizuj wartości domyślne reguł umieszczania.
Zmiany w interfejsie API
- Zaktualizuj wartości domyślne właściwości reguły umieszczania. (Ic4d35)
Wersja 1.1.0-alfa02
11 maja 2022 roku
Aplikacja androidx.window:window-*:1.1.0-alpha02
została zwolniona. Wersja 1.1.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Opublikuj biblioteki adaptacyjne, aby obsługiwać języki Java i RxJava.
Wersja 1.1.0-alfa01
11 maja 2022 roku
Aplikacja androidx.window:window-*:1.1.0-alpha01
została zwolniona. Wersja 1.1.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Adaptery wersji obsługujące Javę i RxJava
Wersja 1.1.0-alfa01
20 kwietnia 2022 r.
Aplikacja androidx.window:window:1.1.0-alpha01
została zwolniona. Wersja 1.1.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Naprawiono błąd, który powodował, że aplikacja w tle przestała wysyłać funkcje składane.
- Rozwiń eksperymentalny interfejs ActivityEmbedding API.
Zmiany w interfejsie API
- Publiczny interfejs API służący do sprawdzania, czy aktywność jest osadzona. (I39eb7)
Poprawki błędów
- Dodawanie interfejsów API, które dostosowują zakończenie działania kontenerów w podziałach aktywności (I1a1e4)
- Dodaliśmy nową opcję konfiguracji reguł podziału aktywności. (Iec6af)
Wersja 1.0
Wersja 1.0.0
26 stycznia 2022 r.
Aplikacja androidx.window:window-*:1.0.0
została zwolniona. Wersja 1.0.0 zawiera te zatwierdzenia.
Główne funkcje wersji 1.0.0
- Obsługa składanych telefonów na urządzeniach
WindowInfoTracker
iFoldingFeature
.WindowMetricsCalculator
, aby łatwiej obliczyć bieżące wartości WindowMetrics.
Wersja 1.0.0-rc01
15 grudnia 2021 roku
Aplikacja androidx.window:window-*:1.0.0-rc01
została zwolniona. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaj obsługę składanych telefonów do
WindowInfoTracker
. - Dodaj metody, aby obliczyć aktualną i maksymalną wartość
WindowMetrics
. - Dodaj testowe interfejsy API.
Wersja 1.0.0-beta04
17 listopada 2021 r.
Aplikacja androidx.window:window-*:1.0.0-beta04
została zwolniona. Wersja 1.0.0-beta04 zawiera te zatwierdzenia.
Nowe funkcje
- Zmieniono nazwę WindowInfoRepository na WindowInfoTracker.
- Ustaw aktywność jako jawną zależność metody z WindowInfoTracker.
- Dodaj prostą regułę testową dla narzędzia WindowMetricsCalculator, aby wspomóc programistów korzystających z Robolectrica.
Zmiany w interfejsie API
- Wyodrębnianie rozszerzeń (I25a5f)
- add isEmpty w ActivityStack (I5a4e6)
- Zmieniono nazwę WindowInfoRepository na WindowInfoTracker.
- Zaktualizuj zależności java/rxjava/testing, aby były zgodne. (I0da63)
- Dodać regułę testową dla prostego narzędzia WindowMetricsCalculator. (Ibacdb)
Wersja 1.0.0-beta03
27 października 2021 roku
Aplikacja androidx.window:window-*:1.0.0-beta03
została zwolniona. Wersja 1.0.0-beta03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano eksperymentalne interfejsy API do umieszczania aktywności. Ten początkowy układ umożliwia wyświetlanie 2 aktywności obok siebie.
Zmiany w interfejsie API
- Usunięto interfejs currentWindowMetrics API, ponieważ nie możemy go dokładnie podać. Użyj interfejsu WindowMetricsCalculator (Icda5f).
- Zaktualizowano interfejs API rozszerzeń. (Ica92b)
- Dodaliśmy interfejs nowej funkcji, która umożliwia umieszczanie działań i wyświetlanie ich obok siebie w nadrzędnym oknie zadań. (I5711d)
- Ukryto konstruktory WindowMetrics i WindowUkładInfo. Użyj testowych interfejsów API. (I5a1b5)
- Dodanie interfejsu API w celu tworzenia fałszywych obiektów WindowUkładInfo. (I4a2fd).
Poprawki błędów
- Usunięto wyciek pamięci. (I3fc79, b/202989046)
Wersja 1.0.0-beta02
1 września 2021 roku
Aplikacja androidx.window:window-*:1.0.0-beta02
została zwolniona. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaj eksperymentalną adnotację, aby dodać adnotacje do eksperymentalnych interfejsów API. (I9f1b6)
- Dodaj metodę testową, aby utworzyć testową funkcję FoldingFeature, która akceptuje obiekt Rect. Ułatwi to przeprowadzanie testów z wykorzystaniem Robolectric zamiast rzeczywistego działania. (Id1cca)
Wersja 1.0.0-beta01
18 sierpnia 2021 r.
Aplikacja androidx.window:window-*:1.0.0-beta01
została zwolniona. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Usunięto stare stałe i przekształciliśmy je w interfejs
FoldingFeature
.
Zmiany w interfejsie API
- Usuń stare stałe i ustaw FoldFeature jako interfejs. (I9a2d5)
Poprawki błędów
- Biblioteki korzystające z biblioteki
Test Core
zostały uaktualnione do wersji1.4.0
i będą teraz działać z platformą Androida w wersji S. (I88b72, b/189353863)
Wersja 1.0.0-alfa10
4 sierpnia 2021 r.
Aplikacja androidx.window:window-*:1.0.0-alpha10
została zwolniona. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.
Nowe funkcje
- Zmień nazwę WindowInfoRepo na WindowInfoRepository i dostosuj odpowiednie klasy / pliki.
- Przekonwertuj bieżące wskaźniki dotyczące okien na przepływ w WindowInfoRepository, ponieważ wartość zmienia się z czasem.
- Zmień nazwę elementu WindowInfoRepoJavaAdapter na WindowInfoRepoCallbackAdapter
- Dodaj metodę pomocniczą do tworzenia testowych obiektów FoldingFeature
- Aktualizuj pakiety o klasy grupowe w zależności od obsługiwanych funkcji.
Zmiany w interfejsie API
- Zmiana nazwy ActivityExt na ActivityExtension Zmiana z repozytorium na repozytorium. (I61a16)
- Aktualizowanie pakietów zajęć. (I23ae2)
- Usuwanie WindowMetrics z WindowInfoRepo (I24663)
- Usuń narzędzie WindowManager i użyj WindowInfoRepo.
- Ustaw WindowBackend jako wewnętrzny. (I06d9a)
- Przekonwertuj dane dotyczące okna na przepływ.
- Zmień nazwę adaptera Java na WindowInfoRepoCallbackAdapter
- Usuń metodę wywołania zwrotnego, aby nie używać więcej eksperymentalnych interfejsów API. (Ia4d15)
- Dodaj metodę pomocniczą, aby utworzyć testowe funkcje wyświetlania.
- Zmień z occlusionMode na occlusionType (If4cff)
Poprawki błędów
- Naprawiono błąd ProParda, który powodował usunięcie biblioteki podstawowej.
- Naprawiono błąd, który powodował, że element WindowUkładInfo nie był dostarczany do dodatkowych subskrybentów.
- Naprawiono błąd, który powodował, że zmiany konfiguracji nie uruchamiały aktualizacji funkcji składanych.
Wersja 1.0.0-alfa09
30 czerwca 2021 r.
Aplikacja androidx.window:window-*:1.0.0-alpha09
została zwolniona. Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.
Nowe funkcje
- Zmień ze stałych liczb całkowitych na nieograniczone wyliczenia.
- Dodaj narzędzie testowe, aby utworzyć testowe funkcje zwijania.
Zmiany w interfejsie API
- Dodaj metodę pomocniczą, aby utworzyć testowe funkcje wyświetlania. (I3cf54)
- Zmień z
occlusionMode
naocclusionType
.
- Zmień z
Poprawki błędów
- Generuj wartość początkową podczas dodawania wielu konsumentów strumieni danych.
Wersja 1.0.0-alfa08
16 czerwca 2021 r.
Aplikacja androidx.window:window-*:1.0.0-alpha08
została zwolniona. Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
- Udostępniliśmy artefakt testowania, aby ułatwić testowanie przy użyciu WindowInfoRepository. Użyj WindowInfoRepository, aby uzyskać informacje o funkcjach DisplayFeatures i WindowMetrics. (I57f66, Ida620)
Wersja 1.0.0-alfa07
2 czerwca 2021 r.
Aplikacja androidx.window:window-*:1.0.0-alpha07
została zwolniona. Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.
Nowe funkcje
- Przeprowadź migrację podstawowej biblioteki okien do Kotlin. Zostanie wykorzystywana korutyny i funkcje zawieszania, aby od tej pory udostępniać dane asynchroniczne.
- Dodaj WindowInfoRepo jako główny punkt interakcji dla pobierania WindowMetrics i strumienia WindowUkładInfo.
- Nowy artefakt
window-java
udostępniający interfejsy API w języku Java do rejestrowania i wyrejestrowywania wywołań zwrotnych. - Nowe artefakty
window-rxjava2
iwindow-rxjava3
udostępniające dostosowane interfejsy API RxJava.
Zmiany w interfejsie API
- Dodaj
WindowServices
, aby jednolicie określić zależności.- Dodaj interfejs API oparty na współużytkowaniu, aby pobierać informacje o układzie okna (Iab70f)
- Przeprowadź migrację podstawowej biblioteki menedżera okien do Kotlin. (Icca34)
Poprawki błędów
- Dodaj nową klasę danych, aby reprezentować granice cech. (I6dcd1)
Wersja 1.0.0-alfa06
5 maja 2021 roku
Aplikacja androidx.window:window:1.0.0-alpha06
została zwolniona. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Rozpoczęliśmy migrację do Kotlin i zakończymy ją w następnej wersji.
- Interfejs DeviceState został usunięty z publicznego interfejsu API. Zamiast niego użyj funkcji FoldingFeature.
- Usunęliśmy element
STATE_FLIPPED
ze stanów FoldingFeature, ponieważ nie jest obecnie obsługiwany w żadnym przypadku użycia. - Usunęliśmy też inne wycofane interfejsy API.
Zmiany w interfejsie API
- Dodaję Kotlin jako zależność.
- Przeprowadź migrację podstawowej biblioteki do Kotlin. (Idd995)
- Usunięto konstruktora
DisplayFeature
. (I61fa4) - Usunięto interfejs
DeviceState
z publicznego interfejsu API. Użyj interfejsuFoldingFeature
. (Id6079). - Usuń z rozszerzeń wywołanie zwrotne stanu urządzenia. (I5ea83)
- Usuń
STATE_FLIPPED
z funkcji składania. (I9c4e1). - Usuń wycofane metody rejestracji. (Ib381b)
Wersja 1.0.0-alfa05
24 marca 2021 r.
Aplikacja androidx.window:window:1.0.0-alpha05
została zwolniona. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
W funkcji FoldingFeature dodaliśmy wygodne metody, dzięki którym aplikacje mogą określić, czy dany element go rozdziela, zasłania i określa orientację zawiasu. Ukrywamy również typ zawiasu, aby
Usuwamy synchroniczne metody odczytu z narzędzia WindowManager. Synchroniczne metody odczytu są podatne na błędy, ponieważ istnieją niejawne warunki dotyczące rasy. Zarejestruj detektory i wywołania zwrotne, aby otrzymywać aktualizacje dotyczące WindowUkładInfo.
Zmiany w interfejsie API
- Dodawanie wygodnych metod pracy z funkcjami FoldingFeatures (Ie733f)
- Usuwa synchroniczne metody odczytu z programu WindowManager (I96fd4)
Wersja 1.0.0-alfa04
10 marca 2021 r.
Aplikacja androidx.window:window:1.0.0-alpha04
została zwolniona. Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Naprawiono błąd, który powodował, że element WindowUkładInfo nie pojawiał się z powodu braku implementacji OEM. Teraz emitujemy pustą wartość WIndowUkładInfo.
- Naprawiliśmy błąd, który powodował, że stan nie był aktualizowany prawidłowo, jeśli stan zawiasu zmienił się, gdy aplikacja działała w tle. Teraz stan powinien być spójny.
- Zaktualizuj pliki Progryard tak, aby ignorowały ostrzeżenia dotyczące zależności środowiska wykonawczego.
Poprawki błędów
- Jeśli brakuje biblioteki OEM, użyj pustej wartości. (Ide935)
Wersja 1.0.0-alfa03
18 lutego 2021 r.
Aplikacja androidx.window:window:1.0.0-alpha03
została zwolniona. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Gdy implementacja OEM jest pusta, parametr WindowLayoutInfo może wyświetlać pustą wartość. Powinno to ułatwić korzystanie z biblioteki na większej liczbie urządzeń. Ponieważ interfejsy API są asynchroniczne, zalecamy, aby aplikacje zapisywały kod defensywny i generowały wartość domyślną po upływie limitu czasu oczekiwania. Nie udzielamy żadnych gwarancji dotyczących implementacji OEM, a wartość początkowa może być opóźniona.
Poprawki błędów
- Jeśli brakuje biblioteki OEM, użyj pustej wartości. (Ide935)
Wersja 1.0.0-alfa02
27 stycznia 2021 r.
Aplikacja androidx.window:window:1.0.0-alpha02
została zwolniona. Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
Wycofaliśmy niektóre interfejsy API, aby uprościć interfejs API i zmniejszyć liczbę błędów. Można na przykład usunąć synchroniczne operacje odczytu z Menedżera Windowsa i wycofać funkcję DeviceState. Synchroniczne operacje odczytu mogą prowadzić do problemów z wyścigiem i mieć nieprawidłowy interfejs użytkownika.
Przekonwertowaliśmy DisplayFeature na interfejs, który w przyszłości będą implementowane w innych funkcjach. Pierwszą funkcją jest funkcja składana, która przedstawia teraz złożenie ekranu lub zawias. Zawiera on też stan zawiasu zastępującego DeviceState.
Została ona wprowadzona w Androidzie 11, aby zapewnić deweloperom prosty sposób na wysyłanie zapytań o dane dotyczące okna, na przykład jego pozycję i rozmiar na ekranie oraz dowolne wstawki systemowe. W tej wersji wprowadziliśmy wsteczny interfejs API, aby deweloperzy mogli korzystać z interfejsu WindowMetrics i nadal obsługiwać starsze wersje Androida. Wskaźniki WindowMetrics można uzyskać za pomocą interfejsów API
WindowManager#getCurrentWindowMetrics()
i WindowManager#getmaximumWindowMetrics().
Zmiany w interfejsie API
- Wycofywanie interfejsów API, które zostaną usunięte w następnej wersji alfa (Ib7cc4)
- Aktualizuje
ExtensionInterface
, tak aby akceptował konkretne pliki referencyjne aktywności. (I07ded) - Wprowadzenie interfejsu WindowMetrics API. (I3ccee)
- Usuń synchroniczne metody odczytu z programu WindowManager (I69983)
- Zabezpiecz pakiet ExtensionWindowBackend. (Ied208)
Poprawki błędów
- Zaktualizuj interfejsy API
ExtensionInterface
, aby akceptowały kontekst wizualny. (I8e827)
Wkład z zewnątrz
- Scal obiekty DeviceState i WindowUkładInfo, by ułatwić dostęp do danych. (Id34f4).
Wersja 1.0.0-alfa01
27 lutego 2020 r.
Zwolniono androidx.window:window:1.0.0-alpha01
i androidx.window:window-extensions:1.0.0-alpha01
. Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.
To jest pierwsza wersja biblioteki Menedżera okien.
Nowe funkcje
DisplayFeature
: ten nowy interfejs API wykrywa zakłócenia na ciągłych, płaskich powierzchniach, takich jak zawiasy czy zagięcia.DeviceState
: ten nowy interfejs API podaje bieżący stan telefonu z listy zdefiniowanych pozycji (np.CLOSED
,OPENED
,HALF_OPENED
itp.).