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

Библиотека Jetpack WindowManager позволяет разработчикам приложений поддерживать новые форм-факторы устройств и многооконные среды. Первоначальная версия ориентирована на складные устройства, но в будущих версиях будет реализована поддержка большего количества типов дисплеев и функций окон.
Последнее обновление Стабильный релиз Кандидат на релиз Бета-версия Альфа-релиз
27 августа 2025 г. 1.4.0 1.5.0-rc01 - -

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

Чтобы добавить зависимость от WindowManager, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .

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

Круто

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

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

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

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

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

Котлин

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

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

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

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

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

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

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

Создать новый выпуск

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

Версия 1.5

Версия 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-альфа02

7 мая 2025 г.

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

Изменения API

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

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

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

Версия 1.5.0-альфа01

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 target и kotlin 1.9 ( Icf15d , b/364652024 )
  • Предоставьте API WindowMetricsCalculator . ( I1cebf )

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

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

Версия 1.4.0-альфа05

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-альфа04

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-альфа03

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-альфа02

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

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

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

Добавить поддержку пользовательского WindowSizeClass .

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

Изменения API

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

Версия 1.4.0-альфа01

7 августа 2024 г.

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

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

  • Функция ActivityStack Pinning позволяет приложениям закреплять контент в одном контейнере и изолировать его навигацию от другого контейнера.
  • Интерактивный разделитель позволяет приложениям отображать фиксированный или перетаскиваемый разделитель между двумя действиями в разделенной презентации.
  • Функция затемнения диалоговых окон на весь экран позволяет приложениям указывать область затемнения диалоговых окон, чтобы затемнить либо все окно задачи, либо только контейнер, в котором отображается диалоговое окно.
  • Функция обратного вызова встроенного окна активности позволяет приложениям постоянно получать обновления встроенного окна активности.
  • Встраивание анимационного фона позволяет приложениям указывать анимационный фон, улучшая качество анимации перехода при использовании 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 для получения/возврата токена вместо IBinder. ( I12b24 )
  • - Представляем ActivityEmbeddingController#invalidateVisibleActivityStacks
    • Удалите SplitController#invalidateTopVisibleSplitAttributes , поскольку эта функция консолидирована в #invalidateVisibleActivityStacks ( I02ef5 ).
  • - Добавление API для настройки конфигурации встраивания. ( I59a4a )
  • - Добавление API androidx.Window для закрепления/открепления верхнего ActivityStack
    • Обновление демонстрационного приложения для возможности закрепления/открепления верхнего 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 Multiplatform для классов размеров окон.

Версия 1.3.0-rc01

14 мая 2024 г.

WindowManager Jetpack 1.3 обеспечивает поддержку Kotlin Multiplatform для функций 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-альфа03

6 марта 2024 г.

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

Изменения API

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

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

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

Версия 1.3.0-альфа02

7 февраля 2024 г.

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

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

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

Изменения API

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

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

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

Версия 1.3.0-альфа01

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

  • Укажите требуемую версию расширения SDK окна в общедоступных API.
    • Удалить isXXXSupported в компоненте Activity Embedding. ( 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-альфа03

21 июня 2023 г.

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

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

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

Изменения 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-альфа02

7 июня 2023 г.

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

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

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

Изменения API

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

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

  • Обновите WindowLayoutInfoPublishRule для поддержки переопределений на основе Context WindowLayoutInfo . ( I2037a )

Версия 1.2.0-альфа01

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 для определения констант поведения типа enum, связанных с соотношением сторон дисплея.
  • Добавлен класс SplitAttributes для определения разделенного макета.
  • Добавлены функции калькулятора SplitAttributes в SplitController для настройки разделенных макетов:
    • 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 :
    • 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 для определения констант поведения типа enum, связанных с соотношением сторон дисплея.
  • Добавлен класс SplitAttributes для определения разделенного макета.
  • Добавлены функции калькулятора SplitAttributes в SplitController для настройки разделенных макетов:
    • 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 :
    • 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-альфа06

22 февраля 2023 г.

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

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

  • Предоставьте экспериментальную версию получения WindowLayoutInfo из контекста пользовательского интерфейса.

Изменения API

  • Добавьте splitSupportStatus , чтобы указать, доступно ли внедрение активности. ( I10024 )
  • Сделать API контекста пользовательского интерфейса WindowLayoutInfo экспериментальным. ( I58ee0 )
  • Представляет WindowAreaController и API, позволяющие включить режим RearDisplay для перемещения текущего окна на дисплей, совмещенный с задней камерой. ( Иффкбф )
  • Обновить цвет фона по умолчанию. ( I1ac1b )
  • Добавьте параметры SplitAttributes . ( I18bdd )
  • Добавьте API для SplitRule , SplitAttributes , SplitAttributesCalculator . ( I92d23 )
  • Улучшите API-интерфейсы maxAspectRatio :
    1. Замените alwaysAllow() и alwaysDisallow() на ALWAYS_ALLOW и ALWAYS_DISALLOW .
    2. Обновите документацию по API @see с помощью отдельной документации. ( I3057b )
  • Следующие конструкторы удалены из общедоступных API, поскольку приложения не должны вызывать их.
    • Конструктор SplitInfo
    • Конструктор ActivityStack ( Ide534 )
  • SplitRule теперь принимает maxAspectRatioInPortrait/Landscape . Он позволяет разделить действия только в том случае, если соотношение сторон родительских границ меньше или равно запрошенному maxAspectRatio . ( Я5990 )
  • Измените RuleController#parseRules на статический ( I785df )
  • Улучшите API-интерфейсы ActivityEmbedding.
    1. Согласуйте именование API. Используйте добавление/удаление для нескольких экземпляров:
    2. registerRule меняется на addRule
    3. unregisterRule меняется на removeRule
    4. Замените getSplitRules на getRules , поскольку ActivityRule не является правилом разделения.
    5. Добавьте RuleController#setRules , чтобы установить набор правил.
    6. Извлеките API-интерфейсы, связанные с правилами, из SplitController в одноэлементный RuleController . Они:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Извлеките #isActivityEmbedded из SplitController в одноэлементный ActivityEmbeddingController . Они:
    14. isActivityEmbedded
    15. Удалите SplitController#initialize . Чтобы установить правила из XML-файла, используйте RuleController#parseRules и #setRules . До этого изменения: SplitController.initialize(context, R.xml.static_rules) После этого изменения: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. Мы больше не отличаем статические правила от правил времени выполнения. Тем не менее, вызов результатов #clearRules очищает все правила, независимо от того, зарегистрированы ли они с помощью статических определений правил XML или во время выполнения. Чтобы сохранить устаревшее поведение SplitController#clearRegisteredRules , вызовите RuleController#parseRules с идентификатором ресурсов XML и вызовите RuleController#setRules , чтобы снова отменить правила. До этого изменения: SplitController.getInstance(context).clearRegisteredRules() После этого изменения: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) ( Ib3967 )
  • Улучшите API SplitRule:
    1. Возьмите минимальные размеры в DP вместо пикселей для SplitRule .
    2. Рефакторинг для SplitRule Builder, чтобы минимальные размеры считались необязательными. ( I95f17 )
  • Передайте контекст для инициализации SplitController ( I42549 ).
  • SplitRule#layoutDir переименован в #layoutDirection , а SplitRule Builder#setLayoutDir — в Builder#setLayoutDirection . ( I3f6d1 )

Версия 1.1.0-альфа04

9 ноября 2022 г.

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

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

  • Предоставьте метод, чтобы определить, пуст ли ActivityStack для ActivityEmbedding .
  • Удалены экспериментальные теги API из API ActivityEmbedding .
  • Скрыть конструктор ActivityRule , так как Builder является предпочтительным способом создания.
  • Добавьте экспериментальный метод для получения WindowInsets в WindowMetrics .
  • Обновите SplitPlaceholderFinishBehavior , чтобы предотвратить завершение заполнителя. Завершение заполнителя привело к некоторому путанице.

Изменения API

  • Сделайте val isEmpty общедоступным, чтобы заменить fun isEmpty .
  • Переименуйте действия параметра ActivityStack activitiesInProcess . ( Я5055 )
  • Удалите ActivityFilter#matchesClassName и ActivityFilter#matchesClassNameOrWildCard поскольку они вносят путаницу.
  • Добавьте ActivityFilter#componentName abd ActivityFilter#intentAction , чтобы вызывающая сторона могла различать разные фильтры ( I41f22 ).
  • Удалите @Deprecated API из экспериментального API ( I216b3 ).
  • Удалите @ExperimentalWindowApi для API-интерфейсов внедрения действий ( I69ebe ).
  • Скройте конструктор ActivityRule , вместо него используйте Builder. ( Если4eb6 )
  • Добавьте API, чтобы проверить, является ли Activity частью ActivityFilter . ( Ia43cf )
  • Обновите файлы API, чтобы отразить изменения в классах WindowMetrics и WindowMetricsCalculatorCompat ( I667fe ).
  • Обновить Javadoc свойства ActivityEmbedding и имя класса ( Ia1386 ).
  • Добавление имен тегов свойств ActivityEmbedding для использования в AndroidManifest.xml ( Id1ad4 )
  • Добавлены новые API SplitPlaceholderFinishBehavior и SplitPlaceholderRule.finishPrimaryWithPlaceholder , которые заменяют существующий SplitPlaceholderRule.finishPrimaryWithSecondary , который определяет, когда действия-заполнители завершаются, и как должны вести себя связанные действия во внедрении действий. ( I64647 )

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

  • Представляет WindowAreaController и API, позволяющие включить режим RearDisplay для перемещения текущего окна на дисплей, совмещенный с задней камерой. ( I388ab )

Версия 1.1.0-альфа03

27 июля 2022 г.

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

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

  • Обновите значения по умолчанию для правил внедрения.

Изменения API

  • Обновите значения по умолчанию для свойств правил внедрения. ( Ic4d35 )

Версия 1.1.0-альфа02

11 мая 2022 г.

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

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

  • Выпустите библиотеки адаптеров для поддержки Java и RxJava.

Версия 1.1.0-альфа01

11 мая 2022 г.

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

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

  • Выпуск адаптеров для поддержки Java и RxJava.

Версия 1.1.0-альфа01

20 апреля 2022 г.

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

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

  • Исправлена ​​ошибка, из-за которой фоновое приложение переставало отображать функции сгиба.
  • Подробнее об экспериментальном API ActivityEmbedding.

Изменения API

  • Публичный API для проверки того, внедряется ли действие. ( I39eb7 )

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

  • Добавьте API, которые настраивают поведение завершения для контейнеров в разделениях действий ( I1a1e4 ).
  • Добавлен новый параметр конфигурации для правил разделения активности. ( Iec6af )

Версия 1.0

Версия 1.0.0

26 января 2022 г.

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

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

  • Поддержка складных телефонов через WindowInfoTracker и FoldingFeature . WindowMetricsCalculator , помогающий вычислить текущий WindowMetrics.

Версия 1.0.0-rc01

15 декабря 2021 г.

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

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

  • Добавьте поддержку складных телефонов через WindowInfoTracker .
  • Добавьте методы для вычисления текущего и максимального WindowMetrics .
  • Добавьте поддерживающие тестовые API.

Версия 1.0.0-beta04

17 ноября 2021 г.

Выпущен androidx.window:window-*:1.0.0-beta04 . Версия 1.0.0-beta04 содержит эти коммиты.

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

  • Переименуйте WindowInfoRepository в WindowInfoTracker.
  • Сделайте Activity явной зависимостью метода для WindowInfoTracker.
  • Добавьте простой TestRule для WindowMetricsCalculator для поддержки разработчиков, использующих Robolectric.

Изменения API

  • Извлечь расширения ( I25a5f )
  • добавить isEmpty в ActivityStack ( I5a4e6 )
  • Переименуйте WindowInfoRepository в WindowInfoTracker.
    • Обновите зависимости java/rxjava/testing, чтобы они соответствовали. ( I0da63 )
  • Добавьте правило тестирования для простого WindowMetricsCalculator. ( Ибакдб )

Версия 1.0.0-бета03

27 октября 2021 г.

Выпущен androidx.window:window-*:1.0.0-beta03 . Версия 1.0.0-beta03 содержит эти коммиты.

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

  • Добавьте экспериментальные API-интерфейсы внедрения действий. Эта первоначальная версия макета позволяет отображать два действия рядом.

Изменения API

  • Удален API currentWindowMetrics, поскольку мы не можем предоставить его точно. Вместо этого используйте WindowMetricsCalculator ( Icda5f )
  • Обновлен API расширений. ( Ica92b )
  • Добавлен интерфейс для новой функции, которая позволяет встраивать действия и отображать их рядом в окне родительской задачи. ( I5711d )
  • Спрятаны конструкторы WindowMetrics и WindowLayoutInfo, вместо этого используйте тестовые API. ( I5a1b5 )
  • Добавьте API для создания поддельных объектов WindowLayoutInfo. ( I4a2fd )

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

Версия 1.0.0-beta02

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

Выпущен androidx.window:window-*:1.0.0-beta02 . Версия 1.0.0-beta02 содержит эти коммиты.

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

  • Добавьте экспериментальную аннотацию для аннотации экспериментальных API. ( I9f1b6 )
  • Добавьте тестовый метод, чтобы создать тестовый FoldingFeature, который принимает Rect. Это облегчит тестирование при использовании Robolectric, а не при реальном мероприятии. ( Id1cca )

Версия 1.0.0-бета01

18 августа 2021 г.

Выпущен androidx.window:window-*:1.0.0-beta01 . Версия 1.0.0-beta01 содержит эти коммиты.

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

  • Удалены старые константы и превращены FoldingFeature в интерфейс.

Изменения API

  • Удалите старые константы и сделайте FoldFeature интерфейсом. ( I9a2d5 )

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

  • Библиотеки, зависящие от библиотеки Test Core были обновлены до версии 1.4.0 и теперь будут работать с платформой Android версии S. ( I88b72 , b/189353863 )

Версия 1.0.0-альфа10

4 августа 2021 г.

Выпущен androidx.window:window-*:1.0.0-alpha10 . Версия 1.0.0-alpha10 содержит эти коммиты.

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

  • Переименуйте WindowInfoRepo в WindowInfoRepository и настройте соответствующие классы/файлы.
  • Преобразуйте текущие метрики окна в поток в WindowInfoRepository, поскольку значение меняется со временем.
  • Переименуйте WindowInfoRepoJavaAdapter в WindowInfoRepoCallbackAdapter.
  • Добавьте вспомогательный метод для создания тестовых объектов FoldingFeature.
  • Обновите пакеты, чтобы сгруппировать классы в зависимости от поддерживаемой ими функции.

Изменения API

  • Переименуйте ActivityExt в ActivityExtensions. Измените репо на репозиторий. ( I61a16 )
  • Обновление пакетов для занятий. ( I23ae2 )
  • Удалить WindowMetrics из WindowInfoRepo ( I24663 )
  • Удалите WindowManager и используйте WindowInfoRepo.
    • Сделайте WindowBackend внутренним. ( I06d9a )
  • Преобразуйте показатели окна в поток.
    • Переименуйте Java-адаптер в WindowInfoRepoCallbackAdapter.
    • Удалите callbackFlow, чтобы больше не использовались экспериментальные API. ( Ia4d15 )
  • Добавьте вспомогательный метод для создания функций тестового отображения.
    • Изменение с occlusionMode на occlusionType ( If4cff )

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

  • Исправлена ​​ошибка proguard, из-за которой удалялась основная библиотека.
  • Исправлена ​​ошибка, из-за которой WindowLayoutInfo не доставлялась дополнительным подписчикам.
  • Исправлена ​​ошибка, из-за которой изменения конфигурации не приводили к обновлению функций складывания.

Версия 1.0.0-альфа09

30 июня 2021 г.

Выпущен androidx.window:window-*:1.0.0-alpha09 . Версия 1.0.0-alpha09 содержит эти коммиты.

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

  • Переход от целочисленных констант к неограниченным перечислениям.
  • Добавьте тестовую утилиту для создания тестовых функций складывания.

Изменения API

  • Добавьте вспомогательный метод для создания функций тестового отображения. ( I3cf54 )
    • Измените occlusionMode на occlusionType .

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

  • Выдавайте начальное значение при добавлении нескольких потребителей потоков данных.

Версия 1.0.0-альфа08

16 июня 2021 г.

Выпущен androidx.window:window-*:1.0.0-alpha08 . Версия 1.0.0-alpha08 содержит эти коммиты.

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

  • Выпущен артефакт тестирования, упрощающий тестирование при использовании WindowInfoRepository. Используйте WindowInfoRepository, чтобы получить информацию о DisplayFeatures и WindowMetrics. ( I57f66 , Ida620 )

Версия 1.0.0-альфа07

2 июня 2021 г.

Выпущен androidx.window:window-*:1.0.0-alpha07 . Версия 1.0.0-alpha07 содержит эти коммиты.

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

  • Перенесите основную библиотеку окон в Kotlin. Будут использовать сопрограммы и функции приостановки для предоставления асинхронных данных в будущем.
  • Добавьте WindowInfoRepo в качестве основной точки взаимодействия для получения WindowMetrics и потока WindowLayoutInfo.
  • Новый артефакт window-java , предоставляющий Java-дружественные API для регистрации и отмены регистрации обратных вызовов.
  • Новые артефакты window-rxjava2 и window-rxjava3 для предоставления адаптированных API RxJava.

Изменения API

  • Добавьте WindowServices , чтобы обеспечить единообразное предоставление зависимостей.
    • Добавьте API на основе сопрограммы для использования информации о макете окна. ( Iab70f )
  • Перенесите основную библиотеку оконного менеджера на Kotlin. ( Icca34 )

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

  • Добавьте новый класс данных для представления границ объектов. ( I6dcd1 )

Версия 1.0.0-альфа06

5 мая 2021 г.

androidx.window:window:1.0.0-alpha06 выпущен. Версия 1.0.0-alpha06 содержит эти коммиты.

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

  • Мы начали миграцию на Kotlin и закончим в следующем выпуске.
  • DeviceState был удален из общедоступного API, вместо него используйте FoldingFeature.
  • Мы удалили STATE_FLIPPED из состояний FoldingFeature, поскольку на данный момент он не поддерживается ни одним вариантом использования.
  • Мы также удалили другие устаревшие API.

Изменения API

  • Добавление Kotlin в качестве зависимости.
    • Перенесите основную библиотеку на Kotlin. ( Idd995 )
  • Удален построитель DisplayFeature . ( I61fa4 )
  • Удален DeviceState из общедоступного API, вместо этого используйте FoldingFeature . ( Идентификатор6079 )
  • Удалите обратный вызов состояния устройства из расширений. ( I5ea83 )
  • Удалите STATE_FLIPPED из FoldingFeature. ( I9c4e1 )
  • Удалите устаревшие методы регистрации. ( Ib381b )

Версия 1.0.0-альфа05

24 марта 2021 г.

androidx.window:window:1.0.0-alpha05 выпущен. Версия 1.0.0-alpha05 содержит эти коммиты.

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

Мы добавили удобные методы в FoldingFeature, чтобы приложения могли определять, разделяется ли функция, перекрывается ли она, и определять ориентацию шарнира. Мы также скрываем тип петли, чтобы

Мы удаляем методы синхронного чтения из WindowManager. Методы синхронного чтения подвержены ошибкам, поскольку существует неявное состояние гонки. Зарегистрируйте прослушиватели и обратные вызовы, чтобы получать обновления WindowLayoutInfo.

Изменения API

  • Добавить удобные методы для работы с FoldingFeatures ( Ie733f )
  • Удаляет методы синхронного чтения из WindowManager ( I96fd4 ).

Версия 1.0.0-альфа04

10 марта 2021 г.

androidx.window:window:1.0.0-alpha04 выпущен. Версия 1.0.0-alpha04 содержит эти коммиты.

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

  • Устраняет ошибку, из-за которой WindowLayoutInfo не выдается, если отсутствует OEM-реализация. Теперь мы создаем пустой WIndowLayoutInfo.
  • Исправлена ошибка, из-за которой состояние не обновлялось должным образом, если состояние шарнира менялось, когда приложение работало в фоновом режиме. Теперь состояние должно быть последовательным.
  • Обновите наши файлы proguard, чтобы игнорировать предупреждения от зависимостей времени выполнения.

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

  • Выдайте пустое значение, если библиотека OEM отсутствует. ( Иде935 )

Версия 1.0.0-альфа03

18 февраля 2021 г.

androidx.window:window:1.0.0-alpha03 выпущен. Версия 1.0.0-alpha03 содержит эти коммиты.

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

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

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

  • Выдайте пустое значение, если библиотека OEM отсутствует. ( Иде935 )

Версия 1.0.0-альфа02

27 января 2021 г.

androidx.window:window:1.0.0-alpha02 выпущен. Версия 1.0.0-alpha02 содержит эти коммиты.

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

  • Мы упразднили некоторые API, чтобы упростить API и уменьшить количество ошибок. Некоторые примечательные примеры — удаление операций синхронного чтения из WindowManager и прекращение поддержки DeviceState. Синхронные операции чтения могут привести к состояниям гонки и иметь неправильный пользовательский интерфейс.

  • Мы преобразовали DisplayFeature в интерфейс, который в дальнейшем будут реализовывать другие функции. Наша первая функция — FoldingFeature, которая теперь представляет собой складку экрана или шарнир. Он также содержит состояние шарнира, заменяющего DeviceState.

  • WindowMetrics был представлен в Android 11, чтобы предоставить разработчикам простой способ запроса показателей окна, например его положения и размера на экране, а также любых системных вставок. В этом выпуске мы перенесли API, чтобы разработчики могли использовать WindowMetrics и продолжать поддерживать старые версии Android. WindowMetrics можно получить с помощью API WindowManager#getCurrentWindowMetrics() и WindowManager#getMaximumWindowMetrics().

Изменения API

  • Устаревшие API, которые будут удалены в следующей альфа-версии ( Ib7cc4 ).
  • Обновляет ExtensionInterface , чтобы принимать явные ссылки на действия. ( I07ded )
  • Представляет API WindowMetrics. ( I3ccee )
  • Удалить методы синхронного чтения из WindowManager ( I69983 ).
  • Сделайте пакет ExtensionWindowBackend защищенным. ( Ied208 )

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

  • Обновите API-интерфейсы ExtensionInterface , чтобы они могли принимать визуальные контексты. ( I8e827 )

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

  • Объедините DeviceState и WindowLayoutInfo, чтобы упростить доступ к данным. ( Id34f4 )

Версия 1.0.0-альфа01

27 февраля 2020 г.

Выпущены androidx.window:window:1.0.0-alpha01 и androidx.window:window-extensions:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит эти коммиты. Это первый выпуск библиотеки оконного менеджера.

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

  • DisplayFeature : этот новый API определяет нарушения в сплошных поверхностях плоского экрана, такие как петли или складки.
  • DeviceState : этот новый API предоставляет текущее положение телефона из списка определенных положений (например, CLOSED , OPENED , HALF_OPENED и т. д.).