Менеджер окон
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
|---|---|---|---|---|
| 24 сентября 2025 г. | 1.5.0 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от WindowManager, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
Круто
dependencies { implementation "androidx.window:window:1.5.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.5.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.5.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.5.0" // For testing implementation "androidx.window:window-testing:1.5.0" }
Котлин
dependencies { implementation("androidx.window:window:1.5.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.5.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.5.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.5.0") // For testing implementation("androidx.window:window-testing:1.5.0") }
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.
Более подробную информацию см. в документации по системе отслеживания проблем .
Версия 1.5
Версия 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 в
SplitRule:- Добавлен
defaultSplitAttributes— определяет макет разделения по умолчанию; заменяетsplitRatioиlayoutDirection. - Добавлен перевод свойств XML
splitRatioиsplitLayoutDirectionвdefaultSplitAttributes. - Изменены определения минимального размера для использования пикселей, не зависящих от плотности (dp), вместо пикселей.
- Добавлен
minHeightDpсо значением по умолчанию 600dp. - Изменено
minWidthнаminWidthDpсо значением по умолчанию 600dp. - Изменено
minSmallestWidthнаminSmallestWidthDpсо значением по умолчанию 600dp. - Добавлен
maxAspectRatioInHorizontalсо значением по умолчаниюALWAYS_ALLOW. - Добавлен
maxAspectRatioInPortraitсо значением по умолчанию1.4. - Определен вложенный класс
FinishBehaviorдля замены констант поведения финиша. - Применил изменения свойств к вложенному классу
BuilderSplitPairRuleи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:- Замените
alwaysAllow()иalwaysDisallow()наALWAYS_ALLOWиALWAYS_DISALLOW. - Обновите документацию по API @see с помощью отдельной документации. ( I3057b )
- Замените
- Следующие конструкторы удалены из общедоступных API, поскольку приложения не должны вызывать их.
- Конструктор
SplitInfo - Конструктор
ActivityStack( Ide534 )
- Конструктор
-
SplitRuleтеперь принимаетmaxAspectRatioInPortrait/Landscape. Он позволяет разделить действия только в том случае, если соотношение сторон родительских границ меньше или равно запрошенномуmaxAspectRatio. ( Я5990 ) - Измените
RuleController#parseRulesна статический ( I785df ) - Улучшите API-интерфейсы ActivityEmbedding.
- Согласуйте именование API. Используйте добавление/удаление для нескольких экземпляров:
-
registerRuleменяется наaddRule -
unregisterRuleменяется наremoveRule - Замените
getSplitRulesнаgetRules, посколькуActivityRuleне является правилом разделения. - Добавьте
RuleController#setRules, чтобы установить набор правил. - Извлеките API-интерфейсы, связанные с правилами, из
SplitControllerв одноэлементныйRuleController. Они: -
addRule -
removeRule -
getRules -
setRules -
clearRules -
parseRules - Извлеките
#isActivityEmbeddedизSplitControllerв одноэлементныйActivityEmbeddingController. Они: -
isActivityEmbedded - Удалите
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) - Мы больше не отличаем статические правила от правил времени выполнения. Тем не менее, вызов результатов
#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:
- Возьмите минимальные размеры в DP вместо пикселей для
SplitRule. - Рефакторинг для
SplitRuleBuilder, чтобы минимальные размеры считались необязательными. ( I95f17 )
- Возьмите минимальные размеры в DP вместо пикселей для
- Передайте контекст для инициализации
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общедоступным, чтобы заменить funisEmpty. - Переименуйте действия параметра
ActivityStackactivitiesInProcess. ( Я5055 ) - Удалите
ActivityFilter#matchesClassNameиActivityFilter#matchesClassNameOrWildCardпоскольку они вносят путаницу. - Добавьте
ActivityFilter#componentNameabdActivityFilter#intentAction, чтобы вызывающая сторона могла различать разные фильтры ( I41f22 ). - Удалите
@DeprecatedAPI из экспериментального 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-beta03
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 )
Исправления ошибок
- Исправлена утечка памяти. ( I3fc79 , б/202989046 )
Версия 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-beta01
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. Измените Repo на Repository. ( 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и т. д.).