WindowManager

Biblioteka Jetpack WindowManager umożliwia deweloperom aplikacji obsługę nowych formatów urządzeń i środowisk z wielu okien. Pierwsza wersja jest przeznaczona do składanych urządzeń, ale przyszłe wersje będą obsługiwać więcej typów wyświetlaczy i funkcji okien.
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
15 stycznia 2025 r. 1.3.0 - 1.4.0-beta01 -

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:

Groovy

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. Daj nam znać, jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz zagłosować na istniejący problem, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

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

Wersja 1.4

Wersja 1.4.0-beta01

15 stycznia 2025 r.

androidx.window:window-*:1.4.0-beta01 został zwolniony. Wersja 1.4.0-beta01 zawiera te komity.

Nowe funkcje

  • Dodaj interfejs API, aby umożliwić dostosowywanie ActivityEmbedding animacji.
  • Rozwiń WindowMetricsCalculator testowe interfejsy API, aby umożliwić fałszowanie danych z okresu.

Zmiany w interfejsie API

  • Ukrywanie kilku konstruktorów (I87b8d)
  • Zezwalanie aplikacjom na dostosowywanie animacji ActivityEmbedding (If31a8)
  • Dodano obsługę watchosDeviceArm64 KMP target i target kotlin 1.9 (Icf15d, b/364652024).
  • udostępnić interfejsy API WindowMetricsCalculator. (I1cebf)

Poprawki błędów

  • Ta biblioteka korzysta teraz z adnotacji JSpecify dotyczących nullowości, które są używane w ramach typu. Deweloperzy Kotlina powinni używać tych argumentów kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Ie69ac, b/326456246).

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 komity.

Nowe funkcje

  • Dodaj funkcje ułatwiające dostęp do wartości widthDpheightDpWindowMetrics.

Zmiany w interfejsie API

  • Dodaj widthDp i heightDp do WindowMetrics. (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 wartości WindowSizeClass na podstawie wartości WindowMetrics. (874dba)
  • Aby zachować przejrzystość, zmień metody WindowSizeClass na containsWidthDp, containsHeightDpcontainsWindowSizeDp. (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ć WindowSizeClassWindowMetrics. (I83f1f)
  • Zmień nazwę isAtLeast na containsBreakpoint. (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 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ści WindowSizeClass.
  • 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 przetwarzania WindowSizeClass używali sprawdzania wartości dolnej. Istniejące wersje WindowWidthSizeClassWindowHeightSizeClass 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.
  • Zwracana funkcja 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 z ActivityEmbedding, w tym:
  • uruchamianie aktywności w określonym ActivityStack.
  • Kończenie 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
  • Dodawanie interfejsów API do włączania i konfigurowania interaktywnego separatora

    • Zajęcia: DividerAttributes
    • SplitAttributes.Builder#setDividerAttributes
  • Dodaj interfejsy API, aby ustawić EmbeddingConfiguration i DimAreaBehavior dla dialogów

    • Zajęcia: EmbeddingConfiguration
    • Zajęcia: DimAreaBehavior
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • Dodawanie interfejsów API, aby otrzymywać informacje o oknie aktywności w ramach wbudowanych aktualizacji

    • Zajęcia: EmbeddedActivityWindowInfo
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • 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 przypadku SplitAttributes. (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 podczas korzystania z R8 z AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz we wszystkich wersjach kompilacji przy użyciu AGP 8.1 lub nowszego (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)
  • Zezwalaj rozszerzeniom na używanie parametrów animacji dla 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)
  • Usuń #getToken i dodaj #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życiem ActivityOptionsCompat.
    • Użytkownicy powinni przekazywać wartość activityOptions.toBundle zamiast samej wartości ActvityOptions.
    • Usuń #setLaunchingActivityStack(Activity). Użytkownicy powinni przejść na ActivityEmbeddingController#getActivityStac(Activity), aby uzyskać ActivityStack, i przekazać ActivityStack do #setLaunchingActivityStack. (Ie0ccc)
  • – Wprowadź ActivityStack.Token i SpltInfo.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).
  • – dodanie 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)
  • Ponownie dodaj #finishActivityStacksActivityEmbeddingOptions (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 komisy.

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 komity.

Zmiany w interfejsie API

  • Usunięcie obsługi tworzenia i używania niestandardowych WindowSizeClass. (Id1143)

Poprawki błędów

  • Poprawki dotyczące KotlinReflectionInternalError spowodowane przez usuwanie 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 komity.

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ę, 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 interfejsów API eksperymentalnego okna do uzyskiwania 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 elementu UiContext.
  • WindowInfoTracker raportuje dane funkcji złożenia do parametrów UiContext.
  • 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 wyłączyła opcję pełnoekranową 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 interfejsów API eksperymentalnego okna do uzyskiwania 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 elementu UiContext.
  • WindowInfoTracker raportuje dane funkcji złożenia do parametrów UiContext.
  • 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 interfejsów API eksperymentalnego okna do uzyskiwania 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 elementu UiContext.
  • WindowInfoTracker raportuje dane funkcji złożenia do parametrów UiContext.
  • 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

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 Wstawianie aktywności. (Ie3dae)
  • Wprowadź WindowSdkExtensions, aby zgłosić wersję rozszerzenia na urządzeniu.
    • Wprowadź RequiresWindowSdkExtension, aby dodać adnotację do minimalnej wymaganej wersji rozszerzenia. (I05fd4)
  • 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 interfejsów API eksperymentalnego okna do uzyskiwania 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 elementu UiContext.
  • WindowInfoTracker raportuje dane funkcji złożenia do parametrów UiContext.

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 commity.

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 zrezygnować z zastąpienia minimalnych proporcji.
  • Stabilizuj ActivityEmbeddingRule, aby umożliwić testowanie jednostkowe funkcji dotyczących umieszczania w aktywności.

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 dotyczącego umieszczania aktywności. (I8d6b6)
  • Dodawanie właściwości zgodności z opcją wyłączenia dla minimalnego forsowania 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ć SplitInfoSplitController. Dodaj metody testowe, aby utworzyć podwójne SplitInfoActivityStack. (Icd69f)
  • Ustaw tag jako opcjonalny w przypadku ActivityRule.Builder. (Ib0b44)
  • Usuń RatioSplitType, ExpandContainersSplitHingeSplitType. Są to SplitType.
    • Zamień #splitEqually(), #expandContainers()#splitByHinge na stałe wartości SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPANDSPLIT_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ędnego zadania zostanie podzielony równomiernie. Aby dostosować typ podziału zapasowego, użyj parametru SplitController#setSplitAttributesCalculator. (Ifcc59)
  • Zrezygnuj z umowy add/removeSplitCallback
    • Przenieś add/removeSplitCallback do SplitControllerCallbackAdapter
    • Dodanie obsługi Flow w celu uzyskania listy SplitInfo (I7f1b6)
  • Dodawanie reguły testowej dla ActivityEmbeddingController (I42e9b)
  • Zmiana nazwy ActivityOptionsCompat na ActivityEmbeddingOptions (I89301)
  • Dodaj splitSupportStatus, aby wskazać, czy można osadzić aktywność. (I10024)
  • Wprowadź SplitAttributes.BackgroundColor, aby lepiej odzwierciedlać wartość DEFAULT. Uściśliwiliśmy, że przezroczysty kolor tła animacji nie jest obsługiwany, więc wszystkie przezroczyste kolory będą traktowane jako domyślne, co oznacza użycie koloru tła okna bieżącego motywu. (Ic6b95)
  • Zastąp alwaysAllow()alwaysDisallow() wartościami ALWAYS_ALLOWALWAYS_DISALLOW. (I3057b)
  • Dodaj interfejsy API SplitRule, SplitAttributesSplitAttributesCalculator. (I92d23)
  • Dodaj TestActivityStack, aby utworzyć ActivityStack na potrzeby testowania.
    • Dodaj TestSplitInfo, aby utworzyć SplitInfo do testowania. (I8e779)
  • Dodanie sposobu tworzenia fałszywych SplitAttributesCalculatorParams, aby deweloperzy mogli weryfikować swoje niestandardowe SplitAttributesCalculator (Id4a6e)
  • Dodaj WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)WindowMetricsCalculator#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 parametru windowLayoutInfo, w tym interfejsu Context API.

Zmiany w interfejsie API

  • Dodaj stałą wartość dla nieokreślonej funkcji składania na środku. (I7530c)

Poprawki błędów

  • Zaktualizuj WindowLayoutInfoPublishRule, aby obsługiwać zastąpienia w Context na podstawie WindowLayoutInfo. (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 commity.

Nowe funkcje

Stabilizacja interfejsów API do testowania w zakresie umieszczania 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 dotyczącego umieszczania aktywności. (I8d6b6)
  • WindowMetrisCalculatorTestRule jest stabilny i umożliwia tworzenie danych zastępczych w przypadku testów JVM. Aby uzyskać dokładne wyniki, zalecamy użycie emulatora.
  • Stabilizacja interfejsów API testowych w usłudze WindowLayoutInfo w celu obsługi testów JVM. (Ie036e)
  • Dodaj IntRange, aby przetestować wartości funkcji 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 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED jako właściwość logiczną tagu <application> w pliku manifestu aplikacji.
  • Wycofano isSplitSupported i zastąpiono je splitSupportStatus, aby podać 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ści splitSupportStatus.
  • Przekształcono SplitController w kilka modułów:
    • moduł ActivityEmbeddingController dla powiązanych interfejsów API Activity lub ActivityStack.
    • Element sterujący isActivityEmbedded został przeniesiony z poziomu SplitController na poziom ActivityEmbeddingController.
    • Moduł RuleController do operacji związanych z EmbeddingRule:
    • Usunięto interfejsy API SplitController:
    • 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.
  • Wszystkie moduły wymagają inicjowania kontekstu 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 kalkulatora SplitAttributes, aby umożliwić dostosowywanie układów podzielonych:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), aby sprawdzić, czy interfejsy API SplitAttributesCalculator są obsługiwane na urządzeniu.
  • Dodano pole EmbeddingRule#tag.
  • Aktualizacje interfejsu API w wersji SplitRule:
    • Dodano defaultSplitAttributes – określa domyślny układ podziału; zastępuje splitRatio i layoutDirection.
    • Dodano tłumaczenie właściwości XML splitRatiosplitLayoutDirection do właściwości defaultSplitAttributes.
    • 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 na minWidthDp z wartością domyślną 600 dp.
    • Zmieniono minSmallestWidth na minSmallestWidthDp z wartością domyślną 600 dp.
    • Dodano element maxAspectRatioInHorizontal o wartości domyślnej ALWAYS_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 klasy SplitPairRuleSplitPlaceholderRule w klasie zagnieżdżonej Builder.
  • Zastąpiliśmy SplitInfo#getSplitRatio() wartością SplitInfo#getSplitAttributes(), aby podać dodatkowe informacje dotyczące testu A/B.

WindowLayout

  • Dodano do WindowInfoTracker eksperymentalną obsługę kontekstu interfejsu użytkownika poza aktywnością.
  • Dodano eksperymentalny kontekst interfejsu użytkownika dotyczący nieaktywności do WindowMetricsCalculator.

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" /> Dzięki temu system może z wyprzedzeniem zoptymalizować zachowania związane z ramkami dla aplikacji.
  • SplitInfo współczynnik
    • Sprawdź, czy bieżący podział jest ułożony w grupach: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. }
  • Migracje SplitController:
    • SplitController.getInstance() zmienia się na SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) zmienia się na RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) zmienia się na ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) zmienia się na RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) zmienia się na RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() zmienia się na RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() zmienia się na RuleController.getInstance(Context).getRules().
  • Migracje właściwości SplitRule:
    • Komponenty minWidthminSmallestWidth 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 przez displayMetrics#density.
  • Stałe zachowania zakończenia muszą zostać przeniesione do stałych klas typu FinishBehavior, które przypominają typy wyliczeniowe:
    • FINISH_NEVER zmieniono na FinishBehavior.NEVER.
    • FINISH_ALWAYS zmienia się na FinishBehavior.ALWAYS.
    • FINISH_ADJACENT zmienia się na FinishBehavior.ADJACENT.
  • Kierunek układu musi zostać przeniesiony do SplitAttributes.LayoutDirection:
    • ltr zmieniono na SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl zmieniono na SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale zmienia się na SplitAttributes.LayoutDirection.LOCALE.
    • Abonament splitRatio musi zostać przeniesiony do SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migracji:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmieniono na kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio) zmieniono na kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary przyjmują stałe typu FinishBehavior. Więcej informacji 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 migracji:
    • Ma tylko parametry filtersplaceholderIntent. Inne właściwości są przenoszone do metod settera. Więcej informacji znajdziesz w artykule „Migrowanie reguł SplitPairRule.Builder”.
    • setFinishPrimaryWithPlaceholder przyjmuje stałą typu FinishBehavior. Szczegółowe informacje znajdziesz w sekcji „Migracje reguł podziału”.
    • setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmieniły się na: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Aby wyświetlić podziały na urządzeniach w orientacji pionowej, użyj setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW).

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 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED jako właściwość logiczną tagu <application> w pliku manifestu aplikacji.
  • Wycofano isSplitSupported i zastąpiono je splitSupportStatus, aby podać 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ści splitSupportStatus.
  • Przekształcono SplitController w kilka modułów:
    • moduł ActivityEmbeddingController dla powiązanych interfejsów API Activity lub ActivityStack.
    • Element sterujący isActivityEmbedded został przeniesiony z poziomu SplitController na poziom ActivityEmbeddingController.
    • Moduł RuleController do operacji związanych z EmbeddingRule:
    • 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.
  • Wszystkie moduły wymagają inicjowania kontekstu 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 kalkulatora SplitAttributes, aby umożliwić dostosowywanie układów podzielonych:
    • 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 – określa domyślny układ podziału; zastępuje splitRatio i layoutDirection.
    • Dodano tłumaczenie właściwości XML splitRatiosplitLayoutDirection do właściwości defaultSplitAttributes.
    • 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 na minWidthDp z wartością domyślną 600 dp.
    • Zmieniono minSmallestWidth na minSmallestWidthDp z wartością domyślną 600 dp.
    • Dodano element maxAspectRatioInHorizontal o wartości domyślnej ALWAYS_ALLOW.
    • Dodano 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 klasy Builder w klasie SplitPairRuleSplitPlaceholderRule.
  • 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 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. }
  • SplitController migracje:
    • SplitController.getInstance() zmienia się na SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) zmieniono na RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) zmienia się na ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) zmienia się na RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) zmienia się na RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() zmienia się na RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() zmienia się na RuleController.getInstance(Context).getRules().
  • Migracje właściwości SplitRule:
    • Komponenty minWidthminSmallestWidth 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 przez displayMetrics#density.
  • Stałe zachowania zakończenia muszą zostać przeniesione do stałych klas typu FinishBehavior, które przypominają typy wyliczeniowe:
    • FINISH_NEVER zmieniono na FinishBehavior.NEVER.
    • FINISH_ALWAYS zmienia się na FinishBehavior.ALWAYS.
    • FINISH_ADJACENT zmienia się na FinishBehavior.ADJACENT.
  • Kierunek układu musi zostać przeniesiony do SplitAttributes.LayoutDirection:
    • ltr zmieniono na SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl zmieniono na SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale zmienia się na SplitAttributes.LayoutDirection.LOCALE.
    • Abonament splitRatio musi zostać przeniesiony do SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migracje:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmieniono na kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmienią się na kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary przyjmują stałe typu FinishBehavior. 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 migracji:
    • Ma tylko parametry filtersplaceholderIntent. Inne właściwości są przenoszone do metod settera. Więcej informacji znajdziesz w artykule „Migrowanie reguł SplitPairRule.Builder”.
    • setFinishPrimaryWithPlaceholder przyjmuje stałą typu FinishBehavior. Szczegółowe informacje znajdziesz w sekcji „Migracje reguł podziału”.
    • setLayoutDirection(layoutDirection) i setSplitRatio(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.

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 UI Context WindowLayoutInfo za eksperymentalny. (I58ee0)
  • Wprowadza WindowAreaController i interfejsy API, aby włączyć tryb RearDisplay, 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, SplitAttributesSplitAttributesCalculator. (I92d23)
  • Ulepszyć interfejsy API dotyczące maxAspectRatio:
    1. Zastąp alwaysAllow() i alwaysDisallow() wartościami ALWAYS_ALLOW i ALWAYS_DISALLOW.
    2. Zaktualizuj dokumentację interfejsu API usługi @see, dodając do niej samodzielną dokumentację. (I3057b)
  • Z publicznych interfejsów API usunięto te konstruktory, ponieważ nie powinny być wywoływane przez aplikacje.
    • SplitInfo konstruktor
    • ActivityStack 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 żądanemu maxAspectRatio. (Ia5990)
  • Zmień RuleController#parseRules na statyczny (I785df)
  • Ulepszanie interfejsów API związanych z ActivityEmbedding
    1. Dopasuj nazwy interfejsów API – użyj opcji dodawania i usuwania w przypadku wielu instancji:
    2. registerRule zmieniono na addRule
    3. unregisterRule zmieniono na removeRule
    4. Zamień getSplitRules na getRules, ponieważ ActivityRule nie jest regułą podziału
    5. Dodaj RuleController#setRules, aby ustawić wiele reguł
    6. Wyodrębnij interfejsy API powiązane z regułami z poziomu SplitController do poziomu pojedynczego RuleController. Oto oni:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Wyodrębnij #isActivityEmbedded z poziomu SplitController i przekształć go w element singleton ActivityEmbeddingController. Oto oni:
    14. isActivityEmbedded
    15. Usuń SplitController#initialize. Aby skonfigurować reguły z pliku XML, użyj elementów RuleController#parseRules#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)
    16. 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ą zarejestrowane za pomocą statycznych definicji reguł XML, czy w czasie wykonywania. Aby uzyskać starsze zachowanie funkcji SplitController#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:
    1. Minimalne wymiary w DP, a nie w pikselach w przypadku SplitRule.
    2. Refaktoryzacja w Kreatorze SplitRule, aby minimalne wymiary były opcjonalne. (I95f17)
  • Przekazywanie kontekstu do zainicjowania SplitController (I42549)
  • Zmieniono nazwę SplitRule#layoutDir na #layoutDirection, a SplitRule Builder#setLayoutDir na Builder#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 dla ActivityEmbedding.
  • Usunięto eksperymentalne tagi interfejsów API z interfejsów API ActivityEmbedding.
  • Ukryj konstruktor ActivityRule, ponieważ preferowanym sposobem tworzenia jest Builder.
  • Dodaj eksperymentalną metodę, aby uzyskać WindowInsets w funkcji WindowMetrics.
  • 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ć fun isEmpty.
  • Zmień nazwę aktywności parametru ActivityStack na activitiesInProcess. (Ia5055)
  • Usuń ActivityFilter#matchesClassName i ActivityFilter#matchesClassNameOrWildCard, ponieważ wprowadzają one zamieszanie.
  • Dodaj ActivityFilter#componentName abd ActivityFilter#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 dla interfejsów API umożliwiających umieszczanie aktywności (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 WindowMetricsWindowMetricsCalculatorCompat (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 i SplitPlaceholderRule.finishPrimaryWithPlaceholder, które zastępują istniejące interfejsy SplitPlaceholderRule.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ć tryb RearDisplay, 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 i FoldingFeature. 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ść na jawną 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)
  • Ukryliśmy 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

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 eksperymentalną adnotację, aby dodać adnotację do eksperymentalnych interfejsów API. (I9f1b6)
  • Dodaj metodę testową, aby utworzyć testową funkcję FoldingFeature, która akceptuje obiekt Rect. Dzięki temu łatwiej będzie Ci testować za pomocą Robolectric niż 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 wersji 1.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 przepływ 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 na podstawie 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ą do tworzenia funkcji 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 na occlusionType.

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 Kotlina. 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-rxjava2window-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)
  • Przeniesienie głównej biblioteki menedżera okien do Kotlina. (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, a jej zakończenie planujemy 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

  • Dodawanie Kotlina jako zależności.
    • Przeniesienie podstawowej biblioteki do Kotlina. (Idd995)
  • Usunięto kreator DisplayFeature. (I61fa4)
  • Z publicznego interfejsu API usunięto element DeviceState. Zamiast niego używaj elementu FoldingFeature. (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ę zawiasu. 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 metod ułatwiających pracę 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ł emitowany WindowLayoutInfo. Teraz emitujemy puste okno 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 uruchomiona w tle. Stan powinien być teraz spójny.
  • Zaktualizuj pliki ProGuard, aby ignorować ostrzeżenia z 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ść dla 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ędą stosować inne funkcje. Pierwszą z nich jest FoldingFeature, która reprezentuje złożenie ekranu lub zawias. Zawiera ona również stan zawiasu, który zastępuje DeviceState.

  • Okno WindowMetrics zostało wprowadzone w Androidzie 11, aby zapewnić deweloperom prosty sposób na wysyłanie zapytań o dane dotyczące okna, np. o 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 uwzględnić 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.

Funkcje androidx.window:window:1.0.0-alpha01androidx.window:window-extensions:1.0.0-alpha01 są dostępne. 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.).