WindowManager

Biblioteka Jetpack WindowManager umożliwia deweloperom aplikacji obsługę nowych formatów urządzeń i środowisk z wieloma oknami. 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 do publikacji Wersja Beta Wersja alfa
16 października 2024 r. 1.3.0 - - 1.4.0-alpha05

Deklarowanie zależności

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

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Odlotowe

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

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

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

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

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

Kotlin

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

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

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

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

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

Opinia

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

Tworzenie nowego zgłoszenia

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

Wersja 1.4

Wersja 1.4.0-alpha05

16 października 2024 r.

androidx.window:window-*:1.4.0-alpha05 został zwolniony. Wersja 1.4.0-alpha05 zawiera te komisy.

Nowe funkcje

  • Dodaj funkcje ułatwiające dostęp do funkcji 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 WindowSizeClassWindowMetrics. (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 właściwości WindowSizeClass.

  • Otwórz konstruktor klasy WindowSizeClass, aby deweloperzy mogli używać własnych.
  • Dodaj metody pomocnicze isAtLeast, aby programiści mogli przetwarzać różne wartoś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.
  • Zwrotny wywołanie z informacjami o wbudowanym oknie aktywności umożliwia aplikacjom ciągłe otrzymywanie aktualizacji wbudowanego okna aktywności.
  • Wstawianie tła animacji pozwala aplikacjom określać tło animacji, co poprawia jakość animacji przejścia podczas używania ActivityEmbedding.
  • Ulepszony system zarządzania stosem aktywności umożliwia aplikacjom większą kontrolę nad ActivityStacks podczas korzystania z ActivityEmbedding, w tym:
  • uruchamianie aktywności w określonym ActivityStack.
  • Kończę ActivityStack

Zmiany w interfejsie API

  • Nowy interfejs API WindowInfoTracker#supportedPostures:

    • Interfejs API do określania, czy urządzenie obsługuje tryb stołu dla składanych urządzeń. Dodaje WindowAreaSessionPresenter#getWindow
  • Dodaj interfejsy API, które obsługują przypinanie ActivityStack:

    • Zajęcia: SplitPinRule
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • Dodawanie interfejsów API, aby włączyć i skonfigurować interaktywny podział

    • 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, gdy korzystasz z R8 z AGP 7.3 lub nowszej wersji (np. R8 w wersji 3.3) oraz we wszystkich wersjach kompilacji, gdy korzystasz z AGP 8.1 lub nowszej wersji (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)
  • Zezwalanie rozszerzeniom na używanie parametrów animacji w przypadku SplitAttributes, aby urządzenie mogło ich używać do przejść animacji. (Iede00)
  • Ukrywanie interfejsów API nakładek (Ic4251)
  • Wprowadzenie interfejsów API do konfigurowania stałego lub przeciąganego separatora podziału (Ia7a78)
  • Dodano gęstość do WindowMetrics (Id6723)
  • Dodaj interfejs API, aby uzyskać SupportedPostures. (If557a)
  • Usuń setLaunchingActivityStack z eksperymentalnego interfejsu API (I191cf)
  • Wprowadzanie ActivityEmbeddingController#embeddedActivityWindowInfo (I24312)
  • Wycofanie narzędzia #getToken i dodanie narzędzia #getActivityStackToken (Ie0471)
  • Wprowadzenie adaptera wywołania zwrotnego dla interfejsu API embeddedActivityWindowInfo (Ida77f)
  • Dodawanie adaptera wywołania zwrotnego dla interfejsu API przepływu overlayInfo (I7264f)
  • Wprowadź WindowSdkExtensionsRule, aby zastąpić extensionsVersion na potrzeby testowania. (Ifb928)
  • – Przeniesienie #setLaunchingActivityStack do pakietu w celu zapewnienia zgodności z użyciem ActivityOptionsCompat.
    • Użytkownicy powinni przekazywać wartość activityOptions.toBundle zamiast samej wartości ActvityOptions.
    • Usuń #setLaunchingActivityStack(Activity). Użytkownicy powinni przejść na korzystanie z 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).
  • – dodawanie interfejsu API do konfiguracji umieszczania. (I59a4a)
  • – dodawanie i usuwanie z przypiętej pozycji interfejsów API ActivityStack androidx.Window
    • Aktualizacja aplikacji demonstracyjnej w celu umożliwienia przypinania i odpinania górnej części ActivityStack (I24dd3)
  • 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 komity.

Ważne zmiany od wersji 1.2.0

  • Obsługa Kotlin Multiplatform w klasach rozmiarów okien.

Wersja 1.3.0-rc01

14 maja 2024 r.

WindowManager Jetpack 1.3 wprowadza obsługę funkcji WindowSizeClass w Kotlin Multiplatform oraz wiele poprawek błędów.

androidx.window:window-*:1.3.0-rc01 został zwolniony. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Wersja 1.3.0-beta02

1 maja 2024 r.

androidx.window:window-*:1.3.0-beta02 został zwolniony. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

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

Poprawki błędów

  • Poprawki KotlinReflectionInternalError spowodowane usunięciem niektórych plików przez ProGuarda w przypadku niektórych implementacji urządzeń. (I01b02)

Wersja 1.3.0-beta01

3 kwietnia 2024 r.

androidx.window:window-*:1.3.0-beta01 został zwolniony. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Wersja 1.3.0-alpha03

6 marca 2024 roku

androidx.window:window-*:1.3.0-alpha03 został zwolniony. Wersja 1.3.0-alpha03 zawiera te komity.

Zmiany w interfejsie API

  • Podziel WindowSizeClassUtil na bardziej ukierunkowane metody. (Ie9292)
  • Przywracanie zajęć WindowSizeClass#compute (I21355, b/324293374)

Poprawki błędów

  • Rozwiązaliśmy problem z zawieszaniem się aplikacji, który występował, gdy podany kontekst nie był prawidłowo rozpakowywany. (94d10ce , b/318787482)

Wersja 1.3.0-alpha02

7 lutego 2024 r.

androidx.window:window-*:1.3.0-alpha02 został zwolniony. Wersja 1.3.0-alpha02 zawiera te commity.

Nowe funkcje

  • Aktualizacje interfejsu API klasy rozmiaru okna, które zwiększają elastyczność dla deweloperów, którzy chcą używać własnych klas rozmiarów.

Zmiany w interfejsie API

  • Dodaj ograniczenia wysokości do selektora szerokości. (I23393)
  • Dodaj funkcje pomocnicze do wybierania WindowSizeClass z zestawu. Dodaj eksperymentalne funkcje punktowania, aby deweloperzy mogli pisać własne selektory. Dodaj funkcję rozszerzenia selektora, aby wybrać najszerszą WindowSizeClass w danych granicach. (I0c944)
  • Otwórz konstruktor WindowSizeClass, aby dodać niestandardowe punkty przerwania. (Ic1ff3)
  • Dodaj funkcję ułatwiającą tworzenie klasy rozmiarów na podstawie szerokości, wysokości i gęstości. (If67f4)

Poprawki błędów

  • Poprawiono wyjątek, gdy wartość zmiennoprzecinkowa została przycięta do 0. (272ffac)

Wersja 1.3.0-alpha01

15 listopada 2023 r.

androidx.window:window-*:1.3.0-alpha01 został zwolniony. Wersja 1.3.0-alpha01 zawiera te commity.

Nowe funkcje

  • Udostępnianie eksperymentalnych interfejsów API okna w celu uzyskania dostępu do tylnego ekranu.
  • Testowe interfejsy API do tworzenia FoldingFeature są teraz stabilne.
  • Testowe interfejsy API do konfigurowania fałszywych wartości ActivityEmbedding są teraz stabilne.
  • Funkcja WindowLayoutInfoPublisherRule przekazuje teraz wartość zastąpienia podczas uzyskiwania wartości z 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 nie chce korzystać z opcji pełnoekranowej w ustawieniach użytkownika dotyczących zastąpienia ustawień zgodności z formatem obrazu.

Wersja 1.2

Wersja 1.2.0

15 listopada 2023 r.

androidx.window:window-*:1.2.0 został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Udostępnianie eksperymentalnych interfejsów API okna w celu uzyskania dostępu do tylnego ekranu.
  • Testowe interfejsy API do tworzenia FoldingFeature są teraz stabilne.
  • Testowe interfejsy API do konfigurowania fałszywych wartości ActivityEmbedding są teraz stabilne.
  • Funkcja WindowLayoutInfoPublisherRule przekazuje teraz wartość zastąpienia podczas uzyskiwania wartości z 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 eksperymentalnych interfejsów API okna w celu uzyskania dostępu do tylnego ekranu.
  • Testowe interfejsy API do tworzenia FoldingFeature są teraz stabilne.
  • Testowe interfejsy API do konfigurowania fałszywych wartości ActivityEmbedding są teraz stabilne.
  • Funkcja WindowLayoutInfoPublisherRule przekazuje teraz wartość zastąpienia podczas uzyskiwania wartości z 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 osadzania aktywności. (Ie3dae)
  • Wprowadź WindowSdkExtensions, aby przekazać 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 eksperymentalnych interfejsów API okna w celu uzyskania dostępu do tylnego ekranu.
  • Testowe interfejsy API do tworzenia FoldingFeature są teraz stabilne.
  • Testowe interfejsy API do konfigurowania fałszywych wartości ActivityEmbedding są teraz stabilne.
  • Funkcja WindowLayoutInfoPublisherRule przekazuje teraz wartość zastąpienia podczas uzyskiwania wartości z 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 komisy.

Nowe funkcje

  • usunięcie wycofanych interfejsów API z interfejsów API.
  • Dodaj interfejsy API, aby obsługiwać wyświetlanie na wielu ekranach.
  • Dodaj usługę, aby zrezygnować z wymuszonego zastąpienia zmiany rozmiaru.
  • Dodaj usługę, aby wyłączyć zastąpienie minimalnych proporcji.
  • Stabilizuj ActivityEmbeddingRule, aby umożliwić testowanie jednostkowe funkcji dotyczących umieszczania w kontekście.

Zmiany w interfejsie API

  • Usuwanie wycofanych interfejsów API (I18d39)
  • Dodaj obsługę wyświetlania na wielu ekranach jednocześnie. (Ifcbb0)

Poprawki błędów

  • Dodanie właściwości zgodności z opcją rezygnacji dla zastąpienia wymuszania zmiany rozmiaru (Ie7ab1)
  • Usuwa SESSION_STATE_CONTENT_INVISIBLE z interfejsu rozszerzeń. (I6ed19)
  • Stabilizacja ActivityEmbeddingRule w celu obsługi testowania jednostkowego w przypadku umieszczania aktywności. (I8d6b6)
  • Dodawanie właściwości zgodności z opcją wyłączenia w przypadku zastąpienia minimalnego formatu obrazu. (I66390)
  • Usunięcie wycofanych interfejsów WindowArea API (Ieb67c)
  • Zmień nazwę właściwości pętli żądania orientacji na PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd)
  • Zmiana nazw stałych sesji obszaru okna (I83675)
  • Dodanie właściwości zgodności z opcją rezygnacji, która ignoruje pętlę żądania orientacji, gdy zostanie wykryta (I0a7a2)
  • Dodaj WindowAreaComponent#STATUS_ACTIVE, aby wskazać, że funkcja jest już aktywna. (I62bc3)
  • Dodawanie interfejsów API RearDisplayPresentationMode (I0401c)
  • Usuń interfejs API usuwania koloru tła w wersji stabilnej. (I34c3e)
  • Ukryj interfejsy API Window Area. (I39de0)
  • Dodaj metody, aby zastąpić 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ędny jest dzielony po równo. Aby dostosować typ podziału zapasowego, użyj parametru SplitController#setSplitAttributesCalculator. (Ifcc59)
  • Wycofaj: add/removeSplitCallback
    • Przenieś add/removeSplitCallback do SplitControllerCallbackAdapter
    • Dodanie obsługi Flow w celu uzyskania listy SplitInfo (I7f1b6)
  • Dodaj regułę testową dla ActivityEmbeddingController (I42e9b)
  • Zmiana nazwy kolumny ActivityOptionsCompat na ActivityEmbeddingOptions (I89301)
  • Dodaj splitSupportStatus, aby wskazać, czy można osadzić aktywność. (I10024)
  • Wprowadź SplitAttributes.BackgroundColor, aby lepiej odzwierciedlić wartość DEFAULT. Uściśliwiliśmy, że nieprzezroczysty kolor tła animacji nie jest obsługiwany, więc wszystkie nieprzezroczyste kolory będą traktowane jako domyślne, co oznacza użycie koloru tła okna bieżącego motywu. (Ic6b95)
  • Zastąp alwaysAllow() i alwaysDisallow() wartościami ALWAYS_ALLOW i ALWAYS_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 w ś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 zatwierdzenia.

Nowe funkcje

Stabilizacja testowania interfejsów API związanych z osadzaniem aktywności i WindowLayoutInfoTracker. ActivityEmbeddingRule został awansowany do wersji stabilnej. WindowMetricsCalculatorRule został awansowany do wersji stabilnej. Funkcje pomocnicze do tworzenia FoldingFeature na potrzeby testów zostały przeniesione do wersji stabilnej.

Zmiany w interfejsie API

  • Stabilizacja ActivityEmbeddingRule w celu obsługi testowania jednostkowego w przypadku umieszczania aktywności. (I8d6b6)
  • WindowMetrisCalculatorTestRule jest stabilna i umożliwia testowanie danych za pomocą danych zastępczych. Aby uzyskać dokładne wyniki, zalecamy użycie emulatora.
  • Stabilizacja testowych interfejsów API WindowLayoutInfo w celu obsługi testów JVM. (Ie036e)
  • Dodaj IntRange dla wartości funkcji testowania zwijania. (I69f7d)

Wersja 1.1

Wersja 1.1.0

7 czerwca 2023 r.

androidx.window:window-*:1.1.0 został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.0.0

Umieszczanie aktywności

  • Dodano właściwość PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED jako wartość logiczna tagu <application> w pliku manifestu aplikacji.
  • Funkcja isSplitSupported została wycofana i zastąpiona przez funkcję splitSupportStatus, aby zapewnić bardziej szczegółowe informacje o przyczynach niedostępności funkcji podziału.
  • Dodaliśmy klasę zagnieżdżoną SplitController.SplitSupportStatus, aby zapewnić stałe stanów dla właściwoś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 SplitController interfejsy API:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Dodano interfejsy API RuleController:
    • addRule() – dodaje regułę lub aktualizuje regułę o tym samym tagu.
    • removeRule() – usuwa regułę z zbioru zarejestrowanych reguł.
    • setRules() – określa zbiór reguł.
    • clearRules() – usuwa wszystkie zarejestrowane reguły.
    • parseRules() – analizuje reguły z definicji reguł XML.
  • Wszystkie moduły wymagają kontekstu zainicjowanego za pomocą metody #getInstance(), w tym:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Dodaliśmy klasę EmbeddingAspectRatio, aby zdefiniować stałe zachowania podobne do enumeracji związane z formatem obrazu.
  • Dodano klasę SplitAttributes, aby zdefiniować układ podzielony.
  • Dodaliśmy do SplitController funkcje kalkulatora SplitAttributes, aby umożliwić dostosowywanie układów podziału:
    • 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 – definiuje 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 w klasie Builder klasy SplitPairRuleSplitPlaceholderRule.
  • Zastąpiliśmy SplitInfo#getSplitRatio() wartością SplitInfo#getSplitAttributes(), aby podać dodatkowe informacje dotyczące podziału.

WindowLayout

  • Dodano do WindowInfoTracker eksperymentalną obsługę kontekstu interfejsu użytkownika poza aktywnością.
  • Dodano do WindowMetricsCalculator eksperymentalny kontekst interfejsu użytkownika niebędącego aktywnością.

Etapy migracji

  • Aby umożliwić umieszczanie w ramkach aktywności wyświetlanie aktywności w ramkach, aplikacje muszą dodać właściwość PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED do tagu manifestu <application>:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />W ten sposób system może z wyprzedzeniem zoptymalizować zachowanie aplikacji w ramkach.
  • SplitInfo współczynnik
    • Sprawdź, czy bieżący podział jest ułożony w steku:kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Sprawdź bieżący współczynnik:kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Migracje SplitController:
    • SplitController.getInstance() zmieniono na SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) zmieniono na RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) zmieniono na ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) zmieniono na RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) zmieniono na RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() zmieniono na RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() zmieniono 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 zmieniono na FinishBehavior.ALWAYS.
    • FINISH_ADJACENT zmieniono 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 zmieniono na SplitAttributes.LayoutDirection.LOCALE.
    • Abonament splitRatio musi zostać przeniesiony do SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migracje:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmienił(a) rolę użytkownika na kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio) zmieniły 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 migracje:
    • 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-rc01

10 maja 2023 r.

androidx.window:window-*:1.1.0-rc01 został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

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

Wersja 1.1.0-beta02

5 kwietnia 2023 r.

androidx.window:window-*:1.1.0-beta02 został zwolniony. Wersja 1.1.0-beta02 zawiera te commity.

Nowe funkcje

  • Poprawki wewnętrzne i czyszczenie.

Wersja 1.1.0-beta01

22 marca 2023 r.

androidx.window:window-*:1.1.0-beta01 został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.

Umieszczanie aktywności

  • Dodano właściwość PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED jako wartość logiczna tagu <application> w pliku manifestu aplikacji.
  • Funkcja isSplitSupported została wycofana i zastąpiona przez funkcję splitSupportStatus, aby zapewnić bardziej szczegółowe informacje o przyczynach niedostępności funkcji podziału.
  • Dodaliśmy klasę zagnieżdżoną SplitController.SplitSupportStatus, aby zapewnić stałe stanów dla właściwoś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ą kontekstu zainicjowanego za pomocą metody #getInstance(), w tym:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Dodaliśmy klasę EmbeddingAspectRatio, aby zdefiniować stałe zachowania podobne do enumeracji związane z formatem obrazu.
  • Dodano klasę SplitAttributes, aby zdefiniować układ podzielony.
  • Dodaliśmy do SplitController funkcje kalkulatora SplitAttributes, aby umożliwić dostosowywanie układów podziału:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() aby sprawdzić, czy na urządzeniu są obsługiwane interfejsy SplitAttributesCalculator API.
  • Dodano pole EmbeddingRule#tag.
  • Aktualizacje interfejsu API w wersji SplitRule:
    • Dodano defaultSplitAttributes – definiuje domyślny układ podziału; zastę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 element maxAspectRatioInPortrait o wartości domyślnej 1.4.
    • Zdefiniowano klasę zagnieżdżoną FinishBehavior, która zastępuje stałe zachowania zakończenia.
    • Zastosowano zmiany właściwości w klasie zagnieżdżonej Builder w usługach 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 stosie:kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Sprawdź bieżący współczynnik:kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController migracje:
    • SplitController.getInstance() zmieniono 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) zmieniono na ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) zmieniono na RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) zmieniono na RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() zmieniono na RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() zmieniono 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 zmieniono na FinishBehavior.ALWAYS.
    • FINISH_ADJACENT zmieniono 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 zmieniono na SplitAttributes.LayoutDirection.LOCALE.
    • Abonament splitRatio musi zostać przeniesiony do SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migracje:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmienił(a) rolę użytkownika 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 migracje:
    • 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 kontekstu interfejsu użytkownika 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)
  • Ustaw RuleController#parseRules jako element 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. 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 powiązane z regułami z poziomu SplitController do singletona 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ą one 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 (SplitRule).
    2. Refaktoryzacja w Kreatorze SplitRule, aby minimalne wymiary były opcjonalne. (I95f17)
  • Przekazywanie kontekstu na potrzeby inicjowania 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ż konstruktor Builder jest preferowanym sposobem tworzenia.
  • 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#matchesClassNameActivityFilter#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 w przypadku interfejsów Activity Embedding API (I69ebe)
  • Ukryj konstruktor ActivityRule i zamiast niego użyj klasy Builder. (If4eb6)
  • Dodaj interfejsy API, aby sprawdzić, czy dana aktywność należy do ActivityFilter. (Ia43cf)
  • Zaktualizuj pliki interfejsu API, aby odzwierciedlić zmiany w klasach 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ść w wyraźną zależność metody w przypadku WindowInfoTracker.
  • Dodaj prostą regułę testu dla WindowMetricsCalculator, aby ułatwić pracę deweloperom korzystającym z Robolectric.

Zmiany w interfejsie API

  • Wyodrębnianie rozszerzeń (I25a5f)
  • dodanie isEmpty w ActivityStack (I5a4e6)
  • Zmień nazwę WindowInfoRepository na WindowInfoTracker.
    • Zaktualizuj zależności java/rxjava/testing, aby dopasować je do siebie. (I0da63)
  • Dodawanie reguły testowej dla prostego modułu WindowMetricsCalculator. (Ibacdb)

Wersja 1.0.0-beta03

27 października 2021 roku

androidx.window:window-*:1.0.0-beta03 został zwolniony. Wersja 1.0.0-beta03 zawiera te komitowane zmiany.

Nowe funkcje

  • Dodano eksperymentalne interfejsy API do umieszczania aktywności. Ta początkowa wersja układu umożliwia wyświetlanie 2 aktywności obok siebie.

Zmiany w interfejsie API

  • Usunęliśmy interfejs API currentWindowMetrics, ponieważ nie możemy go udostępniać w sposób dokładny. Zamiast tego użyj funkcji WindowMetricsCalculator (Icda5f).
  • Zaktualizowano interfejs API rozszerzeń. (Ica92b)
  • Dodaliśmy interfejs nowej funkcji, która umożliwia umieszczanie i wyświetlanie działań obok siebie w oknie zadania nadrzędnego. (I5711d)
  • Ukryte konstruktory WindowMetrics i WindowLayoutInfo. Zamiast nich używaj testowych interfejsów API. (I5a1b5)
  • Dodaj interfejs API, aby tworzyć fałszywe obiekty WindowLayoutInfo. (I4a2fd)

Poprawki błędów

Wersja 1.0.0-beta02

1 września 2021 roku

androidx.window:window-*:1.0.0-beta02 został zwolniony. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaj adnotację eksperymentalną, aby dodać adnotację do eksperymentalnego interfejsu API. (I9f1b6)
  • Dodaj metodę testową, aby utworzyć testową funkcję zwijania, która akceptuje prostokąt. Dzięki temu łatwiej będzie Ci testować za pomocą Robolectric niż za pomocą rzeczywistej aktywności. (Id1cca)

Wersja 1.0.0-beta01

18 sierpnia 2021 r.

androidx.window:window-*:1.0.0-beta01 został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.

Nowe funkcje

  • Usunięto stare stałe i zmieniono FoldingFeature na interfejs.

Zmiany w interfejsie API

  • Usuń stare stałe i ustaw FoldFeature jako interfejs. (I9a2d5)

Poprawki błędów

  • Biblioteki zależne od biblioteki Test Core zostały zaktualizowane do 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 strumień w WindowInfoRepository, ponieważ ich wartość zmienia się z czasem.
  • Zmień nazwę WindowInfoRepoJavaAdapter na WindowInfoRepoCallbackAdapter.
  • Dodaj metodę pomocniczą do tworzenia testowych obiektów FoldingFeature
  • Zaktualizuj pakiety, aby grupowały klasy według obsługiwanych przez nie funkcji.

Zmiany w interfejsie API

  • Zmień nazwę ActivityExt na ActivityExtensions. Zmień nazwę Repo na Repository. (I61a16)
  • Zaktualizuj pakiety zajęć. (I23ae2)
  • Usuń WindowMetrics z WindowInfoRepo (I24663)
  • Usuń WindowManager i użyj WindowInfoRepo
    • Utwórz wewnętrzną wersję WindowBackend. (I06d9a)
  • Konwertowanie danych z okna na przepływ.
    • Zmień nazwę adaptera Java na WindowInfoRepoCallbackAdapter.
    • Usuń callbackFlow, aby nie używać już interfejsów API w wersji eksperymentalnej. (Ia4d15)
  • Dodaj metodę pomocniczą, aby utworzyć funkcje wyświetlania testów.
    • Zmień z occlusionMode na occlusionType (If4cff).

Poprawki błędów

  • Poprawiono błąd Proguarda, w którym usuwana była główna biblioteka.
  • Rozwiązanie błędu, który powodował, że informacje WindowLayoutInfo nie były dostarczane do dodatkowych subskrybentów.
  • Naprawiono błąd, który powodował, że zmiany w konfiguracji nie powodowały aktualizacji funkcji składania.

Wersja 1.0.0-alpha09

30 czerwca 2021 r.

androidx.window:window-*:1.0.0-alpha09 został zwolniony. Wersja 1.0.0-alpha09 zawiera te commity.

Nowe funkcje

  • Zmień stałą liczbową na nieograniczoną listę.
  • Dodaj narzędzie testowe, aby utworzyć funkcje testowania składania.

Zmiany w interfejsie API

  • Dodaj metodę pomocniczą, aby utworzyć funkcje wyświetlania testów. (I3cf54)
    • Zmień z occlusionMode 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 biblioteki kodu źródłowego okna głównego w Kotlinie. W przyszłości do wyświetlania danych asynchronicznych będziemy używać funkcji zawieszania i korobotek.
  • Dodaj WindowInfoRepo jako główny punkt interakcji służący do uzyskiwania danych WindowMetrics i strumienia WindowLayoutInfo.
  • Nowy element window-java, który udostępnia interfejsy API do rejestrowania i odrejestrowania wywołań zwrotnych w języku Java.
  • Nowe artefakty window-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)
  • Przejdź do Kotlina z głównej biblioteki menedżera okien. (Icca34)

Poprawki błędów

  • Dodaj nową klasę danych, aby reprezentować granice cech. (I6dcd1)

Wersja 1.0.0-alpha06

5 maja 2021 roku

androidx.window:window:1.0.0-alpha06 został zwolniony. Wersja 1.0.0-alpha06 zawiera te commity.

Nowe funkcje

  • Rozpoczęliśmy już migrację do Kotlina i zakończymy ją w kolejnych wersjach.
  • Zmiana stanu urządzenia została usunięta z publicznego interfejsu API. Zamiast niej użyj funkcji FoldingFeature.
  • Usunęliśmy stany STATE_FLIPPED z FoldingFeature, ponieważ obecnie nie są one obsługiwane w żadnym przypadku użycia.
  • Usunęliśmy też inne wycofane interfejsy API.

Zmiany w interfejsie API

  • Dodanie Kotlina jako zależności.
    • Przeprowadź migrację podstawowej biblioteki do Kotlina. (Idd995)
  • Usunięto kreator DisplayFeature. (I61fa4)
  • Usunięto DeviceState z publicznego interfejsu API. Zamiast tego uż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.

androidx.window:window:1.0.0-alpha05 został zwolniony. Wersja 1.0.0-alpha05 zawiera te commity.

Nowe funkcje

Dodaliśmy do FoldingFeature wygodne metody, aby aplikacje mogły określić, czy funkcja jest rozdzielona, zasłonięta, a także orientację zawiasów. Ukrywamy też typ zawiasów, aby

Usuwamy synchroniczne metody odczytu z WindowManagera. Metody synchronicznego odczytu są podatne na błędy, ponieważ występuje w nich niejawna warunkowa rywalizacja. Rejestruj obiekty nasłuchujące i wywołania zwrotne, aby otrzymywać informacje o WindowLayoutInfo.

Zmiany w interfejsie API

  • Dodanie wygodnych metod do pracy z FoldingFeatures (Ie733f)
  • Usunięcie synchronicznych metod odczytu z WindowManager (I96fd4)

Wersja 1.0.0-alpha04

10 marca 2021 r.

androidx.window:window:1.0.0-alpha04 został zwolniony. Wersja 1.0.0-alpha04 zawiera te commity.

Nowe funkcje

  • Rozwiązanie błędu, który powodował, że w przypadku braku implementacji OEM nie była emitowana informacja WindowLayoutInfo. Teraz emitujemy pustą strukturę WIndowLayoutInfo.
  • Naprawiono błąd polegający na tym, że stan nie był prawidłowo aktualizowany, jeśli stan zawiasu zmienił się, gdy aplikacja była w tle. Stan powinien być teraz spójny.
  • Zaktualizuj pliki ProGuard, aby ignorować ostrzeżenia dotyczące zależności w czasie wykonywania.

Poprawki błędów

  • Wyemituj pustą wartość, gdy brakuje biblioteki OEM. (Ide935)

Wersja 1.0.0-alpha03

18 lutego 2021 r.

androidx.window:window:1.0.0-alpha03 został zwolniony. Wersja 1.0.0-alpha03 zawiera te commity.

Nowe funkcje

  • Wyślij pustą wartość w ramach WindowLayoutInfo, gdy implementacja OEM jest pusta. Dzięki temu łatwiej będzie korzystać z biblioteki na większej liczbie urządzeń. Ponieważ interfejsy API są asynchroniczne, zalecamy, aby aplikacje zawierały kod obronny i wysyłały wartość domyślną po upływie limitu czasu. Nie możemy zagwarantować, że implementacje OEM będą działać prawidłowo, a wartość początkowa może być opóźniona.

Poprawki błędów

  • Wyemituj pustą wartość, gdy brakuje biblioteki OEM. (Ide935)

Wersja 1.0.0-alpha02

27 stycznia 2021 r.

androidx.window:window:1.0.0-alpha02 został zwolniony. Wersja 1.0.0-alpha02 zawiera te commity.

Nowe funkcje

  • wycofujemy niektóre interfejsy API, aby usprawnić ich działanie i zmniejszyć liczbę błędów. Do takich przykładów należy usunięcie synchronicznych operacji odczytu z WindowManagera i wycofanie DeviceState. Operacje synchronicznego odczytu mogą prowadzić do warunków wyścigu i nieprawidłowego interfejsu użytkownika.

  • Funkcję DisplayFeature przekształciliśmy w interfejs, który będzie wykorzystywany przez inne funkcje. Pierwszą z nich jest FoldingFeature, która reprezentuje złożenie ekranu lub zawias. Zawiera on również stan zawiasu, który zastępuje DeviceState.

  • Okno WindowMetrics zostało wprowadzone w Androidzie 11, aby zapewnić deweloperom prosty sposób na wyszukiwanie danych o oknie, takich jak jego położenie i rozmiar na ekranie oraz wszelkie wstawione elementy systemu. W tej wersji wprowadziliśmy interfejs API w poprzednich wersjach, aby deweloperzy mogli korzystać z WindowMetrics i nadal obsługiwać starsze wersje Androida. Dane WindowMetrics można uzyskać za pomocą interfejsów API WindowManager#getCurrentWindowMetrics() i WindowManager#getMaximumWindowMetrics().

Zmiany w interfejsie API

  • wycofanie interfejsów API, które zostaną usunięte w następnej wersji alfa (Ib7cc4);
  • Zaktualizowano ExtensionInterface, aby zezwalać na jawne odwołania do aktywności. (I07ded)
  • Przedstawia interfejs WindowMetrics API. (I3ccee)
  • Usuwanie metod synchronicznego odczytu z WindowManager (I69983)
  • Zabezpiecz pakiet ExtensionWindowBackend. (Ied208)

Poprawki błędów

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

Darowizna zewnętrzna

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

Wersja 1.0.0-alpha01

27 lutego 2020 r.

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

Nowe funkcje

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