WindowManager

Biblioteka Jetpack WindowManager umożliwia deweloperom aplikacji obsługę nowych formatów urządzeń i środowisk z wieloma oknami. Pierwsza wersja jest przeznaczona na urządzenia składane, ale w przyszłości będzie obsługiwać więcej typów wyświetlaczy i funkcji okien.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja Alfa
19 listopada 2025 r. 1.5.1 - - 1.6.0-alpha01

Deklarowanie zależności

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

Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Groovy

dependencies {
    implementation "androidx.window:window:1.5.1"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.5.1"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.5.1"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.5.1"

    // For testing
    implementation "androidx.window:window-testing:1.5.1"
}

Kotlin

dependencies {
    implementation("androidx.window:window:1.5.1")

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.5.1")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.5.1")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.5.1")

    // For testing
    implementation("androidx.window:window-testing:1.5.1")
}

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego problemu

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

Wersja 1.6

Wersja 1.6.0-alpha01

19 listopada 2025 r.

Publikacja androidx.window:window-*:1.6.0-alpha01 Wersja 1.6.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Dodaj metody pomocnicze, aby utworzyć nośnik WindowSizeClassSets w formie siatki.

Zmiany w interfejsie API

  • Dodaj metody pomocnicze, aby utworzyć nośnik WindowSizeClassSets w formie siatki. (I4d623, b/444174274)

Wersja 1.5

Wersja 1.5.1

19 listopada 2025 r.

Publikacja androidx.window:window-*:1.5.1 Wersja 1.5.1 zawiera te zmiany.

Poprawki błędów

  • Rozwiązuje problem ClassCastException, który występuje na niektórych urządzeniach (4d58979).

Wersja 1.5.0

24 września 2025 r.

Publikacja androidx.window:window-*:1.5.0 Wersja 1.5.0 zawiera te zmiany.

Ważne zmiany od wersji 1.4.0:

  • Dodaj punkty przerwania WindowSizeClass dla dużych i bardzo dużych ekranów. (I40d85)
  • Rozwiń obliczanie WindowMetrics do kontekstu aplikacji. (I8eeeb, b/360934048)
  • Udostępnij funkcję pobierającą, aby umożliwić bezpośredni dostęp do WindowLayoutInfo (Ie9513)
  • Wprowadzenie interfejsu API do automatycznego zapisywania stanu osadzania i automatycznego przywracania stanu osadzania po ponownym uruchomieniu procesu aplikacji. (Ie0295)
  • Usunięto eksperymentalny interfejs API WindowInsets. (I68a71)

Poprawki błędów

  • Poprawka: w niektórych przypadkach funkcja EmbeddingRule zwracała inne wartości hashCode. (I748cc)
  • Poprawka dotycząca sytuacji, w której może wystąpić NullPointerException z powodu błędów w implementacji na urządzeniu.
  • Rozwiązanie problemu, w którym nasze ActivityEmbedding sprawdzanie bezpieczeństwa kończyło się niepowodzeniem z powodu usunięcia nieużywanych klas przez ProGuard.

Wkład zewnętrzny

  • Dodaj wszystkie platformy KMP do window-core (If3d7c)

Wersja 1.5.0-rc01

27 sierpnia 2025 roku

Publikacja androidx.window:window-*:1.5.0-rc01 Wersja 1.5.0-rc01 zawiera te zmiany.

Poprawki błędów

  • Poprawka dotycząca sytuacji, w której może wystąpić NullPointerException z powodu błędów w implementacji na urządzeniu.
  • Rozwiązanie problemu, w którym nasze ActivityEmbedding sprawdzanie bezpieczeństwa kończyło się niepowodzeniem z powodu usunięcia nieużywanych klas przez ProGuard.

Wersja 1.5.0-beta02

13 sierpnia 2025 r.

Publikacja androidx.window:window-*:1.5.0-beta02 Wersja 1.5.0-beta02 zawiera te zmiany.

Nowe funkcje

  • Poprawki drobnych błędów.

Wkład zewnętrzny

  • Dodaj wszystkie platformy KMP do window-core (If3d7c)

Wersja 1.5.0-beta01

2 lipca 2025 r.

Publikacja androidx.window:window-*:1.5.0-beta01 Wersja 1.5.0-beta01 zawiera te zmiany.

Wersja 1.5.0-alpha02

7 maja 2025 r.

Publikacja androidx.window:window-*:1.5.0-alpha02 Wersja 1.5.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaj punkty przerwania WindowSizeClass dla dużych i bardzo dużych ekranów. (I40d85)
  • Rozwiń obliczanie WindowMetrics do kontekstu aplikacji. (I8eeeb, b/360934048)
  • Udostępnij funkcję pobierającą, aby umożliwić bezpośredni dostęp do WindowLayoutInfo (Ie9513)
  • Wprowadzenie interfejsu API do automatycznego zapisywania stanu osadzania i automatycznego przywracania stanu osadzania po ponownym uruchomieniu procesu aplikacji. (Ie0295)
  • Usunięto eksperymentalny interfejs API WindowInsets. (I68a71)
  • Ukrywanie kilku zespołów (I87b8d)

Poprawki błędów

  • Poprawka: w niektórych przypadkach funkcja EmbeddingRule zwracała inne wartości hashCode. (I748cc)

Wersja 1.5.0-alpha01

12 marca 2025 r.

Publikacja androidx.window:window-*:1.5.0-alpha01 Wersja 1.5.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Pierwsza wersja 1.5.0.

Wersja 1.4

Wersja 1.4.0

20 maja 2025 r.

Publikacja androidx.window:window-*:1.4.0 Wersja 1.4.0 zawiera te zmiany.

Ważne zmiany od wersji 1.3.0

  • Umieszczanie aktywności
    • Interfejs API do dostosowywania animacji uruchamiania
    • Separator interaktywny
    • ActivityStack Przypinanie
    • Przyciemnianie okna pełnoekranowego
    • Wywołanie zwrotne informacji o oknie aktywności umieszczonym na stronie
    • Ulepszone ActivityStackzarządzanie
    • Uruchamianie aktywności w określonym ActivityStack
  • WindowMetricsCalculator
    • Ulepszona obsługa testowania
  • WindowMetrics
    • Wygodne metody obliczania wartości withDpheightDp
    • Zaktualizuj sprawdzanie zakresu do isAtLeast i użyj dolnych granic, aby umożliwić dodawanie nowych wartości
  • WindowSizeClass
    • Dodaj sposób obliczania z usługi WindowMetrics
  • WindowInfoTracker
    • Dodanie interfejsu API do wykrywania obsługiwanych pozycji na urządzeniu

Wersja 1.4.0-rc02

23 kwietnia 2025 r.

Publikacja androidx.window:window-*:1.4.0-rc02 Wersja 1.4.0-rc02 zawiera te zmiany.

Poprawki błędów

  • Naprawianie awarii narzędzia ProGuard w przypadku ActivityEmbedding.

Wersja 1.4.0-rc01

12 marca 2025 r.

Publikacja androidx.window:window-*:1.4.0-rc01 Wersja 1.4.0-rc01 zawiera te zmiany.

Nowe funkcje

  • Zmiany w interfejsie WindowSizeClass API.
  • Zmiany w interfejsach API do osadzania aktywności.

Wersja 1.4.0-beta02

12 lutego 2025 r.

Publikacja androidx.window:window-*:1.4.0-beta02 Wersja 1.4.0-beta02 zawiera te zmiany.

Nowe funkcje

  • Napraw adnotację, która była tylko w usłudze, ale nie w metodzie pobierającej.

Wersja 1.4.0-beta01

15 stycznia 2025 r.

Publikacja androidx.window:window-*:1.4.0-beta01 Wersja 1.4.0-beta01 zawiera te zmiany.

Nowe funkcje

  • Dodaj interfejs API, aby umożliwić dostosowywanie ActivityEmbeddinganimacji.
  • Rozwiń WindowMetricsCalculator test APIs, aby umożliwić fałszowanie danych okna.

Zmiany w interfejsie API

  • Ukrywanie kilku zespołów (I87b8d)
  • Zezwalaj aplikacjom na dostosowywanie animacji ActivityEmbedding (If31a8)
  • Dodano obsługę platformy watchosDeviceArm64 KMP i wersji 1.9 języka Kotlin (Icf15d, b/364652024)
  • Udostępnij interfejsy WindowMetricsCalculator API. (I1cebf)

Poprawki błędów

  • Ta biblioteka korzysta teraz z adnotacji o wartości null JSpecify, które są używane w typie. Deweloperzy korzystający z języka Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict (jest to domyślny argument począwszy od wersji 2.1.0 kompilatora Kotlin). (Ie69ac, b/326456246)

Wersja 1.4.0-alpha05

16 października 2024 r.

Publikacja androidx.window:window-*:1.4.0-alpha05 Wersja 1.4.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Dodaj funkcje ułatwiające uzyskanie wartości widthDpheightDpWindowMetrics.

Zmiany w interfejsie API

  • Dodaj widthDp i heightDp do WindowMetrics. (Ide026)
  • Usunięto eksperymentalny interfejs API WindowInsets. (I68a71)
  • Zmiana nazw metod sprawdzania zakresu na isAtLeast (Ib0ab7)

Wersja 1.4.0-alpha04

2 października 2024 r.

Publikacja androidx.window:window-*:1.4.0-alpha04 Wersja 1.4.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano metodę obliczania WindowSizeClass na podstawie WindowMetrics. (874dba)
  • Dla przejrzystości zmień metody WindowSizeClass na containsWidthDp, containsHeightDpcontainsWindowSizeDp. (fa760d)
  • Przekształć WindowAreaController w abstrakcyjną klasę bazową. (I90893)

Poprawki błędów

  • Dodanie obsługi względnych granic podczas tworzenia testu FoldingFeature. (2e6b3e)
  • Ogólne poprawki błędów podczas wybierania tagu WindowSizeClass.

Wersja 1.4.0-alpha03

18 września 2024 r.

Publikacja androidx.window:window-*:1.4.0-alpha03 Wersja 1.4.0-alpha03 zawiera te zmiany.

Nowe funkcje

  • Dodaj metodę narzędziową, 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.
  • Naprawiliśmy błąd, który w niektórych przypadkach powodował nieprawidłowe wybieranie kompaktowych wymiarów.

Wersja 1.4.0-alpha02

4 września 2024 r.

Publikacja androidx.window:window-*:1.4.0-alpha02 Wersja 1.4.0-alpha02 zawiera te zmiany.

Nowe funkcje

Dodaliśmy obsługę niestandardowych właściwości WindowSizeClass.

  • Otwórz konstruktor WindowSizeClass, aby programiści mogli używać własnych.
  • Dodaj isAtLeastmetody narzędzioweWindowSizeClass, aby deweloperzy mogli przetwarzać zakres wartości WindowSizeClass.
  • Dodaj funkcję rozszerzenia w Set<WindowSizeClass>, aby obliczyć najlepsze dopasowanie z zestawu.
  • 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 metod granic dla WindowSizeClass. (If89a6)
  • Zaktualizuj interfejs WindowSizeClass API, aby w przyszłości można było dodawać nowe wartości punktów przerwania. Zamiast granic bezwzględnych używamy dolnych granic i zalecamy programistom sprawdzanie dolnych granic podczas przetwarzania WindowSizeClass. Obecne wersje WindowWidthSizeClassWindowHeightSizeClass zostaną wycofane, ponieważ nie będą już rozwijane. (I014ce)

Wersja 1.4.0-alpha01

7 sierpnia 2024 r.

Publikacja androidx.window:window-*:1.4.0-alpha01 Wersja 1.4.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Przypinanie stosu aktywności umożliwia aplikacjom przypinanie treści w jednym kontenerze i odseparowanie nawigacji od drugiego kontenera.
  • Interaktywny separator umożliwia aplikacjom wyświetlanie stałego lub przesuwanego separatora między 2 aktywnościami w podzielonym widoku.
  • Przyciemnianie okna dialogowego na pełnym ekranie umożliwia aplikacjom określenie obszaru przyciemnienia okna dialogowego, tak aby przyciemnić całe okno zadania lub tylko kontener, w którym wyświetla się okno dialogowe.
  • Wywołanie zwrotne informacji o osadzonym oknie aktywności umożliwia aplikacjom ciągłe otrzymywanie aktualizacji osadzonego okna aktywności.
  • Osadzanie tła animacji umożliwia aplikacjom określanie tła animacji, co poprawia jakość animacji przejścia, gdy używana jest funkcja ActivityEmbedding.
  • Ulepszone zarządzanie stosem aktywności pozwala aplikacjom mieć większą kontrolę nad ActivityStacks, gdy używana jest funkcja ActivityEmbedding, w tym:
  • Uruchamianie aktywności w określonym ActivityStack
  • Kończenie ActivityStack

Zmiany w interfejsie API

  • Nowy interfejs API WindowInfoTracker#supportedPostures:

    • Interfejs API, który określa, czy urządzenie obsługuje tryb TableTop w przypadku urządzeń składanych. Dodaje WindowAreaSessionPresenter#getWindow
  • Dodaj interfejsy API, aby obsługiwać ActivityStack przypinanie:

    • SplitPinRule zajęcia
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • Dodawanie interfejsów API w celu włączenia i skonfigurowania interaktywnego separatora

    • DividerAttributes zajęcia
    • SplitAttributes.Builder#setDividerAttributes
  • Dodawanie interfejsów API do ustawiania wartości EmbeddingConfiguration i DimAreaBehavior w przypadku okien

    • EmbeddingConfiguration zajęcia
    • DimAreaBehavior zajęcia
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • Dodawanie interfejsów API w celu otrzymywania aktualizacji informacji o oknie aktywności osadzonej

    • EmbeddedActivityWindowInfo zajęcia
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • Dodawanie interfejsów API do ustawiania tła animacji osadzania

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • Dodaj interfejsy API, aby zakończyć ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • Dodawanie interfejsów API do ustawiania uruchamiania ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • Te interfejsy API są stabilne i nie są już eksperymentalne:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (przeniesiono z SplitController#invalidateTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • Dodaj interfejsy API dla wersji 1.4. (I56774)

Poprawki błędów

  • Naprawiono błąd na niektórych urządzeniach, w którym w przypadku aktywnej sesji zwracano wartość UNAVAILABLE zamiast ACTIVE.
  • Usuwa obsługę transferActivityToWindowArea na urządzeniach z vendorApiLevel 2 ze względu na niestabilną obsługę interfejsu API.
  • Wprowadzenie interfejsu API umożliwiającego przeciąganie do trybu pełnoekranowego w przypadku dzielnika z możliwością przeciągania w osadzaniu aktywności. (I645c9)
  • Zezwalaj aplikacjom na wyłączanie animacji ActivityEmbedding za pomocą parametrów animacji dla SplitAttributes. (Idc01a)
  • Usunęliśmy 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 w przypadku wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klientom, którzy nie korzystają z AGP, zalecamy przejście na D8 w wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)
  • Zezwól rozszerzeniom na pobieranie parametrów animacji dla SplitAttributes, aby urządzenie mogło ich używać do przejść animacji. (Iede00)
  • Ukrywanie interfejsów API nakładki (Ic4251)
  • Wprowadzenie interfejsów API do konfigurowania stałego lub przesuwanego separatora podziału (Ia7a78)
  • Dodano gęstość do WindowMetrics (Id6723)
  • Dodano interfejs API, aby uzyskać SupportedPostures. (If557a)
  • Usunięto setLaunchingActivityStack z eksperymentalnego interfejsu API (I191cf)
  • Wprowadzenie ActivityEmbeddingController#embeddedActivityWindowInfo (I24312)
  • Wycofaj #getToken i dodaj #getActivityStackToken (Ie0471)
  • Wprowadzenie adaptera wywołania zwrotnego dla interfejsu API przepływu embeddedActivityWindowInfo (Ida77f)
  • Dodano adapter wywołania zwrotnego dla interfejsu API przepływu overlayInfo (I7264f)
  • Wprowadź WindowSdkExtensionsRule, aby zastąpić extensionsVersion na potrzeby testowania. (Ifb928)
  • – Przenieś #setLaunchingActivityStack do pakietu, aby zapewnić zgodność z użyciem ActivityOptionsCompat.
    • Użytkownicy powinni przekazywać wartość activityOptions.toBundle zamiast samego znaku ActvityOptions.
    • Usuń #setLaunchingActivityStack(Activity). Użytkownicy powinni przejść na ActivityEmbeddingController#getActivityStac(Activity), aby uzyskać ActivityStack, i przekazać ActivityStack do #setLaunchingActivityStack. (Ie0ccc)
  • – Wprowadź identyfikatory ActivityStack.TokenSpltInfo.Token, aby umożliwić komunikację między WM Jetpack a rozszerzeniami.
    • Wycofanie/zastąpienie interfejsów API, aby przyjmować/zwracać token zamiast IBinder. (I12b24)
  • – Przedstaw ActivityEmbeddingController#invalidateVisibleActivityStacks
    • Usuń SplitController#invalidateTopVisibleSplitAttributes, ponieważ ta funkcja została połączona z funkcją #invalidateVisibleActivityStacks (I02ef5)
  • – dodanie interfejsu API do konfigurowania osadzania; (I59a4a)
  • – dodawanie przypinania i odpinania najważniejszych interfejsów API ActivityStack androidx.Window;
    • Aktualizacja aplikacji demonstracyjnej, która umożliwia przypinanie i odpinanie u góry ActivityStack (I24dd3)
  • Ponownie dodaj #finishActivityStacksActivityEmbeddingOptions (Ic1ab3)
  • Usuń niestabilne interfejsy API. (Ibc534, b/302380585)

Wersja 1.3

Wersja 1.3.0

29 maja 2024 r.

Publikacja androidx.window:window-*:1.3.0 Wersja 1.3.0 zawiera te zmiany.

Ważne zmiany od wersji 1.2.0

  • Obsługa Kotlin Multiplatform w przypadku klas rozmiarów okien.

Wersja 1.3.0-rc01

14 maja 2024 r.

WindowManager Jetpack 1.3 obsługuje Kotlin Multiplatform w przypadku WindowSizeClass funkcji, a także zawiera wiele poprawek błędów.

Publikacja androidx.window:window-*:1.3.0-rc01 Wersja 1.3.0-rc01 zawiera te zmiany.

Wersja 1.3.0-beta02

1 maja 2024 r.

Publikacja androidx.window:window-*:1.3.0-beta02 Wersja 1.3.0-beta02 zawiera te zmiany.

Zmiany w interfejsie API

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

Poprawki błędów

  • Naprawiono błąd KotlinReflectionInternalError spowodowany usunięciem niektórych plików przez ProGuard na niektórych urządzeniach. (I01b02)

Wersja 1.3.0-beta01

3 kwietnia 2024 r.

Publikacja androidx.window:window-*:1.3.0-beta01 Wersja 1.3.0-beta01 zawiera te zmiany.

Wersja 1.3.0-alpha03

6 marca 2024 roku

Publikacja androidx.window:window-*:1.3.0-alpha03 Wersja 1.3.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Podziel WindowSizeClassUtil na bardziej szczegółowe metody. (Ie9292)
  • Przywróć WindowSizeClass#compute (I21355, b/324293374)

Poprawki błędów

  • Rozwiązaliśmy problem z awarią, która występowała, gdy kontekst nie był prawidłowo rozpakowywany. (94d10ce , b/318787482)

Wersja 1.3.0-alpha02

7 lutego 2024 r.

Publikacja androidx.window:window-*:1.3.0-alpha02 Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Zmiany wprowadzone w interfejsie API klasy rozmiaru okna, aby zwiększyć elastyczność deweloperów, którzy chcą używać własnych klas rozmiaru.

Zmiany w interfejsie API

  • Dodaj ograniczenia wysokości do selektora szerokości. (I23393)
  • Dodaj funkcje narzędziowe do wybierania WindowSizeClass z zestawu. Dodanie eksperymentalnych funkcji oceniania, aby deweloperzy mogli pisać własne selektory. Dodaj funkcję rozszerzenia selektora, aby wybrać najszerszy znak WindowSizeClass w danym zakresie. (I0c944)
  • Otwórz konstruktor WindowSizeClass, aby dodać niestandardowe punkty przerwania. (Ic1ff3)
  • Dodano funkcję ułatwiającą tworzenie klasy rozmiaru na podstawie szerokości, wysokości i gęstości. (If67f4)

Poprawki błędów

  • Naprawiono wyjątek, gdy wartość zmiennoprzecinkowa jest obcinana do 0. (272ffac)

Wersja 1.3.0-alpha01

15 listopada 2023 r.

Publikacja androidx.window:window-*:1.3.0-alpha01 Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępnianie eksperymentalnych interfejsów API okien do uzyskiwania dostępu do tylnego ekranu.
  • Interfejsy API do testowania tworzenia FoldingFeature są już stabilne.
  • Interfejsy API do testowania ustawiania fałszywych wartości ActivityEmbedding są już stabilne.
  • WindowLayoutInfoPublisherRule zgłasza teraz zastąpienie podczas pobierania wartości z UiContext.
  • WindowInfoTracker raportuje dane funkcji zwijania do UiContext parametrów.
  • Udostępnianie wersji rozszerzeń na urządzeniu.
  • WindowProperties stałe wartości zastąpień ustawień aplikacji dla użytkownika:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE – informuje system, że aplikacja zrezygnowała z funkcji zastępowania zgodności z formatem obrazu widocznym dla użytkownika.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE– informuje system, że aplikacja zrezygnowała z opcji pełnoekranowej w ustawieniach zastępowania zgodności z proporcjami obrazu użytkownika.

Wersja 1.2

Wersja 1.2.0

15 listopada 2023 r.

Publikacja androidx.window:window-*:1.2.0 Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Udostępnianie eksperymentalnych interfejsów API okien do uzyskiwania dostępu do tylnego ekranu.
  • Interfejsy API do testowania tworzenia FoldingFeature są już stabilne.
  • Interfejsy API do testowania ustawiania fałszywych wartości ActivityEmbedding są już stabilne.
  • WindowLayoutInfoPublisherRule zgłasza teraz zastąpienie podczas pobierania wartości z UiContext.
  • WindowInfoTracker raportuje dane funkcji zwijania do UiContext parametrów.
  • Udostępnianie wersji rozszerzeń na urządzeniu.

Wersja 1.2.0-rc01

1 listopada 2023 roku

Publikacja androidx.window:window-*:1.2.0-rc01 Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępnianie eksperymentalnych interfejsów API okien do uzyskiwania dostępu do tylnego ekranu.
  • Interfejsy API do testowania tworzenia FoldingFeature są już stabilne.
  • Interfejsy API do testowania ustawiania fałszywych wartości ActivityEmbedding są już stabilne.
  • WindowLayoutInfoPublisherRule zgłasza teraz zastąpienie podczas pobierania wartości z UiContext.
  • WindowInfoTracker raportuje dane funkcji zwijania do UiContext parametrów.
  • Udostępnianie wersji rozszerzeń na urządzeniu.

Wersja 1.2.0-beta04

18 października 2023 r.

Publikacja androidx.window:window-*:1.2.0-beta04 Wersja 1.2.0-beta04 zawiera te zmiany.

Zmiany w interfejsie API

Wersja 1.2.0-beta03

20 września 2023 r.

Publikacja androidx.window:window-*:1.2.0-beta03 Wersja 1.2.0-beta03 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaj sprawdzanie RequiresApi w przypadku interfejsów API, które do prawidłowego działania wymagają określonej wersji rozszerzeń.
  • Dodaj interfejs API, aby udostępnić wersję rozszerzeń na urządzeniu.

Zmiany w interfejsie API

  • Dodaj adnotacje do wymaganej wersji rozszerzenia pakietu SDK okna w publicznych interfejsach API.
    • Usuń isXXXSupported w komponencie osadzania aktywności. (Ie3dae)
  • Wprowadź WindowSdkExtensions, aby zgłosić wersję rozszerzenia na urządzeniu.
    • Wprowadzamy adnotację RequiresWindowSdkExtension, aby oznaczać minimalną wymaganą wersję rozszerzenia. (I05fd4)
  • Ustawia wartość WindowAreaInfo#getCapability jako niepustą. (I17048)

Wersja 1.2.0-beta01

26 lipca 2023 r.

Publikacja androidx.window:window-*:1.2.0-beta01 Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępnianie eksperymentalnych interfejsów API okien do uzyskiwania dostępu do tylnego ekranu.
  • Interfejsy API do testowania tworzenia FoldingFeature są już stabilne.
  • Interfejsy API do testowania ustawiania fałszywych wartości ActivityEmbedding są już stabilne.
  • WindowLayoutInfoPublisherRule zgłasza teraz zastąpienie podczas pobierania wartości z UiContext.
  • WindowInfoTracker raportuje dane funkcji zwijania do UiContext parametrów.

Zmiany w interfejsie API

  • Oznaczono interfejs API WindowArea jako eksperymentalny, aby umożliwić dalsze zmiany interfejsu API w celu uzyskania stabilnej wersji 1.3 (I857f5).
  • Zaktualizowano pliki interfejsu API, aby dodać adnotacje o pomijaniu zgodności (I8e87a, b/287516207)

Wersja 1.2.0-alpha03

21 czerwca 2023 r.

Publikacja androidx.window:window-*:1.2.0-alpha03 Wersja 1.2.0-alpha03 zawiera te zmiany.

Nowe funkcje

  • Usunięcie wycofanych interfejsów API z powierzchni interfejsu API.
  • Dodaj interfejsy API obsługujące wyświetlanie równoczesne.
  • Dodaj właściwość, aby zrezygnować z wymuszonego zastąpienia zmiany rozmiaru.
  • Dodaj usługę, aby zrezygnować z zastępowania minimalnych proporcji obrazu.
  • Stabilizacja ActivityEmbeddingRule na potrzeby testów jednostkowych związanych z osadzaniem aktywności.

Zmiany w interfejsie API

  • Usuwanie wycofanych interfejsów API (I18d39)
  • Dodaliśmy obsługę wyświetlania równoczesnego. (Ifcbb0)

Poprawki błędów

  • Dodawanie właściwości wycofania w przypadku zastąpienia wymuszonej zmiany rozmiaru (Ie7ab1)
  • Usuwa SESSION_STATE_CONTENT_INVISIBLE z interfejsu rozszerzeń. (I6ed19)
  • Stabilizacja ActivityEmbeddingRule na potrzeby testów jednostkowych związanych z osadzaniem aktywności. (I8d6b6)
  • Dodanie właściwości wykluczającej zgodność w przypadku zastąpienia minimalnego współczynnika proporcji. (I66390)
  • Usuwa wycofane interfejsy WindowArea API (Ieb67c)
  • Zmień nazwę właściwości pętli żądania orientacji na PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd)
  • Aktualizuje nazwy stałych sesji obszaru okna (I83675)
  • Dodanie właściwości zgodności rezygnacji, która ignoruje pętlę żądania orientacji po wykryciu (I0a7a2)
  • Dodaj WindowAreaComponent#STATUS_ACTIVE, aby wskazać, że funkcja jest już aktywna. (I62bc3)
  • Dodawanie interfejsów API RearDisplayPresentationMode (I0401c)
  • Interfejs API do usuwania koloru tła w wersji stabilnej. (I34c3e)
  • Ukryj interfejsy API obszaru okna. (I39de0)
  • Dodaj metody zastępowania SplitInfo w klasie SplitController. Dodaj metody testowe, aby utworzyć podwójne wartości dla SplitInfoActivityStack. (Icd69f)
  • Oznacz tag jako opcjonalny w przypadku ActivityRule.Builder. (Ib0b44)
  • Usuń RatioSplitType, ExpandContainersSplitHingeSplitType. Są one SplitType.
    • Zastąp #splitEqually(), #expandContainers()#splitByHinge stałymi wartościami SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPANDSPLIT_TYPE_HINGE
    • Usunięcie funkcji ustawiania typu rezerwowego dla typu podziału zawiasu. Jeśli typu podziału zawiasu nie można zastosować ze względu na bieżący stan urządzenia lub okna, następuje podział kontenera zadania nadrzędnego na równe części. Użyj SplitController#setSplitAttributesCalculator, aby dostosować typ podziału rezerwowego. (Ifcc59)
  • Wycofaj add/removeSplitCallback
    • Przenieś add/removeSplitCallback do SplitControllerCallbackAdapter
    • Dodaj obsługę Flow, aby uzyskać listę SplitInfo (I7f1b6)
  • Dodaj regułę testową dla ActivityEmbeddingController (I42e9b)
  • Zmieniam nazwę ActivityOptionsCompat na ActivityEmbeddingOptions (I89301)
  • Dodaj splitSupportStatus, aby wskazać, czy osadzanie aktywności jest dostępne. (I10024)
  • Wprowadź SplitAttributes.BackgroundColor, aby lepiej odzwierciedlać wartość DEFAULT. Wyjaśniliś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 bieżącego koloru tła okna motywu. (Ic6b95)
  • Zastąp alwaysAllow()alwaysDisallow() wartościami ALWAYS_ALLOWALWAYS_DISALLOW. (I3057b)
  • Dodaj interfejsy API dla SplitRule, SplitAttributes, SplitAttributesCalculator. (I92d23)
  • Dodaj TestActivityStack, aby utworzyć ActivityStack do testowania.
    • Dodaj TestSplitInfo, aby utworzyć SplitInfo na potrzeby testowania. (I8e779)
  • Dodanie możliwości tworzenia fałszywych SplitAttributesCalculatorParams, aby deweloperzy mogli weryfikować dostosowane SplitAttributesCalculator (Id4a6e).
  • Dodaj WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f)

Wersja 1.2.0-alpha02

7 czerwca 2023 r.

Publikacja androidx.window:window-*:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zmiany.

Nowe funkcje

  • Zaktualizuj testowy interfejs API, aby zawierał stałą wartość dla nieokreślonych funkcji składania.
  • Zastąpienie za pomocą WindowLayoutInfoPublishRule spowoduje zastąpienie wszystkich wartości windowLayoutInfo, w tym interfejsu Context API.

Zmiany w interfejsie API

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

Poprawki błędów

  • Zaktualizuj WindowLayoutInfoPublishRule, aby obsługiwać zastępowanie wartości w przypadku Context na podstawie WindowLayoutInfo. (I2037a)

Wersja 1.2.0-alpha01

24 maja 2023 r.

Publikacja androidx.window:window-*:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.

Nowe funkcje

Ustabilizuj interfejsy API testowania w zakresie osadzania aktywności i WindowLayoutInfoTracker. ActivityEmbeddingRule została promowana do wersji stabilnej. WindowMetricsCalculatorRule została promowana do wersji stabilnej. Funkcje narzędziowe do tworzenia FoldingFeature na potrzeby testów zostały przeniesione do wersji stabilnej.

Zmiany w interfejsie API

  • Stabilizacja ActivityEmbeddingRule na potrzeby testów jednostkowych związanych z osadzaniem aktywności. (I8d6b6)
  • WindowMetrisCalculatorTestRule jest stabilna i umożliwia testowanie metryk zastępczych w przypadku testów JVM. Aby uzyskać dokładne wyniki, zalecamy użycie emulatora.
  • Stabilizacja interfejsów API testów dla WindowLayoutInfo w celu obsługi testowania JVM. (Ie036e)
  • Dodaj IntRange dla wartości funkcji testowego składania. (I69f7d)

Wersja 1.1

Wersja 1.1.0

7 czerwca 2023 r.

Publikacja androidx.window:window-*:1.1.0 Wersja 1.1.0 zawiera te zmiany.

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 splitSupportStatus, aby podawać bardziej szczegółowe informacje o tym, dlaczego funkcja podziału jest niedostępna.
  • Dodaliśmy zagnieżdżoną klasę SplitController.SplitSupportStatus, aby udostępniać stałe wartości stanu dla właściwości splitSupportStatus.
  • Przekształcono SplitController w kilka modułów:
    • moduł ActivityEmbeddingController dla interfejsów API powiązanych z Activity lub ActivityStack.
    • Przeniesiono isActivityEmbeddedSplitController do ActivityEmbeddingController.
    • Moduł RuleController do operacji związanych z EmbeddingRule:
    • Usunięte interfejsy API: SplitController
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Dodano interfejsy API: RuleController
    • addRule() – dodaje regułę lub aktualizuje regułę z tym samym tagiem.
    • removeRule() – usuwa regułę z kolekcji zarejestrowanych reguł.
    • setRules() – tworzy zbiór reguł.
    • clearRules() – usuwa wszystkie zarejestrowane reguły.
    • parseRules() – analizuje reguły z definicji reguł XML.
  • Wszystkie moduły wymagają zainicjowania kontekstu za pomocą metody #getInstance(), w tym:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Dodano klasę EmbeddingAspectRatio, aby zdefiniować stałe zachowania podobne do wyliczeń związane z formatem obrazu.
  • Dodano klasę SplitAttributes, aby zdefiniować układ podzielony.
  • Dodano funkcje kalkulatora SplitAttributes do SplitController, aby dostosować układy podzielone:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), aby sprawdzić, czy interfejsy SplitAttributesCalculator API są obsługiwane na urządzeniu.
  • Dodano pole EmbeddingRule#tag.
  • Aktualizacje interfejsu API w SplitRule:
    • Dodano defaultSplitAttributes – określa domyślny układ podziału; zastępuje splitRatiolayoutDirection.
    • Dodaliśmy tłumaczenie właściwości XML splitRatiosplitLayoutDirection na język defaultSplitAttributes.
    • Zmieniliśmy definicje minimalnych wymiarów, aby używać pikseli niezależnych od gęstości (dp) zamiast pikseli.
    • 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 maxAspectRatioInHorizontal z wartością domyślną ALWAYS_ALLOW.
    • Dodano maxAspectRatioInPortrait z wartością domyślną 1,4.
    • Zdefiniowano zagnieżdżoną klasę FinishBehavior, która zastępuje stałe zachowania zakończenia.
    • Zastosowano zmiany właściwości w zagnieżdżonej klasie Builder w przypadku SplitPairRuleSplitPlaceholderRule.
  • Zastąpiliśmy symbol SplitInfo#getSplitRatio() symbolem SplitInfo#getSplitAttributes(), aby podać dodatkowe informacje dotyczące podziału.

WindowLayout

  • Dodano eksperymentalną obsługę kontekstu interfejsu użytkownika bez aktywności w WindowInfoTracker.
  • Dodano eksperymentalny kontekst interfejsu bez aktywności do WindowMetricsCalculator.

Kroki migracji

  • Aby włączyć osadzanie aktywności w celu wyświetlania aktywności w podzielonym widoku, 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 podzielonego widoku w aplikacji.
  • SplitInfo ratio
    • Sprawdź, czy bieżący podział jest ułożony w stos: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 usługi SplitRule:
    • 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 dotyczące zachowania po zakończeniu muszą zostać przeniesione do stałych klasy wyliczeniowej FinishBehavior:
    • FINISH_NEVER zmienia się 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 zmienia się na SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl zmienia się na SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale zmienia się na SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio musi zostać przeniesiony do SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migrations:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmienia się na kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • Zmiany w setLayoutDirection(layoutDirection)setSplitRatio(ratio) na kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary przyjmują stałe podobne do wyliczeń FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje SplitRule”.
    • Naciśnij setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby wyświetlić podziały na urządzeniach w trybie portretowym.
  • SplitPlaceholder.Builder migrations:
    • Zawiera tylko parametry filtersplaceholderIntent. Pozostałe właściwości są przenoszone do funkcji ustawiających. Więcej informacji znajdziesz w sekcji „Migracje SplitPairRule.Builder”.
    • setFinishPrimaryWithPlaceholder przyjmuje stałe podobne do wyliczenia FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje SplitRule”.
    • Wartości setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmieniają się na:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Naciśnij setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby wyświetlić podziały na urządzeniach w trybie portretowym.

Wersja 1.1.0-rc01

10 maja 2023 r.

Publikacja androidx.window:window-*:1.1.0-rc01 Wersja 1.1.0-rc01 zawiera te zmiany.

Nowe funkcje

  • Wydaj ActivityEmbedding jako stabilny interfejs API.
  • Poprawki różnych błędów.

Wersja 1.1.0-beta02

5 kwietnia 2023 r.

Publikacja androidx.window:window-*:1.1.0-beta02 Wersja 1.1.0-beta02 zawiera te zmiany.

Nowe funkcje

  • Wewnętrzne poprawki i czyszczenie.

Wersja 1.1.0-beta01

22 marca 2023 r.

Publikacja androidx.window:window-*:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zmiany.

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 splitSupportStatus, aby podawać bardziej szczegółowe informacje o tym, dlaczego funkcja podziału jest niedostępna.
  • Dodaliśmy zagnieżdżoną klasę SplitController.SplitSupportStatus, aby udostępniać stałe wartości stanu dla właściwości splitSupportStatus.
  • Przekształcono SplitController w kilka modułów:
    • moduł ActivityEmbeddingController dla interfejsów API powiązanych z Activity lub ActivityStack.
    • Przeniesiono isActivityEmbeddedSplitController do 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łę z tym samym tagiem.
      • removeRule() – usuwa regułę z kolekcji zarejestrowanych reguł.
      • setRules() – tworzy zbiór reguł.
      • clearRules() – usuwa wszystkie zarejestrowane reguły.
      • `parseRules()` – analizuje reguły z definicji reguł XML.
  • Wszystkie moduły wymagają zainicjowania kontekstu za pomocą metody #getInstance(), w tym:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Dodano klasę EmbeddingAspectRatio, aby zdefiniować stałe zachowania podobne do wyliczeń związane z formatem obrazu.
  • Dodano klasę SplitAttributes, aby zdefiniować układ podzielony.
  • Dodano funkcje kalkulatora SplitAttributes do SplitController, aby dostosować układy podzielone:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), aby sprawdzić, czy interfejsy API SplitAttributesCalculator są obsługiwane na urządzeniu.
  • Dodano pole EmbeddingRule#tag.
  • Aktualizacje interfejsu API w SplitRule:
    • Dodano defaultSplitAttributes – określa domyślny układ podziału; zastępuje splitRatiolayoutDirection.
    • Dodaliśmy tłumaczenie właściwości XML splitRatiosplitLayoutDirection na język defaultSplitAttributes.
    • Zmieniliśmy definicje minimalnych wymiarów, aby używać pikseli niezależnych od gęstości (dp) zamiast pikseli.
    • 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 maxAspectRatioInHorizontal z wartością domyślną ALWAYS_ALLOW.
    • Dodano maxAspectRatioInPortrait z wartością domyślną 1.4.
    • Zdefiniowano zagnieżdżoną klasę FinishBehavior, która zastępuje stałe zachowania zakończenia.
    • Zastosowano zmiany właściwości w klasie zagnieżdżonej Builder klas SplitPairRuleSplitPlaceholderRule.
  • Zastąpiliśmy symbol SplitInfo#getSplitRatio() symbolem SplitInfo#getSplitAttributes(), aby podać dodatkowe informacje dotyczące podziału.

WindowLayout

  • Dodano obsługę kontekstu interfejsu użytkownika bez aktywności w WindowInfoTracker.
  • Dodano kontekst interfejsu bez aktywności do WindowMetricsCalculator.

Kroki migracji

  • Aby włączyć osadzanie aktywności w celu wyświetlania aktywności w podzielonym widoku, 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 podzielonego widoku w aplikacji.
  • SplitInfo ratio
    • Sprawdź, czy bieżący podział jest ułożony w stos: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 migrations:
    • 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 usługi SplitRule:
    • 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 dotyczące zachowania po zakończeniu muszą zostać przeniesione do stałych klasy wyliczeniowej FinishBehavior:
    • FINISH_NEVER zmienia się 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 zmienia się na SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl zmienia się na SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale zmienia się na SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio musi zostać przeniesiony do SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migrations:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmienia się na kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio) zmienią się na kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary przyjmują stałe podobne do wyliczeń FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje SplitRule”.
    • Naciśnij setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby wyświetlić podziały na urządzeniach w trybie portretowym.
  • SplitPlaceholder.Builder migrations:
    • Zawiera tylko parametry filtersplaceholderIntent. Pozostałe właściwości są przenoszone do funkcji ustawiających. Więcej informacji znajdziesz w sekcji „Migracje SplitPairRule.Builder”.
    • setFinishPrimaryWithPlaceholder przyjmuje stałe podobne do wyliczenia FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje SplitRule”.
    • Wartości setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmieniają się na:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Naciśnij setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby wyświetlić podziały na urządzeniach w trybie portretowym.

Wersja 1.1.0-alpha06

22 lutego 2023 roku

Publikacja androidx.window:window-*:1.1.0-alpha06 Wersja 1.1.0-alpha06 zawiera te zmiany.

Nowe funkcje

  • Udostępnianie eksperymentalnej wersji pobierania WindowLayoutInfo z kontekstu interfejsu.

Zmiany w interfejsie API

  • Dodaj splitSupportStatus, aby wskazać, czy osadzanie aktywności jest dostępne. (I10024)
  • Oznaczenie interfejsu UI Context WindowLayoutInfo API jako eksperymentalnego. (I58ee0)
  • Wprowadza WindowAreaController i interfejsy API, które umożliwiają przeniesienie bieżącego okna do wyświetlacza wyrównanego z tylnym aparatem w RearDisplay. (Iffcbf)
  • Zaktualizuj domyślny kolor tła. (I1ac1b)
  • Dodaj parametry SplitAttributes. (I18bdd)
  • Dodaj interfejsy API dla SplitRule, SplitAttributes, SplitAttributesCalculator. (I92d23)
  • Ulepsz interfejsy API związane z maxAspectRatio:
    1. Zastąp alwaysAllow()alwaysDisallow() wartościami ALWAYS_ALLOWALWAYS_DISALLOW.
    2. Zaktualizuj dokumentację API @see za pomocą samodzielnej dokumentacji. (I3057b)
  • Te konstruktory zostały usunięte z publicznych interfejsów API, ponieważ aplikacje nie powinny ich wywoływać.
    • SplitInfo konstruktor
    • ActivityStack constructor (Ide534)
  • SplitRule akceptuje teraz maxAspectRatioInPortrait/Landscape. Umożliwia to tylko podział działań, gdy współczynnik proporcji obszaru nadrzędnego jest mniejszy lub równy żądanemu współczynnikowi maxAspectRatio. (Ia5990)
  • Zmień wartość RuleController#parseRules na statyczną (I785df)
  • Ulepszanie interfejsów API związanych z ActivityEmbedding
    1. Ujednolicenie nazewnictwa interfejsu API – w przypadku wielu instancji używaj poleceń dodawania i usuwania:
    2. registerRule zmienia się na addRule
    3. unregisterRule zmienia się na removeRule
    4. Zastąp getSplitRules wartością getRules, ponieważ ActivityRule nie jest regułą podziału
    5. Dodaj RuleController#setRules, aby ustawić wiele reguł
    6. Wyodrębnij interfejsy API związane z regułą wyodrębniania z SplitController do pojedynczego elementu RuleController. Oto oni:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Wyodrębnij #isActivityEmbedded z SplitController do singletonu ActivityEmbeddingController. Oto oni:
    14. isActivityEmbedded
    15. Usuń SplitController#initialize. Aby skonfigurować reguły z pliku XML, użyj poleceń 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 działania. Wywołanie #clearRules powoduje usunięcie wszystkich reguł, niezależnie od tego, czy zostały zarejestrowane za pomocą statycznych definicji reguł XML, czy w czasie działania programu. Aby przywrócić starsze działanie funkcji SplitController#clearRegisteredRules, wywołaj funkcję RuleController#parseRules z identyfikatorem zasobów XML i wywołaj funkcję RuleController#setRules, aby ponownie ustawić reguły. Przed zmianą: SplitController.getInstance(context).clearRegisteredRules() Po zmianie: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • Ulepsz interfejsy SplitRule API:
    1. W przypadku SplitRule używaj minimalnych wymiarów w DP zamiast w pikselach.
    2. Zmiana kodu, aby SplitRule Builder przyjmował minimalne wymiary jako opcjonalne. (I95f17)
  • Przekazywanie kontekstu do inicjowania SplitController (I42549)
  • Zmieniono nazwę SplitRule#layoutDir na #layoutDirectionSplitRule Builder#setLayoutDir na Builder#setLayoutDirection. (I3f6d1)

Wersja 1.1.0-alpha04

9 listopada 2022 r.

Publikacja androidx.window:window-*:1.1.0-alpha04 Wersja 1.1.0-alpha04 zawiera te zmiany.

Nowe funkcje

  • Udostępnij metodę sprawdzania, czy element ActivityStack jest pusty w przypadku elementu ActivityEmbedding.
  • Usunięto tagi eksperymentalnych interfejsów API z interfejsów API ActivityEmbedding.
  • Ukryj konstruktor ActivityRule, ponieważ Builder jest preferowanym sposobem tworzenia.
  • Dodaj eksperymentalną metodę, aby uzyskać WindowInsets na WindowMetrics.
  • Zaktualizuj SplitPlaceholderFinishBehavior, aby zapobiec zakończeniu symbolu zastępczego. Ukończenie elementu zastępczego spowodowało pewne niejasne zachowania.

Zmiany w interfejsie API

  • Ustaw wartość isEmpty jako publiczną, aby zastąpić funkcję isEmpty.
  • Zmień nazwy działań parametru ActivityStack na activitiesInProcess. (Ia5055)
  • Usuń symbole ActivityFilter#matchesClassNameActivityFilter#matchesClassNameOrWildCard, ponieważ są mylące.
  • Dodaj znaki ActivityFilter#componentNameActivityFilter#intentAction, aby dzwoniący mógł odróżnić różne filtry (I41f22).
  • Usunięto interfejsy API @Deprecated z eksperymentalnego interfejsu API (I216b3)
  • Usunięto @ExperimentalWindowApi z interfejsów API do osadzania aktywności (I69ebe)
  • Ukryj konstruktor ActivityRule, zamiast tego użyj narzędzia Builder. (If4eb6)
  • Dodaj interfejsy API, aby sprawdzić, czy aktywność jest częścią ActivityFilter. (Ia43cf)
  • Aktualizowanie plików interfejsu API w celu odzwierciedlenia zmian w klasach WindowMetricsWindowMetricsCalculatorCompat (I667fe)
  • Aktualizacja dokumentacji Javadoc usługi ActivityEmbedding i nazwy klasy (Ia1386)
  • Dodawanie nazw tagów właściwości ActivityEmbedding do użycia w pliku AndroidManifest.xml (Id1ad4)
  • Dodano nowe interfejsy API SplitPlaceholderFinishBehaviorSplitPlaceholderRule.finishPrimaryWithPlaceholder, które zastępują dotychczasowy interfejs SplitPlaceholderRule.finishPrimaryWithSecondary. Określa on, kiedy kończą się działania zastępcze i jak powinny zachowywać się powiązane działania w osadzaniu aktywności. (I64647)

Poprawki błędów

  • Wprowadza WindowAreaController i interfejsy API, które umożliwiają przeniesienie bieżącego okna do wyświetlacza wyrównanego z tylnym aparatem w RearDisplay. (I388ab)

Wersja 1.1.0-alpha03

27 lipca 2022 roku

Publikacja androidx.window:window-*:1.1.0-alpha03 Wersja 1.1.0-alpha03 zawiera te zmiany.

Nowe funkcje

  • Zaktualizuj domyślne wartości reguł umieszczania.

Zmiany w interfejsie API

  • Aktualizowanie domyślnych wartości właściwości reguły umieszczania. (Ic4d35)

Wersja 1.1.0-alpha02

11 maja 2022 roku

Publikacja androidx.window:window-*:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zmiany.

Nowe funkcje

  • Udostępnij biblioteki adapterów, aby obsługiwać Java i RxJava.

Wersja 1.1.0-alpha01

11 maja 2022 roku

Publikacja androidx.window:window-*:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Wydanie adapterów do obsługi Javy i RxJavy

Wersja 1.1.0-alpha01

20 kwietnia 2022 r.

Publikacja androidx.window:window:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Naprawiliśmy błąd, który powodował, że po przejściu aplikacji w tryb tła przestawała ona emitować funkcje związane ze składaniem.
  • Rozszerzanie eksperymentalnego interfejsu ActivityEmbedding API.

Zmiany w interfejsie API

  • Publiczny interfejs API do sprawdzania, czy aktywność jest osadzana. (I39eb7)

Poprawki błędów

  • Dodano interfejsy API, które dostosowują zachowanie związane z zakończeniem działania kontenerów w podziałach aktywności (I1a1e4).
  • Dodaliśmy nową opcję konfiguracji reguł podziału aktywności. (Iec6af)

Wersja 1.0

Wersja 1.0.0

26 stycznia 2022 r.

Publikacja androidx.window:window-*:1.0.0 Wersja 1.0.0 zawiera te zatwierdzenia.

Główne funkcje wersji 1.0.0

  • Obsługa telefonów składanych w wersjach WindowInfoTrackerFoldingFeature. WindowMetricsCalculator, aby obliczyć bieżące wartości WindowMetrics.

Wersja 1.0.0-rc01

15 grudnia 2021 roku

Publikacja androidx.window:window-*:1.0.0-rc01 Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaliśmy obsługę telefonów składanych za pomocą WindowInfoTracker.
  • Dodaj metody obliczania bieżącego i maksymalnego WindowMetrics.
  • Dodaj pomocnicze interfejsy API testów.

Wersja 1.0.0-beta04

17 listopada 2021 r.

Publikacja androidx.window:window-*:1.0.0-beta04 Wersja 1.0.0-beta04 zawiera te zatwierdzenia.

Nowe funkcje

  • Zmień nazwę WindowInfoRepository na WindowInfoTracker.
  • Ustaw aktywność jako jawną zależność metody dla klasy WindowInfoTracker.
  • Dodaj prostą regułę TestRule dla klasy WindowMetricsCalculator, aby obsługiwać deweloperów korzystających z biblioteki Robolectric.

Zmiany w interfejsie API

  • Wyodrębnianie rozszerzeń (I25a5f)
  • Dodanie metody isEmpty do klasy ActivityStack (I5a4e6)
  • Zmień nazwę WindowInfoRepository na WindowInfoTracker.
    • Zaktualizuj zależności java/rxjava/testing, aby były zgodne. (I0da63)
  • Dodaj regułę testową dla prostego elementu WindowMetricsCalculator. (Ibacdb)

Wersja 1.0.0-beta03

27 października 2021 roku

Publikacja androidx.window:window-*:1.0.0-beta03 Wersja 1.0.0-beta03 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano eksperymentalne interfejsy Activity Embedding API. 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 dokładnie udostępniać. Zamiast niego użyj klasy WindowMetricsCalculator (Icda5f).
  • Zaktualizowano interfejs API rozszerzeń. (Ica92b)
  • Dodaliśmy interfejs nowej funkcji, która umożliwia osadzanie aktywności i wyświetlanie ich obok siebie w oknie zadania nadrzędnego. (I5711d)
  • Ukryto konstruktory klas WindowMetrics i WindowLayoutInfo. Zamiast nich używaj interfejsów API testów. (I5a1b5)
  • Dodaj interfejs API do tworzenia fałszywych obiektów WindowLayoutInfo. (I4a2fd)

Poprawki błędów

Wersja 1.0.0-beta02

1 września 2021 roku

Publikacja androidx.window:window-*:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaj adnotację eksperymentalną, aby oznaczyć eksperymentalne interfejsy API. (I9f1b6)
  • Dodaj metodę testową, aby utworzyć testową funkcję FoldingFeature, która akceptuje Rect. Ułatwi to testowanie za pomocą Robolectric zamiast rzeczywistej aktywności. (Id1cca)

Wersja 1.0.0-beta01

18 sierpnia 2021 r.

Publikacja androidx.window:window-*:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Usunięto stare stałe i przekształcono FoldingFeature w interfejs.

Zmiany w interfejsie API

  • Usuń stare stałe i przekształć FoldFeature w interfejs. (I9a2d5)

Poprawki błędów

  • Biblioteki, które są zależne od biblioteki Test Core, zostały zaktualizowane do wersji 1.4.0 i będą teraz działać na platformie Android w wersji S. (I88b72, b/189353863)

Wersja 1.0.0-alpha10

4 sierpnia 2021 r.

Publikacja androidx.window:window-*:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Nowe funkcje

  • Zmień nazwę WindowInfoRepo na WindowInfoRepository i dostosuj odpowiednie klasy lub pliki.
  • Przekształć dane z bieżącego okna w Flow w klasie WindowInfoRepository, ponieważ wartość zmienia się z czasem.
  • Zmiana nazwy WindowInfoRepoJavaAdapter na WindowInfoRepoCallbackAdapter
  • Dodanie metody pomocniczej do tworzenia obiektów FoldingFeature na potrzeby testów
  • Zaktualizuj pakiety, aby grupować klasy na podstawie obsługiwanej przez nie funkcji.

Zmiany w interfejsie API

  • Zmień nazwę ActivityExt na ActivityExtensions. Zmień Repo na Repository. (I61a16)
  • Aktualizowanie pakietów zajęć. (I23ae2)
  • Usuwanie WindowMetrics z WindowInfoRepo (I24663)
  • Usuwanie WindowManager i używanie WindowInfoRepo
    • Ustawienie WindowBackend jako wewnętrznego. (I06d9a)
  • Przekształć dane okna w funkcję typu flow.
    • Zmiana nazwy adaptera Java na WindowInfoRepoCallbackAdapter
    • Usuń callbackFlow, aby nie używać już eksperymentalnych interfejsów API. (Ia4d15)
  • Dodaj metodę pomocniczą do tworzenia funkcji wyświetlania testów.
    • Zmiana z occlusionMode na occlusionType (If4cff)

Poprawki błędów

  • Naprawiono błąd narzędzia ProGuard, który powodował usuwanie biblioteki podstawowej.
  • Rozwiązaliśmy problem, który powodował, że obiekt WindowLayoutInfo nie był dostarczany do dodatkowych subskrybentów.
  • Naprawiono błąd, w którym zmiany konfiguracji nie powodowały aktualizacji funkcji składania.

Wersja 1.0.0-alpha09

30 czerwca 2021 r.

Publikacja androidx.window:window-*:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.

Nowe funkcje

  • Zmień stałe całkowite na nieograniczone wyliczenia.
  • Dodaj narzędzie testowe, aby utworzyć funkcje testowe składania.

Zmiany w interfejsie API

  • Dodaj metodę pomocniczą do tworzenia funkcji wyświetlania testów. (I3cf54)
    • Zmiana z occlusionMode na occlusionType.

Poprawki błędów

  • Emituj wartość początkową podczas dodawania wielu odbiorców strumieni danych.

Wersja 1.0.0-alpha08

16 czerwca 2021 r.

Publikacja androidx.window:window-*:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępniliśmy artefakt testowy, aby ułatwić testowanie podczas korzystania z WindowInfoRepository. Użyj WindowInfoRepository, aby uzyskać informacje o DisplayFeatures i WindowMetrics. (I57f66, Ida620)

Wersja 1.0.0-alpha07

2 czerwca 2021 r.

Publikacja androidx.window:window-*:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.

Nowe funkcje

  • Migracja podstawowej biblioteki okien do języka Kotlin. Będziemy używać korutyn i funkcji zawieszania, aby udostępniać dane asynchroniczne.
  • Dodaj WindowInfoRepo jako główny punkt interakcji do pobierania WindowMetrics i strumienia WindowLayoutInfo.
  • Nowy artefakt window-java, który udostępnia interfejsy API przyjazne dla języka Java do rejestrowania i wyrejestrowywania wywołań zwrotnych.
  • Nowe artefakty window-rxjava2window-rxjava3 do udostępniania interfejsów API dostosowanych do RxJava.

Zmiany w interfejsie API

  • Dodaj WindowServices, aby zapewnić jednolite zależności.
    • Dodanie interfejsu API opartego na korutynach do wykorzystywania informacji o układzie okna. (Iab70f)
  • Przenieś główną bibliotekę menedżera okien do języka Kotlin. (Icca34)

Poprawki błędów

  • Dodaj nową klasę danych reprezentującą granice funkcji. (I6dcd1)

Wersja 1.0.0-alpha06

5 maja 2021 roku

Publikacja androidx.window:window:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.

Nowe funkcje

  • Rozpoczęliśmy migrację do języka Kotlin i zakończymy ją w kolejnej wersji.
  • Klasa DeviceState została usunięta z publicznego interfejsu API. Zamiast niej używaj klasy FoldingFeature.
  • Usunęliśmy stan STATE_FLIPPED z FoldingFeature, ponieważ nie jest on obecnie obsługiwany w żadnym przypadku użycia.
  • Usunęliśmy też inne wycofane interfejsy API.

Zmiany w interfejsie API

  • Dodawanie języka Kotlin jako zależności.
    • Przenieś bibliotekę podstawową na język Kotlin. (Idd995)
  • Usunięto narzędzie DisplayFeature. (I61fa4)
  • Usunięto DeviceState z publicznego interfejsu API. Zamiast tego używaj 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.

Publikacja androidx.window:window:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

Dodaliśmy do klasy FoldingFeature wygodne metody, dzięki którym aplikacje mogą określać, czy funkcja rozdziela lub zasłania, a także określać orientację zawiasu. Ukrywamy też typ zawiasu, aby

Usuwamy synchroniczne metody odczytu z interfejsu WindowManager. Synchroniczne metody odczytu są podatne na błędy, ponieważ występuje w nich niejawny wyścig. Rejestruj odbiorców i wywołania zwrotne, aby otrzymywać aktualizacje dotyczące obiektu WindowLayoutInfo.

Zmiany w interfejsie API

  • Dodanie metod ułatwiających pracę z FoldingFeatures (Ie733f)
  • Usuwa synchroniczne metody odczytu z klasy WindowManager (I96fd4)

Wersja 1.0.0-alpha04

10 marca 2021 r.

Publikacja androidx.window:window:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Rozwiązaliśmy problem, który powodował, że jeśli nie było implementacji OEM, nie był emitowany żaden element WindowLayoutInfo. Teraz emitujemy pusty obiekt WIndowLayoutInfo.
  • Naprawiliśmy błąd, który powodował, że stan nie aktualizował się prawidłowo, jeśli stan zawiasu zmienił się, gdy aplikacja działała w tle. Stan powinien być teraz spójny.
  • Zaktualizuj pliki ProGuard, aby ignorować ostrzeżenia dotyczące zależności środowiska wykonawczego.

Poprawki błędów

  • Wysyłaj pustą wartość, gdy brakuje biblioteki OEM. (Ide935)

Wersja 1.0.0-alpha03

18 lutego 2021 r.

Publikacja androidx.window:window:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.

Nowe funkcje

  • Wysyłaj pustą wartość w przypadku WindowLayoutInfo, gdy implementacja OEM jest pusta. Ułatwi to korzystanie z biblioteki na większej liczbie urządzeń. Interfejsy API są asynchroniczne, dlatego zalecamy, aby aplikacje zawierały kod zabezpieczający i po przekroczeniu limitu czasu zwracały wartość domyślną. Nie mamy żadnych gwarancji dotyczących implementacji przez producentów OEM, a wartość początkowa może być opóźniona.

Poprawki błędów

  • Wysyłaj pustą wartość, gdy brakuje biblioteki OEM. (Ide935)

Wersja 1.0.0-alpha02

27 stycznia 2021 r.

Publikacja androidx.window:window:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Niektóre interfejsy API zostały wycofane, aby uprościć interfejs API i zmniejszyć liczbę błędów. Warto wspomnieć o usunięciu synchronicznych operacji odczytu z usługi WindowManager i wycofaniu interfejsu DeviceState. Synchroniczne operacje odczytu mogą prowadzić do wyścigów i nieprawidłowego interfejsu.

  • Przekształciliśmy DisplayFeature w interfejs, który będą odtąd implementować inne funkcje. Pierwszą funkcją jest FoldingFeature, która reprezentuje teraz zagięcie ekranu lub zawias. Zawiera też stan zawiasu zastępujący DeviceState.

  • Interfejs WindowMetrics został wprowadzony w Androidzie 11, aby zapewnić programistom prosty sposób na uzyskiwanie informacji o oknie, np. jego pozycji i rozmiaru na ekranie oraz wszelkich wcięć systemowych. W tej wersji interfejsu API wprowadziliśmy funkcję wstecznej zgodności, aby deweloperzy mogli korzystać z WindowMetrics i nadal obsługiwać starsze wersje Androida. Obiekt 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)
  • Aktualizuje ExtensionInterface, aby akceptować jawne odwołania do aktywności. (I07ded)
  • Wprowadza interfejs WindowMetrics API. (I3ccee)
  • Usuwanie synchronicznych metod odczytu z klasy WindowManager (I69983)
  • Zabezpiecz pakiet ExtensionWindowBackend. (Ied208)

Poprawki błędów

  • Zaktualizuj interfejsy API ExtensionInterface, aby akceptować konteksty wizualne. (I8e827)

Wkład zewnętrzny

  • Połączyliśmy DeviceState i WindowLayoutInfo, aby ułatwić dostęp do danych. (Id34f4)

Wersja 1.0.0-alpha01

27 lutego 2020 r.

androidx.window:window:1.0.0-alpha01androidx.window:window-extensions:1.0.0-alpha01 zostały opublikowane. Wersja 1.0.0-alpha01 zawiera te zatwierdzenia. To pierwsza wersja biblioteki Window Manager.

Nowe funkcje

  • DisplayFeature: ten nowy interfejs API wykrywa przerwy w ciągłych płaskich powierzchniach, takie jak zawiasy lub zagięcia.
  • DeviceState: ten nowy interfejs API podaje aktualną pozycję telefonu z listy zdefiniowanych pozycji (np. CLOSED, OPENED, HALF_OPENED itp.).