Менеджер окон

Библиотека Jetpack WindowManager позволяет разработчикам приложений поддерживать новые форм-факторы устройств и многооконные среды. Первоначальная версия ориентирована на складные устройства, но в будущих версиях будет расширена поддержка других типов дисплеев и функций окон.
Последнее обновление Стабильный релиз Предварительная версия релиза Бета-версия Альфа-версия
22 апреля 2026 г. 1.5.1 - - 1.6.0-alpha03

Объявление зависимостей

Чтобы добавить зависимость от WindowManager, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .

Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:

Круто

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

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

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

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

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

Котлин

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

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

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

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

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

Обратная связь

Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.

Создать новую задачу

Для получения более подробной информации см. документацию по системе отслеживания ошибок .

Версия 1.6

Версия 1.6.0-alpha03

22 апреля 2026 г.

Выпущена версия androidx.window:window-*:1.6.0-alpha03 . Версия 1.6.0-alpha03 содержит следующие коммиты .

Изменения в API

  • Добавить API для управления состоянием взаимодействия. ( I98a09 , b/489793703 )
  • Переименован transferActivityToWindowArea в transferToWindowArea для большей ясности в отношении поведения при активации этой функции. Это также устраняет зависимость этого метода от сессии, поскольку эта операция выполняется после завершения процесса, который её запрашивает. ( Ie7d6f , b/271644150 , b/273807246 , b/272064992 , b/473870239 )
  • Добавить безопасный метод для получения WindowMetrics ( I2adf8 , b/449386176 )
  • Для большей ясности обновите методы в расширениях WM для режима взаимодействия. ( I219a4 , b/454438323 )
  • Добавить вспомогательные методы для создания WindowSizeClassSets в табличной форме. ( I4d623 , b/444174274 )
  • Добавить API для получения режима взаимодействия. ( I9fef2 , b/423990404 )
  • Добавьте обработчики событий на основе обратных вызовов непосредственно в WindowLayoutInfo и объявите устаревшим WindowInfoTrackerCallbackAdapter . ( I1ff17 , b/423990404 )
  • Устаревший конструктор WindowLayoutInfo в расширениях. ( I6ab65 , b/423990404 )
  • Добавить поддержку расширений для режима взаимодействия при составлении отчетов. ( I66211 , b/423990404 )

Исправлены ошибки

  • Обновлен Compose compileSdk до API 37. Это означает, что для использования Compose требуется минимальная версия AGP 9.2.0. ( Id45cd , b/413674743 )

Версия 1.6.0-alpha01

19 ноября 2025 г.

Выпущена версия androidx.window:window-*:1.6.0-alpha01 . Версия 1.6.0-alpha01 содержит следующие коммиты .

Новые функции

  • Добавьте вспомогательные методы для создания WindowSizeClassSets в табличной форме.

Изменения в API

  • Добавить вспомогательные методы для создания WindowSizeClassSets в табличной форме. ( I4d623 , b/444174274 )

Версия 1.5

Версия 1.5.1

19 ноября 2025 г.

Выпущена версия androidx.window:window-*:1.5.1 . Версия 1.5.1 содержит следующие коммиты .

Исправлены ошибки

  • Исправлена ​​ошибка ClassCastException , возникающая на некоторых устройствах ( 4d58979 ).

Версия 1.5.0

24 сентября 2025 г.

Выпущена версия androidx.window:window-*:1.5.0 . Версия 1.5.0 содержит следующие коммиты .

Важные изменения по сравнению с версией 1.4.0:

  • Добавьте контрольные точки WindowSizeClass для размеров Large и XLarge. ( I40d85 )
  • Расширить расчет WindowMetrics на контекст приложения. ( I8eeeb , b/360934048 )
  • Предоставьте геттер для прямого доступа к WindowLayoutInfo ( IE9513 ).
  • Внедрить API для автоматического сохранения состояния встраивания и автоматического восстановления состояния встраивания при перезапуске процесса приложения. ( IE0295 )
  • Удалён экспериментальный API WindowInsets . ( I68a71 )

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой EmbeddingRule в некоторых случаях возвращал разные значения hashCode . ( I748cc )
  • Исправлена ​​ошибка, из-за которой могла возникать ошибка NullPointerException вызванная ошибками в реализации устройства.
  • Исправлена ​​ошибка, из-за которой проверки безопасности ActivityEmbedding завершались с ошибкой, вызванной удалением неиспользуемых классов программой ProGuard.

Внешний вклад

  • Добавить все платформы KMP в window-core ( If3d7c )

Версия 1.5.0-rc01

27 августа 2025 г.

Выпущена версия androidx.window:window-*:1.5.0-rc01 . Версия 1.5.0-rc01 содержит следующие коммиты .

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой могла возникать ошибка NullPointerException вызванная ошибками в реализации устройства.
  • Исправлена ​​ошибка, из-за которой проверки безопасности ActivityEmbedding завершались с ошибкой, вызванной удалением неиспользуемых классов программой ProGuard.

Версия 1.5.0-beta02

13 августа 2025 г.

Выпущена версия androidx.window:window-*:1.5.0-beta02 . Версия 1.5.0-beta02 содержит следующие коммиты .

Новые функции

  • Исправлены незначительные ошибки.

Внешний вклад

  • Добавить все платформы KMP в window-core ( If3d7c )

Версия 1.5.0-beta01

2 июля 2025 г.

Выпущена версия androidx.window:window-*:1.5.0-beta01 . Версия 1.5.0-beta01 содержит следующие коммиты .

Версия 1.5.0-alpha02

7 мая 2025 г.

Выпущена версия androidx.window:window-*:1.5.0-alpha02 . Версия 1.5.0-alpha02 содержит следующие коммиты .

Изменения в API

  • Добавьте контрольные точки WindowSizeClass для размеров Large и XLarge. ( I40d85 )
  • Расширить расчет WindowMetrics на контекст приложения. ( I8eeeb , b/360934048 )
  • Предоставьте геттер для прямого доступа к WindowLayoutInfo ( IE9513 ).
  • Внедрить API для автоматического сохранения состояния встраивания и автоматического восстановления состояния встраивания при перезапуске процесса приложения. ( IE0295 )
  • Удалён экспериментальный API WindowInsets . ( I68a71 )
  • Скрыть несколько конструкторов ( I87b8d )

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой EmbeddingRule в некоторых случаях возвращал разные значения hashCode . ( I748cc )

Версия 1.5.0-alpha01

12 марта 2025 г.

Выпущена версия androidx.window:window-*:1.5.0-alpha01 . Версия 1.5.0-alpha01 содержит следующие коммиты .

Новые функции

  • Первый релиз следующей версии 1.5.0.

Версия 1.4

Версия 1.4.0

20 мая 2025 г.

Выпущена версия androidx.window:window-*:1.4.0 . Версия 1.4.0 содержит следующие коммиты .

Важные изменения по сравнению с версией 1.3.0

  • Встраивание активности
    • API для настройки анимации запуска
    • Интерактивный разделитель
    • Закрепление ActivityStack
    • Затемнение диалогового окна в полноэкранном режиме
    • Встроенное окно активности, обратный вызов информации
    • Улучшенное управление ActivityStack
    • Запуск Activity в указанном ActivityStack
  • WindowMetricsCalculator
    • Улучшить поддержку тестирования
  • WindowMetrics
    • Удобные методы расчета withDp и heightDp
    • Обновите проверку границ до isAtLeast и используйте нижние границы для поддержки добавления новых значений.
  • WindowSizeClass
    • Добавить способ расчета на основе WindowMetrics
  • WindowInfoTracker
    • Добавить API для определения поддерживаемых поз на устройстве.

Версия 1.4.0-rc02

23 апреля 2025 г.

Выпущена версия androidx.window:window-*:1.4.0-rc02 . Версия 1.4.0-rc02 содержит следующие коммиты .

Исправлены ошибки

  • Исправлена ​​ошибка, приводящая к сбою ProGuard при использовании ActivityEmbedding .

Версия 1.4.0-rc01

12 марта 2025 г.

Выпущена версия androidx.window:window-*:1.4.0-rc01 . Версия 1.4.0-rc01 содержит следующие коммиты .

Новые функции

  • Внесены изменения в API класса WindowSizeClass .
  • Обновления API для встраивания активности.

Версия 1.4.0-beta02

12 февраля 2025 г.

Выпущена версия androidx.window:window-*:1.4.0-beta02 . Версия 1.4.0-beta02 содержит следующие коммиты .

Новые функции

  • Исправлена ​​аннотация, которая присутствовала только у свойства, но не у геттера.

Версия 1.4.0-beta01

15 января 2025 г.

Выпущена версия androidx.window:window-*:1.4.0-beta01 . Версия 1.4.0-beta01 содержит следующие коммиты .

Новые функции

  • Добавить API для настройки анимаций ActivityEmbedding .
  • Расширить API тестирования WindowMetricsCalculator , чтобы разрешить имитацию метрик окна.

Изменения в API

  • Скрыть несколько конструкторов ( I87b8d )
  • Разрешить приложениям настраивать анимацию ActivityEmbedding ( If31a8 )
  • Добавлена ​​поддержка целевых платформ watchosDeviceArm64 KMP и kotlin 1.9 ( Icf15d , b/364652024 )
  • Предоставить доступ к API WindowMetricsCalculator . ( I1cebf )

Исправлены ошибки

  • В этой библиотеке теперь используются аннотации JSpecify, определяющие наличие нулевого значения , которые относятся к использованию типов. Разработчикам Kotlin следует использовать следующий аргумент компилятора для обеспечения корректного использования: -Xjspecify-annotations=strict (это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin). ( Ie69ac , b/326456246 )

Версия 1.4.0-alpha05

16 октября 2024 г.

Выпущена версия androidx.window:window-*:1.4.0-alpha05 . Версия 1.4.0-alpha05 содержит следующие коммиты .

Новые функции

  • Добавьте вспомогательные функции для получения значений widthDp и heightDp из WindowMetrics .

Изменения в API

  • Добавьте widthDp и heightDp в WindowMetrics . ( Ide026 )
  • Удалён экспериментальный API WindowInsets . ( I68a71 )
  • Обновите названия методов проверки границ на isAtLeast ( Ib0ab7 )

Версия 1.4.0-alpha04

2 октября 2024 г.

Выпущена версия androidx.window:window-*:1.4.0-alpha04 . Версия 1.4.0-alpha04 содержит следующие коммиты .

Изменения в API

  • Добавлен метод для вычисления WindowSizeClass из WindowMetrics . ( 874dba )
  • Для большей ясности измените методы WindowSizeClass на containsWidthDp , containsHeightDp и containsWindowSizeDp . ( fa760d )
  • Преобразовать WindowAreaController в абстрактный базовый класс. ( I90893 )

Исправлены ошибки

  • Добавить поддержку относительных границ при создании тестового FoldingFeature . ( 2e6b3e )
  • Исправлены общие ошибки, возникающие при выборе WindowSizeClass .

Версия 1.4.0-alpha03

18 сентября 2024 г.

Выпущена версия androidx.window:window-*:1.4.0-alpha03 . Версия 1.4.0-alpha03 содержит следующие коммиты .

Новые функции

  • Добавить вспомогательный метод для получения WindowSizeClass из WindowMetrics . ( I83f1f )
  • Переименовать isAtLeast в containsBreakpoint . ( I85b47 )
  • Добавить перегрузку для computeWindowSizeClass с использованием чисел с плавающей запятой. ( I3dcb2 , b/364677934 , b/364677802 , b/364680886 )

Исправлены ошибки

  • Добавьте отсутствующие точки останова к набору точек останова по умолчанию WindowSizeClass .
  • Исправлена ​​ошибка, из-за которой в некоторых случаях некорректно выбирались компактные размеры.

Версия 1.4.0-alpha02

4 сентября 2024 г.

Выпущена версия androidx.window:window-*:1.4.0-alpha02 . Версия 1.4.0-alpha02 содержит следующие коммиты .

Новые функции

Добавлена ​​поддержка пользовательских значений WindowSizeClass .

  • Откройте конструктор для WindowSizeClass , чтобы разработчики могли использовать свои собственные.
  • Добавьте вспомогательные методы isAtLeast , чтобы разработчики могли обрабатывать диапазон значений WindowSizeClass .
  • Добавьте функцию расширения для Set<WindowSizeClass> , чтобы вычислить наилучшее соответствие из набора.
  • Добавьте константы для рекомендуемых точек останова Android.
  • Добавьте набор точек останова, соответствующих рекомендуемым точкам останова Android.

Изменения в API

  • Обновить имена методов границ для WindowSizeClass . ( If89a6 )
  • Обновите API класса WindowSizeClass , чтобы в будущем появилась поддержка добавления новых значений точек останова. Вместо абсолютных границ мы используем нижние границы и рекомендуем разработчикам использовать проверку нижних границ при обработке WindowSizeClass . Существующие WindowWidthSizeClass и WindowHeightSizeClass будут объявлены устаревшими, поскольку их дальнейшая разработка прекращена. ( I014ce )

Версия 1.4.0-alpha01

7 августа 2024 г.

Выпущена версия androidx.window:window-*:1.4.0-alpha01 . Версия 1.4.0-alpha01 содержит следующие коммиты .

Новые функции

  • Функция ActivityStack Pinning позволяет приложениям закреплять контент в одном контейнере, изолируя его навигацию от другого контейнера.
  • Интерактивный разделитель позволяет приложениям отображать фиксированный или перетаскиваемый разделитель между двумя окнами в режиме разделенного экрана.
  • Функция затемнения диалоговых окон в полноэкранном режиме позволяет приложениям указывать область затемнения диалогового окна: затемнить все окно задачи или только контейнер, отображающий диалоговое окно.
  • Функция обратного вызова для отображения информации во встроенном окне активности позволяет приложениям непрерывно получать обновления этого окна.
  • Функция Embedding Animation Background позволяет приложениям указывать фон анимации, улучшая качество анимации перехода при использовании ActivityEmbedding .
  • Улучшенное управление ActivityStack позволяет приложениям лучше контролировать ActivityStacks при использовании ActivityEmbedding , в том числе:
  • Запуск действия в указанный ActivityStack
  • Завершение ActivityStack

Изменения в API

  • Новый API WindowInfoTracker#supportedPostures :

    • API для определения поддержки устройством режима TableTop для складных устройств. Добавляет WindowAreaSessionPresenter#getWindow
  • Добавить API для поддержки закрепления элементов ActivityStack :

    • Класс SplitPinRule
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • Добавьте API для включения и настройки интерактивного разделителя.

    • Класс DividerAttributes
    • SplitAttributes.Builder#setDividerAttributes
  • Добавьте API для установки EmbeddingConfiguration и DimAreaBehavior для диалоговых окон.

    • Класс EmbeddingConfiguration
    • Класс DimAreaBehavior
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • Добавьте API для получения обновлений информации о встроенном окне активности.

    • Класс EmbeddedActivityWindowInfo
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • Добавьте API для установки фона анимации встраивания.

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • Добавьте API для завершения ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • Добавьте API для настройки запуска ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • Следующие API являются стабильными и больше не являются экспериментальными:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (перемещено из SplitController#invalidateTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • Добавлены API для версии 1.4. ( I56774 )

Исправлены ошибки

  • Исправлена ​​ошибка на некоторых устройствах, из-за которой при активной сессии возвращалось значение UNAVAILABLE вместо ACTIVE.
  • Удален функционал transferActivityToWindowArea на устройствах с vendorApiLevel равным 2 из-за нестабильной поддержки API.
  • Внедрение API для включения возможности перетаскивания разделителя Activity Embedding в полноэкранный режим. ( I645c9 )
  • Разрешить приложениям отключать анимацию ActivityEmbedding с помощью параметров анимации для SplitAttributes . ( Idc01a )
  • Удалено ручное описание доступа к новым API платформы, поскольку это происходит автоматически посредством моделирования API при использовании R8 с AGP 7.3 или более поздней версии (например, R8 версии 3.3) и для всех сборок при использовании AGP 8.1 или более поздней версии (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется обновиться до D8 версии 8.1 или более поздней. Подробнее см. в этой статье . ( Ia60e0 , b/345472586 )
  • Разрешите расширениям принимать параметры анимации для SplitAttributes , чтобы устройство могло использовать их для анимационных переходов. ( Iede00 )
  • Скрыть API наложения ( IC4251 )
  • Ввести API для настройки фиксированного или перетаскиваемого разделителя для разделения ( Ia7a78 )
  • Добавлена ​​плотность в WindowMetrics ( Id6723 )
  • Добавьте API для получения данных SupportedPostures ( If557a ).
  • Удалить setLaunchingActivityStack из экспериментального API ( I191cf )
  • Вводим ActivityEmbeddingController#embeddedActivityWindowInfo ( I24312 )
  • Устаревшая функция #getToken , добавленная #getActivityStackToken ( Ie0471 )
  • Введен адаптер обратного вызова для API потока embeddedActivityWindowInfo ( Ida77f )
  • Добавить адаптер обратного вызова для API потока overlayInfo ( I7264f )
  • Вводите правило WindowSdkExtensionsRule для переопределения параметра extensionsVersion в целях тестирования. ( Ifb928 )
  • - Перенести директиву #setLaunchingActivityStack в Bundle для совместимости с использованием ActivityOptionsCompat .
    • Пользователям следует передавать activityOptions.toBundle вместо самого ActvityOptions .
    • Удалите #setLaunchingActivityStack(Activity) . Пользователям следует перейти на использование ActivityEmbeddingController#getActivityStac(Activity) для получения ActivityStack и передачи ActivityStack в #setLaunchingActivityStack . ( Ie0ccc )
  • — Ввести ActivityStack.Token и SpltInfo.Token в качестве идентификаторов для обмена данными между WM Jetpack и расширениями.
    • API-интерфейсы следует заменить на API-интерфейсы, принимающие/возвращающие токены вместо IBinder. ( I12b24 )
  • - Ввести ActivityEmbeddingController#invalidateVisibleActivityStacks
    • Удалите SplitController#invalidateTopVisibleSplitAttributes , поскольку эта функция объединена с #invalidateVisibleActivityStacks ( I02ef5 ).
  • - Добавление API для настройки конфигурации встраивания. ( I59a4a )
  • - Добавление API для закрепления/открепления верхнего ActivityStack androidx.Window
    • Обновление демонстрационного приложения для возможности закрепления/открепления верхнего ActivityStack ( I24dd3 )
  • Повторно добавьте #finishActivityStacks и ActivityEmbeddingOptions ( Ic1ab3 )
  • Удалите нестабильные API. ( Ibc534 , b/302380585 )

Версия 1.3

Версия 1.3.0

29 мая 2024 г.

Выпущена версия androidx.window:window-*:1.3.0 . Версия 1.3.0 содержит следующие коммиты .

Важные изменения по сравнению с версией 1.2.0

  • Поддержка многоплатформенности Kotlin для классов размеров окон.

Версия 1.3.0-rc01

14 мая 2024 г.

WindowManager Jetpack 1.3 добавлена ​​поддержка многоплатформенности Kotlin для функций WindowSizeClass , а также исправлено множество ошибок.

Выпущена версия androidx.window:window-*:1.3.0-rc01 . Версия 1.3.0-rc01 содержит следующие коммиты .

Версия 1.3.0-beta02

1 мая 2024 г.

Выпущена версия androidx.window:window-*:1.3.0-beta02 . Версия 1.3.0-beta02 содержит следующие коммиты .

Изменения в API

  • Удалена поддержка создания и использования пользовательских классов WindowSizeClass . ( Id1143 )

Исправлены ошибки

  • Исправлена ​​ошибка KotlinReflectionInternalError вызванная удалением некоторых файлов программой ProGuard на определенных устройствах. ( I01b02 )

Версия 1.3.0-beta01

3 апреля 2024 г.

Выпущена версия androidx.window:window-*:1.3.0-beta01 . Версия 1.3.0-beta01 содержит следующие коммиты .

Версия 1.3.0-alpha03

6 марта 2024 г.

Выпущена версия androidx.window:window-*:1.3.0-alpha03 . Версия 1.3.0-alpha03 содержит следующие коммиты .

Изменения в API

  • Разделите WindowSizeClassUtil на более специализированные методы. ( IE9292 )
  • Restore WindowSizeClass#compute ( I21355 , b/324293374 )

Исправлены ошибки

  • Исправлена ​​ошибка, приводившая к сбою, из-за которого предоставленный контекст некорректно распаковывался. ( 94d10ce , b/318787482 )

Версия 1.3.0-alpha02

7 февраля 2024 г.

Выпущена версия androidx.window:window-*:1.3.0-alpha02 . Версия 1.3.0-alpha02 содержит следующие коммиты.

Новые функции

  • Внесены изменения в API-интерфейс классов размеров окон для повышения гибкости разработчиков, желающих использовать собственные классы размеров.

Изменения в API

  • Добавьте ограничения по высоте к селектору ширины. ( I23393 )
  • Добавить вспомогательные функции для выбора WindowSizeClass из набора. Добавить экспериментальные функции оценки, чтобы разработчики могли писать собственные селекторы. Добавить функцию расширения селектора для выбора самого широкого WindowSizeClass в пределах заданного диапазона. ( I0c944 )
  • Откройте конструктор класса WindowSizeClass , чтобы можно было добавлять пользовательские точки останова. ( Ic1ff3 )
  • Добавить удобную функцию для создания класса размера на основе ширины, высоты и плотности. ( If67f4 )

Исправлены ошибки

  • Исправлена ​​ошибка, возникающая при обрезке значения типа float до 0. ( 272ffac )

Версия 1.3.0-alpha01

15 ноября 2023 г.

Выпущена версия androidx.window:window-*:1.3.0-alpha01 . Версия 1.3.0-alpha01 содержит следующие коммиты.

Новые функции

  • Предоставить доступ к экспериментальным API окон для доступа к заднему экрану.
  • Тестовые API для создания объекта FoldingFeature теперь работают стабильно.
  • Тестовые API для настройки фиктивных значений ActivityEmbedding теперь работают стабильно.
  • Теперь WindowLayoutInfoPublisherRule сообщает о переопределении при получении значения из UiContext .
  • WindowInfoTracker передает данные о функциях сворачивания в параметры UiContext .
  • Отобразить версию расширений на устройстве.
  • Константы WindowProperties для переопределения пользовательских настроек для каждого приложения:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE — Сообщает системе, что приложение отказалось от переопределения совместимости соотношения сторон, отображаемого для пользователя.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE — Сообщает системе, что приложение отказалось от полноэкранного режима в настройках совместимости соотношений сторон пользователя.

Версия 1.2

Версия 1.2.0

15 ноября 2023 г.

Выпущена версия androidx.window:window-*:1.2.0 . Версия 1.2.0 содержит следующие коммиты.

Важные изменения по сравнению с версией 1.1.0

  • Предоставить доступ к экспериментальным API окон для доступа к заднему экрану.
  • Тестовые API для создания объекта FoldingFeature теперь работают стабильно.
  • Тестовые API для настройки фиктивных значений ActivityEmbedding теперь работают стабильно.
  • Теперь WindowLayoutInfoPublisherRule сообщает о переопределении при получении значения из UiContext .
  • WindowInfoTracker передает данные о функциях сворачивания в параметры UiContext .
  • Отобразить версию расширений на устройстве.

Версия 1.2.0-rc01

1 ноября 2023 г.

Выпущена версия androidx.window:window-*:1.2.0-rc01 . Версия 1.2.0-rc01 содержит следующие коммиты.

Новые функции

  • Предоставить доступ к экспериментальным API окон для доступа к заднему экрану.
  • Тестовые API для создания объекта FoldingFeature теперь работают стабильно.
  • Тестовые API для настройки фиктивных значений ActivityEmbedding теперь работают стабильно.
  • Теперь WindowLayoutInfoPublisherRule сообщает о переопределении при получении значения из UiContext .
  • WindowInfoTracker передает данные о функциях сворачивания в параметры UiContext .
  • Отобразить версию расширений на устройстве.

Версия 1.2.0-beta04

18 октября 2023 г.

Выпущена версия androidx.window:window-*:1.2.0-beta04 . Версия 1.2.0-beta04 содержит следующие коммиты.

Изменения в API

Версия 1.2.0-beta03

20 сентября 2023 г.

Выпущена версия androidx.window:window-*:1.2.0-beta03 . Версия 1.2.0-beta03 содержит следующие коммиты.

Новые функции

  • Добавьте проверки RequiresApi для API, которым для корректной работы требуется определенная версия расширений.
  • Добавьте API для отображения версии расширений на устройстве.

Изменения в API

  • Укажите требуемую версию расширения Windows SDK в общедоступных API.
    • Удалите isXXXSupported в компоненте встраивания активности ( IE3DAE ).
  • Добавьте компонент WindowSdkExtensions для отображения версии расширений на устройстве.
    • Добавьте RequiresWindowSdkExtension для указания минимально необходимой версии расширения. ( I05fd4 )
  • Делает WindowAreaInfo#getCapability не допускающим значения null. ( I17048 )

Версия 1.2.0-beta01

26 июля 2023 г.

Выпущена версия androidx.window:window-*:1.2.0-beta01 . Версия 1.2.0-beta01 содержит следующие коммиты.

Новые функции

  • Предоставить доступ к экспериментальным API окон для доступа к заднему экрану.
  • Тестовые API для создания объекта FoldingFeature теперь работают стабильно.
  • Тестовые API для настройки фиктивных значений ActivityEmbedding теперь работают стабильно.
  • Теперь WindowLayoutInfoPublisherRule сообщает о переопределении при получении значения из UiContext .
  • WindowInfoTracker передает данные о функциях сворачивания в параметры UiContext .

Изменения в API

  • Помечает API WindowArea как экспериментальные, чтобы позволить продолжить внесение изменений в API для стабильного релиза в версии 1.3 ( I857f5 ).
  • Обновлены файлы API для аннотирования подавления совместимости ( I8e87a , b/287516207 )

Версия 1.2.0-alpha03

21 июня 2023 г.

Выпущена версия androidx.window:window-*:1.2.0-alpha03 . Версия 1.2.0-alpha03 содержит следующие коммиты.

Новые функции

  • Удаление устаревших API из интерфейса API.
  • Добавить API для поддержки одновременного отображения.
  • Добавьте свойство, позволяющее отказаться от принудительного изменения размера окна.
  • Добавьте свойство, позволяющее отказаться от переопределения минимального соотношения сторон.
  • Стабилизировать ActivityEmbeddingRule для поддержки модульного тестирования, связанного с встраиванием действий.

Изменения в API

  • Удалить устаревшие API ( I18d39 )
  • Добавлена ​​поддержка одновременного отображения. ( Ifcbb0 )

Исправлены ошибки

  • Добавление свойства совместимости с возможностью отключения принудительного изменения размера ( IE7ab1 )
  • Удаляет SESSION_STATE_CONTENT_INVISIBLE из интерфейса расширений. ( I6ed19 )
  • Стабилизация ActivityEmbeddingRule для поддержки модульного тестирования, связанного с встраиванием Activity. ( I8d6b6 )
  • Добавление свойства совместимости с возможностью отключения для переопределения минимального соотношения сторон. ( I66390 )
  • Удаляет устаревшие API-функции WindowArea ( Ieb67c )
  • Переименуйте свойство цикла запроса ориентации в PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED . ( Ie2fbd )
  • Обновляет имена констант сессии в области окна ( I83675 )
  • Добавление свойства совместимости с возможностью отказа, которое игнорирует цикл запросов ориентации при его обнаружении ( I0a7a2 )
  • Добавьте WindowAreaComponent#STATUS_ACTIVE чтобы указать, что функция уже активна. ( I62bc3 )
  • Добавить API RearDisplayPresentationMode ( I0401c )
  • Для стабильной версии удален API для изменения цвета фона. ( I34c3e )
  • Скрыть API для области окна. ( I39de0 )
  • Добавьте методы для переопределения SplitInfo в SplitController . Добавьте тестовые методы для создания дубликатов для SplitInfo и ActivityStack . ( Icd69f )
  • Сделайте тег необязательным для ActivityRule.Builder . ( Ib0b44 )
  • Удалите RatioSplitType , ExpandContainersSplit и HingeSplitType . Теперь они называются SplitType .
    • Замените #splitEqually() , #expandContainers() и #splitByHinge на константы SplitType SPLIT_TYPE_EQUAL , SPLIT_TYPE_EXPAND и SPLIT_TYPE_HINGE
    • Удалена возможность установки резервного типа разделения по принципу шарнира. Если тип разделения по принципу шарнира не может быть применен из-за текущего состояния устройства или окна, в качестве резервного варианта используется равномерное разделение родительского контейнера задач. Используйте SplitController#setSplitAttributesCalculator для настройки резервного типа разделения. ( Ifcc59 )
  • Устаревшая функция add / removeSplitCallback
    • Переместите add / removeSplitCallback в SplitControllerCallbackAdapter
    • Добавить поддержку Flow для получения списка SplitInfo ( I7f1b6 )
  • Добавить правило тестирования для ActivityEmbeddingController ( I42e9b )
  • Переименование ActivityOptionsCompat в ActivityEmbeddingOptions ( I89301 )
  • Добавьте splitSupportStatus , чтобы указать, доступна ли функция встраивания Activity. ( I10024 )
  • Введена SplitAttributes.BackgroundColor для более точного представления значения DEFAULT . Уточнено, что непрозрачные цвета фона анимации не поддерживаются, поэтому любые непрозрачные цвета будут рассматриваться как значения по умолчанию, то есть будет использоваться цвет фона окна текущей темы. ( Ic6b95 )
  • Замените alwaysAllow() и alwaysDisallow() на ALWAYS_ALLOW и ALWAYS_DISALLOW . ( I3057b )
  • Добавить API для SplitRule , SplitAttributes , SplitAttributesCalculator . ( I92d23 )
  • Добавьте TestActivityStack для создания ActivityStack для тестирования.
    • Добавьте TestSplitInfo для создания SplitInfo для тестирования. ( I8e779 )
  • Добавить возможность создания фиктивных SplitAttributesCalculatorParams , чтобы разработчики могли проверять свои собственные значения SplitAttributesCalculator ( Id4a6e ).
  • Добавьте WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) и WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) ( I66c7f )

Версия 1.2.0-alpha02

7 июня 2023 г.

Выпущена версия androidx.window:window-*:1.2.0-alpha02 . Версия 1.2.0-alpha02 содержит следующие коммиты.

Новые функции

  • Обновите API тестирования, добавив константу для неуказанных функций свертывания.
  • Переопределение с помощью WindowLayoutInfoPublishRule переопределит все значения windowLayoutInfo , включая значения API, основанные на контексте.

Изменения в API

  • Добавить константу для неуказанной функции центрального складывания. ( I7530c )

Исправлены ошибки

  • Обновите WindowLayoutInfoPublishRule , чтобы он поддерживал переопределение WindowLayoutInfo на основе Context . ( I2037a )

Версия 1.2.0-alpha01

24 мая 2023 г.

Выпущена версия androidx.window:window-*:1.2.0-alpha01 . Версия 1.2.0-alpha01 содержит следующие коммиты.

Новые функции

Стабилизированы API тестирования, касающиеся Activity Embedding и WindowLayoutInfoTracker . ActivityEmbeddingRule переведен в стабильную версию. WindowMetricsCalculatorRule переведен в стабильную версию. Вспомогательные функции для создания FoldingFeature для теста переведены в стабильную версию.

Изменения в API

  • Стабилизация ActivityEmbeddingRule для поддержки модульного тестирования, связанного с встраиванием Activity. ( I8d6b6 )
  • WindowMetrisCalculatorTestRule — это стабильный компонент, позволяющий использовать заглушки для метрик в тестах JVM. Для получения точных результатов мы рекомендуем использовать эмулятор.
  • Стабилизация тестовых API для WindowLayoutInfo для поддержки тестирования JVM. ( IE036e )
  • Добавьте IntRange для значений признаков свертывания тестов. ( I69f7d )

Версия 1.1

Версия 1.1.0

7 июня 2023 г.

Выпущена версия androidx.window:window-*:1.1.0 . Версия 1.1.0 содержит следующие коммиты.

Важные изменения с версии 1.0.0

Встраивание активности

  • Добавлено свойство PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED в качестве логического значения для тега <application> в манифесте приложения.
  • Устаревшая переменная isSplitSupported заменена на splitSupportStatus , чтобы предоставлять более подробную информацию о причинах недоступности функции разделения экрана.
  • Добавлен вложенный класс SplitController.SplitSupportStatus для предоставления констант состояния для свойства splitSupportStatus .
  • Разделение модуля SplitController на несколько модулей:
    • Модуль ActivityEmbeddingController для API, связанных с Activity или ActivityStack .
    • Переместил isActivityEmbedded из SplitController в ActivityEmbeddingController .
    • Модуль RuleController для операций, связанных с EmbeddingRule :
    • Удалены API SplitController :
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Добавлены API RuleController :
    • addRule() — Добавляет правило или обновляет правило с тем же тегом.
    • removeRule() — Удаляет правило из коллекции зарегистрированных правил.
    • setRules() — Создает набор правил.
    • clearRules() — Удаляет все зарегистрированные правила.
    • parseRules() — Анализирует правила из XML-определений правил.
  • Для инициализации контекста с помощью метода #getInstance() ` требуется следующий код:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Добавлен класс EmbeddingAspectRatio для определения констант поведения, подобных перечислениям, связанных с соотношением сторон дисплея.
  • Добавлен класс SplitAttributes для определения разделенного макета.
  • В SplitController добавлены функции калькулятора SplitAttributes для настройки разделенных макетов:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • Используйте isSplitAttributesCalculatorSupported() для проверки поддержки API SplitAttributesCalculator на устройстве.
  • Добавлено поле EmbeddingRule#tag .
  • Обновления API в SplitRule :
    • Добавлен defaultSplitAttributes — определяет стандартную компоновку разделения экрана; заменяет splitRatio и layoutDirection .
    • Добавлен перевод XML-свойств splitRatio и splitLayoutDirection в defaultSplitAttributes .
    • Изменены определения минимальных размеров: вместо пикселей используются пиксели, не зависящие от плотности (dp).
    • Добавлен minHeightDp со значением по умолчанию 600dp.
    • Изменено значение minWidth на minWidthDp со значением по умолчанию 600dp.
    • Изменено значение minSmallestWidth на minSmallestWidthDp со значением по умолчанию 600dp.
    • Добавлен maxAspectRatioInHorizontal со значением по умолчанию ALWAYS_ALLOW .
    • Добавлен maxAspectRatioInPortrait со значением по умолчанию 1.4.
    • Определен вложенный класс FinishBehavior для замены констант поведения завершения.
    • Изменения свойств были применены к вложенному классу Builder классов SplitPairRule и SplitPlaceholderRule .
  • Заменили SplitInfo#getSplitRatio() на SplitInfo#getSplitAttributes() для предоставления дополнительной информации, связанной с разделением порций.

WindowLayout

  • Добавлена ​​экспериментальная поддержка контекста пользовательского интерфейса, не связанного с активностью, в WindowInfoTracker .
  • В WindowMetricsCalculator добавлен экспериментальный контекст пользовательского интерфейса, не связанный с активностью.

Этапы миграции

  • Чтобы разрешить встраивание действий для отображения действий в разделенном режиме, приложениям необходимо добавить свойство PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED в тег <application> манифеста: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Это позволяет системе заранее оптимизировать поведение разделенных окон для приложения.
  • Соотношение SplitInfo
    • Проверьте, является ли текущее разделение стековым: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Проверьте текущее соотношение: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Миграции SplitController:
    • SplitController.getInstance() заменяется на SplitController.getInstance(Context) .
    • SplitController.initialize(Context, @ResId int) заменяется на RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) .
    • SplitController.getInstance().isActivityEmbedded(Activity) заменяется на ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) .
    • SplitController.getInstance().registerRule(rule) заменяется на RuleController.getInstance(Context).addRule(rule) .
    • SplitController.getInstance().unregisterRule(rule) заменяется на RuleController.getInstance(Context).removeRule(rule) .
    • SplitController.getInstance().clearRegisteredRules() заменяется на RuleController.getInstance(Context).clearRules() .
    • SplitController.getInstance().getSplitRules() заменяется на RuleController.getInstance(Context).getRules() .
  • Миграции свойств SplitRule :
    • minWidth и minSmallestWidth теперь используют единицы измерения dp вместо пикселей. Приложения могут использовать следующий вызов: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) или просто разделить minWith в пикселях на displayMetrics#density .
  • Константы поведения функции Finish необходимо перенести в константы классов, подобных перечислениям FinishBehavior :
    • FINISH_NEVER изменяется на FinishBehavior.NEVER .
    • FINISH_ALWAYS изменяется на FinishBehavior.ALWAYS .
    • FINISH_ADJACENT изменяется на FinishBehavior.ADJACENT .
  • Направление компоновки необходимо перенести в метод SplitAttributes.LayoutDirection :
    • ltr изменяется на SplitAttributes.LayoutDirection.LEFT_TO_RIGHT .
    • rtl изменяется на SplitAttributes.LayoutDirection.RIGHT_TO_LEFT .
    • Изменения locale в SplitAttributes.LayoutDirection.LOCALE .
    • splitRatio необходимо перенести в метод SplitAttributes.SplitType.ratio(splitRatio) .
  • Миграции SplitPairRule.Builder :
    • Изменение кода в Kotlin: SplitPairRule.Builder(filters, minWidth, minSmallestWidth) kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) и setSplitRatio(ratio) заменяются на kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary и setFinishSecondaryWithPrimary принимают константы типа FinishBehavior . Подробности см. в разделе «Миграции SplitRule».
    • Используйте setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) , чтобы отображать разделенные области на устройствах в портретном режиме.
  • Миграции SplitPlaceholder.Builder :
    • Содержит только параметры filters и placeholderIntent . Остальные свойства переносятся в сеттеры. Подробности см. в разделе «Миграции SplitPairRule.Builder».
    • setFinishPrimaryWithPlaceholder принимает константы типа FinishBehavior . Подробности см. в разделе «Миграции SplitRule».
    • setLayoutDirection(layoutDirection) и setSplitRatio(ratio) следует заменить на: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Используйте setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) , чтобы отображать разделенные области на устройствах в портретном режиме.

Версия 1.1.0-rc01

10 мая 2023 г.

Выпущена версия androidx.window:window-*:1.1.0-rc01 . Версия 1.1.0-rc01 содержит следующие коммиты.

Новые функции

  • Выпустить ActivityEmbedding в качестве стабильного API.
  • Исправлены различные ошибки.

Версия 1.1.0-beta02

5 апреля 2023 г.

Выпущена версия androidx.window:window-*:1.1.0-beta02 . Версия 1.1.0-beta02 содержит следующие коммиты.

Новые функции

  • Внутренние исправления и очистка.

Версия 1.1.0-beta01

22 марта 2023 г.

Выпущена версия androidx.window:window-*:1.1.0-beta01 . Версия 1.1.0-beta01 содержит следующие коммиты.

Встраивание активности

  • Добавлено свойство PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED в качестве логического значения для тега <application> в манифесте приложения.
  • Устаревшая переменная isSplitSupported заменена на splitSupportStatus , чтобы предоставлять более подробную информацию о причинах недоступности функции разделения экрана.
  • Добавлен вложенный класс SplitController.SplitSupportStatus для предоставления констант состояния для свойства splitSupportStatus .
  • Разделение модуля SplitController на несколько модулей:
    • Модуль ActivityEmbeddingController для API, связанных с Activity или ActivityStack .
    • Переместил isActivityEmbedded из SplitController в ActivityEmbeddingController .
    • Модуль RuleController для операций, связанных с EmbeddingRule :
    • Удалены API SplitController :
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Добавлены API RuleController :
      • addRule() — Добавляет правило или обновляет правило с тем же тегом.
      • removeRule() — Удаляет правило из коллекции зарегистрированных правил.
      • setRules() — Создает набор правил.
      • clearRules() — Удаляет все зарегистрированные правила.
      • `parseRules() — Анализирует правила из XML-определений правил.`
  • Для инициализации контекста с помощью метода #getInstance() ` требуется следующий код:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Добавлен класс EmbeddingAspectRatio для определения констант поведения, подобных перечислениям, связанных с соотношением сторон дисплея.
  • Добавлен класс SplitAttributes для определения разделенного макета.
  • В SplitController добавлены функции калькулятора SplitAttributes для настройки разделенных макетов:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • Используйте isSplitAttributesCalculatorSupported() для проверки поддержки API SplitAttributesCalculator на устройстве.
  • Добавлено поле EmbeddingRule#tag .
  • Обновления API в SplitRule :
    • Добавлен defaultSplitAttributes — определяет стандартную компоновку разделения экрана; заменяет splitRatio и layoutDirection .
    • Добавлен перевод XML-свойств splitRatio и splitLayoutDirection в defaultSplitAttributes .
    • Изменены определения минимальных размеров: вместо пикселей используются пиксели, не зависящие от плотности (dp).
    • Добавлен minHeightDp со значением по умолчанию 600dp.
    • Изменено значение minWidth на minWidthDp со значением по умолчанию 600dp.
    • Изменено значение minSmallestWidth на minSmallestWidthDp со значением по умолчанию 600dp.
    • Добавлен maxAspectRatioInHorizontal со значением по умолчанию ALWAYS_ALLOW .
    • Добавлен maxAspectRatioInPortrait со значением по умолчанию 1.4 .
    • Defined FinishBehavior nested class to replace finish behavior constants.
    • Applied the property changes to the Builder nested class of SplitPairRule and SplitPlaceholderRule .
  • Replaced SplitInfo#getSplitRatio() with SplitInfo#getSplitAttributes() to provide additional split-related information.

WindowLayout

  • Added non-activity UI context support to WindowInfoTracker .
  • Added non-activity UI context to WindowMetricsCalculator .

Этапы миграции

  • To enable activity embedding to display activities in splits, apps must add the PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED property to the manifest <application> tag: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> This allows the system to optimize the split behaviors for an application ahead of time.
  • SplitInfo ratio
    • Check if the current split is stacked: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Check the current ratio: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController migrations:
    • SplitController.getInstance() changes to SplitController.getInstance(Context) .
    • SplitController.initialize(Context, @ResId int) changes to RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) .
    • SplitController.getInstance().isActivityEmbedded(Activity) changes to ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) .
    • SplitController.getInstance().registerRule(rule) changes to RuleController.getInstance(Context).addRule(rule) .
    • SplitController.getInstance().unregisterRule(rule) changes to RuleController.getInstance(Context).removeRule(rule) .
    • SplitController.getInstance().clearRegisteredRules() changes to RuleController.getInstance(Context).clearRules() .
    • SplitController.getInstance().getSplitRules() changes to RuleController.getInstance(Context).getRules() .
  • SplitRule property migrations:
    • minWidth and minSmallestWidth now use dp units instead of pixels. Apps can use the following call: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) or simply divide minWith in pixels by displayMetrics#density .
  • Finish behavior constants must be migrated to FinishBehavior enum-like class constants:
    • FINISH_NEVER changes to FinishBehavior.NEVER .
    • FINISH_ALWAYS changes to FinishBehavior.ALWAYS .
    • FINISH_ADJACENT changes to FinishBehavior.ADJACENT .
  • Layout direction must be migrated to SplitAttributes.LayoutDirection :
    • ltr changes to SplitAttributes.LayoutDirection.LEFT_TO_RIGHT .
    • rtl changes to SplitAttributes.LayoutDirection.RIGHT_TO_LEFT .
    • locale changes to SplitAttributes.LayoutDirection.LOCALE .
    • splitRatio must be migrated to SplitAttributes.SplitType.ratio(splitRatio) .
  • SplitPairRule.Builder migrations:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) changes to kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) and setSplitRatio(ratio) change to kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary and setFinishSecondaryWithPrimary take the FinishBehavior enum-like constants. See “SplitRule migrations” for details.
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) to show splits on portrait devices.
  • SplitPlaceholder.Builder migrations:
    • Has only filters and placeholderIntent parameters. Other properties move to setters. See “SplitPairRule.Builder migrations” for details.
    • setFinishPrimaryWithPlaceholder takes the FinishBehavior enum-like constants. See “SplitRule migrations” for details.
    • setLayoutDirection(layoutDirection) and setSplitRatio(ratio) change to: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) to show splits on portrait devices.

Версия 1.1.0-alpha06

22 февраля 2023 г.

androidx.window:window-*:1.1.0-alpha06 is released. Version 1.1.0-alpha06 contains these commits.

Новые функции

  • Expose experimental version of getting the WindowLayoutInfo from a UI context.

Изменения в API

  • Add splitSupportStatus to indicate if Activity embedding is available. ( I10024 )
  • Make UI Context WindowLayoutInfo API as experimental. ( I58ee0 )
  • Introduces the WindowAreaController and API's to enable RearDisplay Mode to move the current window to the display that is aligned with the rear camera. ( Iffcbf )
  • Update default background color. ( I1ac1b )
  • Add SplitAttributes params. ( I18bdd )
  • Add APIs for SplitRule , SplitAttributes , SplitAttributesCalculator . ( I92d23 )
  • Improve the APIs around maxAspectRatio :
    1. Replace alwaysAllow() and alwaysDisallow() with ALWAYS_ALLOW and ALWAYS_DISALLOW .
    2. Update API documentation of @see with standalone documentation. ( I3057b )
  • The following constructors are removed from public APIs because they are not supposed to be called by apps.
    • SplitInfo constructor
    • ActivityStack constructor ( Ide534 )
  • SplitRule now takes maxAspectRatioInPortrait/Landscape . It only allows activities split when the aspect ratio of the parent bounds is smaller or equal to the requested maxAspectRatio . ( Ia5990 )
  • Change RuleController#parseRules to be static ( I785df )
  • Improve the APIs around ActivityEmbedding
    1. Align the API naming - Use add/remove for multiple instances:
    2. registerRule changes to addRule
    3. unregisterRule changes to removeRule
    4. Replace getSplitRules with getRules since ActivityRule is not a split rule
    5. Add RuleController#setRules to set a bunch of rules
    6. Extract rule related APIs from SplitController to singleton RuleController . They are:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Extract #isActivityEmbedded from SplitController to singleton ActivityEmbeddingController . They are:
    14. isActivityEmbedded
    15. Remove SplitController#initialize . To set rules from XML file, please use RuleController#parseRules and #setRules . Before this change: SplitController.initialize(context, R.xml.static_rules) After this change: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. We don't distinguish static rules with runtime rules anymore. That said, calling #clearRules results to clear all rules no matter they are registered with static XML rule definitions or at runtime. To hav the legacy behavior of SplitController#clearRegisteredRules , please call RuleController#parseRules with the XML resources id and call RuleController#setRules to set back the rules again. Before this change: SplitController.getInstance(context).clearRegisteredRules() After this change: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) ( Ib3967 )
  • Improve the SplitRule APIs:
    1. Take min dimensions in DP instead of pixels for SplitRule .
    2. Refactor for SplitRule Builder to take min dimensions as optional. ( I95f17 )
  • Pass a Context to initialize SplitController ( I42549 )
  • Renamed SplitRule#layoutDir to #layoutDirection and SplitRule Builder#setLayoutDir to Builder#setLayoutDirection . ( I3f6d1 )

Версия 1.1.0-alpha04

9 ноября 2022 г.

androidx.window:window-*:1.1.0-alpha04 is released. Version 1.1.0-alpha04 contains these commits.

Новые функции

  • Expose a method to determine if an ActivityStack is empty for ActivityEmbedding .
  • Removed experimental API tags from ActivityEmbedding APIs.
  • Hide ActivityRule constructor as the Builder is the preferred way to construct.
  • Add an experimental method to get the WindowInsets on WindowMetrics .
  • Update SplitPlaceholderFinishBehavior to prevent finishing the placeholder. Finishing the placeholder caused some confusing behavior.

Изменения в API

  • Make val isEmpty public to replace fun isEmpty .
  • Rename ActivityStack parameter activities to activitiesInProcess . ( Ia5055 )
  • Remove ActivityFilter#matchesClassName and ActivityFilter#matchesClassNameOrWildCard because they are confusing.
  • Add ActivityFilter#componentName abd ActivityFilter#intentAction to allow the caller to distinguish different filters ( I41f22 )
  • Remove the @Deprecated APIs from the experimental API ( I216b3 )
  • Remove @ExperimentalWindowApi for Activity Embedding APIs ( I69ebe )
  • Hide ActivityRule constructor, use Builder instead. ( If4eb6 )
  • Add APIs to check if an Activity is part of the ActivityFilter . ( Ia43cf )
  • Update API files to reflect changes in WindowMetrics and WindowMetricsCalculatorCompat classes ( I667fe )
  • Update ActivityEmbedding Property Javadoc and class name ( Ia1386 )
  • Adding ActivityEmbedding property tag names to be used in AndroidManifest.xml ( Id1ad4 )
  • Added new API SplitPlaceholderFinishBehavior and SplitPlaceholderRule.finishPrimaryWithPlaceholder , this replaces existing SplitPlaceholderRule.finishPrimaryWithSecondary which defines when placeholder activites are finished, how associated activites in Activity Embedding should behave. ( I64647 )

Исправлены ошибки

  • Introduces the WindowAreaController and API's to enable RearDisplay Mode to move the current window to the display that is aligned with the rear camera. ( I388ab )

Версия 1.1.0-alpha03

27 июля 2022 г.

androidx.window:window-*:1.1.0-alpha03 is released. Version 1.1.0-alpha03 contains these commits.

Новые функции

  • Update the default values for embedding rules.

Изменения в API

  • Update default values for embedding rule properties. ( Ic4d35 )

Версия 1.1.0-alpha02

11 мая 2022 г.

androidx.window:window-*:1.1.0-alpha02 is released. Version 1.1.0-alpha02 contains these commits.

Новые функции

  • Release the adapter libraries to support Java and RxJava.

Версия 1.1.0-alpha01

11 мая 2022 г.

androidx.window:window-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

Новые функции

  • Release adapters to support java and RxJava

Версия 1.1.0-alpha01

20 апреля 2022 г.

androidx.window:window:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

Новые функции

  • Fixes a bug where backgrounding an app stops emitting fold features.
  • Expand on the experimental ActivityEmbedding API.

Изменения в API

  • A public API to check if an activity is being embedded. ( I39eb7 )

Исправлены ошибки

  • Add APIs that customize finishing behavior for containers in activity splits ( I1a1e4 )
  • Added a new configuration option for activity split rules. ( Iec6af )

Версия 1.0

Версия 1.0.0

26 января 2022 г.

androidx.window:window-*:1.0.0 is released. Version 1.0.0 contains these commits.

Основные особенности версии 1.0.0

  • Support for folding phones through WindowInfoTracker and FoldingFeature . WindowMetricsCalculator to help calculate the current WindowMetrics.

Версия 1.0.0-rc01

15 декабря 2021 г.

androidx.window:window-*:1.0.0-rc01 is released. Version 1.0.0-rc01 contains these commits.

Новые функции

  • Add support for folding phones through WindowInfoTracker .
  • Add methods to calculate the current and maximum WindowMetrics .
  • Add supporting test APIs.

Версия 1.0.0-beta04

17 ноября 2021 г.

androidx.window:window-*:1.0.0-beta04 is released. Version 1.0.0-beta04 contains these commits.

Новые функции

  • Rename WindowInfoRepository to WindowInfoTracker.
  • Make Activity an explicit method dependency for WindowInfoTracker.
  • Add a simple TestRule for WindowMetricsCalculator to support developers using Robolectric.

Изменения в API

  • Extract extensions ( I25a5f )
  • add isEmpty in ActivityStack ( I5a4e6 )
  • Rename WindowInfoRepository to WindowInfoTracker.
    • Update java/rxjava/testing dependencies to match. ( I0da63 )
  • Add a test rule for a simple WindowMetricsCalculator. ( Ibacdb )

Версия 1.0.0-beta03

27 октября 2021 г.

androidx.window:window-*:1.0.0-beta03 is released. Version 1.0.0-beta03 contains these commits.

Новые функции

  • Add experimental Activity Embedding APIs. This initial layout version allows showing two Activities side by side.

Изменения в API

  • Removed the currentWindowMetrics API since we can not provide it accurately. Please use WindowMetricsCalculator instead ( Icda5f )
  • Updated the extensions api. ( Ica92b )
  • Added an interface for a new feature that allows embedding activities and showing them side-by-side within the parent task window. ( I5711d )
  • Hid the constructors for WindowMetrics and WindowLayoutInfo, please use the test APIs instead. ( I5a1b5 )
  • Add an API to create fake WindowLayoutInfo objects. ( I4a2fd )

Исправлены ошибки

Версия 1.0.0-beta02

1 сентября 2021 г.

androidx.window:window-*:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.

Новые функции

  • Add an experimental annotation to annotate experimental APIs. ( I9f1b6 )
  • Add a test method to create a test FoldingFeature that accepts a Rect. This will make it easie to test when using Robolectric as opposed to an actual Activity. ( Id1cca )

Версия 1.0.0-beta01

18 августа 2021 г.

androidx.window:window-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.

Новые функции

  • Removed old constants and made FoldingFeature into an interface.

Изменения в API

  • Remove old constants and make FoldFeature an interface. ( I9a2d5 )

Исправлены ошибки

  • Libraries that depend on the Test Core library have been upgraded to version 1.4.0 and will now work with Android platform version S. ( I88b72 , b/189353863 )

Версия 1.0.0-alpha10

4 августа 2021 г.

androidx.window:window-*:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.

Новые функции

  • Rename WindowInfoRepo to WindowInfoRepository and adjust corresponding classes / files.
  • Convert current window metrics to a Flow in WindowInfoRepository since the value changes over time.
  • Rename WindowInfoRepoJavaAdapter to WindowInfoRepoCallbackAdapter
  • Add helper method to create test FoldingFeature objects
  • Update packages to group classes based on the feature they are supporting.

Изменения в API

  • Rename ActivityExt to ActivityExtensions Change from Repo to Repository. ( I61a16 )
  • Update packages for classes. ( I23ae2 )
  • Remove WindowMetrics from WindowInfoRepo ( I24663 )
  • Remove WindowManager and use WindowInfoRepo
    • Make WindowBackend internal. ( I06d9a )
  • Convert window metrics to Flow.
    • Rename java adapter to WindowInfoRepoCallbackAdapter
    • Remove callbackFlow so no more experimental APIs are in use. ( Ia4d15 )
  • Add helper method to create test display features.
    • Change from occlusionMode to occlusionType ( If4cff )

Исправлены ошибки

  • Fix proguard error where core library was being removed.
  • Fix error where WindowLayoutInfo was not being delivered to additional subscribers.
  • Fix error where config changes would not trigger folding feature updates.

Версия 1.0.0-alpha09

30 июня 2021 г.

androidx.window:window-*:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.

Новые функции

  • Change from integer constants to unbounded enums.
  • Add a test util to create test folding features.

Изменения в API

  • Add helper method to create test display features. ( I3cf54 )
    • Change from occlusionMode to occlusionType .

Исправлены ошибки

  • Emit initial value when adding multiple consumers of the data streams.

Версия 1.0.0-alpha08

16 июня 2021 г.

androidx.window:window-*:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.

Новые функции

  • Released a testing artifact to make it easier to test when using WindowInfoRepository. Use WindowInfoRepository to get information about DisplayFeatures and the WindowMetrics. ( I57f66 , Ida620 )

Версия 1.0.0-alpha07

2 июня 2021 г.

androidx.window:window-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.

Новые функции

  • Migrate core window library to Kotlin. Will use coroutines and suspend functions to expose asynchronous data going forward.
  • Add WindowInfoRepo as the main interaction point for getting the WindowMetrics and the stream of WindowLayoutInfo.
  • New window-java artifact to expose Java-friendly APIs to register and unregister callbacks.
  • New window-rxjava2 and window-rxjava3 artifacts to expose RxJava adapted APIs.

Изменения в API

  • Add WindowServices to provide dependencies uniformly.
    • Add coroutine based api to consume window layout info. ( Iab70f )
  • Migrate core window manager library to Kotlin. ( Icca34 )

Исправлены ошибки

  • Add new data class to represent feature bounds. ( I6dcd1 )

Версия 1.0.0-alpha06

5 мая 2021 г.

androidx.window:window:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.

Новые функции

  • We have started our migration to Kotlin and will finish in the next release.
  • DeviceState has been removed from the public API, please use FoldingFeature instead.
  • We have removed STATE_FLIPPED from the FoldingFeature states since it is not supported by any use-case at the moment.
  • We have also removed other deprecated APIs.

Изменения в API

  • Adding Kotlin as a dependency.
    • Migrate core library to Kotlin. ( Idd995 )
  • Removed DisplayFeature builder. ( I61fa4 )
  • Removed DeviceState from public api, use FoldingFeature instead. ( Id6079 )
  • Remove device state callback from extensions. ( I5ea83 )
  • Remove STATE_FLIPPED from FoldingFeature. ( I9c4e1 )
  • Remove deprecated registration methods. ( Ib381b )

Версия 1.0.0-alpha05

24 марта 2021 г.

androidx.window:window:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.

Новые функции

We have added convenience methods to FoldingFeature so that apps can tell if the feature is separating, occluding, and determine the orientation of the hinge. We are also hiding the hinge type so that

We are removing the synchronous read methods from WindowManager. Synchronous read methods are error prone since there is an implicit race condition. Register listeners and callbacks to receive updates on the WindowLayoutInfo.

Изменения в API

  • Add convenience methods for working with FoldingFeatures ( Ie733f )
  • Removes synchronous read methods from WindowManager ( I96fd4 )

Версия 1.0.0-alpha04

10 марта 2021 г.

androidx.window:window:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits.

Новые функции

  • Fixes a bug where no WindowLayoutInfo is emitted if there isn't an OEM implementation. Now we emit an empty WIndowLayoutInfo.
  • Fix a bug where state would not update properly if the hinge state changed while the app was backgrounded. Now the state should be consistent.
  • Update our proguard files to ignore warnings from runtime dependencies.

Исправлены ошибки

  • Emit an empty value when the OEM library is missing. ( Ide935 )

Версия 1.0.0-alpha03

18 февраля 2021 г.

androidx.window:window:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.

Новые функции

  • Emit an empty value for WindowLayoutInfo when the OEM implementation is empty. This should make it easier to use the library on more devices. Since the APIs are asynchronous it is still recommended that apps write some defensive code and emit a default value after a timeout. We do not have any guarantees on OEM implementations and the initial value may be delayed.

Исправлены ошибки

  • Emit an empty value when the OEM library is missing. ( Ide935 )

Версия 1.0.0-alpha02

27 января 2021 г.

androidx.window:window:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.

Новые функции

  • We have deprecated some APIs to help streamline the api and reduce mistakes. Some notable examples are removing the synchronous read operations from WindowManager and deprecating DeviceState. Synchronous read operations can lead to race conditions and have incorrect UI.

  • We have converted DisplayFeature to an interface that other features will implement going forward. Our first feature is FoldingFeature which is now the representation of a screen fold or a hinge. This also contains the state of the hinge replacing DeviceState.

  • WindowMetrics was introduced in Android 11 to provide developers with a simple way to query for metrics about a window, for example its position and size on screen and any system insets. We've backported the API in this release so that developers can leverage WindowMetrics and continue to support older Android versions. WindowMetrics can be obtained through the WindowManager#getCurrentWindowMetrics() and WindowManager#getMaximumWindowMetrics() APIs.

Изменения в API

  • Deprecate APIs that will be removed in the next alpha ( Ib7cc4 )
  • Updates ExtensionInterface to accept explicit Activity references. ( I07ded )
  • Introduces the WindowMetrics API. ( I3ccee )
  • Remove synchronous read methods from WindowManager ( I69983 )
  • Make ExtensionWindowBackend package protected. ( Ied208 )

Исправлены ошибки

  • Update ExtensionInterface APIs to accept visual contexts. ( I8e827 )

Внешний вклад

  • Merge DeviceState and WindowLayoutInfo so it is easier to access data. ( Id34f4 )

Версия 1.0.0-alpha01

27 февраля 2020 г.

androidx.window:window:1.0.0-alpha01 and androidx.window:window-extensions:1.0.0-alpha01 are released. Version 1.0.0-alpha01 contains these commits. This is the first release of the Window Manager library.

Новые функции

  • DisplayFeature : This new API identifies disruptions in the continuous flat screen surfaces such as hinges or folds
  • DeviceState : This new API provides the current posture of the phone from a list of defined postures (For example, CLOSED , OPENED , HALF_OPENED , etc.)