Menedżer okien

Biblioteka Jetpack WindowManager umożliwia korzystanie z aplikacji którzy obsługują nowe formaty urządzeń i środowiska z wieloma oknami. Biblioteka udostępnia wspólną platformę API dla interfejsów API w wersji 14 i nowszych. początkowa wersja jest kierowana na urządzenia składane, ale przyszłe wersje będą więcej typów wyświetlania i funkcji okien.
Najnowsza aktualizacja Wersja stabilna Kandydat do wydania Wersja Beta Wydanie alfa
7 sierpnia 2024 r. 1.3.0 - - 1.4.0-alfa01

Deklarowanie zależności

Aby dodać zależność od WindowManager, musisz dodać repozytorium Google Maven do do swojego projektu. Odczytano repozytorium Google Maven. i informacjami o nich.

Dodaj zależności 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ć Jetpack. Daj nam znać, jeśli odkryjesz nowe problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.

Tworzenie nowego numeru

Zobacz dokumentację narzędzia Issue Tracker. .

Wersja 1.4

Wersja 1.4.0-alpha01

7 sierpnia 2024 r.

Usługa androidx.window:window-*:1.4.0-alpha01 została zwolniona. Wersja 1.4.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • ActivityStack Pinning umożliwia przypinanie treści w jednym kontenerze w celu odizolowania elementów nawigacyjnych od drugiego.
  • Interaktywny separator umożliwia aplikacjom wyświetlanie w dzielonej prezentacji stałej lub przeciąganej linii podziału między dwoma aktywnościami.
  • Przyciemnianie okien na pełnym ekranie umożliwia aplikacjom określenie przyciemnionego obszaru okna, aby przyciemnić całe okno zadania lub przyciemnić tylko jego kontener.
  • Wywołanie zwrotne informacji o umieszczonym oknie aktywności umożliwia aplikacjom ciągłe otrzymywanie aktualizacji tego okna aktywności.
  • Umieszczanie tła animacji umożliwia aplikacjom określenie tła animacji, poprawiając jakość przejścia, gdy używany jest obiekt ActivityEmbedding.
  • Ulepszone zarządzanie stosem aktywności umożliwia aplikacjom większą kontrolę nad elementem ActivityStacks, gdy jest używany: ActivityEmbedding. Obejmuje to:
  • Uruchamianie działania w określonym miejscu (ActivityStack)
  • Kończę: ActivityStack

Zmiany interfejsu API

  • Nowy interfejs API WindowInfoTracker#supportedPostures:

    • Interfejs API do określania, czy urządzenie obsługuje tryb TableTop na urządzeniach składanych. Dodaje parametr WindowAreaSessionPresenter#getWindow
  • Dodaj interfejsy API, aby umożliwić przypinanie ActivityStack:

    • SplitPinRule zajęcia
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • Dodaj interfejsy API, aby włączyć i skonfigurować interaktywny separator

    • DividerAttributes zajęcia
    • SplitAttributes.Builder#setDividerAttributes
  • Dodaj interfejsy API, aby ustawić EmbeddingConfiguration i DimAreaBehavior dla okien dialogowych

    • EmbeddingConfiguration zajęcia
    • DimAreaBehavior zajęcia
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • Dodaj interfejsy API, aby otrzymywać aktualizacje informacji o osadzonych oknach aktywności

    • EmbeddedActivityWindowInfo zajęcia
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • Dodaj interfejsy API, aby ustawić tło animacji wektora dystrybucyjnego

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

    • ActivityEmbeddingController#finishActivityStacks
  • Dodaj interfejsy API, aby skonfigurować uruchamianie aplikacji ActivityStack

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

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (przeniesiono z elementu 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 zamiast ACTIVE, gdy sesja była aktywna.
  • Wyłącza obsługę transferActivityToWindowArea na urządzeniach z parametrem vendorApiLevel o wartości 2 ze względu na niestabilną obsługę interfejsu API.
  • Wprowadzenie interfejsu API umożliwiającego przeciąganie i przeciąganie elementów w trybie „przeciągnij do pełnego ekranu” w przypadku przeciąganego separatora w umieszczaniu aktywności. (I645C9)
  • Zezwalaj aplikacjom na wyłączanie animacji ActivityEmbedding za pomocą parametrów animacji w: SplitAttributes. (Idc01a)
  • Usunęliśmy ręczne dodawanie informacji o dostępie do nowych interfejsów API platformy, ponieważ dzieje się to automatycznie przez modelowanie API w przypadku korzystania z R8 z pakietem AGP w wersji 7.3 lub nowszej (np. R8 w wersji 3.3) oraz wszystkich kompilacji z pakietem AGP 8.1 lub nowszym (np. D8 w wersji 8.1). Klientom, którzy nie korzystają z pakietu AGP, zalecamy zaktualizowanie go do wersji 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 elementu SplitAttributes, aby urządzenie mogło używać go do przejść animacji. (Ide00).
  • Ukryj interfejsy API nakładek (Ic4251)
  • Przedstaw interfejsy API służące 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)
  • Poznaj ActivityEmbeddingController#embeddedActivityWindowInfo (I24312)
  • Wycofaj #getToken i dodaj #getActivityStackToken (Ie0471)
  • Przedstaw adapter wywołań zwrotnych dla interfejsu embeddedActivityWindowInfo Flow API (Ida77f)
  • Dodaj adapter wywołania zwrotnego dla interfejsu API nakładania informacji na temat przepływu (I7264f)
  • Wprowadź regułę WindowSdkExtensionsRule, która zastąpi funkcję extensionsVersion na potrzeby testowania. (Ifb928).
  • – Przeprowadź migrację #setLaunchingActivityStack do pakietu, aby zapewnić zgodność z wykorzystaniem ActivityOptionsCompat.
    • Użytkownicy powinni przekazywać activityOptions.toBundle zamiast samego ActvityOptions.
    • Usuń #setLaunchingActivityStack(Activity). Użytkownicy powinni przejść na ActivityEmbeddingController#getActivityStac(Activity), aby uzyskać ActivityStack, i przekazać ActivityStack do #setLaunchingActivityStack. (Ie0ccc)
  • – Wprowadź ActivityStack.Token i SpltInfo.Token jako identyfikator do komunikacji między WM Jetpack a rozszerzeniami.
    • Wycofaj/zastąp interfejsy API, aby odebrać/zwrócić token zamiast IBinder. (I12b24)
  • – Przedstaw ActivityEmbeddingController#invalidateVisibleActivityStacks
    • Usuń pole SplitController#invalidateTopVisibleSplitAttributes, ponieważ funkcja jest skonsolidowana w regionie #invalidateVisibleActivityStacks (I02ef5)
  • – Dodanie interfejsu API w celu ustawienia konfiguracji wektora dystrybucyjnego. (I59a4a)
  • – Dodaję/odepnij główne interfejsy API (ActivityStack) typu androidx.Window
    • Aktualizacja aplikacji demonstracyjnej w celu przypięcia/odpięcia górnego ActivityStack (I24dd3)
  • Ponownie dodaj #finishActivityStacks i ActivityEmbeddingOptions (Ic1ab3)
  • Usuń niestabilne interfejsy API. (IBc534, b/302380585)

Wersja 1.3

Wersja 1.3.0

29 maja 2024 r.

Usługa androidx.window:window-*:1.3.0 została zwolniona. Wersja 1.3.0 zawiera te zatwierdzenia.

Ważne zmiany wprowadzone od wersji 1.2.0

  • Obsługa wieloplatformowa Kotlin dla klas rozmiarów okien.

Wersja 1.3.0-rc01

14 maja 2024 r.

WindowManager Jetpack w wersji 1.3 wprowadza obsługę wieloplatformową Kotlin w funkcjach WindowSizeClass oraz zawiera poprawki wielu błędów.

Usługa androidx.window:window-*:1.3.0-rc01 została zwolniona. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Wersja 1.3.0-beta02

1 maja 2024 r.

Usługa androidx.window:window-*:1.3.0-beta02 została zwolniona. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Wyłącz obsługę tworzenia i używania niestandardowych komponentów WindowSizeClass. (Id1143).

Poprawki błędów

  • Naprawiono KotlinReflectionInternalError spowodowane usuwaniem niektórych plików przez ProGuard na niektórych implementacjach urządzeń. (I01b02).

Wersja 1.3.0-beta01

3 kwietnia 2024 r.

Usługa androidx.window:window-*:1.3.0-beta01 została zwolniona. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Wersja 1.3.0-alfa03

6 marca 2024 roku

Usługa androidx.window:window-*:1.3.0-alpha03 została zwolniona. Wersja 1.3.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Podziel metodę WindowSizeClassUtil na bardziej precyzyjne metody. (IE9292)
  • Przywróć WindowSizeClass#compute (I21355, b/324293374)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że podany kontekst nie był prawidłowo rozpakowywany. (94d10ce , b/318787482)

Wersja 1.3.0-alfa02

7 lutego 2024 r.

Usługa androidx.window:window-*:1.3.0-alpha02 została zwolniona. Wersja 1.3.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje

  • Wprowadzono zmiany w interfejsie API interfejsu Window Size Class API, aby zwiększyć elastyczność dla deweloperów, którzy chcą używać własnych klas rozmiaru.

Zmiany interfejsu API

  • Dodaj ograniczenia wysokości do selektora szerokości. (I23393)
  • Dodaj funkcje użytkowe pozwalające wybrać element WindowSizeClass ze zbioru. Dodaj eksperymentalne funkcje punktacji, aby programiści mogli napisać własne selektory. Dodaj funkcję rozszerzenia selektora, aby wybrać najszerszy zakres WindowSizeClass w danym granicach. (I0C944)
  • Otwórz konstruktor WindowSizeClass, aby dodać niestandardowe punkty przerwania. (Ic1ff3).
  • Dodaj funkcję udogodnień, aby utworzyć klasę rozmiaru na podstawie szerokości, wysokości i gęstości. (If67f4).

Poprawki błędów

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

Wersja 1.3.0-alpha01

15 listopada 2023 r.

Usługa androidx.window:window-*:1.3.0-alpha01 została zwolniona. Wersja 1.3.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępnij eksperymentalne interfejsy API okien umożliwiające dostęp do tylnego ekranu.
  • Testowe interfejsy API do tworzenia FoldingFeature są teraz stabilne.
  • Testowe interfejsy API do konfigurowania fałszywych wartości ActivityEmbedding są teraz stabilne.
  • WindowLayoutInfoPublisherRule zgłasza teraz zastąpienie po uzyskaniu wartości z UiContext.
  • Funkcja WindowInfoTracker zgłasza dane o funkcjach zwijania do parametrów UiContext.
  • Wyświetl wersję rozszerzenia na urządzeniu
  • Stałe WindowProperties na użytkownika poszczególnych aplikacji:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE – informuje system, w którym aplikacja zrezygnowała ze zgodności formatu obrazu dla użytkowników nadpisać.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE – informacje system, w którym aplikacja zrezygnowała z wyświetlania jej na pełnym ekranie; ustawienia zastępowania zgodności formatu obrazu

Wersja 1.2

Wersja 1.2.0

15 listopada 2023 r.

Usługa androidx.window:window-*:1.2.0 została zwolniona. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Udostępnij eksperymentalne interfejsy API okien umożliwiające dostęp do tylnego ekranu.
  • Testowe interfejsy API do tworzenia FoldingFeature są teraz stabilne.
  • Testowe interfejsy API do konfigurowania fałszywych wartości ActivityEmbedding są teraz stabilne.
  • WindowLayoutInfoPublisherRule zgłasza teraz zastąpienie po uzyskaniu wartości z UiContext.
  • Funkcja WindowInfoTracker zgłasza dane o funkcjach zwijania do parametrów UiContext.
  • Wyświetl wersję rozszerzenia na urządzeniu

Wersja 1.2.0-rc01

1 listopada 2023 roku

Usługa androidx.window:window-*:1.2.0-rc01 została zwolniona. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępnij eksperymentalne interfejsy API okien umożliwiające dostęp do tylnego ekranu.
  • Testowe interfejsy API do tworzenia FoldingFeature są teraz stabilne.
  • Testowe interfejsy API do konfigurowania fałszywych wartości ActivityEmbedding są teraz stabilne.
  • WindowLayoutInfoPublisherRule zgłasza teraz zastąpienie po uzyskaniu wartości z UiContext.
  • Funkcja WindowInfoTracker zgłasza dane o funkcjach zwijania do parametrów UiContext.
  • Wyświetl wersję rozszerzenia na urządzeniu

Wersja 1.2.0-beta04

18 października 2023 r.

Usługa androidx.window:window-*:1.2.0-beta04 została zwolniona. Wersja 1.2.0-beta04 zawiera te zatwierdzenia.

Zmiany interfejsu API

Wersja 1.2.0-beta03

20 września 2023 r.

Usługa androidx.window:window-*:1.2.0-beta03 została zwolniona. Wersja 1.2.0-beta03 zawiera te zatwierdzenia.

Nowe funkcje

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

Zmiany interfejsu API

  • Dodaj adnotacje o wymaganej wersji rozszerzenia pakietu SDK do okien w publicznych interfejsach API.
    • Usuń isXXXSupported w komponencie Umieszczanie aktywności. (dane3dae).
  • Wprowadź WindowSdkExtensions, aby zgłosić wersję rozszerzenia na urządzeniu.
    • Podaj RequiresWindowSdkExtension, aby wskazać minimalną wymaganą wersję rozszerzenia. (I05fd4)
  • Zmienia ustawienie pola WindowAreaInfo#getCapability na wartość niepustą. (I17048)

Wersja 1.2.0-beta01

26 lipca 2023 r.

Usługa androidx.window:window-*:1.2.0-beta01 została zwolniona. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępnij eksperymentalne interfejsy API okien umożliwiające dostęp do tylnego ekranu.
  • Testowe interfejsy API do tworzenia FoldingFeature są teraz stabilne.
  • Testowe interfejsy API do konfigurowania fałszywych wartości ActivityEmbedding są teraz stabilne.
  • WindowLayoutInfoPublisherRule zgłasza teraz zastąpienie po uzyskaniu wartości z UiContext.
  • Funkcja WindowInfoTracker zgłasza dane o funkcjach zwijania do parametrów UiContext.

Zmiany interfejsu API

  • Oznacza interfejsy API WindowArea jako eksperymentalne, aby umożliwić dalsze wprowadzanie zmian w interfejsach API w wersji stabilnej w wersji 1.3 (I857f5)
  • Zaktualizowano pliki interfejsu API, aby dodać adnotacje o pomijaniu zgodności (I8e87a, b/287516207)

Wersja 1.2.0-alfa03

21 czerwca 2023 r.

Usługa androidx.window:window-*:1.2.0-alpha03 została zwolniona. Wersja 1.2.0-alfa03 zawiera te zatwierdzenia.

Nowe funkcje

  • Usunięcie wycofanych interfejsów API z platformy API.
  • Dodaj interfejsy API, aby obsługiwać równoczesne wyświetlanie.
  • Dodaj usługę, aby zrezygnować z wymuszania zmiany rozmiaru.
  • Dodaj usługę, aby zrezygnować z zastępowania minimalnego współczynnika proporcji.
  • Ustabilizuj ActivityEmbeddingRule, aby umożliwić testowanie jednostkowe dotyczące umieszczania aktywności.

Zmiany interfejsu API

  • Usuń wycofane interfejsy API (I18d39)
  • Dodaj obsługę równoczesnych wyświetlaczy. (Ifcbb0).

Poprawki błędów

  • Dodanie właściwości zgodnej z rezygnacją na potrzeby wymuszenia zmiany rozmiaru (Ie7ab1)
  • Usuwa rozszerzenie SESSION_STATE_CONTENT_INVISIBLE z interfejsu rozszerzeń. (I6ed19).
  • Ustabilizuj ActivityEmbeddingRule, aby zapewnić obsługę testów jednostkowych dotyczących umieszczania aktywności. (I8d6b6)
  • Dodanie właściwości zgodnej z rezygnacją na potrzeby 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 zgodnej z rezygnacją, która po wykryciu ignoruje pętlę żądania orientacji (I0a7a2)
  • Dodaj WindowAreaComponent#STATUS_ACTIVE, aby wskazać, że funkcja jest już aktywna. (I62bc3)
  • Dodaj interfejsy API RearDisplayPresentationMode (I0401c)
  • Usuń interfejs API koloru tła na potrzeby stabilnej wersji. (I34c3e)
  • Ukryj interfejsy API obszaru okien. (I39de0)
  • Dodaj metody, aby zastąpić metodę SplitInfo w SplitController. Dodaj metody testowe, aby utworzyć liczbę zmiennoprzecinkową dla funkcji SplitInfo i ActivityStack. (ICD69f)
  • Ustaw tag jako opcjonalny dla: ActivityRule.Builder. (IB0B44)
  • Usuń RatioSplitType, ExpandContainersSplit i HingeSplitType. Obecny format: SplitType.
    • Zastąp #splitEqually(), #expandContainers() i #splitByHinge stałymi SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND i SPLIT_TYPE_HINGE
    • Usuń tę funkcję, aby ustawić zastępczy typ podziału zawiasu. Jeśli nie można zastosować typu podziału zawiasu ze względu na bieżący stan urządzenia lub okna, następuje podzielenie równorzędnego kontenera zadań. Aby dostosować typ podziału kreacji zastępczych, użyj parametru SplitController#setSplitAttributesCalculator. (Ifcc59).
  • Wycofaj add/removeSplitCallback
    • Przenieś add/removeSplitCallback do: SplitControllerCallbackAdapter
    • Dodaj pomoc Flow, aby uzyskać listę SplitInfo (I7f1b6)
  • Dodaj regułę testową dla reguły ActivityEmbeddingController (I42e9b)
  • Zmienianie nazwy z ActivityOptionsCompat na ActivityEmbeddingOptions (I89301)
  • Dodaj atrybut splitSupportStatus, aby wskazać, czy opcja umieszczania aktywności jest dostępna. (I10024)
  • Podaj SplitAttributes.BackgroundColor, aby lepiej reprezentować wartość DEFAULT. Wyjaśnienie, że nieprzezroczysty kolor tła animacji nie jest obsługiwany. Wszystkie kolory nieprzezroczyste będą traktowane jako domyślne, co oznacza, że zostanie użyty bieżący kolor tła okna motywu. (IC6B95)
  • Zastąp alwaysAllow() i alwaysDisallow() elementami ALWAYS_ALLOW i ALWAYS_DISALLOW. (I3057B)
  • Dodaj interfejsy API dla systemów SplitRule, SplitAttributes, SplitAttributesCalculator. (I92d23)
  • Dodaj TestActivityStack, aby utworzyć ActivityStack do testowania
    • Dodaj TestSplitInfo, aby utworzyć SplitInfo do testowania. (I8E779)
  • Dodaj sposób tworzenia fałszywej SplitAttributesCalculatorParams, aby deweloperzy mogli zweryfikować dostosowaną wersję SplitAttributesCalculator (Id4a6e)
  • Dodaj: WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) i WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f)

Wersja 1.2.0-alfa02

7 czerwca 2023 r.

Usługa androidx.window:window-*:1.2.0-alpha02 została zwolniona. Wersja 1.2.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje

  • Zaktualizuj testowy interfejs API, aby mieć stałą wartość dla nieokreślonych funkcji zwijania.
  • Zastąpienie parametru WindowLayoutInfoPublishRule spowoduje zastąpienie wszystkich wartości parametru windowLayoutInfo, w tym interfejsu API opartego na kontekście.

Zmiany interfejsu API

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

Poprawki błędów

  • Zaktualizuj zasadę WindowLayoutInfoPublishRule, aby umożliwić obsługę zastąpień w systemie WindowLayoutInfo opartym na Context. (I2037a)

Wersja 1.2.0-alpha01

24 maja 2023 r.

Usługa androidx.window:window-*:1.2.0-alpha01 została zwolniona. Wersja 1.2.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

Ustabilizuj interfejsy API do testowania w zakresie umieszczania aktywności i WindowLayoutInfoTracker. Wersja ActivityEmbeddingRule została awansowana do wersji stabilnej. Wersja WindowMetricsCalculatorRule została awansowana do wersji stabilnej. Funkcje użytkowe służące do tworzenia FoldingFeature na potrzeby testu zostały awansowane do wersji stabilnej.

Zmiany interfejsu API

  • Ustabilizuj ActivityEmbeddingRule, aby zapewnić obsługę testów jednostkowych dotyczących umieszczania aktywności. (I8d6b6)
  • WindowMetrisCalculatorTestRule jest stabilny, co pozwala na stosowanie namiastek na testy JVM. Aby uzyskać dokładne wyniki, zalecamy użycie emulatora.
  • Ustabilizuj interfejsy API do testowania w WindowLayoutInfo, aby zapewnić obsługę testowania JVM. (IE036e)
  • Dodaj IntRange dla testowych wartości funkcji zwijania. (I69f7D)

Wersja 1.1

Wersja 1.1.0

7 czerwca 2023 r.

Usługa androidx.window:window-*:1.1.0 została zwolniona. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany wprowadzone od wersji 1.0.0

Umieszczanie aktywności

  • Dodano PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED jako właściwość logiczną tagu <application> w manifeście aplikacji.
  • Wycofano funkcję isSplitSupported i zastąpiliśmy ją elementem splitSupportStatus, aby podać bardziej szczegółowe informacje o tym, dlaczego funkcja podziału jest niedostępna.
  • Dodano zagnieżdżoną klasę SplitController.SplitSupportStatus, aby podać stałe stanu dla właściwości splitSupportStatus.
  • Zrefaktoryzowano SplitController na kilka modułów:
    • Moduł ActivityEmbeddingController dla interfejsów API Activity lub ActivityStack.
    • Element isActivityEmbedded został przeniesiony z SplitController do ActivityEmbeddingController.
    • Moduł RuleController dla EmbeddingRule powiązanych operacji:
    • Usunięto SplitController interfejs API:
    • 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() – określa zbiór reguł.
    • clearRules() – usuwa wszystkie zarejestrowane reguły.
    • parseRules() – analizuje reguły z definicji reguł XML.
  • Wszystkie moduły wymagają zainicjowania kontekstu przez metodę #getInstance(), w tym:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Dodano klasę EmbeddingAspectRatio, aby zdefiniować stałe działania podobne do wyliczeniowych związane ze współczynnikiem proporcji wyświetlacza.
  • Dodano klasę SplitAttributes, aby zdefiniować podzielony układ.
  • Dodano funkcje kalkulatora SplitAttributes do aplikacji SplitController, aby dostosować układy podziału:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), aby sprawdzić, czy interfejsy API SplitAttributesCalculator są obsługiwane przez urządzenie
  • Dodano pole EmbeddingRule#tag.
  • Aktualizacje interfejsu API w SplitRule:
    • Dodano defaultSplitAttributes – definiuje domyślny układ podziału podziału. zastępuje splitRatio i layoutDirection.
    • Dodano tłumaczenie właściwości XML splitRatio i splitLayoutDirection do defaultSplitAttributes.
    • Zmieniliśmy definicję minimalnych wymiarów, by zamiast pikseli używać pikseli niezależnych od gęstości (dp).
    • Dodano element 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ąpi stałe zasady działania końcowego.
    • Zmiany właściwości zostały zastosowane do zagnieżdżonej klasy Builder SplitPairRule i SplitPlaceholderRule.
  • Zastąpiono SplitInfo#getSplitRatio() wartością SplitInfo#getSplitAttributes(), aby podać dodatkowe informacje dotyczące podziału.

Układ okna

  • Dodano eksperymentalną obsługę kontekstu interfejsu użytkownika niezwiązanego z aktywnością do interfejsu WindowInfoTracker.
  • Do WindowMetricsCalculator dodano eksperymentalny kontekst interfejsu użytkownika niezwiązanego z aktywnością.

Etapy migracji

  • Aby umożliwić umieszczanie aktywności na potrzeby ich wyświetlania w częściach, aplikacje muszą dodać właściwość PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED do tagu <application> manifestu: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Dzięki temu system z wyprzedzeniem zoptymalizuje sposób podziału aplikacji.
  • Współczynnik proporcji: SplitInfo
    • Sprawdź, czy obecny podział jest skumulowany: 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 kontrolera SplitController:
    • SplitController.getInstance() zmiana w elemencie SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) zmiana w elemencie RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) zmiana w elemencie ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) zmiana w elemencie RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) zmiana w elemencie RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() zmiana w elemencie RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() zmiana w elemencie RuleController.getInstance(Context).getRules().
  • SplitRule migracje usług:
    • minWidth i minSmallestWidth używają teraz jednostek dp zamiast pikseli. Aplikacje mogą korzystać z tego wywołania: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) lub po prostu podziel minWith w pikselach przez displayMetrics#density.
  • Stałe zachowania zakończenia muszą zostać przeniesione do stałych klas podobnych do wyliczeniowych FinishBehavior:
    • FINISH_NEVER zmiana w elemencie FinishBehavior.NEVER.
    • FINISH_ALWAYS zmiana w elemencie FinishBehavior.ALWAYS.
    • FINISH_ADJACENT zmiana w elemencie FinishBehavior.ADJACENT.
  • Kierunek układu należy przenieść na SplitAttributes.LayoutDirection:
    • ltr zmiana w elemencie SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl zmiana w elemencie SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale zmiana w elemencie SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio należy przenieść do SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migracje:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmiany na: kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmieniają się na kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Funkcje setFinishPrimaryWithSecondary i setFinishSecondaryWithPrimary przyjmują stałe wyliczenia FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.
    • Użyj setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby wyświetlać podziały na urządzeniach pionowych.
  • SplitPlaceholder.Builder migracje:
    • Zawiera tylko parametry filters i placeholderIntent. Pozostałe właściwości zostają przeniesione do ustawień. Więcej informacji znajdziesz w sekcji „Migracje do SpitPairRule.Builder”.
    • Funkcja setFinishPrimaryWithPlaceholder przyjmuje stałe FinishBehavior wyliczeniowe. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.
    • setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmienią się na: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Użyj setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby wyświetlać podziały na urządzeniach pionowych.

Wersja 1.1.0-rc01

10 maja 2023 r.

Usługa androidx.window:window-*:1.1.0-rc01 została zwolniona. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

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

Wersja 1.1.0-beta02

5 kwietnia 2023 r.

Usługa androidx.window:window-*:1.1.0-beta02 została zwolniona. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.

Nowe funkcje

  • Wewnętrzne poprawki i czyszczenie danych.

Wersja 1.1.0-beta01

22 marca 2023 r.

Usługa androidx.window:window-*:1.1.0-beta01 została zwolniona. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.

Umieszczanie aktywności

  • Dodano PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED jako właściwość logiczną tagu <application> w manifeście aplikacji.
  • Wycofano funkcję isSplitSupported i zastąpiliśmy ją elementem splitSupportStatus, aby podać bardziej szczegółowe informacje o tym, dlaczego funkcja podziału jest niedostępna.
  • Dodano zagnieżdżoną klasę SplitController.SplitSupportStatus, aby podać stałe stanu dla właściwości splitSupportStatus.
  • Zrefaktoryzowano SplitController na kilka modułów:
    • Moduł ActivityEmbeddingController dla interfejsów API Activity lub ActivityStack.
    • Element isActivityEmbedded został przeniesiony z SplitController do ActivityEmbeddingController.
    • Moduł RuleController dla EmbeddingRule powiązanych operacji:
    • Usunięto SplitController interfejs API:
      • 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() – określa zbiór reguł.
      • clearRules() – usuwa wszystkie zarejestrowane reguły.
      • „parseRules()” – analizuje reguły z definicji reguł XML.
  • Wszystkie moduły wymagają zainicjowania kontekstu przez metodę #getInstance(), w tym:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Dodano klasę EmbeddingAspectRatio, aby zdefiniować stałe działania podobne do wyliczeniowych związane ze współczynnikiem proporcji wyświetlacza.
  • Dodano klasę SplitAttributes, aby zdefiniować podzielony układ.
  • Dodano funkcje kalkulatora SplitAttributes do aplikacji SplitController, aby dostosować układy podziału:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), aby sprawdzić, czy interfejsy API aplikacji SplitAttributesCalculator są obsługiwane przez urządzenie
  • Dodano pole EmbeddingRule#tag.
  • Aktualizacje interfejsu API w SplitRule:
    • Dodano defaultSplitAttributes – definiuje domyślny układ podziału podziału. zastępuje splitRatio i layoutDirection.
    • Dodano tłumaczenie właściwości XML splitRatio i splitLayoutDirection do defaultSplitAttributes.
    • Zmieniliśmy definicję minimalnych wymiarów, by zamiast pikseli używać pikseli niezależnych od gęstości (dp).
    • Dodano element 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ąpi stałe zasady działania końcowego.
    • Zastosowano zmianę właściwości do zagnieżdżonej klasy Builder SplitPairRule i SplitPlaceholderRule.
  • Zastąpiono SplitInfo#getSplitRatio() wartością SplitInfo#getSplitAttributes(), aby podać dodatkowe informacje dotyczące podziału.

Układ okna

  • Dodano obsługę kontekstu interfejsu użytkownika niezwiązanego z aktywnością do interfejsu WindowInfoTracker.
  • Do interfejsu WindowMetricsCalculator dodano kontekst interfejsu bez aktywności.

Etapy migracji

  • Aby umożliwić umieszczanie aktywności na potrzeby ich wyświetlania w częściach, aplikacje muszą dodać właściwość PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED do tagu <application> manifestu: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Dzięki temu system z wyprzedzeniem zoptymalizuje sposób podziału aplikacji.
  • Współczynnik proporcji: SplitInfo
    • Sprawdź, czy obecny podział jest skumulowany: 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() zmiana w elemencie SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) zmiany na: RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • SplitController.getInstance().isActivityEmbedded(Activity) zmiana w elemencie ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) zmiana w elemencie RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) zmiana w elemencie RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() zmiana w elemencie RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() zmiana w elemencie RuleController.getInstance(Context).getRules().
  • SplitRule migracje usług:
    • minWidth i minSmallestWidth używają teraz jednostek dp zamiast pikseli. Aplikacje mogą korzystać z tego wywołania: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) lub po prostu podziel minWith w pikselach przez displayMetrics#density.
  • Stałe zachowania zakończenia muszą zostać przeniesione do stałych klas podobnych do wyliczeniowych FinishBehavior:
    • FINISH_NEVER zmiana w elemencie FinishBehavior.NEVER.
    • FINISH_ALWAYS zmiana w elemencie FinishBehavior.ALWAYS.
    • FINISH_ADJACENT zmiana w elemencie FinishBehavior.ADJACENT.
  • Kierunek układu należy przenieść na SplitAttributes.LayoutDirection:
    • ltr zmiana w elemencie SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl zmiana w elemencie SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale zmiana w elemencie SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio należy przenieść do SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migracje:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmiany na: kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmieniają się na kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Funkcje setFinishPrimaryWithSecondary i setFinishSecondaryWithPrimary przyjmują stałe wyliczenia FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.
    • Użyj setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby wyświetlać podziały na urządzeniach pionowych.
  • SplitPlaceholder.Builder migracje:
    • Zawiera tylko parametry filters i placeholderIntent. Pozostałe właściwości zostają przeniesione do ustawień. Więcej informacji znajdziesz w sekcji „Migracje do SpitPairRule.Builder”.
    • Funkcja setFinishPrimaryWithPlaceholder przyjmuje stałe FinishBehavior wyliczeniowe. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.
    • setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmienią się na: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Użyj setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby wyświetlać podziały na urządzeniach pionowych.

Wersja 1.1.0-alpha06

22 lutego 2023 roku

Usługa androidx.window:window-*:1.1.0-alpha06 została zwolniona. Wersja 1.1.0-alfa06 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępnij eksperymentalną wersję pobierania WindowLayoutInfo z kontekstu interfejsu.

Zmiany interfejsu API

  • Dodaj atrybut splitSupportStatus, aby wskazać, czy opcja umieszczania aktywności jest dostępna. (I10024)
  • Ustaw interfejs API Context WindowLayoutInfo w wersji eksperymentalnej. (I58ee0).
  • Przedstawiamy WindowAreaController i interfejsy API umożliwiające tryb RearDisplay umożliwiający przeniesienie bieżącego okna na wyświetlacz, który jest dopasowany do tylnego aparatu. (Iffcbf).
  • Zaktualizuj domyślny kolor tła. (I1ac1b),
  • Dodaj parametry: SplitAttributes. (I18bdd)
  • Dodaj interfejsy API dla systemów SplitRule, SplitAttributes, SplitAttributesCalculator. (I92d23)
  • Ulepsz interfejsy API w okolicy maxAspectRatio:
    1. Zastąp alwaysAllow() i alwaysDisallow() elementami ALWAYS_ALLOW i ALWAYS_DISALLOW.
    2. Zaktualizuj dokumentację interfejsu API domeny @see za pomocą samodzielnej dokumentacji. (I3057B)
  • Poniższe konstruktory zostały usunięte z publicznych interfejsów API, ponieważ nie powinny być wywoływane przez aplikacje.
    • Konstruktor SplitInfo
    • Konstruktor ActivityStack (Ide534)
  • SplitRule zajmuje teraz maxAspectRatioInPortrait/Landscape. Zezwala na dzielenie aktywności tylko wtedy, gdy współczynnik proporcji granic nadrzędnych jest mniejszy lub równy żądanemu maxAspectRatio. (IA5990).
  • Zmień RuleController#parseRules na statyczny (I785df)
  • Ulepsz interfejsy API związane z funkcją ActivityEmbedding
    1. Dopasuj nazwy interfejsów API – użyj metody add/remove w przypadku wielu instancji:
    2. registerRule zmiany w: addRule
    3. unregisterRule zmiany w: removeRule
    4. Zastąp getSplitRules wartością getRules, ponieważ ActivityRule nie jest regułą podziału
    5. Dodaj RuleController#setRules, aby ustawić grupę reguł
    6. Wyodrębnij interfejsy API związane z regułą z SplitController do singletonu RuleController. Oto oni:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Wyodrębnij #isActivityEmbedded z zakresu SplitController do singletonu ActivityEmbeddingController. Oto oni:
    14. isActivityEmbedded
    15. Usuń SplitController#initialize. Aby ustawić reguły z pliku XML, użyj elementów RuleController#parseRules i #setRules. Przed tą zmianą: SplitController.initialize(context, R.xml.static_rules) Po tej zmianie: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. Nie rozróżniamy już reguł statycznych od reguł środowiska wykonawczego. Wywołanie funkcji #clearRules w celu wyczyszczenia wszystkich reguł niezależnie od tego, czy są zarejestrowane przy użyciu statycznych definicji reguł XML czy też w czasie działania. Aby zachować starsze działanie SplitController#clearRegisteredRules, wywołaj RuleController#parseRules z identyfikatorem zasobów XML i wywołaj polecenie 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).
  • Ulepsz interfejsy API reguł podziału:
    1. Dla obrazu SplitRule bierz minimalne wymiary w DP zamiast w pikselach.
    2. Refaktoryzacja umożliwiająca korzystanie z narzędzia SplitRule w celu uwzględniania minimalnych wymiarów jako opcjonalnych. (I95f17)
  • Przekazywanie kontekstu w celu zainicjowania funkcji SplitController (I42549)
  • Nazwa SplitRule#layoutDir została zmieniona na #layoutDirection, a SplitRule Builder#setLayoutDir na Builder#setLayoutDirection. (I3f6d1)

Wersja 1.1.0-alfa04

9 listopada 2022 r.

Usługa androidx.window:window-*:1.1.0-alpha04 została zwolniona. Wersja 1.1.0-alfa04 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępnij metodę, która pozwala określić, czy pole ActivityStack jest puste dla pola ActivityEmbedding.
  • Usunięto eksperymentalne tagi API z ActivityEmbedding interfejsów API.
  • Ukryj konstruktor ActivityRule, ponieważ preferowany jest sposób Builder.
  • Dodaj metodę eksperymentalną, aby korzystać z WindowInsets w: WindowMetrics.
  • Aby nie dokończyć używania zmiennej, zaktualizuj SplitPlaceholderFinishBehavior. Zakończenie działania symbolu zastępczego spowodowało pewne niezrozumiałe zachowanie.

Zmiany interfejsu API

  • Ustaw wartość isEmpty jako publiczną, by zastąpić zabawę isEmpty.
  • Zmień nazwę aktywności parametrów ActivityStack na activitiesInProcess. (IA5055).
  • Usuń te ActivityFilter#matchesClassName i ActivityFilter#matchesClassNameOrWildCard, bo są mylące.
  • Dodaj ActivityFilter#componentName abd ActivityFilter#intentAction, aby umożliwić rozmówcy rozróżnienie różnych filtrów (I41f22)
  • Usuń interfejsy API @Deprecated z eksperymentalnego interfejsu API (I216b3)
  • Usuń @ExperimentalWindowApi z interfejsów API do umieszczania aktywności (I69ebe)
  • Ukryj konstruktor ActivityRule, zamiast tego użyj konstruktora. (If4eb6).
  • Dodaj interfejsy API, aby sprawdzić, czy aktywność jest częścią ActivityFilter. (Ia43cf).
  • Zaktualizuj pliki interfejsu API, aby uwzględnić zmiany w klasach WindowMetrics i WindowMetricsCalculatorCompat (I667fe)
  • Zaktualizuj dokument Javadoc usługi ActivityEmbedding i nazwę klasy (Ia1386)
  • Dodanie nazw tagów właściwości ActivityEmbedding do wykorzystania w pliku AndroidManifest.xml (Id1ad4)
  • Dodano nowe interfejsy API SplitPlaceholderFinishBehavior i SplitPlaceholderRule.finishPrimaryWithPlaceholder. Zastąpiły one istniejący tag SplitPlaceholderRule.finishPrimaryWithSecondary, który określa, kiedy zakończy się działanie obiektów zastępczych i jak powinny wyglądać działania powiązane w ramach umieszczania aktywności. (I64647)

Poprawki błędów

  • Przedstawiamy WindowAreaController i interfejsy API umożliwiające tryb RearDisplay umożliwiający przeniesienie bieżącego okna na wyświetlacz, który jest dopasowany do tylnego aparatu. (I388ab)

Wersja 1.1.0-alfa03

27 lipca 2022 roku

Usługa androidx.window:window-*:1.1.0-alpha03 została zwolniona. Wersja 1.1.0-alfa03 zawiera te zatwierdzenia.

Nowe funkcje

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

Zmiany interfejsu API

  • Zaktualizuj wartości domyślne właściwości reguł umieszczania. (Ic4d35).

Wersja 1.1.0-alfa02

11 maja 2022 roku

Usługa androidx.window:window-*:1.1.0-alpha02 została zwolniona. Wersja 1.1.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje

  • Opublikuj biblioteki adaptera, aby umożliwić obsługę Javy i RxJava.

Wersja 1.1.0-alpha01

11 maja 2022 roku

Usługa androidx.window:window-*:1.1.0-alpha01 została zwolniona. Wersja 1.1.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • Publikuj adaptery umożliwiające obsługę środowiska Java i RxJava.

Wersja 1.1.0-alpha01

20 kwietnia 2022 r.

Usługa androidx.window:window:1.1.0-alpha01 została zwolniona. Wersja 1.1.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • Naprawiono błąd polegający na tym, że aplikacja w tle przestaje wysyłać funkcje zwijania.
  • Rozwiń eksperymentalny interfejs ActivityEmbedding API.

Zmiany interfejsu API

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

Poprawki błędów

  • Dodaj interfejsy API, które dostosowują proces wykończenia w przypadku 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.

Usługa androidx.window:window-*:1.0.0 została zwolniona. Wersja 1.0.0 zawiera te zatwierdzenia.

Główne funkcje 1.0.0

  • Obsługa składanych telefonów w modelach WindowInfoTracker i FoldingFeature. WindowMetricsCalculator pomagający w obliczeniach bieżących wartości WindowMetrics.

Wersja 1.0.0-rc01

15 grudnia 2021 roku

Usługa androidx.window:window-*:1.0.0-rc01 została zwolniona. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaj obsługę składanych telefonów w WindowInfoTracker.
  • Dodaj metody, aby obliczyć bieżącą i maksymalną wartość WindowMetrics.
  • Dodaj pomocnicze testowe interfejsy API.

Wersja 1.0.0-beta04

17 listopada 2021 r.

Usługa androidx.window:window-*:1.0.0-beta04 została zwolniona. Wersja 1.0.0-beta04 zawiera te zatwierdzenia.

Nowe funkcje

  • Zmieniono nazwę WindowInfoRepository na WindowInfoTracker.
  • Ustaw aktywność jako jawną zależność metody dla WindowInfoTracker.
  • Dodaj prostą regułę testową dla WindowMetricsCalculator, aby pomóc deweloperom korzystającym z Robolectric.

Zmiany interfejsu API

  • Wyodrębnianie rozszerzeń (I25a5f)
  • add isEmpty w stosie aktywności (I5a4e6)
  • Zmieniono nazwę WindowInfoRepository na WindowInfoTracker.
    • Zaktualizuj odpowiednio zależności java/rxjava/testowania. (I0da63).
  • Dodaj regułę testową dla prostego WindowMetricsCalculator. (Ibacdb).

Wersja 1.0.0-beta03

27 października 2021 roku

Usługa androidx.window:window-*:1.0.0-beta03 została zwolniona. Wersja 1.0.0-beta03 zawiera te zatwierdzenia.

Nowe funkcje

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

Zmiany interfejsu API

  • Usunęliśmy interfejs currentWindowMetrics API, ponieważ nie możemy go dokładnie udostępnić. Użyj narzędzia WindowMetricsCalculator (Icda5f).
  • Zaktualizowano interfejs API rozszerzeń. (ICA92b).
  • Dodaliśmy interfejs nowej funkcji, która umożliwia działania osadzania i wyświetlanie ich obok siebie w elemencie nadrzędnym w oknie zadania. (I5711D)
  • Ukryto konstruktory WindowMetrics i WindowLayoutInfo. Zamiast tego użyj 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

Usługa androidx.window:window-*:1.0.0-beta02 została zwolniona. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaj adnotację eksperymentalną, aby dodać adnotacje do eksperymentalnych interfejsów API. (I9f1b6)
  • Dodaj metodę testową, aby utworzyć testową funkcję składającą, która akceptuje prostokąt. Ułatwi to przeprowadzanie testów przy użyciu Robolectric, a nie faktycznej aktywności. (Id1cca)

Wersja 1.0.0-beta01

18 sierpnia 2021 r.

Usługa androidx.window:window-*:1.0.0-beta01 została zwolniona. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Usunęliśmy stare stałe i przekształciliśmy interfejs FoldingFeature w interfejs.

Zmiany interfejsu API

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

Poprawki błędów

  • Biblioteki zależne od biblioteki Test Core zostały uaktualniony do wersji 1.4.0 i będzie działać na platformie Androida wersja S. (I88b72, b/189353863)

Wersja 1.0.0-alpha10

4 sierpnia 2021 r.

Usługa androidx.window:window-*:1.0.0-alpha10 została zwolniona. Wersja 1.0.0-alfa10 zawiera te zatwierdzenia.

Nowe funkcje

  • Zmień nazwę WindowInfoRepo na WindowInfoRepository i dostosuj odpowiednie klasy / pliki.
  • Konwertuj wskaźniki bieżących okresów na przepływ w WindowInfoRepository, ponieważ wartość zmienia się z czasem.
  • Zmień nazwę obiektu WindowInfoRepoJavaAdapter na WindowInfoRepoCallbackAdapter
  • Dodaj metodę pomocniczą, aby utworzyć testowe obiekty funkcji FoldingFeature
  • Zaktualizuj pakiety do klas grupowych na podstawie obsługiwanej funkcji.

Zmiany interfejsu API

  • Zmień nazwę ActivityExt na ActivityExtensions Zmień repozytorium na repozytorium. (I61a16).
  • Aktualizowanie pakietów na zajęcia. (I23ae2),
  • Usuń WindowMetrics z WindowInfoRepo (I24663)
  • Usuń WindowManager i użyj WindowInfoRepo
    • Ustaw obiekt WindowBackend wewnętrznie. (I06d9a)
  • Konwertuj wskaźniki okien na przepływ.
    • Zmień nazwę adaptera Java na WindowInfoRepoCallbackAdapter
    • Usuń wywołaniebackFlow, aby nie były używane żadne eksperymentalne interfejsy API. (Ia4d15).
  • Dodaj metodę pomocniczą, aby utworzyć testowe funkcje wyświetlania.
    • Zmień tryb zokluzji na typ ooklusion (If4cff).

Poprawki błędów

  • Naprawiono błąd ProGuard, który powodował usuwanie biblioteki podstawowej.
  • Naprawiono błąd, który powodował, że element WindowLayoutInfo nie był dostarczany do dodatkowych subskrybentów.
  • Naprawiono błąd polegający na tym, że zmiany w konfiguracji nie uruchamiały aktualizacji funkcji zawijania.

Wersja 1.0.0-alpha09

30 czerwca 2021 r.

Usługa androidx.window:window-*:1.0.0-alpha09 została zwolniona. Wersja 1.0.0-alfa09 zawiera te zatwierdzenia.

Nowe funkcje

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

Zmiany interfejsu API

  • Dodaj metodę pomocniczą, aby utworzyć testowe funkcje wyświetlania. (I3cf54).
    • Zmień z occlusionMode na occlusionType.

Poprawki błędów

  • Emisja wartości początkowej podczas dodawania wielu konsumentów strumieni danych.

Wersja 1.0.0-alpha08

16 czerwca 2021 r.

Usługa androidx.window:window-*:1.0.0-alpha08 została zwolniona. Wersja 1.0.0-alfa08 zawiera te zatwierdzenia.

Nowe funkcje

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

Wersja 1.0.0-alpha07

2 czerwca 2021 r.

Usługa androidx.window:window-*:1.0.0-alpha07 została zwolniona. Wersja 1.0.0-alfa07 zawiera te zatwierdzenia.

Nowe funkcje

  • Przenieś podstawową bibliotekę okien do Kotlin. Będziemy używać współrzędnych i funkcji zawieszania w celu udostępniania danych asynchronicznych w przyszłości.
  • Dodaj WindowInfoRepo jako główny punkt interakcji do pobierania obiektów WindowMetrics i strumienia WindowLayoutInfo.
  • Nowy artefakt window-java do udostępniania interfejsów API zgodnych z Javą na potrzeby rejestrowania i wyrejestrowywania wywołań zwrotnych.
  • Nowe artefakty window-rxjava2 i window-rxjava3 do udostępniania dostosowanych interfejsów API RxJava.

Zmiany interfejsu API

  • Dodaj WindowServices, aby podać zależności w sposób jednolity.
    • Dodaj interfejs API oparty na współudziale, aby korzystać z informacji o układzie okien. (IAB70f)
  • Przeprowadź migrację podstawowej biblioteki menedżera okien do Kotlin. (Icca34).

Poprawki błędów

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

Wersja 1.0.0-alpha06

5 maja 2021 roku

Usługa androidx.window:window:1.0.0-alpha06 została zwolniona. Wersja 1.0.0-alfa06 zawiera te zatwierdzenia.

Nowe funkcje

  • Rozpoczęliśmy migrację do Kotlin i zakończymy w następnej wersji.
  • Usunięto DeviceState z publicznego interfejsu API. Zamiast niego użyj FoldingFeature.
  • Usunęliśmy atrybut STATE_FLIPPED ze stanów Funkcja składania, ponieważ obecnie nie jest on obsługiwany w żadnym przypadku użycia.
  • Usunęliśmy też inne wycofane interfejsy API.

Zmiany interfejsu API

  • Dodaję Kotlin jako zależność.
    • Przeprowadź migrację z biblioteki podstawowej do Kotlin. (IdD995)
  • Usunięto DisplayFeature konstruktor. (I61fa4).
  • Usunięto DeviceState z publicznego interfejsu API. Zamiast niego użyj FoldingFeature. (Id6079).
  • Usuń wywołanie zwrotne stanu urządzenia z rozszerzeń. (I5Ea83)
  • Usuń element STATE_FLIPPED z funkcji składania. (I9c4e1).
  • Usuń wycofane metody rejestracji. (IB381b)

Wersja 1.0.0-alpha05

24 marca 2021 r.

Usługa androidx.window:window:1.0.0-alpha05 została zwolniona. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.

Nowe funkcje

Dodaliśmy wygodne metody do funkcji Fold, aby aplikacje mogły sprawdzić, czy zawias jest oddzielony lub zasłaniany, a także określić położenie zawiasu. Ukryjemy też typ zawiasu,

Usuwamy synchroniczne metody odczytu z interfejsu WindowManager. Synchroniczne metody odczytu są podatne na błędy, ponieważ istnieje niejawny warunek wyścigu. Zarejestruj detektory i wywołania zwrotne, aby otrzymywać aktualizacje w WindowLayoutInfo.

Zmiany interfejsu API

  • Dodawanie wygodnych metod pracy z funkcjami FoldingFeatures (Ie733f)
  • Usuwa synchroniczne metody odczytu z interfejsu WindowManager (I96fd4).

Wersja 1.0.0-alpha04

10 marca 2021 r.

Usługa androidx.window:window:1.0.0-alpha04 została zwolniona. Wersja 1.0.0-alfa04 zawiera te zatwierdzenia.

Nowe funkcje

  • Naprawia błąd, który powodował, że w przypadku braku implementacji OEM nie był emitowany parametr WindowLayoutInfo. Teraz przesyłamy puste pole WIndowLayoutInfo.
  • Naprawiono 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. Teraz stan powinien być spójny.
  • Zaktualizuj nasze pliki ProGuard tak, aby ignorowały ostrzeżenia związane z zależnościami środowiska wykonawczego.

Poprawki błędów

  • Jeśli brakuje biblioteki OEM, wysyłaj pustą wartość. (Ide935).

Wersja 1.0.0-alpha03

18 lutego 2021 r.

Usługa androidx.window:window:1.0.0-alpha03 została zwolniona. Wersja 1.0.0-alfa03 zawiera te zatwierdzenia.

Nowe funkcje

  • Wysyłaj pustą wartość parametru WindowLayoutInfo, gdy implementacja OEM jest pusta. Powinno to ułatwić korzystanie z biblioteki na większej liczbie urządzeń. Ponieważ interfejsy API są asynchroniczne, zalecamy, aby aplikacje pisały kod obronny i po upływie limitu czasu wysyłały wartość domyślną. Nie udzielamy żadnych gwarancji dotyczących wdrożeń OEM i wartość początkowa może być opóźniona.

Poprawki błędów

  • Jeśli brakuje biblioteki OEM, wysyłaj pustą wartość. (Ide935).

Wersja 1.0.0-alpha02

27 stycznia 2021 r.

Usługa androidx.window:window:1.0.0-alpha02 została zwolniona. Wersja 1.0.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje

  • Wycofaliśmy niektóre interfejsy API, aby je usprawnić i zmniejszyć liczbę błędów. Niektóre ważne przykłady to usunięcie synchronicznych operacji odczytu z interfejsu WindowManager i wycofanie elementu DeviceState. Synchroniczne operacje odczytu mogą prowadzić do sytuacji wyścigu i mieć nieprawidłowy interfejs użytkownika.

  • Przekształciliśmy DisplayFeature w interfejs, który będą wdrażane w przyszłości. Pierwszą funkcją jest funkcja Składanie, która reprezentuje teraz złożenie ekranu lub zawias. Zawiera również stan zawiasu, który zastąpił parametr DeviceState.

  • Platforma WindowMetrics została wprowadzona w Androidzie 11, aby zapewnić programistom prosty sposób wysyłania zapytań o dane dotyczące okna, np. jego pozycję i rozmiar na ekranie oraz wszelkie wstawki systemowe. Do tej wersji dodaliśmy interfejs API, dzięki czemu deweloperzy mogą korzystać z interfejsu WindowMetrics i nadal obsługiwać starsze wersje Androida. Wskaźniki WindowMetrics można uzyskać za pomocą interfejsów API WindowManager#getCurrentWindowMetrics() i WindowManager#getmaximumWindowMetrics().

Zmiany interfejsu API

  • Wycofanie interfejsów API, które zostaną usunięte w następnej wersji alfa (Ib7cc4)
  • Aktualizuje ExtensionInterface, aby akceptować aktywność dla pełnoletnich odwołania. (w07d)
  • Przedstawiamy interfejs WindowMetrics API. (I3ccee).
  • Usuń synchroniczne metody odczytu z interfejsu WindowManager (I69983)
  • Zabezpiecz pakiet ExtensionWindowBackend. (Ied208).

Poprawki błędów

  • Zaktualizuj interfejsy API ExtensionInterface, aby akceptowały kontekst wizualny. (I8E827)

Treści tłumaczone przez użytkowników zewnętrznych

  • Scal obiekty DeviceState i WindowLayoutInfo, aby ułatwić uzyskać dostęp do danych. (Id34f4).

Wersja 1.0.0-alpha01

27 lutego 2020 r.

androidx.window:window:1.0.0-alpha01 i androidx.window:window-extensions:1.0.0-alpha01 zostały opublikowane. Wersja 1.0.0-alfa01 zawiera te zatwierdzenia. To jest pierwsza wersja biblioteki Menedżera okien.

Nowe funkcje

  • DisplayFeature: ten nowy interfejs API wykrywa zakłócenia w działaniu ciągłym. powierzchnie ekranów, takie jak zawiasy czy możliwość złożenia;
  • DeviceState: ten nowy interfejs API zapewnia bieżący stan telefonu z listę zdefiniowanych stanów (np. CLOSED, OPENED, HALF_OPENED, itp.).