WindowManager

Biblioteka Jetpack WindowManager umożliwia programistom aplikacji obsługę nowych formatów urządzeń i środowisk z wieloma oknami. Biblioteka udostępnia wspólną platformę interfejsu API dla interfejsów API w wersji 14 i nowszych. Pierwsza wersja jest przeznaczona dla urządzeń składanych, ale kolejne wersje będą obejmować więcej typów wyświetlaczy i funkcji okien.
Najnowsza aktualizacja Wersja stabilna Kandydat do publikacji Wersja Beta Wersja alfa
6 marca 2024 roku 1.2.0 - - 1.3.0-alfa03

Deklarowanie zależności

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

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

Odlotowy

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

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

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

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

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

Kotlin

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

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

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

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

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.

Utwórz nowy numer

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

Wersja 1.3

Wersja 1.3.0-alfa03

6 marca 2024 roku

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

Zmiany w interfejsie API

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

Poprawki błędów

  • Naprawia awarię, w wyniku której podany kontekst nie był prawidłowo wyodrębniony. (94d10ce , b/318787482)

Wersja 1.3.0-alfa02

7 lutego 2024 r.

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

Nowe funkcje

  • Zmiany w interfejsie API interfejsu Window size Class API, które mają na celu zwiększenie elastyczności 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 narzędziowe umożliwiające wybranie urządzenia WindowSizeClass z zestawu. Dodanie eksperymentalnych funkcji punktacji, aby programiści mogli tworzyć własne selektory. Dodaj funkcję rozszerzenia selektora, aby wybrać najszerszy WindowSizeClass w podanym zakresie. (I0c944)
  • Otwórz konstruktor WindowSizeClass, aby móc dodawać niestandardowe punkty przerwania. (Ic1ff3)
  • Dodaj funkcję ułatwiającą tworzenie klasy rozmiaru na podstawie szerokości, wysokości i gęstości. (If67f4)

Poprawki błędów

  • Napraw wyjątek, który polega na obcięciu wartości zmiennoprzecinkowej do 0. (272ffac)

Wersja 1.3.0-alfa01

15 listopada 2023 r.

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

Nowe funkcje

  • Udostępnij eksperymentalne interfejsy API okien, aby uzyskać 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 podczas uzyskiwania wartości z UiContext.
  • WindowInfoTracker przekazuje dane cech składanych do parametrów UiContext.
  • Udostępnij wersję rozszerzenia na urządzeniu.
  • WindowProperties stałej wartości zastąpienia użytkownika na aplikację:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE – informuje system, że aplikacja wyłączyła zastępowanie zgodności formatu obrazu użytkownika.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE – informuje system, że aplikacja zrezygnowała z opcji pełnego ekranu w ustawieniach zastępowania współczynnika zgodności obrazu użytkownika.

Wersja 1.2

Wersja 1.2.0

15 listopada 2023 r.

Aplikacja 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, aby uzyskać 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 podczas uzyskiwania wartości z UiContext.
  • WindowInfoTracker przekazuje dane cech składanych do parametrów UiContext.
  • Udostępnij wersję rozszerzenia na urządzeniu.

Wersja 1.2.0-rc01

1 listopada 2023 roku

Aplikacja 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, aby uzyskać 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 podczas uzyskiwania wartości z UiContext.
  • WindowInfoTracker przekazuje dane cech składanych do parametrów UiContext.
  • Udostępnij wersję rozszerzenia na urządzeniu.

Wersja 1.2.0-beta04

18 października 2023 r.

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

Zmiany w interfejsie API

Wersja 1.2.0-beta03

20 września 2023 r.

Aplikacja 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ą konkretnej wersji rozszerzeń.
  • Dodaj interfejs API, aby udostępnić wersję rozszerzeń na urządzeniu.

Zmiany w interfejsie API

  • Dodaj adnotację do wymaganej wersji rozszerzenia okna SDK w publicznych interfejsach API.
    • Usuń element isXXXSupported z komponentu Umieszczanie aktywności. (Ie3dae)
  • Wprowadź WindowSdkExtensions, aby zgłosić wersję rozszerzenia na urządzeniu.
    • Wprowadź RequiresWindowSdkExtension, aby dodać adnotację do minimalnej wymaganej wersji rozszerzenia. (I05fd4)
  • Sprawia, że WindowAreaInfo#getCapability nie może być wartością null. (I17048)

Wersja 1.2.0-beta01

26 lipca 2023 r.

Aplikacja 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, aby uzyskać 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 podczas uzyskiwania wartości z UiContext.
  • WindowInfoTracker przekazuje dane cech składanych do parametrów UiContext.

Zmiany w interfejsie API

  • Oznacza interfejs API WindowArea jako eksperymentalny, aby umożliwić kontynuowanie zmian w interfejsie API w wersji stabilnej 1.3 (I857f5)
  • Zaktualizowano pliki interfejsu API, aby dodać adnotacje do pomijania zgodności (I8e87a, b/287516207)

Wersja 1.2.0-alfa03

21 czerwca 2023 r.

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

Nowe funkcje

  • Usunięcie wycofanych interfejsów API z platformy API.
  • Dodaj interfejsy API umożliwiające obsługę równoczesnych wyświetlaczy.
  • Dodaj właściwość, aby zrezygnować z wymuszonego zastąpienia rozmiaru.
  • Dodaj właściwość, aby zrezygnować z zastępowania minimalnego współczynnika proporcji.
  • Ustabilizuj ustawienie ActivityEmbeddingRule, aby umożliwić testowanie jednostkowe umieszczania aktywności w witrynie.

Zmiany w interfejsie API

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

Poprawki błędów

  • Dodanie właściwości rezygnacji z kompatybilności do zastępowania wymuszania zmiany rozmiaru (Ie7ab1)
  • Usuwa język SESSION_STATE_CONTENT_INVISIBLE z interfejsu rozszerzeń. (I6ed19)
  • Ustabilizuj ActivityEmbeddingRule, aby umożliwić testowanie jednostkowe umieszczania aktywności. (I8d6b6)
  • Dodano właściwość kompatybilności z możliwością rezygnacji dla zastąpienia minimalnego współczynnika proporcji. (I66390)
  • Usuwa wycofane interfejsy API WindowArea (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 w obszarze okna (I83675)
  • Dodanie właściwości zgodnej z rezygnacją użytkownika, 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)
  • Aby zapewnić stabilność, usuń interfejs API kolorów tła. (I34c3e)
  • Ukryj interfejsy Window Area API. (I39de0)
  • Dodaj metody, aby zastąpić SplitInfo w tabeli SplitController. Dodaj metody testowe, aby utworzyć typ zmiennoprzecinkowy SplitInfo i ActivityStack. (Icd69f)
  • Ustaw tag jako opcjonalny dla ActivityRule.Builder. (Ib0b44)
  • Usuń RatioSplitType, ExpandContainersSplit i HingeSplitType. To teraz SplitType.
    • Zastąp #splitEqually(), #expandContainers() i #splitByHinge stałą SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND i SPLIT_TYPE_HINGE
    • Usuń funkcję, aby ustawić zastępczy typ podziału zawiasów. Jeśli nie można zastosować typu podziału zawiasów ze względu na bieżący stan urządzenia lub okna, zostanie użyta opcja zastępczego podziału nadrzędnego kontenera zadań po równo. Aby dostosować typ podziału awaryjnego, użyj opcji SplitController#setSplitAttributesCalculator. (Ifcc59)
  • Wycofaj add/removeSplitCallback
    • Przenieś add/removeSplitCallback do folderu SplitControllerCallbackAdapter
    • Dodaj obsługę języka Flow, aby uzyskać listę SplitInfo (I7f1b6)
  • Dodaj regułę testową dla: ActivityEmbeddingController (I42e9b)
  • Zmieniam nazwę ActivityOptionsCompat na ActivityEmbeddingOptions (I89301)
  • Dodaj atrybut splitSupportStatus, aby wskazać, czy umieszczanie aktywności jest dostępne. (I10024).
  • Wprowadź SplitAttributes.BackgroundColor, aby lepiej odzwierciedlić wartość DEFAULT. Wyjaśnić, że nieprzezroczysty kolor tła animacji nie jest obsługiwany – wszystkie nieprzezroczyste kolory będą traktowane jako domyślne, co oznacza, że używany jest bieżący kolor tła okna motywu. (Ic6b95)
  • Zastąp alwaysAllow() i alwaysDisallow() elementami ALWAYS_ALLOW i ALWAYS_DISALLOW. (I3057b)
  • Dodaj interfejsy API dla: SplitRule, SplitAttributes, SplitAttributesCalculator. (I92d23)
  • Dodaj TestActivityStack, aby utworzyć ActivityStack na potrzeby testów
    • Dodaj TestSplitInfo, aby utworzyć SplitInfo na potrzeby testów. (I8e779)
  • Dodaj sposób tworzenia fałszywego elementu SplitAttributesCalculatorParams, aby deweloperzy mogli zweryfikować niestandardowe elementy w domenie SplitAttributesCalculator (Id4a6e)
  • Dodaj WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) i WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f)

Wersja 1.2.0-alfa02

7 czerwca 2023 r.

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

Nowe funkcje

  • Zaktualizuj interfejs API, aby mieć stałą dla nieokreślonych funkcji zwijania.
  • Zastąpienie właściwości WindowLayoutInfoPublishRule spowoduje zastąpienie wszystkich wartości parametru windowLayoutInfo, w tym interfejsu API zależnego od kontekstu.

Zmiany w interfejsie API

  • Dodaj stałą dla nieokreślonej funkcji zwijania środkowego. (I7530c)

Poprawki błędów

  • Zaktualizuj WindowLayoutInfoPublishRule, aby obsługiwać zastąpienia w systemie Context na podstawie WindowLayoutInfo. (I2037a)

Wersja 1.2.0-alfa01

24 maja 2023 r.

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

Nowe funkcje

Ustabilizuj interfejsy API do testowania w zakresie umieszczania aktywności i WindowLayoutInfoTracker. Gra ActivityEmbeddingRule została zmieniona na wersję stabilną. Gra WindowMetricsCalculatorRule została zmieniona na wersję stabilną. Funkcje narzędziowe do tworzenia funkcji FoldingFeature na potrzeby testów zostały przekształcone w stabilne.

Zmiany w interfejsie API

  • Ustabilizuj ActivityEmbeddingRule, aby umożliwić testowanie jednostkowe umieszczania aktywności. (I8d6b6)
  • WindowMetrisCalculatorTestRule jest stabilny, co pozwala na wykorzystanie wskaźników wycinków w testach JVM. Aby uzyskać dokładne wyniki, zalecamy użycie emulatora.
  • Ustabilizuj testowe interfejsy API dla usługi WindowLayoutInfo, aby obsługiwały testy JVM. (Ie036e).
  • Aby przetestować wartości funkcji zwijania, dodaj IntRange. (I69f7d)

Wersja 1.1

Wersja 1.1.0

7 czerwca 2023 r.

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

Ważne zmiany od wersji 1.0.0

Umieszczanie aktywności

  • W pliku manifestu aplikacji dodano właściwość PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED jako właściwość wartości logicznej tagu <application>.
  • Wycofano atrybut isSplitSupported i zastąpiono go funkcją splitSupportStatus, aby podać bardziej szczegółowe informacje o tym, dlaczego podział funkcji jest niedostępny.
  • Dodano zagnieżdżoną klasę SplitController.SplitSupportStatus, aby określić stałe stanowe właściwości splitSupportStatus.
  • Element SplitController został zrefaktoryzowany w kilku modułach:
    • Moduł ActivityEmbeddingController dla interfejsów API Activity lub ActivityStack.
    • Element isActivityEmbedded został przeniesiony z SplitController do ActivityEmbeddingController.
    • Moduł RuleController na EmbeddingRule powiązanych operacji:
    • Usunięto SplitController interfejsów API:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Dodano RuleController interfejsów API:
    • addRule() – dodaje regułę lub aktualizuje regułę zawierającą ten sam tag.
    • removeRule() – usuwa regułę ze zbioru zarejestrowanych reguł.
    • setRules() – określa zbiór reguł.
    • clearRules() – usuwa wszystkie zarejestrowane reguły.
    • parseRules() – analizuje reguły na podstawie definicji reguł XML.
  • Wszystkie moduły wymagają kontekstu do zainicjowania za pomocą metody #getInstance(), w tym:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Dodano klasę EmbeddingAspectRatio do definiowania stałych zachowań typu enum związanych ze współczynnikiem proporcji wyświetlacza.
  • Dodano klasę SplitAttributes w celu zdefiniowania układu podziału.
  • W interfejsie SplitController dodano funkcje kalkulatora (SplitAttributes), aby dostosować układy podziału:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), aby sprawdzić, czy urządzenie obsługuje interfejsy API SplitAttributesCalculator
  • Dodano pole EmbeddingRule#tag.
  • Aktualizacje interfejsów API w SplitRule:
    • Dodano defaultSplitAttributes – określa domyślny układ podziału; zastępuje splitRatio i layoutDirection.
    • Do języka defaultSplitAttributes dodano tłumaczenie właściwości XML splitRatio i splitLayoutDirection.
    • Zmieniliśmy definicje minimalnych wymiarów, aby zamiast pikseli używać pikseli niezależnych od gęstości (dp).
    • Dodano minHeightDp o wartości domyślnej 600 dp.
    • Zmieniono minWidth na minWidthDp. Wartość domyślna to 600 dp.
    • Zmieniono minSmallestWidth na minSmallestWidthDp. Wartość domyślna to 600 dp.
    • Dodano element maxAspectRatioInHorizontal o wartości domyślnej ALWAYS_ALLOW.
    • Dodano maxAspectRatioInPortrait z wartością domyślną 1,4.
    • Zdefiniowano zagnieżdżoną klasę FinishBehavior, która zastąpi stałe zachowania zakończenia.
    • Zastosowano zmiany właściwości do zagnieżdżonej klasy konstruktora SplitPairRule i SplitPlaceholderRule.
  • Tekst SplitInfo#getSplitRatio() zastąpiono wartością SplitInfo#getSplitAttributes(), aby podać dodatkowe informacje dotyczące podziału.

Układ okna

  • W interfejsie WindowInfoTracker dodano eksperymentalną obsługę kontekstu nieaktywności interfejsu użytkownika.
  • Do interfejsu WindowMetricsCalculator dodano eksperymentalny kontekst nieaktywności interfejsu.

Etapy migracji

  • Aby włączyć umieszczanie aktywności w częściach, aplikacje muszą dodać do tagu <application> pliku manifestu właściwość PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Pozwala to systemowi z wyprzedzeniem zoptymalizować sposób podziału w przypadku aplikacji.
  • Współczynnik: SplitInfo
    • Sprawdź, czy bieżący podział jest skumulowany: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Sprawdź bieżący format obrazu: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Migracje ze SplitController:
    • SplitController.getInstance() zmienia się w: SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) zmienia się w: RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) zmienia się w: ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) zmienia się w: RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) zmienia się w: RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() zmienia się w: RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() zmienia się w: RuleController.getInstance(Context).getRules().
  • Migracje usługi SplitRule:
    • minWidth i minSmallestWidth 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 klasy typu wyliczeniowego FinishBehavior:
    • FINISH_NEVER zmienia się w: FinishBehavior.NEVER.
    • FINISH_ALWAYS zmienia się w: FinishBehavior.ALWAYS.
    • FINISH_ADJACENT zmienia się w: FinishBehavior.ADJACENT.
  • Kierunek układu należy przenieść na SplitAttributes.LayoutDirection:
    • ltr zmienia się w: SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl zmienia się w: SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale zmienia się w: SplitAttributes.LayoutDirection.LOCALE.
    • Konto splitRatio należy przenieść do SplitAttributes.SplitType.ratio(splitRatio).
  • Migracje (SplitPairRule.Builder):
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmiany w: 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ę w: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary i setFinishSecondaryWithPrimary przyjmują stałe podobne do enum FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.
    • Użyj setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby pokazać podziały na urządzeniach pionowo.
  • Migracje (SplitPlaceholder.Builder):
    • Ma tylko parametry filters i placeholderIntent. Pozostałe właściwości są przenoszone do ustawiania. Więcej informacji znajdziesz w sekcji „SplitSparujRule.Builder”.
    • Funkcja setFinishPrimaryWithPlaceholder przyjmuje stałe podobne do wyliczeniowej FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.
    • setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmieniają się na: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Użyj setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby pokazać podziały na urządzeniach pionowo.

Wersja 1.1.0-rc01

10 maja 2023 r.

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

Nowe funkcje

  • Wersja ActivityEmbedding jako stabilna wersja API.
  • Naprawiono różne błędy.

Wersja 1.1.0-beta02

5 kwietnia 2023 r.

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

Nowe funkcje

  • Poprawki wewnętrzne i czyszczenie danych.

Wersja 1.1.0-beta01

22 marca 2023 r.

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

Umieszczanie aktywności

  • W pliku manifestu aplikacji dodano właściwość PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED jako właściwość wartości logicznej tagu <application>.
  • Wycofano atrybut isSplitSupported i zastąpiono go funkcją splitSupportStatus, aby podać bardziej szczegółowe informacje o tym, dlaczego podział funkcji jest niedostępny.
  • Dodano zagnieżdżoną klasę SplitController.SplitSupportStatus, aby określić stałe stanowe właściwości splitSupportStatus.
  • Element SplitController został zrefaktoryzowany w kilku modułach:
    • Moduł ActivityEmbeddingController dla interfejsów API Activity lub ActivityStack.
    • Element isActivityEmbedded został przeniesiony z SplitController do ActivityEmbeddingController.
    • Moduł RuleController na EmbeddingRule powiązanych operacji:
    • Usunięto interfejsy API SplitController:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Dodano interfejsy API (RuleController):
      • addRule() – dodaje regułę lub aktualizuje regułę zawierającą ten sam tag.
      • removeRule() – usuwa regułę ze 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 do zainicjowania za pomocą metody #getInstance(), w tym:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Dodano klasę EmbeddingAspectRatio do definiowania stałych zachowań typu enum związanych ze współczynnikiem proporcji wyświetlacza.
  • Dodano klasę SplitAttributes w celu zdefiniowania układu podziału.
  • W interfejsie SplitController dodano funkcje kalkulatora (SplitAttributes), aby dostosować układy podziału:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), aby sprawdzić, czy urządzenie obsługuje interfejsy SplitAttributesCalculator API
  • Dodano pole EmbeddingRule#tag.
  • Aktualizacje interfejsów API w SplitRule:
    • Dodano defaultSplitAttributes – określa domyślny układ podziału; zastępuje splitRatio i layoutDirection.
    • Do języka defaultSplitAttributes dodano tłumaczenie właściwości XML splitRatio i splitLayoutDirection.
    • Zmieniliśmy definicje minimalnych wymiarów, aby zamiast pikseli używać pikseli niezależnych od gęstości (dp).
    • Dodano minHeightDp o wartości domyślnej 600 dp.
    • Zmieniono minWidth na minWidthDp. Wartość domyślna to 600 dp.
    • Zmieniono minSmallestWidth na minSmallestWidthDp. Wartość domyślna to 600 dp.
    • Dodano element maxAspectRatioInHorizontal o wartości domyślnej ALWAYS_ALLOW.
    • Dodano element maxAspectRatioInPortrait o wartości domyślnej 1.4.
    • Zdefiniowano zagnieżdżoną klasę FinishBehavior, która zastąpi stałe zachowania zakończenia.
    • Zastosowano zmiany właściwości do zagnieżdżonej klasy Builder SplitPairRule i SplitPlaceholderRule.
  • Tekst SplitInfo#getSplitRatio() zastąpiono wartością SplitInfo#getSplitAttributes(), aby podać dodatkowe informacje dotyczące podziału.

Układ okna

  • W interfejsie WindowInfoTracker dodano obsługę kontekstu nieaktywności interfejsu użytkownika.
  • Do elementu WindowMetricsCalculator dodano kontekst nieaktywności interfejsu użytkownika.

Etapy migracji

  • Aby włączyć umieszczanie aktywności w częściach, aplikacje muszą dodać do tagu <application> pliku manifestu właściwość PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Pozwala to systemowi z wyprzedzeniem zoptymalizować sposób podziału w przypadku aplikacji.
  • Współczynnik: SplitInfo
    • Sprawdź, czy bieżący podział jest skumulowany: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Sprawdź bieżący format obrazu: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Migracje (SplitController):
    • SplitController.getInstance() zmienia się w: SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) zmieni się w: RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) zmienia się w: ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) zmienia się w: RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) zmienia się w: RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() zmienia się w: RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() zmienia się w: RuleController.getInstance(Context).getRules().
  • Migracje usługi SplitRule:
    • minWidth i minSmallestWidth 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 klasy typu wyliczeniowego FinishBehavior:
    • FINISH_NEVER zmienia się w: FinishBehavior.NEVER.
    • FINISH_ALWAYS zmienia się w: FinishBehavior.ALWAYS.
    • FINISH_ADJACENT zmienia się w: FinishBehavior.ADJACENT.
  • Kierunek układu należy przenieść na SplitAttributes.LayoutDirection:
    • ltr zmienia się w: SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl zmienia się w: SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale zmienia się w: SplitAttributes.LayoutDirection.LOCALE.
    • Konto splitRatio należy przenieść do SplitAttributes.SplitType.ratio(splitRatio).
  • Migracje (SplitPairRule.Builder):
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) zmiany w: 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() )
    • setFinishPrimaryWithSecondary i setFinishSecondaryWithPrimary przyjmują stałe podobne do enum FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.
    • Użyj setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby pokazać podziały na urządzeniach pionowo.
  • Migracje (SplitPlaceholder.Builder):
    • Ma tylko parametry filters i placeholderIntent. Pozostałe właściwości są przenoszone do ustawiania. Więcej informacji znajdziesz w sekcji „SplitSparujRule.Builder”.
    • Funkcja setFinishPrimaryWithPlaceholder przyjmuje stałe podobne do wyliczeniowej FinishBehavior. Więcej informacji znajdziesz w sekcji „Migracje reguł podziału”.
    • setLayoutDirection(layoutDirection) i setSplitRatio(ratio) zmieniają się na: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Użyj setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), aby pokazać podziały na urządzeniach pionowo.

Wersja 1.1.0-alfa06

22 lutego 2023 roku

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

Nowe funkcje

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

Zmiany w interfejsie API

  • Dodaj atrybut splitSupportStatus, aby wskazać, czy umieszczanie aktywności jest dostępne. (I10024).
  • Ustaw interfejs API WindowLayoutInfo kontekstu jako eksperyment. (I58ee0)
  • Wprowadza funkcje WindowAreaController i interfejsy API umożliwiające włączenie trybu RearDisplay w celu przeniesienia bieżącego okna do wyświetlacza dopasowanego do tylnego aparatu. (Iffcbf)
  • Zaktualizuj domyślny kolor tła. (I1ac1b)
  • Dodaj SplitAttributes parametrów. (I18bdd)
  • Dodaj interfejsy API dla: 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 dotyczącą @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 ma teraz maxAspectRatioInPortrait/Landscape. Zezwala na dzielenie działań tylko wtedy, gdy współczynnik proporcji na poziomie nadrzędnym jest mniejszy lub równy żądanej wartości maxAspectRatio. (Ia5990)
  • Zmień RuleController#parseRules na statyczny (I785df)
  • Usprawnienie interfejsów API w obszarze ActivityEmbedding
    1. Dopasuj nazwy interfejsów API – użyj funkcji add/remove w przypadku wielu instancji:
    2. registerRule zmiany w elemencie addRule
    3. unregisterRule zmiany w elemencie removeRule
    4. Zastąp getSplitRules wartością getRules, ponieważ ActivityRule nie jest regułą podziału
    5. Dodaj zasadę RuleController#setRules, aby ustawić kilka 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 metody #clearRules w celu wyczyszczenia wszystkich reguł niezależnie od tego, czy są one zarejestrowane ze statycznymi definicjami reguł XML czy w czasie działania. Aby zachować starsze działanie SplitController#clearRegisteredRules, wywołaj metodę RuleController#parseRules z identyfikatorem zasobów XML i wywołaj 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 SplitRule API:
    1. Dla parametru SplitRule ustaw minimalne wymiary w DP zamiast pikseli.
    2. Zrefaktoryzuj konstruktor SplitRule, aby przyjąć minimalne wymiary jako opcjonalne. (I95f17)
  • Przekazywanie kontekstu, by zainicjować SplitController (I42549)
  • Nazwa elementu SplitRule#layoutDir została zmieniona na #layoutDirection oraz SplitRule Builder#setLayoutDir na Builder#setLayoutDirection. (I3f6d1)

Wersja 1.1.0-alfa04

9 listopada 2022 r.

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

Nowe funkcje

  • Udostępnij metodę, aby sprawdzić, czy element ActivityStack jest pusty dla ActivityEmbedding.
  • Usunięto eksperymentalne tagi interfejsu API z interfejsów API ActivityEmbedding.
  • Ukryj konstruktor ActivityRule, ponieważ Builder jest preferowanym sposobem konstruowania.
  • Dodaj metodę eksperymentalną, aby uzyskać WindowInsets na WindowMetrics.
  • Zaktualizuj pole SplitPlaceholderFinishBehavior, aby nie dopuścić do zakończenia działania symbolu zastępczego. Zakończenie obsługi symbolu zastępczego powodowało pewne zamieszanie.

Zmiany w interfejsie API

  • Zmień wartość isEmpty na publiczną, aby zastąpić nią isEmpty.
  • Zmień nazwę aktywności parametru ActivityStack na activitiesInProcess. (Ia5055)
  • Usuń te zasady: ActivityFilter#matchesClassName i ActivityFilter#matchesClassNameOrWildCard, ponieważ są mylące.
  • Dodaj ActivityFilter#componentName abd ActivityFilter#intentAction, aby umożliwić rozmówcy rozróżnianie różnych filtrów (I41f22)
  • Usuń interfejsy API @Deprecated z eksperymentalnego interfejsu API (I216b3)
  • Usuwanie elementu @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ą zasobu ActivityFilter. (Ia43cf)
  • Zaktualizuj pliki interfejsu API, aby uwzględnić zmiany w klasach WindowMetrics i WindowMetricsCalculatorCompat (I667fe)
  • Zaktualizuj dokument Javadoc właściwości ActivityEmbedding i nazwę klasy (Ia1386)
  • Dodaję nazwy tagów właściwości ActivityEmbedding, które będą używane w pliku AndroidManifest.xml (Id1ad4)
  • Dodano nowe interfejsy API SplitPlaceholderFinishBehavior i SplitPlaceholderRule.finishPrimaryWithPlaceholder. Zastąpiły one istniejący element SplitPlaceholderRule.finishPrimaryWithSecondary, który określa, kiedy działania tymczasowe kończą się, i jak powinny zachowywać się powiązane aktywności w Osawaniu aktywności. (I64647)

Poprawki błędów

  • Wprowadza funkcje WindowAreaController i interfejsy API umożliwiające włączenie trybu RearDisplay w celu przeniesienia bieżącego okna do wyświetlacza dopasowanego do tylnego aparatu. (I388ab)

Wersja 1.1.0-alfa03

27 lipca 2022 roku

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Wersja 1.1.0-alfa02

11 maja 2022 roku

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

Nowe funkcje

  • Opublikuj biblioteki adaptacyjne, aby obsługiwać języki Java i RxJava.

Wersja 1.1.0-alfa01

11 maja 2022 roku

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

Nowe funkcje

  • Adaptery wersji obsługujące Javę i RxJava

Wersja 1.1.0-alfa01

20 kwietnia 2022 r.

Aplikacja androidx.window:window:1.1.0-alpha01 została zwolniona. Wersja 1.1.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Naprawiono błąd, który powodował, że aplikacja w tle przestała wysyłać funkcje składane.
  • Rozwiń eksperymentalny interfejs ActivityEmbedding API.

Zmiany w interfejsie API

  • Publiczny interfejs API służący do sprawdzania, czy aktywność jest osadzona. (I39eb7)

Poprawki błędów

  • Dodawanie interfejsów API, które dostosowują zakończenie działania kontenerów w podziałach aktywności (I1a1e4)
  • Dodaliśmy nową opcję konfiguracji reguł podziału aktywności. (Iec6af)

Wersja 1.0

Wersja 1.0.0

26 stycznia 2022 r.

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

Główne funkcje wersji 1.0.0

  • Obsługa składanych telefonów na urządzeniach WindowInfoTracker i FoldingFeature. WindowMetricsCalculator, aby łatwiej obliczyć bieżące wartości WindowMetrics.

Wersja 1.0.0-rc01

15 grudnia 2021 roku

Aplikacja 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 do WindowInfoTracker.
  • Dodaj metody, aby obliczyć aktualną i maksymalną wartość WindowMetrics.
  • Dodaj testowe interfejsy API.

Wersja 1.0.0-beta04

17 listopada 2021 r.

Aplikacja 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 z WindowInfoTracker.
  • Dodaj prostą regułę testową dla narzędzia WindowMetricsCalculator, aby wspomóc programistów korzystających z Robolectrica.

Zmiany w interfejsie API

  • Wyodrębnianie rozszerzeń (I25a5f)
  • add isEmpty w ActivityStack (I5a4e6)
  • Zmieniono nazwę WindowInfoRepository na WindowInfoTracker.
    • Zaktualizuj zależności java/rxjava/testing, aby były zgodne. (I0da63)
  • Dodać regułę testową dla prostego narzędzia WindowMetricsCalculator. (Ibacdb)

Wersja 1.0.0-beta03

27 października 2021 roku

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

Nowe funkcje

  • Dodano eksperymentalne interfejsy API do umieszczania aktywności. Ten początkowy układ umożliwia wyświetlanie 2 aktywności obok siebie.

Zmiany w interfejsie API

  • Usunięto interfejs currentWindowMetrics API, ponieważ nie możemy go dokładnie podać. Użyj interfejsu WindowMetricsCalculator (Icda5f).
  • Zaktualizowano interfejs API rozszerzeń. (Ica92b)
  • Dodaliśmy interfejs nowej funkcji, która umożliwia umieszczanie działań i wyświetlanie ich obok siebie w nadrzędnym oknie zadań. (I5711d)
  • Ukryto konstruktory WindowMetrics i WindowUkładInfo. Użyj testowych interfejsów API. (I5a1b5)
  • Dodanie interfejsu API w celu tworzenia fałszywych obiektów WindowUkładInfo. (I4a2fd).

Poprawki błędów

Wersja 1.0.0-beta02

1 września 2021 roku

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

Nowe funkcje

  • Dodaj eksperymentalną adnotację, aby dodać adnotacje do eksperymentalnych interfejsów API. (I9f1b6)
  • Dodaj metodę testową, aby utworzyć testową funkcję FoldingFeature, która akceptuje obiekt Rect. Ułatwi to przeprowadzanie testów z wykorzystaniem Robolectric zamiast rzeczywistego działania. (Id1cca)

Wersja 1.0.0-beta01

18 sierpnia 2021 r.

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

Nowe funkcje

  • Usunięto stare stałe i przekształciliśmy je w interfejs FoldingFeature.

Zmiany w interfejsie API

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

Poprawki błędów

  • Biblioteki korzystające z biblioteki Test Core zostały uaktualnione do wersji 1.4.0 i będą teraz działać z platformą Androida w wersji S. (I88b72, b/189353863)

Wersja 1.0.0-alfa10

4 sierpnia 2021 r.

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

Nowe funkcje

  • Zmień nazwę WindowInfoRepo na WindowInfoRepository i dostosuj odpowiednie klasy / pliki.
  • Przekonwertuj bieżące wskaźniki dotyczące okien na przepływ w WindowInfoRepository, ponieważ wartość zmienia się z czasem.
  • Zmień nazwę elementu WindowInfoRepoJavaAdapter na WindowInfoRepoCallbackAdapter
  • Dodaj metodę pomocniczą do tworzenia testowych obiektów FoldingFeature
  • Aktualizuj pakiety o klasy grupowe w zależności od obsługiwanych funkcji.

Zmiany w interfejsie API

  • Zmiana nazwy ActivityExt na ActivityExtension Zmiana z repozytorium na repozytorium. (I61a16)
  • Aktualizowanie pakietów zajęć. (I23ae2)
  • Usuwanie WindowMetrics z WindowInfoRepo (I24663)
  • Usuń narzędzie WindowManager i użyj WindowInfoRepo.
    • Ustaw WindowBackend jako wewnętrzny. (I06d9a)
  • Przekonwertuj dane dotyczące okna na przepływ.
    • Zmień nazwę adaptera Java na WindowInfoRepoCallbackAdapter
    • Usuń metodę wywołania zwrotnego, aby nie używać więcej eksperymentalnych interfejsów API. (Ia4d15)
  • Dodaj metodę pomocniczą, aby utworzyć testowe funkcje wyświetlania.
    • Zmień z occlusionMode na occlusionType (If4cff)

Poprawki błędów

  • Naprawiono błąd ProParda, który powodował usunięcie biblioteki podstawowej.
  • Naprawiono błąd, który powodował, że element WindowUkładInfo nie był dostarczany do dodatkowych subskrybentów.
  • Naprawiono błąd, który powodował, że zmiany konfiguracji nie uruchamiały aktualizacji funkcji składanych.

Wersja 1.0.0-alfa09

30 czerwca 2021 r.

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

Nowe funkcje

  • Zmień ze stałych liczb całkowitych na nieograniczone wyliczenia.
  • Dodaj narzędzie testowe, aby utworzyć testowe funkcje zwijania.

Zmiany w interfejsie API

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

Poprawki błędów

  • Generuj wartość początkową podczas dodawania wielu konsumentów strumieni danych.

Wersja 1.0.0-alfa08

16 czerwca 2021 r.

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

Nowe funkcje

  • Udostępniliśmy artefakt testowania, aby ułatwić testowanie przy użyciu WindowInfoRepository. Użyj WindowInfoRepository, aby uzyskać informacje o funkcjach DisplayFeatures i WindowMetrics. (I57f66, Ida620)

Wersja 1.0.0-alfa07

2 czerwca 2021 r.

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

Nowe funkcje

  • Przeprowadź migrację podstawowej biblioteki okien do Kotlin. Zostanie wykorzystywana korutyny i funkcje zawieszania, aby od tej pory udostępniać dane asynchroniczne.
  • Dodaj WindowInfoRepo jako główny punkt interakcji dla pobierania WindowMetrics i strumienia WindowUkładInfo.
  • Nowy artefakt window-java udostępniający interfejsy API w języku Java do rejestrowania i wyrejestrowywania wywołań zwrotnych.
  • Nowe artefakty window-rxjava2 i window-rxjava3 udostępniające dostosowane interfejsy API RxJava.

Zmiany w interfejsie API

  • Dodaj WindowServices, aby jednolicie określić zależności.
    • Dodaj interfejs API oparty na współużytkowaniu, aby pobierać informacje o układzie okna (Iab70f)
  • Przeprowadź migrację podstawowej biblioteki menedżera okien do Kotlin. (Icca34)

Poprawki błędów

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

Wersja 1.0.0-alfa06

5 maja 2021 roku

Aplikacja androidx.window:window:1.0.0-alpha06 została zwolniona. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.

Nowe funkcje

  • Rozpoczęliśmy migrację do Kotlin i zakończymy ją w następnej wersji.
  • Interfejs DeviceState został usunięty z publicznego interfejsu API. Zamiast niego użyj funkcji FoldingFeature.
  • Usunęliśmy element STATE_FLIPPED ze stanów FoldingFeature, ponieważ nie jest obecnie obsługiwany w żadnym przypadku użycia.
  • Usunęliśmy też inne wycofane interfejsy API.

Zmiany w interfejsie API

  • Dodaję Kotlin jako zależność.
    • Przeprowadź migrację podstawowej biblioteki do Kotlin. (Idd995)
  • Usunięto konstruktora DisplayFeature. (I61fa4)
  • Usunięto interfejs DeviceState z publicznego interfejsu API. Użyj interfejsu FoldingFeature. (Id6079).
  • Usuń z rozszerzeń wywołanie zwrotne stanu urządzenia. (I5ea83)
  • Usuń STATE_FLIPPED z funkcji składania. (I9c4e1).
  • Usuń wycofane metody rejestracji. (Ib381b)

Wersja 1.0.0-alfa05

24 marca 2021 r.

Aplikacja androidx.window:window:1.0.0-alpha05 została zwolniona. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

W funkcji FoldingFeature dodaliśmy wygodne metody, dzięki którym aplikacje mogą określić, czy dany element go rozdziela, zasłania i określa orientację zawiasu. Ukrywamy również typ zawiasu, aby

Usuwamy synchroniczne metody odczytu z narzędzia WindowManager. Synchroniczne metody odczytu są podatne na błędy, ponieważ istnieją niejawne warunki dotyczące rasy. Zarejestruj detektory i wywołania zwrotne, aby otrzymywać aktualizacje dotyczące WindowUkładInfo.

Zmiany w interfejsie API

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

Wersja 1.0.0-alfa04

10 marca 2021 r.

Aplikacja androidx.window:window:1.0.0-alpha04 została zwolniona. Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Naprawiono błąd, który powodował, że element WindowUkładInfo nie pojawiał się z powodu braku implementacji OEM. Teraz emitujemy pustą wartość WIndowUkładInfo.
  • Naprawiliśmy błąd, który powodował, że stan nie był aktualizowany prawidłowo, jeśli stan zawiasu zmienił się, gdy aplikacja działała w tle. Teraz stan powinien być spójny.
  • Zaktualizuj pliki Progryard tak, aby ignorowały ostrzeżenia dotyczące zależności środowiska wykonawczego.

Poprawki błędów

  • Jeśli brakuje biblioteki OEM, użyj pustej wartości. (Ide935)

Wersja 1.0.0-alfa03

18 lutego 2021 r.

Aplikacja androidx.window:window:1.0.0-alpha03 została zwolniona. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.

Nowe funkcje

  • Gdy implementacja OEM jest pusta, parametr WindowLayoutInfo może wyświetlać pustą wartość. Powinno to ułatwić korzystanie z biblioteki na większej liczbie urządzeń. Ponieważ interfejsy API są asynchroniczne, zalecamy, aby aplikacje zapisywały kod defensywny i generowały wartość domyślną po upływie limitu czasu oczekiwania. Nie udzielamy żadnych gwarancji dotyczących implementacji OEM, a wartość początkowa może być opóźniona.

Poprawki błędów

  • Jeśli brakuje biblioteki OEM, użyj pustej wartości. (Ide935)

Wersja 1.0.0-alfa02

27 stycznia 2021 r.

Aplikacja androidx.window:window:1.0.0-alpha02 została zwolniona. Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Wycofaliśmy niektóre interfejsy API, aby uprościć interfejs API i zmniejszyć liczbę błędów. Można na przykład usunąć synchroniczne operacje odczytu z Menedżera Windowsa i wycofać funkcję DeviceState. Synchroniczne operacje odczytu mogą prowadzić do problemów z wyścigiem i mieć nieprawidłowy interfejs użytkownika.

  • Przekonwertowaliśmy DisplayFeature na interfejs, który w przyszłości będą implementowane w innych funkcjach. Pierwszą funkcją jest funkcja składana, która przedstawia teraz złożenie ekranu lub zawias. Zawiera on też stan zawiasu zastępującego DeviceState.

  • Została ona wprowadzona w Androidzie 11, aby zapewnić deweloperom prosty sposób na wysyłanie zapytań o dane dotyczące okna, na przykład jego pozycję i rozmiar na ekranie oraz dowolne wstawki systemowe. W tej wersji wprowadziliśmy wsteczny interfejs API, aby deweloperzy mogli 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 w interfejsie API

  • Wycofywanie interfejsów API, które zostaną usunięte w następnej wersji alfa (Ib7cc4)
  • Aktualizuje ExtensionInterface, tak aby akceptował konkretne pliki referencyjne aktywności. (I07ded)
  • Wprowadzenie interfejsu WindowMetrics API. (I3ccee)
  • Usuń synchroniczne metody odczytu z programu WindowManager (I69983)
  • Zabezpiecz pakiet ExtensionWindowBackend. (Ied208)

Poprawki błędów

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

Wkład z zewnątrz

  • Scal obiekty DeviceState i WindowUkładInfo, by ułatwić dostęp do danych. (Id34f4).

Wersja 1.0.0-alfa01

27 lutego 2020 r.

Zwolniono androidx.window:window:1.0.0-alpha01 i androidx.window:window-extensions:1.0.0-alpha01. Wersja 1.0.0-alpha01 zawiera te zatwierdzenia. To jest pierwsza wersja biblioteki Menedżera okien.

Nowe funkcje

  • DisplayFeature: ten nowy interfejs API wykrywa zakłócenia na ciągłych, płaskich powierzchniach, takich jak zawiasy czy zagięcia.
  • DeviceState: ten nowy interfejs API podaje bieżący stan telefonu z listy zdefiniowanych pozycji (np. CLOSED, OPENED, HALF_OPENED itp.).