Менеджер окон
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
|---|---|---|---|---|
| 19 ноября 2025 г. | 1.5.1 | - | - | 1.6.0-альфа01 |
Объявление зависимостей
Чтобы добавить зависимость от 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-альфа01
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 ) - Предоставляет Getter для обеспечения прямого доступа к
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-альфа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 ) - Добавляет поддержку
watchosDeviceArm64KMP 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на устройствах сvendorApiLevel2 из-за нестабильной поддержки 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
- Удалить нестабильные API. ( Ibc534 , b/302380585 )
Версия 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
Исправления ошибок
- Добавление свойства совместимости с опцией отключения для принудительного изменения размера ( 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для поддержки переопределений на основеContextWindowLayoutInfo. ( 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()для проверки того, поддерживаются ли APISplitAttributesCalculatorна устройстве
-
- Добавлено поле
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 updates in
SplitRule:- Added
defaultSplitAttributes— Defines the default split layout of a split; replacessplitRatioandlayoutDirection. - Added translation of the XML properties
splitRatioandsplitLayoutDirectiontodefaultSplitAttributes. - Changed minimum dimension definitions to use density-independent pixels (dp) instead of pixels.
- Added
minHeightDpwith default value 600dp. - Changed
minWidthtominWidthDpwith default value 600dp. - Changed
minSmallestWidthtominSmallestWidthDpwith default value 600dp. - Added
maxAspectRatioInHorizontalwith default valueALWAYS_ALLOW. - Added
maxAspectRatioInPortraitwith default value1.4. - Defined
FinishBehaviornested class to replace finish behavior constants. - Applied the property changes to the
Buildernested class ofSplitPairRuleandSplitPlaceholderRule.
- Added
- Replaced
SplitInfo#getSplitRatio()withSplitInfo#getSplitAttributes()to provide additional split-related information.
WindowLayout
- Added non-activity UI context support to
WindowInfoTracker. - Added non-activity UI context to
WindowMetricsCalculator.
Migration Steps
- To enable activity embedding to display activities in splits, apps must add the
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLEDproperty 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. -
SplitInforatio- 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. }
- Check if the current split is stacked:
-
SplitControllermigrations:-
SplitController.getInstance()changes toSplitController.getInstance(Context). -
SplitController.initialize(Context, @ResId int)changes toRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)). -
SplitController.getInstance().isActivityEmbedded(Activity)changes toActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity). -
SplitController.getInstance().registerRule(rule)changes toRuleController.getInstance(Context).addRule(rule). -
SplitController.getInstance().unregisterRule(rule)changes toRuleController.getInstance(Context).removeRule(rule). -
SplitController.getInstance().clearRegisteredRules()changes toRuleController.getInstance(Context).clearRules(). -
SplitController.getInstance().getSplitRules()changes toRuleController.getInstance(Context).getRules().
-
-
SplitRuleproperty migrations:-
minWidthandminSmallestWidthnow use dp units instead of pixels. Apps can use the following call:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )or simply divideminWithin pixels bydisplayMetrics#density.
-
- Finish behavior constants must be migrated to
FinishBehaviorenum-like class constants:-
FINISH_NEVERchanges toFinishBehavior.NEVER. -
FINISH_ALWAYSchanges toFinishBehavior.ALWAYS. -
FINISH_ADJACENTchanges toFinishBehavior.ADJACENT.
-
- Layout direction must be migrated to
SplitAttributes.LayoutDirection:-
ltrchanges toSplitAttributes.LayoutDirection.LEFT_TO_RIGHT. -
rtlchanges toSplitAttributes.LayoutDirection.RIGHT_TO_LEFT. -
localechanges toSplitAttributes.LayoutDirection.LOCALE. -
splitRatiomust be migrated toSplitAttributes.SplitType.ratio(splitRatio).
-
-
SplitPairRule.Buildermigrations:-
SplitPairRule.Builder(filters, minWidth, minSmallestWidth)changes tokotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600. -
setLayoutDirection(layoutDirection)andsetSplitRatio(ratio)change tokotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ) -
setFinishPrimaryWithSecondaryandsetFinishSecondaryWithPrimarytake theFinishBehaviorenum-like constants. See “SplitRule migrations” for details. - Use
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)to show splits on portrait devices.
-
-
SplitPlaceholder.Buildermigrations:- Has only
filtersandplaceholderIntentparameters. Other properties move to setters. See “SplitPairRule.Builder migrations” for details. -
setFinishPrimaryWithPlaceholdertakes theFinishBehaviorenum-like constants. See “SplitRule migrations” for details. -
setLayoutDirection(layoutDirection)andsetSplitRatio(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.
- Has only
Version 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
WindowLayoutInfofrom a UI context.
Изменения API
- Add
splitSupportStatusto indicate if Activity embedding is available. ( I10024 ) - Make UI Context
WindowLayoutInfoAPI as experimental. ( I58ee0 ) - Introduces the
WindowAreaControllerand API's to enableRearDisplayMode to move the current window to the display that is aligned with the rear camera. ( Iffcbf ) - Update default background color. ( I1ac1b )
- Add
SplitAttributesparams. ( I18bdd ) - Add APIs for
SplitRule,SplitAttributes,SplitAttributesCalculator. ( I92d23 ) - Improve the APIs around
maxAspectRatio:- Replace
alwaysAllow()andalwaysDisallow()withALWAYS_ALLOWandALWAYS_DISALLOW. - Update API documentation of @see with standalone documentation. ( I3057b )
- Replace
- The following constructors are removed from public APIs because they are not supposed to be called by apps.
-
SplitInfoconstructor -
ActivityStackconstructor ( Ide534 )
-
-
SplitRulenow takesmaxAspectRatioInPortrait/Landscape. It only allows activities split when the aspect ratio of the parent bounds is smaller or equal to the requestedmaxAspectRatio. ( Ia5990 ) - Change
RuleController#parseRulesto be static ( I785df ) - Improve the APIs around ActivityEmbedding
- Align the API naming - Use add/remove for multiple instances:
-
registerRulechanges toaddRule -
unregisterRulechanges toremoveRule - Replace
getSplitRuleswithgetRulessinceActivityRuleis not a split rule - Add
RuleController#setRulesto set a bunch of rules - Extract rule related APIs from
SplitControllerto singletonRuleController. They are: -
addRule -
removeRule -
getRules -
setRules -
clearRules -
parseRules - Extract
#isActivityEmbeddedfromSplitControllerto singletonActivityEmbeddingController. They are: -
isActivityEmbedded - Remove
SplitController#initialize. To set rules from XML file, please useRuleController#parseRulesand#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) - We don't distinguish static rules with runtime rules anymore. That said, calling
#clearRulesresults to clear all rules no matter they are registered with static XML rule definitions or at runtime. To hav the legacy behavior ofSplitController#clearRegisteredRules, please callRuleController#parseRuleswith the XML resources id and callRuleController#setRulesto 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:
- Take min dimensions in DP instead of pixels for
SplitRule. - Refactor for
SplitRuleBuilder to take min dimensions as optional. ( I95f17 )
- Take min dimensions in DP instead of pixels for
- Pass a Context to initialize
SplitController( I42549 ) - Renamed
SplitRule#layoutDirto#layoutDirectionandSplitRule Builder#setLayoutDirtoBuilder#setLayoutDirection. ( I3f6d1 )
Version 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
ActivityStackis empty forActivityEmbedding. - Removed experimental API tags from
ActivityEmbeddingAPIs. - Hide
ActivityRuleconstructor as theBuilderis the preferred way to construct. - Add an experimental method to get the
WindowInsetsonWindowMetrics. - Update
SplitPlaceholderFinishBehaviorto prevent finishing the placeholder. Finishing the placeholder caused some confusing behavior.
Изменения API
- Make val
isEmptypublic to replace funisEmpty. - Rename
ActivityStackparameter activities toactivitiesInProcess. ( Ia5055 ) - Remove
ActivityFilter#matchesClassNameandActivityFilter#matchesClassNameOrWildCardbecause they are confusing. - Add
ActivityFilter#componentNameabdActivityFilter#intentActionto allow the caller to distinguish different filters ( I41f22 ) - Remove the
@DeprecatedAPIs from the experimental API ( I216b3 ) - Remove
@ExperimentalWindowApifor Activity Embedding APIs ( I69ebe ) - Hide
ActivityRuleconstructor, use Builder instead. ( If4eb6 ) - Add APIs to check if an Activity is part of the
ActivityFilter. ( Ia43cf ) - Update API files to reflect changes in
WindowMetricsandWindowMetricsCalculatorCompatclasses ( I667fe ) - Update
ActivityEmbeddingProperty Javadoc and class name ( Ia1386 ) - Adding
ActivityEmbeddingproperty tag names to be used in AndroidManifest.xml ( Id1ad4 ) - Added new API
SplitPlaceholderFinishBehaviorandSplitPlaceholderRule.finishPrimaryWithPlaceholder, this replaces existingSplitPlaceholderRule.finishPrimaryWithSecondarywhich defines when placeholder activites are finished, how associated activites in Activity Embedding should behave. ( I64647 )
Исправления ошибок
- Introduces the
WindowAreaControllerand API's to enableRearDisplayMode to move the current window to the display that is aligned with the rear camera. ( I388ab )
Version 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 )
Version 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.
Version 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
Version 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.
Major features of 1.0.0
- Support for folding phones through
WindowInfoTrackerandFoldingFeature.WindowMetricsCalculatorto help calculate the current WindowMetrics.
Version 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.
Version 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 )
Version 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 )
Исправления ошибок
- Fixed memory leak. ( I3fc79 , b/202989046 )
Version 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 )
Version 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
FoldingFeatureinto an interface.
Изменения API
- Remove old constants and make FoldFeature an interface. ( I9a2d5 )
Исправления ошибок
- Libraries that depend on the
Test Corelibrary have been upgraded to version1.4.0and will now work with Android platform version S. ( I88b72 , b/189353863 )
Version 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.
Version 1.0.0-alpha09
June 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
occlusionModetoocclusionType.
- Change from
Исправления ошибок
- Emit initial value when adding multiple consumers of the data streams.
Version 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 )
Version 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-javaartifact to expose Java-friendly APIs to register and unregister callbacks. - New
window-rxjava2andwindow-rxjava3artifacts to expose RxJava adapted APIs.
Изменения API
- Add
WindowServicesto 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 )
Version 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_FLIPPEDfrom 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
DisplayFeaturebuilder. ( I61fa4 ) - Removed
DeviceStatefrom public api, useFoldingFeatureinstead. ( Id6079 ) - Remove device state callback from extensions. ( I5ea83 )
- Remove
STATE_FLIPPEDfrom FoldingFeature. ( I9c4e1 ) - Remove deprecated registration methods. ( Ib381b )
Version 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 )
Version 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 )
Version 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 )
Version 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
ExtensionInterfaceto accept explicit Activity references. ( I07ded ) - Introduces the WindowMetrics API. ( I3ccee )
- Remove synchronous read methods from WindowManager ( I69983 )
- Make ExtensionWindowBackend package protected. ( Ied208 )
Исправления ошибок
- Update
ExtensionInterfaceAPIs to accept visual contexts. ( I8e827 )
External Contribution
- Merge DeviceState and WindowLayoutInfo so it is easier to access data. ( Id34f4 )
Version 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.)