WindowManager
Ostatnia aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
16 października 2024 r. | 1.3.0 | - | - | 1.4.0-alpha05 |
Deklarowanie zależności
Aby dodać zależność od WindowManager, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy Google.
Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle
aplikacji lub modułu:
Odlotowe
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ć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.4
Wersja 1.4.0-alpha05
16 października 2024 r.
androidx.window:window-*:1.4.0-alpha05
został zwolniony. Wersja 1.4.0-alpha05 zawiera te komisy.
Nowe funkcje
- Dodaj funkcje ułatwiające dostęp do funkcji
widthDp
iheightDp
zWindowMetrics
.
Zmiany w interfejsie API
- Dodaj
widthDp
iheightDp
doWindowMetrics
. (Ide026) - Usunięcie eksperymentalnego interfejsu API
WindowInsets
. (I68a71) - Zmień nazwy metody sprawdzania ograniczeń na
isAtLeast
(Ib0ab7)
Wersja 1.4.0-alpha04
2 października 2024 r.
androidx.window:window-*:1.4.0-alpha04
został zwolniony. Wersja 1.4.0-alpha04 zawiera te komisy.
Zmiany w interfejsie API
- Dodano metodę obliczania
WindowSizeClass
zWindowMetrics
. (874dba) - Aby zachować przejrzystość, zmień metody
WindowSizeClass
nacontainsWidthDp
,containsHeightDp
icontainsWindowSizeDp
. (fa760d) - Przekształć
WindowAreaController
w abstrakcyjną klasę bazową. (I90893)
Poprawki błędów
- Dodanie obsługi względnych ograniczeń podczas tworzenia testu
FoldingFeature
. (2e6b3e) - Ogólne poprawki błędów podczas wybierania
WindowSizeClass
.
Wersja 1.4.0-alpha03
18 września 2024 r.
androidx.window:window-*:1.4.0-alpha03
został zwolniony. Wersja 1.4.0-alpha03 zawiera te komity.
Nowe funkcje
- Dodaj metodę pomocniczą, aby uzyskać
WindowSizeClass
zWindowMetrics
. (I83f1f) - Zmień nazwę
isAtLeast
nacontainsBreakpoint
. (I85b47) - Dodaj przeciążenie do
computeWindowSizeClass
za pomocą liczb zmiennoprzecinkowych. (I3dcb2, b/364677934, b/364677802, b/364680886)
Poprawki błędów
- Dodaj brakujące punkty przerwania do domyślnego zestawu punktów przerwania
WindowSizeClass
. - Naprawiono błąd polegający na tym, że w niektórych przypadkach wymiary kompaktowe nie były prawidłowo wybierane.
Wersja 1.4.0-alpha02
4 września 2024 r.
androidx.window:window-*:1.4.0-alpha02
został zwolniony. Wersja 1.4.0-alpha02 zawiera te komity.
Nowe funkcje
Dodaliśmy obsługę niestandardowych wartości właściwości WindowSizeClass
.
- Otwórz konstruktor klasy
WindowSizeClass
, aby deweloperzy mogli używać własnych. - Dodaj metody pomocnicze
isAtLeast
, aby programiści mogli przetwarzać różne wartościWindowSizeClass
. - Dodaj funkcję rozszerzenia do
Set<WindowSizeClass>
, aby obliczyć najlepsze dopasowanie z kolei. - Dodaj stałe dla zalecanych punktów przerwania na Androidzie.
- Dodaj zestaw punktów przerwania odpowiadający zalecanym punktom przerwania na Androidzie.
Zmiany w interfejsie API
- Zaktualizuj nazwy metody ograniczeń
WindowSizeClass
. (If89a6) - Zaktualizuj interfejs API
WindowSizeClass
, aby umożliwić dodawanie nowych wartości punktów przecięcia w przyszłości. Zamiast wartości bezwzględnych używamy wartości dolnej. Zalecamy też, aby deweloperzy podczas przetwarzaniaWindowSizeClass
używali sprawdzania wartości dolnej. Istniejące wersjeWindowWidthSizeClass
iWindowHeightSizeClass
zostaną wycofane, ponieważ nie będą dalej rozwijane. (I014ce)
Wersja 1.4.0-alpha01
7 sierpnia 2024 r.
androidx.window:window-*:1.4.0-alpha01
został zwolniony. Wersja 1.4.0-alpha01 zawiera te komity.
Nowe funkcje
- Przypinanie elementów na stosie aktywności pozwala aplikacjom przypinać treści w jednym kontenerze i izolatować nawigację od innego kontenera.
- Interaktywny separator umożliwia aplikacjom wyświetlanie stałego lub przeciąganego separatora między 2 aktywnościami w ramach podzielonej prezentacji.
- Zaciemnianie okna dialogowego na pełnym ekranie pozwala aplikacjom określić obszar zaciemnienia okna, aby zaciemnić całe okno zadania lub tylko kontener, który wyświetla okno dialogowe.
- Zwrotny wywołanie z informacjami o wbudowanym oknie aktywności umożliwia aplikacjom ciągłe otrzymywanie aktualizacji wbudowanego okna aktywności.
- Wstawianie tła animacji pozwala aplikacjom określać tło animacji, co poprawia jakość animacji przejścia podczas używania
ActivityEmbedding
. - Ulepszony system zarządzania stosem aktywności umożliwia aplikacjom większą kontrolę nad
ActivityStacks
podczas korzystania zActivityEmbedding
, w tym: - uruchamianie aktywności w określonym
ActivityStack
. - Kończę
ActivityStack
Zmiany w interfejsie API
Nowy interfejs API
WindowInfoTracker#supportedPostures
:- Interfejs API do określania, czy urządzenie obsługuje tryb stołu dla składanych urządzeń. Dodaje WindowAreaSessionPresenter#getWindow
Dodaj interfejsy API, które obsługują przypinanie
ActivityStack
:- Zajęcia:
SplitPinRule
SplitController#pinTopActivityStack
SplitController#unpinTopActivityStack
- Zajęcia:
Dodawanie interfejsów API, aby włączyć i skonfigurować interaktywny podział
- Zajęcia:
DividerAttributes
SplitAttributes.Builder#setDividerAttributes
- Zajęcia:
Dodaj interfejsy API, aby ustawić
EmbeddingConfiguration
iDimAreaBehavior
dla dialogów- Zajęcia:
EmbeddingConfiguration
- Zajęcia:
DimAreaBehavior
ActivityEmbeddingController#setEmbeddingConfiguration
- Zajęcia:
Dodawanie interfejsów API, aby otrzymywać informacje o oknie aktywności w ramach wbudowanych aktualizacji
- Zajęcia:
EmbeddedActivityWindowInfo
ActivityEmbeddingController#embeddedActivityWindowInfo
- Zajęcia:
Dodawanie interfejsów API do ustawiania tła animacji do wklejania
EmbeddingAnimationBackground
SplitAttributes.Builder#setAnimationBackground
Dodaj interfejsy API, aby zakończyć
ActivityStacks
ActivityEmbeddingController#finishActivityStacks
Dodawanie interfejsów API do zestawu
ActivityStack
ActivityEmbeddingOptions#setLaunchingActivityStack
Te interfejsy API są stabilne i nie są już eksperymentalne:
ActivityEmbeddingController#invalidateVisibleActivityStacks
(przeniesiony z SplitController#invalidateTopVisibleSplitAttributes)ActivityEmbeddingController#getActivityStack
SplitController#updateSplitAttributes
Dodaj interfejsy API dla wersji 1.4. (I56774)
Poprawki błędów
- Naprawia błąd na niektórych urządzeniach, na których zwracana była wartość UNAVAILABLE (NIEDOSTĘPNY) zamiast ACTIVE (AKTYWNY), gdy sesja była aktywna.
- Usunięcie obsługi
transferActivityToWindowArea
na urządzeniach z wersjąvendorApiLevel
2 ze względu na niestabilną obsługę interfejsu API. - Wprowadzenie interfejsu API, który umożliwia przeciąganie do pełnego ekranu w przypadku przeciąganego separatora w ramach funkcji osadzania aktywności. (I645c9)
- Zezwalanie aplikacjom na wyłączanie animacji
ActivityEmbedding
za pomocą parametrów animacji w przypadkuSplitAttributes
. (Idc01a) - Usunięto ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API, gdy korzystasz z R8 z AGP 7.3 lub nowszej wersji (np. R8 w wersji 3.3) oraz we wszystkich wersjach kompilacji, gdy korzystasz z AGP 8.1 lub nowszej wersji (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)
- Zezwalanie rozszerzeniom na używanie parametrów animacji w przypadku
SplitAttributes
, aby urządzenie mogło ich używać do przejść animacji. (Iede00) - Ukrywanie interfejsów API nakładek (Ic4251)
- Wprowadzenie interfejsów API do konfigurowania stałego lub przeciąganego separatora podziału (Ia7a78)
- Dodano gęstość do
WindowMetrics
(Id6723) - Dodaj interfejs API, aby uzyskać
SupportedPostures
. (If557a) - Usuń
setLaunchingActivityStack
z eksperymentalnego interfejsu API (I191cf) - Wprowadzanie
ActivityEmbeddingController#embeddedActivityWindowInfo
(I24312) - Wycofanie narzędzia
#getToken
i dodanie narzędzia#getActivityStackToken
(Ie0471) - Wprowadzenie adaptera wywołania zwrotnego dla interfejsu API
embeddedActivityWindowInfo
(Ida77f) - Dodawanie adaptera wywołania zwrotnego dla interfejsu API przepływu overlayInfo (I7264f)
- Wprowadź
WindowSdkExtensionsRule
, aby zastąpićextensionsVersion
na potrzeby testowania. (Ifb928) - – Przeniesienie
#setLaunchingActivityStack
do pakietu w celu zapewnienia zgodności z użyciemActivityOptionsCompat
.- Użytkownicy powinni przekazywać wartość
activityOptions.toBundle
zamiast samej wartościActvityOptions
. - Usuń
#setLaunchingActivityStack(Activity)
. Użytkownicy powinni przejść na korzystanie zActivityEmbeddingController#getActivityStac(Activity)
, aby uzyskaćActivityStack
, i przekazaćActivityStack
do#setLaunchingActivityStack
. (Ie0ccc)
- Użytkownicy powinni przekazywać wartość
- – Wprowadź
ActivityStack.Token
iSpltInfo.Token
jako identyfikator do komunikacji między WM Jetpack i rozszerzeniami.- Wycofaj lub zastąp interfejsy API, aby przyjmowały lub zwracały token zamiast IBinder. (I12b24)
- – Przedstaw
ActivityEmbeddingController#invalidateVisibleActivityStacks
- Usuń
SplitController#invalidateTopVisibleSplitAttributes
, ponieważ ta funkcja została scalona z#invalidateVisibleActivityStacks
(I02ef5).
- Usuń
- – dodawanie interfejsu API do konfiguracji umieszczania. (I59a4a)
- – dodawanie i usuwanie z przypiętej pozycji interfejsów API
ActivityStack
androidx.Window
- Aktualizacja aplikacji demonstracyjnej w celu umożliwienia przypinania i odpinania górnej części
ActivityStack
(I24dd3)
- Aktualizacja aplikacji demonstracyjnej w celu umożliwienia przypinania i odpinania górnej części
- Ponownie dodaj
#finishActivityStacks
iActivityEmbeddingOptions
(Ic1ab3) - Usuń niestabilne interfejsy API. (Ibc534, b/302380585)
Wersja 1.3
Wersja 1.3.0
29 maja 2024 r.
androidx.window:window-*:1.3.0
został zwolniony. Wersja 1.3.0 zawiera te komity.
Ważne zmiany od wersji 1.2.0
- Obsługa Kotlin Multiplatform w klasach rozmiarów okien.
Wersja 1.3.0-rc01
14 maja 2024 r.
WindowManager
Jetpack 1.3 wprowadza obsługę funkcji WindowSizeClass
w Kotlin Multiplatform oraz wiele poprawek błędów.
androidx.window:window-*:1.3.0-rc01
został zwolniony. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Wersja 1.3.0-beta02
1 maja 2024 r.
androidx.window:window-*:1.3.0-beta02
został zwolniony. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięcie obsługi tworzenia i używania niestandardowych
WindowSizeClass
. (Id1143)
Poprawki błędów
- Poprawki
KotlinReflectionInternalError
spowodowane usunięciem niektórych plików przez ProGuarda w przypadku niektórych implementacji urządzeń. (I01b02)
Wersja 1.3.0-beta01
3 kwietnia 2024 r.
androidx.window:window-*:1.3.0-beta01
został zwolniony. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Wersja 1.3.0-alpha03
6 marca 2024 roku
androidx.window:window-*:1.3.0-alpha03
został zwolniony. Wersja 1.3.0-alpha03 zawiera te komity.
Zmiany w interfejsie API
- Podziel
WindowSizeClassUtil
na bardziej ukierunkowane metody. (Ie9292) - Przywracanie zajęć
WindowSizeClass#compute
(I21355, b/324293374)
Poprawki błędów
- Rozwiązaliśmy problem z zawieszaniem się aplikacji, który występował, gdy podany kontekst nie był prawidłowo rozpakowywany. (94d10ce , b/318787482)
Wersja 1.3.0-alpha02
7 lutego 2024 r.
androidx.window:window-*:1.3.0-alpha02
został zwolniony. Wersja 1.3.0-alpha02 zawiera te commity.
Nowe funkcje
- Aktualizacje interfejsu API klasy rozmiaru okna, które zwiększają elastyczność 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 pomocnicze do wybierania
WindowSizeClass
z zestawu. Dodaj eksperymentalne funkcje punktowania, aby deweloperzy mogli pisać własne selektory. Dodaj funkcję rozszerzenia selektora, aby wybrać najszersząWindowSizeClass
w danych granicach. (I0c944) - Otwórz konstruktor
WindowSizeClass
, aby dodać niestandardowe punkty przerwania. (Ic1ff3) - Dodaj funkcję ułatwiającą tworzenie klasy rozmiarów na podstawie szerokości, wysokości i gęstości. (If67f4)
Poprawki błędów
- Poprawiono wyjątek, gdy wartość zmiennoprzecinkowa została przycięta do 0. (272ffac)
Wersja 1.3.0-alpha01
15 listopada 2023 r.
androidx.window:window-*:1.3.0-alpha01
został zwolniony. Wersja 1.3.0-alpha01 zawiera te commity.
Nowe funkcje
- Udostępnianie eksperymentalnych interfejsów API okna w celu uzyskania dostępu 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. - Funkcja
WindowLayoutInfoPublisherRule
przekazuje teraz wartość zastąpienia podczas uzyskiwania wartości z elementuUiContext
. WindowInfoTracker
raportuje dane funkcji złożenia do parametrówUiContext
.- Wyświetl wersję rozszerzeń na urządzeniu.
WindowProperties
stałe dla zastąpień użytkownika na poziomie aplikacji:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
— informuje system, że aplikacja zrezygnowała z zastąpienia zgodności z formatem obrazu w aplikacji.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
— informuje system, że aplikacja nie chce korzystać z opcji pełnoekranowej w ustawieniach użytkownika dotyczących zastąpienia ustawień zgodności z formatem obrazu.
Wersja 1.2
Wersja 1.2.0
15 listopada 2023 r.
androidx.window:window-*:1.2.0
został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
- Udostępnianie eksperymentalnych interfejsów API okna w celu uzyskania dostępu 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. - Funkcja
WindowLayoutInfoPublisherRule
przekazuje teraz wartość zastąpienia podczas uzyskiwania wartości z elementuUiContext
. WindowInfoTracker
raportuje dane funkcji złożenia do parametrówUiContext
.- Wyświetl wersję rozszerzeń na urządzeniu.
Wersja 1.2.0-rc01
1 listopada 2023 roku
androidx.window:window-*:1.2.0-rc01
został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Udostępnianie eksperymentalnych interfejsów API okna w celu uzyskania dostępu 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. - Funkcja
WindowLayoutInfoPublisherRule
przekazuje teraz wartość zastąpienia podczas uzyskiwania wartości z elementuUiContext
. WindowInfoTracker
raportuje dane funkcji złożenia do parametrówUiContext
.- Wyświetl wersję rozszerzeń na urządzeniu.
Wersja 1.2.0-beta04
18 października 2023 r.
androidx.window:window-*:1.2.0-beta04
został zwolniony. Wersja 1.2.0-beta04 zawiera te commity.
Zmiany w interfejsie API
- Usuń niestabilne interfejsy API. (Ibc534, b/302380585)
Wersja 1.2.0-beta03
20 września 2023 r.
androidx.window:window-*:1.2.0-beta03
został zwolniony. Wersja 1.2.0-beta03 zawiera te commity.
Nowe funkcje
- Dodaj
RequiresApi
sprawdzanie interfejsów API, które wymagają określonej wersji rozszerzeń, aby działać prawidłowo. - Dodaj interfejs API, aby udostępnić wersję rozszerzeń na urządzeniu.
Zmiany w interfejsie API
- W przypadku interfejsów API publicznych dodaj adnotację o wymaganej wersji rozszerzenia pakietu SDK w oknie.
- Usuń
isXXXSupported
w komponencie osadzania aktywności. (Ie3dae)
- Usuń
- Wprowadź
WindowSdkExtensions
, aby przekazać 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ć pusta. (I17048)
Wersja 1.2.0-beta01
26 lipca 2023 r.
androidx.window:window-*:1.2.0-beta01
został zwolniony. Wersja 1.2.0-beta01 zawiera te commity.
Nowe funkcje
- Udostępnianie eksperymentalnych interfejsów API okna w celu uzyskania dostępu 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. - Funkcja
WindowLayoutInfoPublisherRule
przekazuje teraz wartość zastąpienia podczas uzyskiwania wartości z elementuUiContext
. WindowInfoTracker
raportuje dane funkcji złożenia do parametrówUiContext
.
Zmiany w interfejsie API
- Oznaczenie interfejsu API
WindowArea
jako eksperymentalnego, aby umożliwić wprowadzanie zmian w interfejsie API w celu wydania stabilnej wersji 1.3 (I857f5) - Zaktualizowano pliki interfejsu API, aby dodać adnotacje do pominięcia zgodności (I8e87a, b/287516207).
Wersja 1.2.0-alpha03
21 czerwca 2023 r.
androidx.window:window-*:1.2.0-alpha03
został zwolniony. Wersja 1.2.0-alpha03 zawiera te komisy.
Nowe funkcje
- usunięcie wycofanych interfejsów API z interfejsów API.
- Dodaj interfejsy API, aby obsługiwać wyświetlanie na wielu ekranach.
- Dodaj usługę, aby zrezygnować z wymuszonego zastąpienia zmiany rozmiaru.
- Dodaj usługę, aby wyłączyć zastąpienie minimalnych proporcji.
- Stabilizuj
ActivityEmbeddingRule
, aby umożliwić testowanie jednostkowe funkcji dotyczących umieszczania w kontekście.
Zmiany w interfejsie API
- Usuwanie wycofanych interfejsów API (I18d39)
- Dodaj obsługę wyświetlania na wielu ekranach jednocześnie. (Ifcbb0)
Poprawki błędów
- Dodanie właściwości zgodności z opcją rezygnacji dla zastąpienia wymuszania zmiany rozmiaru (Ie7ab1)
- Usuwa
SESSION_STATE_CONTENT_INVISIBLE
z interfejsu rozszerzeń. (I6ed19) - Stabilizacja
ActivityEmbeddingRule
w celu obsługi testowania jednostkowego w przypadku umieszczania aktywności. (I8d6b6) - Dodawanie właściwości zgodności z opcją wyłączenia w przypadku zastąpienia minimalnego formatu obrazu. (I66390)
- Usunięcie wycofanych interfejsów WindowArea API (Ieb67c)
- Zmień nazwę właściwości pętli żądania orientacji na
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
. (Ie2fbd) - Zmiana nazw stałych sesji obszaru okna (I83675)
- Dodanie właściwości zgodności z opcją rezygnacji, 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) - Usuń interfejs API usuwania koloru tła w wersji stabilnej. (I34c3e)
- Ukryj interfejsy API Window Area. (I39de0)
- Dodaj metody, aby zastąpić
SplitInfo
wSplitController
. Dodaj metody testowe, aby utworzyć podwójneSplitInfo
iActivityStack
. (Icd69f) - Ustaw tag jako opcjonalny w przypadku
ActivityRule.Builder
. (Ib0b44) - Usuń
RatioSplitType
,ExpandContainersSplit
iHingeSplitType
. Są toSplitType
.- Zamień
#splitEqually()
,#expandContainers()
i#splitByHinge
na stałe wartościSplitType SPLIT_TYPE_EQUAL
,SPLIT_TYPE_EXPAND
iSPLIT_TYPE_HINGE
- Usuń funkcję ustawiania typu zawiasowego podziału. Jeśli nie można zastosować typu podziału na zawiasach z powodu bieżącego stanu urządzenia lub okna, kontener nadrzędny jest dzielony po równo. Aby dostosować typ podziału zapasowego, użyj parametru
SplitController#setSplitAttributesCalculator
. (Ifcc59)
- Zamień
- Wycofaj:
add
/removeSplitCallback
- Przenieś
add
/removeSplitCallback
doSplitControllerCallbackAdapter
- Dodanie obsługi
Flow
w celu uzyskania listySplitInfo
(I7f1b6)
- Przenieś
- Dodaj regułę testową dla
ActivityEmbeddingController
(I42e9b) - Zmiana nazwy kolumny
ActivityOptionsCompat
naActivityEmbeddingOptions
(I89301) - Dodaj
splitSupportStatus
, aby wskazać, czy można osadzić aktywność. (I10024) - Wprowadź
SplitAttributes.BackgroundColor
, aby lepiej odzwierciedlić wartośćDEFAULT
. Uściśliwiliśmy, że nieprzezroczysty kolor tła animacji nie jest obsługiwany, więc wszystkie nieprzezroczyste kolory będą traktowane jako domyślne, co oznacza użycie koloru tła okna bieżącego motywu. (Ic6b95) - Zastąp
alwaysAllow()
ialwaysDisallow()
wartościamiALWAYS_ALLOW
iALWAYS_DISALLOW
. (I3057b) - Dodaj interfejsy API
SplitRule
,SplitAttributes
iSplitAttributesCalculator
. (I92d23) - Dodaj
TestActivityStack
, aby utworzyćActivityStack
na potrzeby testowania.- Dodaj
TestSplitInfo
, aby utworzyćSplitInfo
do testowania. (I8e779)
- Dodaj
- Dodanie sposobu tworzenia fałszywych
SplitAttributesCalculatorParams
, aby deweloperzy mogli weryfikować swoje niestandardoweSplitAttributesCalculator
(Id4a6e) - Dodaj
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)
iWindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)
(I66c7f)
Wersja 1.2.0-alpha02
7 czerwca 2023 r.
androidx.window:window-*:1.2.0-alpha02
został zwolniony. Wersja 1.2.0-alpha02 zawiera te commity.
Nowe funkcje
- Zaktualizuj testowy interfejs API, aby zawierał stałą wartość dla nieokreślonych funkcji składania.
- Zastąpienie wartości
WindowLayoutInfoPublishRule
spowoduje zastąpienie wszystkich wartości parametruwindowLayoutInfo
, w tym interfejsu Context API.
Zmiany w interfejsie API
- Dodaj stałą wartość dla nieokreślonej funkcji składania w środku. (I7530c)
Poprawki błędów
- Zaktualizuj
WindowLayoutInfoPublishRule
, aby obsługiwać zastąpienia wContext
na podstawieWindowLayoutInfo
. (I2037a)
Wersja 1.2.0-alpha01
24 maja 2023 r.
androidx.window:window-*:1.2.0-alpha01
został zwolniony. Wersja 1.2.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Stabilizacja testowania interfejsów API związanych z osadzaniem aktywności i WindowLayoutInfoTracker
. ActivityEmbeddingRule
został awansowany do wersji stabilnej.
WindowMetricsCalculatorRule
został awansowany do wersji stabilnej.
Funkcje pomocnicze do tworzenia FoldingFeature
na potrzeby testów zostały przeniesione do wersji stabilnej.
Zmiany w interfejsie API
- Stabilizacja
ActivityEmbeddingRule
w celu obsługi testowania jednostkowego w przypadku umieszczania aktywności. (I8d6b6) WindowMetrisCalculatorTestRule
jest stabilna i umożliwia testowanie danych za pomocą danych zastępczych. Aby uzyskać dokładne wyniki, zalecamy użycie emulatora.- Stabilizacja testowych interfejsów API
WindowLayoutInfo
w celu obsługi testów JVM. (Ie036e) - Dodaj
IntRange
dla wartości funkcji testowania zwijania. (I69f7d)
Wersja 1.1
Wersja 1.1.0
7 czerwca 2023 r.
androidx.window:window-*:1.1.0
został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.0.0
Umieszczanie aktywności
- Dodano właściwość
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
jako wartość logiczna tagu<application>
w pliku manifestu aplikacji. - Funkcja
isSplitSupported
została wycofana i zastąpiona przez funkcjęsplitSupportStatus
, aby zapewnić bardziej szczegółowe informacje o przyczynach niedostępności funkcji podziału. - Dodaliśmy klasę zagnieżdżoną
SplitController.SplitSupportStatus
, aby zapewnić stałe stanów dla właściwościsplitSupportStatus
. - Przekształcono
SplitController
w kilka modułów:- moduł
ActivityEmbeddingController
dla powiązanych interfejsów APIActivity
lubActivityStack
. - Element sterujący
isActivityEmbedded
został przeniesiony z poziomuSplitController
na poziomActivityEmbeddingController
. - Moduł
RuleController
do operacji związanych zEmbeddingRule
: - Usunięto
SplitController
interfejsy API: clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- Dodano interfejsy API
RuleController
: addRule()
– dodaje regułę lub aktualizuje regułę o tym samym tagu.removeRule()
– usuwa regułę z 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 zainicjowanego za pomocą metody
#getInstance()
, w tym:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- Dodaliśmy klasę
EmbeddingAspectRatio
, aby zdefiniować stałe zachowania podobne do enumeracji związane z formatem obrazu. - Dodano klasę
SplitAttributes
, aby zdefiniować układ podzielony. - Dodaliśmy do
SplitController
funkcje kalkulatoraSplitAttributes
, aby umożliwić dostosowywanie układów podziału:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
, aby sprawdzić, czy interfejsy APISplitAttributesCalculator
są obsługiwane na urządzeniu.
- Dodano pole
EmbeddingRule#tag
. - Aktualizacje interfejsu API w wersji
SplitRule
:- Dodano
defaultSplitAttributes
– definiuje domyślny układ podziału; zastępujesplitRatio
ilayoutDirection
. - Dodano tłumaczenie właściwości XML
splitRatio
isplitLayoutDirection
do właściwościdefaultSplitAttributes
. - Zmieniono definicje minimalnych wymiarów, aby zamiast pikseli używać pikseli niezależnych od gęstości (dp).
- Dodano
minHeightDp
z wartością domyślną 600 dp. - Zmieniono
minWidth
naminWidthDp
z wartością domyślną 600 dp. - Zmieniono
minSmallestWidth
naminSmallestWidthDp
z wartością domyślną 600 dp. - Dodano element
maxAspectRatioInHorizontal
o wartości domyślnejALWAYS_ALLOW
. - Dodano atrybuty
maxAspectRatioInPortrait
z wartością domyślną 1,4. - Zdefiniowano klasę zagnieżdżoną
FinishBehavior
, która zastępuje stałe zachowania zakończenia. - Zmiany właściwości zostały zastosowane do umieszczonej w klasie Builder klasy
SplitPairRule
iSplitPlaceholderRule
.
- Dodano
- Zastąpiliśmy
SplitInfo#getSplitRatio()
wartościąSplitInfo#getSplitAttributes()
, aby podać dodatkowe informacje dotyczące podziału.
WindowLayout
- Dodano do
WindowInfoTracker
eksperymentalną obsługę kontekstu interfejsu użytkownika poza aktywnością. - Dodano do
WindowMetricsCalculator
eksperymentalny kontekst interfejsu użytkownika niebędącego aktywnością.
Etapy migracji
- Aby umożliwić umieszczanie w ramkach aktywności wyświetlanie aktywności w ramkach, aplikacje muszą dodać właściwość
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
do tagu manifestu<application>
:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
W ten sposób system może z wyprzedzeniem zoptymalizować zachowanie aplikacji w ramkach. SplitInfo
współczynnik- Sprawdź, czy bieżący podział jest ułożony w steku:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- Sprawdź bieżący współczynnik:
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 ułożony w steku:
- Migracje SplitController:
SplitController.getInstance()
zmieniono naSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
zmieniono naRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
zmieniono naActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
zmieniono naRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
zmieniono naRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
zmieniono naRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
zmieniono naRuleController.getInstance(Context).getRules()
.
- Migracje właściwości
SplitRule
:- Komponenty
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
.
- Komponenty
- Stałe zachowania zakończenia muszą zostać przeniesione do stałych klas typu
FinishBehavior
, które przypominają typy wyliczeniowe:FINISH_NEVER
zmieniono naFinishBehavior.NEVER
.FINISH_ALWAYS
zmieniono naFinishBehavior.ALWAYS
.FINISH_ADJACENT
zmieniono naFinishBehavior.ADJACENT
.
- Kierunek układu musi zostać przeniesiony do
SplitAttributes.LayoutDirection
:ltr
zmieniono naSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
zmieniono naSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
zmieniono naSplitAttributes.LayoutDirection.LOCALE
.- Abonament
splitRatio
musi zostać przeniesiony doSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migracje:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
zmienił(a) rolę użytkownika nakotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
isetSplitRatio(ratio)
zmieniły się nakotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
isetFinishSecondaryWithPrimary
przyjmują stałe typuFinishBehavior
. Szczegółowe informacje znajdziesz w sekcji „Migracje reguł podziału”.- Użyj
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, aby wyświetlić podziały na urządzeniach w orientacji pionowej.
SplitPlaceholder.Builder
migracje:- Ma tylko parametry
filters
iplaceholderIntent
. Inne właściwości są przenoszone do metod settera. Więcej informacji znajdziesz w artykule „Migrowanie reguł SplitPairRule.Builder”. setFinishPrimaryWithPlaceholder
przyjmuje stałą typuFinishBehavior
. Szczegółowe informacje znajdziesz w sekcji „Migracje reguł podziału”.setLayoutDirection(layoutDirection)
isetSplitRatio(ratio)
zmieniły się na:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- Użyj
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, aby wyświetlić podziały na urządzeniach w orientacji pionowej.
- Ma tylko parametry
Wersja 1.1.0-rc01
10 maja 2023 r.
androidx.window:window-*:1.1.0-rc01
został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Opublikuj interfejs
ActivityEmbedding
jako stabilny interfejs API. - Poprawki różnych błędów.
Wersja 1.1.0-beta02
5 kwietnia 2023 r.
androidx.window:window-*:1.1.0-beta02
został zwolniony. Wersja 1.1.0-beta02 zawiera te commity.
Nowe funkcje
- Poprawki wewnętrzne i czyszczenie.
Wersja 1.1.0-beta01
22 marca 2023 r.
androidx.window:window-*:1.1.0-beta01
został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.
Umieszczanie aktywności
- Dodano właściwość
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
jako wartość logiczna tagu<application>
w pliku manifestu aplikacji. - Funkcja
isSplitSupported
została wycofana i zastąpiona przez funkcjęsplitSupportStatus
, aby zapewnić bardziej szczegółowe informacje o przyczynach niedostępności funkcji podziału. - Dodaliśmy klasę zagnieżdżoną
SplitController.SplitSupportStatus
, aby zapewnić stałe stanów dla właściwościsplitSupportStatus
. - Przekształcono
SplitController
w kilka modułów:- moduł
ActivityEmbeddingController
dla powiązanych interfejsów APIActivity
lubActivityStack
. - Element sterujący
isActivityEmbedded
został przeniesiony z poziomuSplitController
na poziomActivityEmbeddingController
. - Moduł
RuleController
do operacji związanych zEmbeddingRule
: - Usunięto interfejsy API
SplitController
:clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- Dodane interfejsy API
RuleController
:addRule()
– dodaje regułę lub aktualizuje regułę o tym samym tagu.removeRule()
– usuwa regułę z 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 zainicjowanego za pomocą metody
#getInstance()
, w tym:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- Dodaliśmy klasę
EmbeddingAspectRatio
, aby zdefiniować stałe zachowania podobne do enumeracji związane z formatem obrazu. - Dodano klasę
SplitAttributes
, aby zdefiniować układ podzielony. - Dodaliśmy do
SplitController
funkcje kalkulatoraSplitAttributes
, aby umożliwić dostosowywanie układów podziału:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
aby sprawdzić, czy na urządzeniu są obsługiwane interfejsy SplitAttributesCalculator API.
- Dodano pole
EmbeddingRule#tag
. - Aktualizacje interfejsu API w wersji
SplitRule
:- Dodano
defaultSplitAttributes
– definiuje domyślny układ podziału; zastępujesplitRatio
ilayoutDirection
. - Dodano tłumaczenie właściwości XML
splitRatio
isplitLayoutDirection
do właściwościdefaultSplitAttributes
. - Zmieniono definicje minimalnych wymiarów, aby zamiast pikseli używać pikseli niezależnych od gęstości (dp).
- Dodano
minHeightDp
z wartością domyślną 600 dp. - Zmieniono
minWidth
naminWidthDp
z wartością domyślną 600 dp. - Zmieniono
minSmallestWidth
naminSmallestWidthDp
z wartością domyślną 600 dp. - Dodano element
maxAspectRatioInHorizontal
o wartości domyślnejALWAYS_ALLOW
. - Dodano element
maxAspectRatioInPortrait
o wartości domyślnej1.4
. - Zdefiniowano klasę zagnieżdżoną
FinishBehavior
, która zastępuje stałe zachowania zakończenia. - Zastosowano zmiany właściwości w klasie zagnieżdżonej
Builder
w usługachSplitPairRule
iSplitPlaceholderRule
.
- Dodano
- Zastąpiliśmy
SplitInfo#getSplitRatio()
wartościąSplitInfo#getSplitAttributes()
, aby podać dodatkowe informacje dotyczące podziału.
WindowLayout
- Dodano do
WindowInfoTracker
obsługę kontekstu interfejsu użytkownika poza aktywnością. - Do
WindowMetricsCalculator
dodano kontekst interfejsu użytkownika niebędącego aktywnością.
Etapy migracji
- Aby umożliwić umieszczanie w ramkach aktywności wyświetlanie aktywności w ramkach, aplikacje muszą dodać właściwość
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
do tagu manifestu<application>
:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
W ten sposób system może z wyprzedzeniem zoptymalizować zachowanie aplikacji w ramkach. SplitInfo
współczynnik- Sprawdź, czy bieżący podział jest ułożony w stosie:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- Sprawdź bieżący współczynnik:
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 ułożony w stosie:
SplitController
migracje:SplitController.getInstance()
zmieniono naSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
zmienia się naRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
zmieniono naActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
zmieniono naRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
zmieniono naRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
zmieniono naRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
zmieniono naRuleController.getInstance(Context).getRules()
.
- Migracje właściwości
SplitRule
:- Komponenty
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
.
- Komponenty
- Stałe zachowania zakończenia muszą zostać przeniesione do stałych klas typu
FinishBehavior
, które przypominają typy wyliczeniowe:FINISH_NEVER
zmieniono naFinishBehavior.NEVER
.FINISH_ALWAYS
zmieniono naFinishBehavior.ALWAYS
.FINISH_ADJACENT
zmieniono naFinishBehavior.ADJACENT
.
- Kierunek układu musi zostać przeniesiony do
SplitAttributes.LayoutDirection
:ltr
zmieniono naSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
zmieniono naSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
zmieniono naSplitAttributes.LayoutDirection.LOCALE
.- Abonament
splitRatio
musi zostać przeniesiony doSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migracje:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
zmienił(a) rolę użytkownika nakotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
isetSplitRatio(ratio)
zmienią się nakotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
isetFinishSecondaryWithPrimary
przyjmują stałe typuFinishBehavior
. Szczegółowe informacje znajdziesz w sekcji „Migracje reguł podziału”.- Użyj
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, aby wyświetlić podziały na urządzeniach w orientacji pionowej.
SplitPlaceholder.Builder
migracje:- Ma tylko parametry
filters
iplaceholderIntent
. Inne właściwości są przenoszone do metod settera. Więcej informacji znajdziesz w artykule „Migrowanie reguł SplitPairRule.Builder”. setFinishPrimaryWithPlaceholder
przyjmuje stałą typuFinishBehavior
. Szczegółowe informacje znajdziesz w sekcji „Migracje reguł podziału”.setLayoutDirection(layoutDirection)
isetSplitRatio(ratio)
zmieniły się na:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- Użyj
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, aby wyświetlić podziały na urządzeniach w orientacji pionowej.
- Ma tylko parametry
Wersja 1.1.0-alpha06
22 lutego 2023 roku
androidx.window:window-*:1.1.0-alpha06
został zwolniony. Wersja 1.1.0-alpha06 zawiera te commity.
Nowe funkcje
- Udostępnianie eksperymentalnej wersji funkcji
WindowLayoutInfo
w kontekście interfejsu.
Zmiany w interfejsie API
- Dodaj
splitSupportStatus
, aby wskazać, czy można osadzić aktywność. (I10024) - Uznanie interfejsu API kontekstu interfejsu użytkownika
WindowLayoutInfo
za eksperymentalny. (I58ee0) - Wprowadza
WindowAreaController
i interfejsy API, aby włączyć trybRearDisplay
, który umożliwia przeniesienie bieżącego okna na wyświetlacz wyrównany z tylnym aparatem. (Iffcbf) - Zmień domyślny kolor tła. (I1ac1b)
- Dodaj parametry
SplitAttributes
. (I18bdd) - Dodaj interfejsy API
SplitRule
,SplitAttributes
iSplitAttributesCalculator
. (I92d23) - Ulepszyć interfejsy API dotyczące
maxAspectRatio
:- Zastąp
alwaysAllow()
ialwaysDisallow()
wartościamiALWAYS_ALLOW
iALWAYS_DISALLOW
. - Zaktualizuj dokumentację interfejsu API usługi @see, dodając do niej samodzielną dokumentację. (I3057b)
- Zastąp
- Z publicznych interfejsów API usunięto te konstruktory, ponieważ nie powinny być wywoływane przez aplikacje.
SplitInfo
konstruktorActivityStack
konstruktor (Ide534)
SplitRule
przyjmuje teraz wartośćmaxAspectRatioInPortrait/Landscape
. Umożliwia ona dzielenie aktywności tylko wtedy, gdy współczynnik proporcji w ograniczeniach nadrzędnych jest mniejszy lub równy żądanemumaxAspectRatio
. (Ia5990)- Ustaw
RuleController#parseRules
jako element statyczny (I785df) - Ulepszanie interfejsów API związanych z ActivityEmbedding
- Dopasuj nazwy interfejsów API – użyj opcji dodawania i usuwania w przypadku wielu instancji:
registerRule
zmieniono naaddRule
unregisterRule
zmieniono naremoveRule
- Zastąp
getSplitRules
wartościągetRules
, ponieważActivityRule
nie jest regułą podziału - Dodaj
RuleController#setRules
, aby ustawić wiele reguł - Wyodrębnij interfejsy API powiązane z regułami z poziomu
SplitController
do singletonaRuleController
. Oto oni: addRule
removeRule
getRules
setRules
clearRules
parseRules
- Wyodrębnij
#isActivityEmbedded
z poziomuSplitController
i przekształć go w element singletonActivityEmbeddingController
. Oto oni: isActivityEmbedded
- Usuń
SplitController#initialize
. Aby skonfigurować 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ł czasu wykonywania. Jednak wywołanie funkcji
#clearRules
powoduje wyczyszczenie wszystkich reguł, niezależnie od tego, czy są one zarejestrowane za pomocą statycznych definicji reguł XML, czy w czasie wykonywania. Aby uzyskać starsze zachowanie funkcjiSplitController#clearRegisteredRules
, wywołaj funkcjęRuleController#parseRules
z identyfikatorem zasobów XML, a potem wywołaj funkcjęRuleController#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)
- Ulepszenia interfejsów SplitRule API:
- Minimalne wymiary w DP, a nie w pikselach (
SplitRule
). - Refaktoryzacja w Kreatorze
SplitRule
, aby minimalne wymiary były opcjonalne. (I95f17)
- Minimalne wymiary w DP, a nie w pikselach (
- Przekazywanie kontekstu na potrzeby inicjowania
SplitController
(I42549) - Zmieniono nazwę
SplitRule#layoutDir
na#layoutDirection
, aSplitRule Builder#setLayoutDir
naBuilder#setLayoutDirection
. (I3f6d1)
Wersja 1.1.0-alpha04
9 listopada 2022 r.
androidx.window:window-*:1.1.0-alpha04
został zwolniony. Wersja 1.1.0-alpha04 zawiera te commity.
Nowe funkcje
- Wyświetl metodę, aby określić, czy
ActivityStack
jest pusta dlaActivityEmbedding
. - Usunięto eksperymentalne tagi interfejsów API z interfejsów API
ActivityEmbedding
. - Ukryj konstruktor
ActivityRule
, ponieważ konstruktorBuilder
jest preferowanym sposobem tworzenia. - Dodaj eksperymentalną metodę, aby uzyskać
WindowInsets
w funkcjiWindowMetrics
. - Zaktualizuj
SplitPlaceholderFinishBehavior
, aby zapobiec ukończeniu działania zastępnika. Zakończenie działania zastępnika spowodowało pewne niejasności.
Zmiany w interfejsie API
- Ustaw val
isEmpty
jako publiczny, aby zastąpić funisEmpty
. - Zmień nazwę aktywności parametru
ActivityStack
naactivitiesInProcess
. (Ia5055) - Usuń
ActivityFilter#matchesClassName
iActivityFilter#matchesClassNameOrWildCard
, ponieważ wprowadzają one zamieszanie. - Dodaj
ActivityFilter#componentName
abdActivityFilter#intentAction
, aby umożliwić dzwoniącemu rozróżnianie różnych filtrów (I41f22) - Usuń interfejsy API
@Deprecated
z interfejsu API w wersji eksperymentalnej (I216b3). - Usuń
@ExperimentalWindowApi
w przypadku interfejsów Activity Embedding API (I69ebe) - Ukryj konstruktor
ActivityRule
i zamiast niego użyj klasy Builder. (If4eb6) - Dodaj interfejsy API, aby sprawdzić, czy dana aktywność należy do
ActivityFilter
. (Ia43cf) - Zaktualizuj pliki interfejsu API, aby odzwierciedlić zmiany w klasach
WindowMetrics
iWindowMetricsCalculatorCompat
(I667fe) - Aktualizacja nazwy klasy i dokumentacji klasy
ActivityEmbedding
(Ia1386) - Dodawanie nazw tagów właściwości
ActivityEmbedding
do użycia w pliku AndroidManifest.xml (Id1ad4) - Dodano nowe interfejsy API
SplitPlaceholderFinishBehavior
iSplitPlaceholderRule.finishPrimaryWithPlaceholder
, które zastępują istniejące interfejsySplitPlaceholderRule.finishPrimaryWithSecondary
. Określają one, kiedy kończy się działanie zastępcze i jak powinny zachowywać się powiązane z nim działania. (I64647)
Poprawki błędów
- Wprowadza
WindowAreaController
i interfejsy API, aby włączyć trybRearDisplay
, który umożliwia przeniesienie bieżącego okna na wyświetlacz wyrównany z tylnym aparatem. (I388ab)
Wersja 1.1.0-alpha03
27 lipca 2022 roku
androidx.window:window-*:1.1.0-alpha03
został zwolniony. Wersja 1.1.0-alpha03 zawiera te commity.
Nowe funkcje
- Zaktualizuj domyślne wartości reguł umieszczania.
Zmiany w interfejsie API
- Zaktualizowano domyślne wartości właściwości reguły umieszczania. (Ic4d35)
Wersja 1.1.0-alpha02
11 maja 2022 roku
androidx.window:window-*:1.1.0-alpha02
został zwolniony. Wersja 1.1.0-alpha02 zawiera te commity.
Nowe funkcje
- Opublikuj biblioteki adaptera, aby obsługiwać Java i RxJava.
Wersja 1.1.0-alpha01
11 maja 2022 roku
androidx.window:window-*:1.1.0-alpha01
został zwolniony. Wersja 1.1.0-alpha01 zawiera te commity.
Nowe funkcje
- publikowanie adapterów do obsługi Javy i RxJava.
Wersja 1.1.0-alpha01
20 kwietnia 2022 r.
androidx.window:window:1.1.0-alpha01
został zwolniony. Wersja 1.1.0-alpha01 zawiera te commity.
Nowe funkcje
- Naprawiliśmy błąd polegający na tym, że uruchomienie aplikacji w tle powoduje zaprzestanie emitowania funkcji składania.
- rozszerzyć eksperymentalny interfejs ActivityEmbedding API;
Zmiany w interfejsie API
- publiczny interfejs API do sprawdzania, czy dana aktywność jest umieszczana w ramach innej aktywności; (I39eb7)
Poprawki błędów
- Dodano interfejsy API, które umożliwiają dostosowanie sposobu kończenia kontenerów w ramach podziału aktywności (I1a1e4)
- Dodano nową opcję konfiguracji reguł podziału aktywności. (Iec6af)
Wersja 1.0
Wersja 1.0.0
26 stycznia 2022 r.
androidx.window:window-*:1.0.0
został zwolniony. Wersja 1.0.0 zawiera te zatwierdzenia.
Najważniejsze funkcje wersji 1.0.0
- Obsługa składanych telefonów przez
WindowInfoTracker
iFoldingFeature
.WindowMetricsCalculator
, aby obliczyć bieżące dane WindowMetrics.
Wersja 1.0.0-rc01
15 grudnia 2021 roku
androidx.window:window-*:1.0.0-rc01
został zwolniony. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę składanych telefonów za pomocą
WindowInfoTracker
. - Dodaj metody obliczania bieżącej i maksymalnej wartości
WindowMetrics
. - Dodaj interfejsy API do testowania.
Wersja 1.0.0-beta04
17 listopada 2021 r.
androidx.window:window-*:1.0.0-beta04
został zwolniony. Wersja 1.0.0-beta04 zawiera te commity.
Nowe funkcje
- Zmień nazwę WindowInfoRepository na WindowInfoTracker.
- Zmień Aktywność w wyraźną zależność metody w przypadku WindowInfoTracker.
- Dodaj prostą regułę testu dla WindowMetricsCalculator, aby ułatwić pracę deweloperom korzystającym z Robolectric.
Zmiany w interfejsie API
- Wyodrębnianie rozszerzeń (I25a5f)
- dodanie isEmpty w ActivityStack (I5a4e6)
- Zmień nazwę WindowInfoRepository na WindowInfoTracker.
- Zaktualizuj zależności java/rxjava/testing, aby dopasować je do siebie. (I0da63)
- Dodawanie reguły testowej dla prostego modułu WindowMetricsCalculator. (Ibacdb)
Wersja 1.0.0-beta03
27 października 2021 roku
androidx.window:window-*:1.0.0-beta03
został zwolniony. Wersja 1.0.0-beta03 zawiera te komitowane zmiany.
Nowe funkcje
- Dodano eksperymentalne interfejsy API do umieszczania aktywności. Ta początkowa wersja układu umożliwia wyświetlanie 2 aktywności obok siebie.
Zmiany w interfejsie API
- Usunęliśmy interfejs API currentWindowMetrics, ponieważ nie możemy go udostępniać w sposób dokładny. Zamiast tego użyj funkcji WindowMetricsCalculator (Icda5f).
- Zaktualizowano interfejs API rozszerzeń. (Ica92b)
- Dodaliśmy interfejs nowej funkcji, która umożliwia umieszczanie i wyświetlanie działań obok siebie w oknie zadania nadrzędnego. (I5711d)
- Ukryte konstruktory WindowMetrics i WindowLayoutInfo. Zamiast nich używaj testowych interfejsów API. (I5a1b5)
- Dodaj interfejs API, aby tworzyć fałszywe obiekty WindowLayoutInfo. (I4a2fd)
Poprawki błędów
- Naprawiono wyciek pamięci. (I3fc79, b/202989046)
Wersja 1.0.0-beta02
1 września 2021 roku
androidx.window:window-*:1.0.0-beta02
został zwolniony. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaj adnotację eksperymentalną, aby dodać adnotację do eksperymentalnego interfejsu API. (I9f1b6)
- Dodaj metodę testową, aby utworzyć testową funkcję zwijania, która akceptuje prostokąt. Dzięki temu łatwiej będzie Ci testować za pomocą Robolectric niż za pomocą rzeczywistej aktywności. (Id1cca)
Wersja 1.0.0-beta01
18 sierpnia 2021 r.
androidx.window:window-*:1.0.0-beta01
został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.
Nowe funkcje
- Usunięto stare stałe i zmieniono
FoldingFeature
na interfejs.
Zmiany w interfejsie API
- Usuń stare stałe i ustaw FoldFeature jako interfejs. (I9a2d5)
Poprawki błędów
- Biblioteki zależne od biblioteki
Test Core
zostały zaktualizowane do wersji1.4.0
i będą teraz działać z platformą Android w wersji S. (I88b72, b/189353863)
Wersja 1.0.0-alpha10
4 sierpnia 2021 r.
androidx.window:window-*:1.0.0-alpha10
został zwolniony. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.
Nowe funkcje
- Zmień nazwę WindowInfoRepo na WindowInfoRepository i zmodyfikuj odpowiednie klasy lub pliki.
- Przekształć dane bieżącego okna w strumień w WindowInfoRepository, ponieważ ich wartość zmienia się z czasem.
- Zmień nazwę WindowInfoRepoJavaAdapter na WindowInfoRepoCallbackAdapter.
- Dodaj metodę pomocniczą do tworzenia testowych obiektów FoldingFeature
- Zaktualizuj pakiety, aby grupowały klasy według obsługiwanych przez nie funkcji.
Zmiany w interfejsie API
- Zmień nazwę ActivityExt na ActivityExtensions. Zmień nazwę Repo na Repository. (I61a16)
- Zaktualizuj pakiety zajęć. (I23ae2)
- Usuń WindowMetrics z WindowInfoRepo (I24663)
- Usuń WindowManager i użyj WindowInfoRepo
- Utwórz wewnętrzną wersję WindowBackend. (I06d9a)
- Konwertowanie danych z okna na przepływ.
- Zmień nazwę adaptera Java na WindowInfoRepoCallbackAdapter.
- Usuń callbackFlow, aby nie używać już interfejsów API w wersji eksperymentalnej. (Ia4d15)
- Dodaj metodę pomocniczą, aby utworzyć funkcje wyświetlania testów.
- Zmień z occlusionMode na occlusionType (If4cff).
Poprawki błędów
- Poprawiono błąd Proguarda, w którym usuwana była główna biblioteka.
- Rozwiązanie błędu, który powodował, że informacje WindowLayoutInfo nie były dostarczane do dodatkowych subskrybentów.
- Naprawiono błąd, który powodował, że zmiany w konfiguracji nie powodowały aktualizacji funkcji składania.
Wersja 1.0.0-alpha09
30 czerwca 2021 r.
androidx.window:window-*:1.0.0-alpha09
został zwolniony. Wersja 1.0.0-alpha09 zawiera te commity.
Nowe funkcje
- Zmień stałą liczbową na nieograniczoną listę.
- Dodaj narzędzie testowe, aby utworzyć funkcje testowania składania.
Zmiany w interfejsie API
- Dodaj metodę pomocniczą, aby utworzyć funkcje wyświetlania testów. (I3cf54)
- Zmień z
occlusionMode
naocclusionType
.
- Zmień z
Poprawki błędów
- Wyemituj wartość początkową podczas dodawania wielu odbiorców strumieni danych.
Wersja 1.0.0-alpha08
16 czerwca 2021 r.
androidx.window:window-*:1.0.0-alpha08
został zwolniony. Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
- Udostępniono artefakt testowy, aby ułatwić testowanie przy użyciu WindowInfoRepository. Użyj WindowInfoRepository, aby uzyskać informacje o DisplayFeatures i WindowMetrics. (I57f66, Ida620)
Wersja 1.0.0-alpha07
2 czerwca 2021 r.
androidx.window:window-*:1.0.0-alpha07
został zwolniony. Wersja 1.0.0-alpha07 zawiera te commity.
Nowe funkcje
- Przejdź do biblioteki kodu źródłowego okna głównego w Kotlinie. W przyszłości do wyświetlania danych asynchronicznych będziemy używać funkcji zawieszania i korobotek.
- Dodaj WindowInfoRepo jako główny punkt interakcji służący do uzyskiwania danych WindowMetrics i strumienia WindowLayoutInfo.
- Nowy element
window-java
, który udostępnia interfejsy API do rejestrowania i odrejestrowania wywołań zwrotnych w języku Java. - Nowe artefakty
window-rxjava2
iwindow-rxjava3
, które udostępniają interfejsy API dostosowane do RxJava.
Zmiany w interfejsie API
- Dodaj
WindowServices
, aby zapewnić spójność zależności.- Dodaj interfejs API oparty na coroutine, aby pobierać informacje o układzie okna. (Iab70f)
- Przejdź do Kotlina z głównej biblioteki menedżera okien. (Icca34)
Poprawki błędów
- Dodaj nową klasę danych, aby reprezentować granice cech. (I6dcd1)
Wersja 1.0.0-alpha06
5 maja 2021 roku
androidx.window:window:1.0.0-alpha06
został zwolniony. Wersja 1.0.0-alpha06 zawiera te commity.
Nowe funkcje
- Rozpoczęliśmy już migrację do Kotlina i zakończymy ją w kolejnych wersjach.
- Zmiana stanu urządzenia została usunięta z publicznego interfejsu API. Zamiast niej użyj funkcji FoldingFeature.
- Usunęliśmy stany
STATE_FLIPPED
z FoldingFeature, ponieważ obecnie nie są one obsługiwane w żadnym przypadku użycia. - Usunęliśmy też inne wycofane interfejsy API.
Zmiany w interfejsie API
- Dodanie Kotlina jako zależności.
- Przeprowadź migrację podstawowej biblioteki do Kotlina. (Idd995)
- Usunięto kreator
DisplayFeature
. (I61fa4) - Usunięto
DeviceState
z publicznego interfejsu API. Zamiast tego używajFoldingFeature
. (Id6079) - Usuń wywołanie zwrotne stanu urządzenia z rozszerzeń. (I5ea83)
- Usuń
STATE_FLIPPED
z FoldingFeature. (I9c4e1) - Usuń wycofane metody rejestracji. (Ib381b)
Wersja 1.0.0-alpha05
24 marca 2021 r.
androidx.window:window:1.0.0-alpha05
został zwolniony. Wersja 1.0.0-alpha05 zawiera te commity.
Nowe funkcje
Dodaliśmy do FoldingFeature wygodne metody, aby aplikacje mogły określić, czy funkcja jest rozdzielona, zasłonięta, a także orientację zawiasów. Ukrywamy też typ zawiasów, aby
Usuwamy synchroniczne metody odczytu z WindowManagera. Metody synchronicznego odczytu są podatne na błędy, ponieważ występuje w nich niejawna warunkowa rywalizacja. Rejestruj obiekty nasłuchujące i wywołania zwrotne, aby otrzymywać informacje o WindowLayoutInfo.
Zmiany w interfejsie API
- Dodanie wygodnych metod do pracy z FoldingFeatures (Ie733f)
- Usunięcie synchronicznych metod odczytu z WindowManager (I96fd4)
Wersja 1.0.0-alpha04
10 marca 2021 r.
androidx.window:window:1.0.0-alpha04
został zwolniony. Wersja 1.0.0-alpha04 zawiera te commity.
Nowe funkcje
- Rozwiązanie błędu, który powodował, że w przypadku braku implementacji OEM nie była emitowana informacja WindowLayoutInfo. Teraz emitujemy pustą strukturę WIndowLayoutInfo.
- Naprawiono błąd polegający na tym, że stan nie był prawidłowo aktualizowany, jeśli stan zawiasu zmienił się, gdy aplikacja była w tle. Stan powinien być teraz spójny.
- Zaktualizuj pliki ProGuard, aby ignorować ostrzeżenia dotyczące zależności w czasie wykonywania.
Poprawki błędów
- Wyemituj pustą wartość, gdy brakuje biblioteki OEM. (Ide935)
Wersja 1.0.0-alpha03
18 lutego 2021 r.
androidx.window:window:1.0.0-alpha03
został zwolniony. Wersja 1.0.0-alpha03 zawiera te commity.
Nowe funkcje
- Wyślij pustą wartość w ramach WindowLayoutInfo, gdy implementacja OEM jest pusta. Dzięki temu łatwiej będzie korzystać z biblioteki na większej liczbie urządzeń. Ponieważ interfejsy API są asynchroniczne, zalecamy, aby aplikacje zawierały kod obronny i wysyłały wartość domyślną po upływie limitu czasu. Nie możemy zagwarantować, że implementacje OEM będą działać prawidłowo, a wartość początkowa może być opóźniona.
Poprawki błędów
- Wyemituj pustą wartość, gdy brakuje biblioteki OEM. (Ide935)
Wersja 1.0.0-alpha02
27 stycznia 2021 r.
androidx.window:window:1.0.0-alpha02
został zwolniony. Wersja 1.0.0-alpha02 zawiera te commity.
Nowe funkcje
wycofujemy niektóre interfejsy API, aby usprawnić ich działanie i zmniejszyć liczbę błędów. Do takich przykładów należy usunięcie synchronicznych operacji odczytu z WindowManagera i wycofanie DeviceState. Operacje synchronicznego odczytu mogą prowadzić do warunków wyścigu i nieprawidłowego interfejsu użytkownika.
Funkcję DisplayFeature przekształciliśmy w interfejs, który będzie wykorzystywany przez inne funkcje. Pierwszą z nich jest FoldingFeature, która reprezentuje złożenie ekranu lub zawias. Zawiera on również stan zawiasu, który zastępuje DeviceState.
Okno WindowMetrics zostało wprowadzone w Androidzie 11, aby zapewnić deweloperom prosty sposób na wyszukiwanie danych o oknie, takich jak jego położenie i rozmiar na ekranie oraz wszelkie wstawione elementy systemu. W tej wersji wprowadziliśmy interfejs API w poprzednich wersjach, aby deweloperzy mogli korzystać z WindowMetrics i nadal obsługiwać starsze wersje Androida. Dane WindowMetrics można uzyskać za pomocą interfejsów API
WindowManager#getCurrentWindowMetrics()
i WindowManager#getMaximumWindowMetrics().
Zmiany w interfejsie API
- wycofanie interfejsów API, które zostaną usunięte w następnej wersji alfa (Ib7cc4);
- Zaktualizowano
ExtensionInterface
, aby zezwalać na jawne odwołania do aktywności. (I07ded) - Przedstawia interfejs WindowMetrics API. (I3ccee)
- Usuwanie metod synchronicznego odczytu z WindowManager (I69983)
- Zabezpiecz pakiet ExtensionWindowBackend. (Ied208)
Poprawki błędów
- Zaktualizuj interfejsy API
ExtensionInterface
, aby akceptowały konteksty wizualne. (I8e827)
Darowizna zewnętrzna
- Połącz DeviceState i WindowLayoutInfo, aby ułatwić sobie dostęp do danych. (Id34f4)
Wersja 1.0.0-alpha01
27 lutego 2020 r.
androidx.window:window:1.0.0-alpha01
i androidx.window:window-extensions:1.0.0-alpha01
zostały opublikowane. Wersja 1.0.0-alpha01 zawiera te commity.
To pierwsza wersja biblioteki Window Manager.
Nowe funkcje
DisplayFeature
: ten nowy interfejs API wykrywa przerwy w ciągłych płaskich powierzchniach ekranu, takie jak zawiasy czy zagięcia.DeviceState
: ten nowy interfejs API podaje aktualną pozycję telefonu z listy zdefiniowanych pozycji (np.CLOSED
,OPENED
,HALF_OPENED
itd.).