Менеджер окон
Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
---|---|---|---|---|
27 августа 2025 г. | 1.4.0 | 1.5.0-rc01 | - | - |
Объявление зависимостей
Чтобы добавить зависимость от WindowManager, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle
вашего приложения или модуля:
Круто
dependencies { implementation "androidx.window:window:1.4.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.4.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.4.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.4.0" // For testing implementation "androidx.window:window-testing:1.4.0" }
Котлин
dependencies { implementation("androidx.window:window:1.4.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.4.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.4.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.4.0") // For testing implementation("androidx.window:window-testing:1.4.0") }
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.
Более подробную информацию см. в документации по системе отслеживания проблем .
Версия 1.5
Версия 1.5.0-rc01
27 августа 2025 г.
Выпущен androidx.window:window-*:1.5.0-rc01
. Версия 1.5.0-rc01 содержит следующие коммиты .
Исправления ошибок
- Исправлена ошибка, из-за которой могло возникнуть исключение
NullPointerException
из-за ошибок в реализации устройства. - Исправлена ошибка, из-за которой проверки безопасности
ActivityEmbedding
не проходили из-за удаления неиспользуемых классов Proguard.
Версия 1.5.0-beta02
13 августа 2025 г.
Выпущен androidx.window:window-*:1.5.0-beta02
. Версия 1.5.0-beta02 содержит следующие коммиты .
Новые функции
- Исправлены незначительные ошибки.
Внешний вклад
- Добавить все платформы KMP в
window-core
( If3d7c )
Версия 1.5.0-beta01
2 июля 2025 г.
Выпущен androidx.window:window-*:1.5.0-beta01
. Версия 1.5.0-beta01 содержит следующие коммиты .
Версия 1.5.0-альфа02
7 мая 2025 г.
Выпущен androidx.window:window-*:1.5.0-alpha02
. Версия 1.5.0-alpha02 содержит следующие коммиты .
Изменения API
- Добавьте точки останова
WindowSizeClass
для Large и XLarge. ( I40d85 ) - Расширить расчет
WindowMetrics
до контекста приложения. ( I8eeeb , b/360934048 ) - Предоставляет Getter для обеспечения прямого доступа к
WindowLayoutInfo
( Ie9513 ) - Внедрить API для автоматического сохранения состояния внедрения и автоматического восстановления состояния внедрения при перезапуске процесса приложения. ( Ie0295 )
- Удалить экспериментальный API
WindowInsets
. ( I68a71 ) - Скрыть несколько конструкторов ( I87b8d )
Исправления ошибок
- Исправлена ошибка, из-за которой
EmbeddingRule
возвращал разныйhashCode
в некоторых случаях. ( I748cc )
Версия 1.5.0-альфа01
12 марта 2025 г.
Выпущен androidx.window:window-*:1.5.0-alpha01
. Версия 1.5.0-alpha01 содержит следующие коммиты .
Новые функции
- Первоначальный выпуск следующей версии 1.5.0.
Версия 1.4
Версия 1.4.0
20 мая 2025 г.
Выпущен androidx.window:window-*:1.4.0
. Версия 1.4.0 содержит следующие коммиты .
Важные изменения с версии 1.3.0
- Встраивание активности
- API для настройки анимации запуска
- Интерактивный разделитель
- Закрепление
ActivityStack
- Затемнение полноэкранного диалога
- Встроенная функция обратного вызова информации об окне активности
- Улучшенное управление
ActivityStack
- Запустить Activity в указанном
ActivityStack
-
WindowMetricsCalculator
- Улучшение поддержки тестируемости
-
WindowMetrics
- Удобные методы расчета
withDp
иheightDp
- Обновить проверку границ до
isAtLeast
и использовать нижние границы для поддержки добавления новых значений.
- Удобные методы расчета
-
WindowSizeClass
- Добавить способ расчета из
WindowMetrics
- Добавить способ расчета из
-
WindowInfoTracker
- Добавить API для определения поддерживаемых поз на устройстве.
Версия 1.4.0-rc02
23 апреля 2025 г.
Выпущен androidx.window:window-*:1.4.0-rc02
. Версия 1.4.0-rc02 содержит следующие коммиты .
Исправления ошибок
- Исправлен сбой Proguard для
ActivityEmbedding
.
Версия 1.4.0-rc01
12 марта 2025 г.
Выпущен androidx.window:window-*:1.4.0-rc01
. Версия 1.4.0-rc01 содержит следующие коммиты .
Новые функции
- Обновления API
WindowSizeClass
. - Обновления API внедрения активности.
Версия 1.4.0-beta02
12 февраля 2025 г.
Выпущен androidx.window:window-*:1.4.0-beta02
. Версия 1.4.0-beta02 содержит следующие коммиты .
Новые функции
- Исправьте аннотацию, которая была только у свойства, но не у геттера.
Версия 1.4.0-beta01
15 января 2025 г.
Выпущен androidx.window:window-*:1.4.0-beta01
. Версия 1.4.0-beta01 содержит следующие коммиты .
Новые функции
- Добавить API, позволяющий настраивать анимацию
ActivityEmbedding
. - Расширить тестовые API
WindowMetricsCalculator
, чтобы разрешить подделку метрик окна.
Изменения API
- Скрыть несколько конструкторов ( I87b8d )
- Разрешить приложениям настраивать анимацию
ActivityEmbedding
( If31a8 ) - Добавляет поддержку
watchosDeviceArm64
KMP target и kotlin 1.9 ( Icf15d , b/364652024 ) - Предоставьте API
WindowMetricsCalculator
. ( I1cebf )
Исправления ошибок
- Эта библиотека теперь использует аннотации JSpecify, определяющие значение null , которые являются типовыми. Разработчикам Kotlin следует использовать следующий аргумент компилятора для обеспечения корректного использования:
-Xjspecify-annotations=strict
(это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin). ( Ie69ac , b/326456246 )
Версия 1.4.0-альфа05
16 октября 2024 г.
Выпущен androidx.window:window-*:1.4.0-alpha05
. Версия 1.4.0-alpha05 содержит следующие коммиты .
Новые функции
- Добавьте удобные функции для получения
widthDp
иheightDp
изWindowMetrics
.
Изменения API
- Добавьте
widthDp
иheightDp
вWindowMetrics
. ( Ide026 ) - Удалить экспериментальный API
WindowInsets
. ( I68a71 ) - Обновить имена методов проверки границ на
isAtLeast
( Ib0ab7 )
Версия 1.4.0-альфа04
2 октября 2024 г.
Выпущен androidx.window:window-*:1.4.0-alpha04
. Версия 1.4.0-alpha04 содержит следующие коммиты .
Изменения API
- Добавлен метод вычисления
WindowSizeClass
изWindowMetrics
. ( 874dba ) - Для ясности измените методы
WindowSizeClass
наcontainsWidthDp
,containsHeightDp
иcontainsWindowSizeDp
. ( fa760d ) - Преобразовать
WindowAreaController
в абстрактный базовый класс. ( I90893 )
Исправления ошибок
- Добавить поддержку относительных границ при создании тестового
FoldingFeature
. ( 2e6b3e ) - Исправлены общие ошибки при выборе
WindowSizeClass
.
Версия 1.4.0-альфа03
18 сентября 2024 г.
Выпущен androidx.window:window-*:1.4.0-alpha03
. Версия 1.4.0-alpha03 содержит следующие коммиты .
Новые функции
- Добавьте вспомогательный метод для получения
WindowSizeClass
изWindowMetrics
. ( I83f1f ) - Переименуйте
isAtLeast
вcontainsBreakpoint
. ( I85b47 ) - Добавить перегрузку
computeWindowSizeClass
с использованием чисел с плавающей точкой. ( I3dcb2 , b/364677934 , b/364677802 , b/364680886 )
Исправления ошибок
- Добавить отсутствующие точки останова в набор точек останова
WindowSizeClass
по умолчанию. - Исправлена ошибка, из-за которой в некоторых случаях компактные размеры выбирались неправильно.
Версия 1.4.0-альфа02
4 сентября 2024 г.
Выпущен androidx.window:window-*:1.4.0-alpha02
. Версия 1.4.0-alpha02 содержит следующие коммиты .
Новые функции
Добавить поддержку пользовательского WindowSizeClass
.
- Откройте конструктор для
WindowSizeClass
, чтобы разработчики могли использовать свой собственный. - Добавьте служебные методы
isAtLeast
, чтобы разработчики могли обрабатывать диапазон значенийWindowSizeClass
. - Добавьте функцию расширения в
Set<WindowSizeClass>
для вычисления наилучшего соответствия из Set. - Добавьте константы для рекомендуемых точек останова Android.
- Добавьте набор точек останова, соответствующий рекомендуемым точкам останова Android.
Изменения API
- Обновите имена методов границ для
WindowSizeClass
. ( If89a6 ) - Обновите API
WindowSizeClass
для поддержки добавления новых значений точек останова в будущем. Вместо абсолютных границ мы используем нижние границы и рекомендуем разработчикам проверять нижние границы при обработкеWindowSizeClass
. СуществующиеWindowWidthSizeClass
иWindowHeightSizeClass
будут объявлены устаревшими, поскольку не будут получать дальнейшего развития. ( I014ce )
Версия 1.4.0-альфа01
7 августа 2024 г.
Выпущен androidx.window:window-*:1.4.0-alpha01
. Версия 1.4.0-alpha01 содержит следующие коммиты .
Новые функции
- Функция ActivityStack Pinning позволяет приложениям закреплять контент в одном контейнере и изолировать его навигацию от другого контейнера.
- Интерактивный разделитель позволяет приложениям отображать фиксированный или перетаскиваемый разделитель между двумя действиями в разделенной презентации.
- Функция затемнения диалоговых окон на весь экран позволяет приложениям указывать область затемнения диалоговых окон, чтобы затемнить либо все окно задачи, либо только контейнер, в котором отображается диалоговое окно.
- Функция обратного вызова встроенного окна активности позволяет приложениям постоянно получать обновления встроенного окна активности.
- Встраивание анимационного фона позволяет приложениям указывать анимационный фон, улучшая качество анимации перехода при использовании
ActivityEmbedding
. - Улучшенное управление ActivityStack позволяет приложениям иметь больше контроля над
ActivityStacks
при использованииActivityEmbedding
, включая: - Запуск активности в указанном
ActivityStack
- Завершение
ActivityStack
Изменения API
Новый API
WindowInfoTracker#supportedPostures
:- API для определения, поддерживает ли устройство режим TableTop для складных экранов. Добавляет WindowAreaSessionPresenter#getWindow.
Добавьте API для поддержки закрепления
ActivityStack
:- Класс
SplitPinRule
-
SplitController#pinTopActivityStack
-
SplitController#unpinTopActivityStack
- Класс
Добавьте API для включения и настройки интерактивного разделителя.
- Класс
DividerAttributes
-
SplitAttributes.Builder#setDividerAttributes
- Класс
Добавить API для настройки
EmbeddingConfiguration
иDimAreaBehavior
для диалоговых окон.- Класс
EmbeddingConfiguration
- Класс
DimAreaBehavior
-
ActivityEmbeddingController#setEmbeddingConfiguration
- Класс
Добавьте API для получения обновлений информации об окнах встроенной активности.
- Класс
EmbeddedActivityWindowInfo
-
ActivityEmbeddingController#embeddedActivityWindowInfo
- Класс
Добавить API для установки встроенного фона анимации
-
EmbeddingAnimationBackground
-
SplitAttributes.Builder#setAnimationBackground
-
Добавьте API для завершения
ActivityStacks
-
ActivityEmbeddingController#finishActivityStacks
-
Добавить API для настройки запуска
ActivityStack
-
ActivityEmbeddingOptions#setLaunchingActivityStack
-
Следующие API стабильны и больше не являются экспериментальными:
-
ActivityEmbeddingController#invalidateVisibleActivityStacks
(перенесено из SplitController#invalidateTopVisibleSplitAttributes) -
ActivityEmbeddingController#getActivityStack
-
SplitController#updateSplitAttributes
-
Добавить API для версии 1.4. ( I56774 )
Исправления ошибок
- Исправлена ошибка на некоторых устройствах, из-за которой возвращалось значение UNAVAILABLE вместо ACTIVE, когда сеанс активен.
- Удаляет поддержку
transferActivityToWindowArea
на устройствах сvendorApiLevel
2 из-за нестабильной поддержки API. - Представить API, позволяющий перетаскивать разделитель Activity Embedding на весь экран. ( I645c9 )
- Разрешить приложениям отключать анимацию
ActivityEmbedding
с помощью параметров анимации дляSplitAttributes
. ( Idc01a ) - Удалено ручное описание доступа к новым API платформы, поскольку это происходит автоматически посредством моделирования API при использовании R8 с AGP 7.3 или более поздней версии (например, R8 версии 3.3) и для всех сборок с использованием AGP 8.1 или более поздней версии (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется обновиться до D8 версии 8.1 или более поздней. Подробнее см. в этой статье . ( Ia60e0 , b/345472586 )
- Разрешить расширениям принимать параметры анимации для
SplitAttributes
, чтобы устройство могло использовать их для анимационных переходов. ( Iede00 ) - Скрыть API наложений ( Ic4251 )
- Ввести API для настройки фиксированного или перетаскиваемого разделителя для разделения ( Ia7a78 )
- Добавлена плотность в
WindowMetrics
( Id6723 ) - Добавить API для получения
SupportedPostures
. ( If557a ) - Удалить
setLaunchingActivityStack
из экспериментального API ( I191cf ) - Представляем
ActivityEmbeddingController#embeddedActivityWindowInfo
( I24312 ) - Отменить
#getToken
и добавить#getActivityStackToken
( Ie0471 ) - Введен адаптер обратного вызова для API потока
embeddedActivityWindowInfo
( Ida77f ) - Добавить адаптер обратного вызова для API потока overlayInfo ( I7264f )
- Ввести правило
WindowSdkExtensionsRule
для переопределенияextensionsVersion
для тестирования. ( Ifb928 ) - - Перенесите
#setLaunchingActivityStack
в Bundle для совместимости с использованиемActivityOptionsCompat
.- Пользователи должны передавать
activityOptions.toBundle
вместо самогоActvityOptions
. - Удалите
#setLaunchingActivityStack(Activity)
. Пользователям следует перейти на использованиеActivityEmbeddingController#getActivityStac(Activity)
для полученияActivityStack
и передаватьActivityStack
в#setLaunchingActivityStack
. ( Ie0ccc )
- Пользователи должны передавать
- - Ввести
ActivityStack.Token
иSpltInfo.Token
в качестве идентификатора для связи между WM Jetpack и расширениями.- Устаревать/заменить API для получения/возврата токена вместо IBinder. ( I12b24 )
- - Представляем
ActivityEmbeddingController#invalidateVisibleActivityStacks
- Удалите
SplitController#invalidateTopVisibleSplitAttributes
, поскольку эта функция консолидирована в#invalidateVisibleActivityStacks
( I02ef5 ).
- Удалите
- - Добавление API для настройки конфигурации встраивания. ( I59a4a )
- - Добавление API
androidx.Window
для закрепления/открепления верхнегоActivityStack
- Обновление демонстрационного приложения для возможности закрепления/открепления верхнего
ActivityStack
( I24dd3 )
- Обновление демонстрационного приложения для возможности закрепления/открепления верхнего
- Повторно добавьте
#finishActivityStacks
иActivityEmbeddingOptions
( Ic1ab3 ) - Удалить нестабильные API. ( Ibc534 , b/302380585 )
Версия 1.3
Версия 1.3.0
29 мая 2024 г.
Выпущен androidx.window:window-*:1.3.0
. Версия 1.3.0 содержит следующие коммиты .
Важные изменения с версии 1.2.0
- Поддержка Kotlin Multiplatform для классов размеров окон.
Версия 1.3.0-rc01
14 мая 2024 г.
WindowManager
Jetpack 1.3 обеспечивает поддержку Kotlin Multiplatform для функций WindowSizeClass
, а также исправляет множество ошибок.
Выпущен androidx.window:window-*:1.3.0-rc01
. Версия 1.3.0-rc01 содержит следующие коммиты .
Версия 1.3.0-beta02
1 мая 2024 г.
Выпущен androidx.window:window-*:1.3.0-beta02
. Версия 1.3.0-beta02 содержит следующие коммиты .
Изменения API
- Удалить поддержку создания и использования пользовательских
WindowSizeClass
. ( Id1143 )
Исправления ошибок
- Исправлена ошибка
KotlinReflectionInternalError
, вызванная удалением Proguard некоторых файлов на определенных реализациях устройств. ( I01b02 )
Версия 1.3.0-beta01
3 апреля 2024 г.
Выпущен androidx.window:window-*:1.3.0-beta01
. Версия 1.3.0-beta01 содержит следующие коммиты .
Версия 1.3.0-альфа03
6 марта 2024 г.
Выпущен androidx.window:window-*:1.3.0-alpha03
. Версия 1.3.0-alpha03 содержит следующие коммиты .
Изменения API
- Разделить
WindowSizeClassUtil
на более специализированные методы. ( Ie9292 ) - Восстановить
WindowSizeClass#compute
( I21355 , b/324293374 )
Исправления ошибок
- Исправлен сбой, из-за которого предоставленный контекст не разворачивался правильно. ( 94d10ce , b/318787482 )
Версия 1.3.0-альфа02
7 февраля 2024 г.
Выпущен androidx.window:window-*:1.3.0-alpha02
. Версия 1.3.0-alpha02 содержит следующие коммиты.
Новые функции
- В API класса размера окна внесены обновления с целью повышения гибкости для разработчиков, желающих использовать собственные классы размеров.
Изменения API
- Добавьте ограничения высоты к селектору ширины. ( I23393 )
- Добавить вспомогательные функции для выбора
WindowSizeClass
из набора. Добавить экспериментальные функции оценки, чтобы разработчики могли писать собственные селекторы. Добавить функцию расширения селектора для выбора самого широкогоWindowSizeClass
в заданном диапазоне. ( I0c944 ) - Откройте конструктор
WindowSizeClass
, чтобы можно было добавлять пользовательские точки останова. ( Ic1ff3 ) - Добавьте удобную функцию для создания класса размеров на основе ширины, высоты и плотности. ( If67f4 )
Исправления ошибок
- Исправлено исключение, когда значение с плавающей точкой обрезается до 0. ( 272ffac )
Версия 1.3.0-альфа01
15 ноября 2023 г.
Выпущен androidx.window:window-*:1.3.0-alpha01
. Версия 1.3.0-alpha01 содержит следующие коммиты.
Новые функции
- Предоставить экспериментальные оконные API для доступа к заднему экрану.
- Тестовые API для создания
FoldingFeature
теперь стабильны. - Тестовые API для настройки поддельных значений
ActivityEmbedding
теперь стабильны. -
WindowLayoutInfoPublisherRule
теперь сообщает о переопределении при получении значения изUiContext
. -
WindowInfoTracker
передает данные о складывающихся функциях в параметрыUiContext
. - Укажите версию расширений на устройстве.
- Константы
WindowProperties
для переопределения пользовательских свойств для каждого приложения:-
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
— информирует систему о том, что приложение отказалось от переопределения совместимости с соотношением сторон, видимым пользователю. -
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
— информирует систему о том, что приложение отказалось от опции полноэкранного режима в настройках переопределения совместимости с соотношением сторон пользователя.
-
Версия 1.2
Версия 1.2.0
15 ноября 2023 г.
Выпущен androidx.window:window-*:1.2.0
. Версия 1.2.0 содержит следующие коммиты.
Важные изменения с версии 1.1.0
- Предоставить экспериментальные оконные API для доступа к заднему экрану.
- Тестовые API для создания
FoldingFeature
теперь стабильны. - Тестовые API для настройки поддельных значений
ActivityEmbedding
теперь стабильны. -
WindowLayoutInfoPublisherRule
теперь сообщает о переопределении при получении значения изUiContext
. -
WindowInfoTracker
передает данные о складывающихся функциях в параметрыUiContext
. - Укажите версию расширений на устройстве.
Версия 1.2.0-rc01
1 ноября 2023 г.
Выпущен androidx.window:window-*:1.2.0-rc01
. Версия 1.2.0-rc01 содержит следующие коммиты.
Новые функции
- Предоставить экспериментальные оконные API для доступа к заднему экрану.
- Тестовые API для создания
FoldingFeature
теперь стабильны. - Тестовые API для настройки поддельных значений
ActivityEmbedding
теперь стабильны. -
WindowLayoutInfoPublisherRule
теперь сообщает о переопределении при получении значения изUiContext
. -
WindowInfoTracker
передает данные о складывающихся функциях в параметрыUiContext
. - Укажите версию расширений на устройстве.
Версия 1.2.0-beta04
18 октября 2023 г.
Выпущен androidx.window:window-*:1.2.0-beta04
. Версия 1.2.0-beta04 содержит следующие коммиты.
Изменения API
- Удалить нестабильные 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
для поддержки переопределений на основеContext
WindowLayoutInfo
. ( I2037a )
Версия 1.2.0-альфа01
24 мая 2023 г.
Выпущен androidx.window:window-*:1.2.0-alpha01
. Версия 1.2.0-alpha01 содержит следующие коммиты.
Новые функции
Стабилизированы тестовые API для Activity Embedding и WindowLayoutInfoTracker
. ActivityEmbeddingRule
переведен на стабильный уровень. WindowMetricsCalculatorRule
переведен на стабильный уровень. Вспомогательные функции для создания FoldingFeature
для тестирования переведены на стабильный уровень.
Изменения API
- Стабилизируйте
ActivityEmbeddingRule
для поддержки модульного тестирования при внедрении Activity. ( I8d6b6 ) -
WindowMetrisCalculatorTestRule
стабилен и позволяет использовать заглушки метрик для тестов JVM. Для получения точных результатов рекомендуем использовать эмулятор. - Стабилизировать тестовые API для
WindowLayoutInfo
для поддержки тестирования JVM. ( Ie036e ) - Добавьте
IntRange
для проверки значений признаков свертывания. ( I69f7d )
Версия 1.1
Версия 1.1.0
7 июня 2023 г.
Выпущен androidx.window:window-*:1.1.0
. Версия 1.1.0 содержит следующие коммиты.
Важные изменения с версии 1.0.0
Встраивание активности
- Добавлено
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
как логическое свойство тега<application>
в манифесте приложения. - Устарело
isSplitSupported
и заменено наsplitSupportStatus
для предоставления более подробной информации о том, почему функция разделения недоступна. - Добавлен вложенный класс
SplitController.SplitSupportStatus
для предоставления констант состояния для свойстваsplitSupportStatus
. - Реорганизовал
SplitController
на несколько модулей:- Модуль
ActivityEmbeddingController
для API, связанных сActivity
илиActivityStack
. -
isActivityEmbedded
перемещен изSplitController
вActivityEmbeddingController
. - Модуль
RuleController
для операций, связанных сEmbeddingRule
: - Удалены API
SplitController
: -
clearRegisteredRules()
-
getSplitRules()
-
initialize()
-
registerRule()
-
unregisterRule()
- Добавлены API-интерфейсы
RuleController
: -
addRule()
— добавляет правило или обновляет правило с тем же тегом. -
removeRule()
— удаляет правило из коллекции зарегистрированных правил. -
setRules()
— Устанавливает набор правил. -
clearRules()
— Удаляет все зарегистрированные правила. -
parseRules()
— Анализирует правила из определений правил XML.
- Модуль
- Все модули требуют инициализации контекста методом
#getInstance()
, включая:-
ActivityEmbeddingController#getInstance(Context)
-
SplitController#getInstance(Context)
-
RuleController#getInstance(Context)
-
- Добавлен класс
EmbeddingAspectRatio
для определения констант поведения типа enum, связанных с соотношением сторон дисплея. - Добавлен класс
SplitAttributes
для определения разделенного макета. - Добавлены функции калькулятора
SplitAttributes
вSplitController
для настройки разделенных макетов:-
setSplitAttributesCalculator(Function)
-
clearSplitAttributesCalculator()
-
isSplitAttributesCalculatorSupported()
для проверки того, поддерживаются ли 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
для замены констант поведения финиша. - Применил изменения свойств к вложенному классу
Builder
SplitPairRule
иSplitPlaceholderRule
.
- Добавлен
- Заменен
SplitInfo#getSplitRatio()
наSplitInfo#getSplitAttributes()
для предоставления дополнительной информации, связанной с разделением.
WindowLayout
- Добавлена поддержка контекста пользовательского интерфейса без активности в
WindowInfoTracker
. - Добавлен контекст пользовательского интерфейса без активности в
WindowMetricsCalculator
.
Этапы миграции
- Чтобы включить встраивание действий для отображения действий в разделениях, приложения должны добавить свойство
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
в тег манифеста<application>
:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
Это позволяет системе заранее оптимизировать поведение разделения для приложения. - Коэффициент
SplitInfo
- Проверьте, сгруппировано ли текущее разделение:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- Проверьте текущее соотношение:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- Проверьте, сгруппировано ли текущее разделение:
- Миграции
SplitController
:-
SplitController.getInstance()
меняется наSplitController.getInstance(Context)
. -
SplitController.initialize(Context, @ResId int)
заменяется наRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
. -
SplitController.getInstance().isActivityEmbedded(Activity)
меняется наActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
. -
SplitController.getInstance().registerRule(rule)
меняется наRuleController.getInstance(Context).addRule(rule)
. -
SplitController.getInstance().unregisterRule(rule)
меняется наRuleController.getInstance(Context).removeRule(rule)
. -
SplitController.getInstance().clearRegisteredRules()
заменяется наRuleController.getInstance(Context).clearRules()
. -
SplitController.getInstance().getSplitRules()
заменяется наRuleController.getInstance(Context).getRules()
.
-
- Миграция свойств
SplitRule
:-
minWidth
иminSmallestWidth
теперь используют единицы dp вместо пикселей. Приложения могут использовать следующий вызов:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
или просто разделитьminWith
в пикселях наdisplayMetrics#density
.
-
- Константы поведения Finish необходимо перенести в константы класса
FinishBehavior
, подобные перечислению:-
FINISH_NEVER
меняется наFinishBehavior.NEVER
. -
FINISH_ALWAYS
меняется наFinishBehavior.ALWAYS
. -
FINISH_ADJACENT
меняется наFinishBehavior.ADJACENT
.
-
- Направление макета необходимо перенести в
SplitAttributes.LayoutDirection
:-
ltr
изменится наSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
. -
rtl
изменится наSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
. -
locale
меняется наSplitAttributes.LayoutDirection.LOCALE
. -
splitRatio
необходимо перенести вSplitAttributes.SplitType.ratio(splitRatio)
.
-
- Миграции
SplitPairRule.Builder
:-
SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
меняется наkotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
-
setLayoutDirection(layoutDirection)
иsetSplitRatio(ratio)
изменяются наkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
-
setFinishPrimaryWithSecondary
иsetFinishSecondaryWithPrimary
принимают константы типаFinishBehavior
. Подробности см. в разделе «Миграция SplitRule». - Используйте
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, чтобы отображать разделения на устройствах с портретной ориентацией.
-
- Миграции
SplitPlaceholder.Builder
:- Имеет только
filters
и параметрыplaceholderIntent
. Другие свойства перемещаются в сеттеры. Подробности см. в разделе «Миграции SplitPairRule.Builder». -
setFinishPrimaryWithPlaceholder
принимает константы типа перечисленияFinishBehavior
. Подробности см. в разделе «Миграция SplitRule». -
setLayoutDirection(layoutDirection)
иsetSplitRatio(ratio)
изменяются на:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- Используйте
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
, чтобы отображать разделения на устройствах с портретной ориентацией.
- Имеет только
Версия 1.1.0-альфа06
22 февраля 2023 г.
Выпущен androidx.window:window-*:1.1.0-alpha06
. Версия 1.1.0-alpha06 содержит эти коммиты.
Новые функции
- Предоставьте экспериментальную версию получения
WindowLayoutInfo
из контекста пользовательского интерфейса.
Изменения API
- Добавьте
splitSupportStatus
, чтобы указать, доступно ли внедрение активности. ( I10024 ) - Сделать API контекста пользовательского интерфейса
WindowLayoutInfo
экспериментальным. ( I58ee0 ) - Представляет
WindowAreaController
и API, позволяющие включить режимRearDisplay
для перемещения текущего окна на дисплей, совмещенный с задней камерой. ( Иффкбф ) - Обновить цвет фона по умолчанию. ( I1ac1b )
- Добавьте параметры
SplitAttributes
. ( I18bdd ) - Добавьте API для
SplitRule
,SplitAttributes
,SplitAttributesCalculator
. ( I92d23 ) - Улучшите API-интерфейсы
maxAspectRatio
:- Замените
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
. - Рефакторинг для
SplitRule
Builder, чтобы минимальные размеры считались необязательными. ( 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
. - Переименуйте действия параметра
ActivityStack
activitiesInProcess
. ( Я5055 ) - Удалите
ActivityFilter#matchesClassName
иActivityFilter#matchesClassNameOrWildCard
поскольку они вносят путаницу. - Добавьте
ActivityFilter#componentName
abdActivityFilter#intentAction
, чтобы вызывающая сторона могла различать разные фильтры ( I41f22 ). - Удалите
@Deprecated
API из экспериментального API ( I216b3 ). - Удалите
@ExperimentalWindowApi
для API-интерфейсов внедрения действий ( I69ebe ). - Скройте конструктор
ActivityRule
, вместо него используйте Builder. ( Если4eb6 ) - Добавьте API, чтобы проверить, является ли Activity частью
ActivityFilter
. ( Ia43cf ) - Обновите файлы API, чтобы отразить изменения в классах
WindowMetrics
иWindowMetricsCalculatorCompat
( I667fe ). - Обновить Javadoc свойства
ActivityEmbedding
и имя класса ( Ia1386 ). - Добавление имен тегов свойств
ActivityEmbedding
для использования в AndroidManifest.xml ( Id1ad4 ) - Добавлены новые API
SplitPlaceholderFinishBehavior
иSplitPlaceholderRule.finishPrimaryWithPlaceholder
, которые заменяют существующийSplitPlaceholderRule.finishPrimaryWithSecondary
, который определяет, когда действия-заполнители завершаются, и как должны вести себя связанные действия во внедрении действий. ( I64647 )
Исправления ошибок
- Представляет
WindowAreaController
и API, позволяющие включить режимRearDisplay
для перемещения текущего окна на дисплей, совмещенный с задней камерой. ( I388ab )
Версия 1.1.0-альфа03
27 июля 2022 г.
Выпущен androidx.window:window-*:1.1.0-alpha03
. Версия 1.1.0-alpha03 содержит эти коммиты.
Новые функции
- Обновите значения по умолчанию для правил внедрения.
Изменения API
- Обновите значения по умолчанию для свойств правил внедрения. ( Ic4d35 )
Версия 1.1.0-альфа02
11 мая 2022 г.
Выпущен androidx.window:window-*:1.1.0-alpha02
. Версия 1.1.0-alpha02 содержит эти коммиты.
Новые функции
- Выпустите библиотеки адаптеров для поддержки Java и RxJava.
Версия 1.1.0-альфа01
11 мая 2022 г.
androidx.window:window-*:1.1.0-alpha01
выпущен. Версия 1.1.0-alpha01 содержит эти коммиты.
Новые функции
- Выпуск адаптеров для поддержки Java и RxJava.
Версия 1.1.0-альфа01
20 апреля 2022 г.
androidx.window:window:1.1.0-alpha01
выпущен. Версия 1.1.0-alpha01 содержит эти коммиты.
Новые функции
- Исправлена ошибка, из-за которой фоновое приложение переставало отображать функции сгиба.
- Подробнее об экспериментальном API ActivityEmbedding.
Изменения API
- Публичный API для проверки того, внедряется ли действие. ( I39eb7 )
Исправления ошибок
- Добавьте API, которые настраивают поведение завершения для контейнеров в разделениях действий ( I1a1e4 ).
- Добавлен новый параметр конфигурации для правил разделения активности. ( Iec6af )
Версия 1.0
Версия 1.0.0
26 января 2022 г.
androidx.window:window-*:1.0.0
выпущен. Версия 1.0.0 содержит эти коммиты.
Основные особенности версии 1.0.0
- Поддержка складных телефонов через
WindowInfoTracker
иFoldingFeature
.WindowMetricsCalculator
, помогающий вычислить текущий WindowMetrics.
Версия 1.0.0-rc01
15 декабря 2021 г.
androidx.window:window-*:1.0.0-rc01
выпущен. Версия 1.0.0-rc01 содержит эти коммиты.
Новые функции
- Добавьте поддержку складных телефонов через
WindowInfoTracker
. - Добавьте методы для вычисления текущего и максимального
WindowMetrics
. - Добавьте поддерживающие тестовые API.
Версия 1.0.0-beta04
17 ноября 2021 г.
Выпущен androidx.window:window-*:1.0.0-beta04
. Версия 1.0.0-beta04 содержит эти коммиты.
Новые функции
- Переименуйте WindowInfoRepository в WindowInfoTracker.
- Сделайте Activity явной зависимостью метода для WindowInfoTracker.
- Добавьте простой TestRule для WindowMetricsCalculator для поддержки разработчиков, использующих Robolectric.
Изменения API
- Извлечь расширения ( I25a5f )
- добавить isEmpty в ActivityStack ( I5a4e6 )
- Переименуйте WindowInfoRepository в WindowInfoTracker.
- Обновите зависимости java/rxjava/testing, чтобы они соответствовали. ( I0da63 )
- Добавьте правило тестирования для простого WindowMetricsCalculator. ( Ибакдб )
Версия 1.0.0-бета03
27 октября 2021 г.
Выпущен androidx.window:window-*:1.0.0-beta03
. Версия 1.0.0-beta03 содержит эти коммиты.
Новые функции
- Добавьте экспериментальные API-интерфейсы внедрения действий. Эта первоначальная версия макета позволяет отображать два действия рядом.
Изменения API
- Удален API currentWindowMetrics, поскольку мы не можем предоставить его точно. Вместо этого используйте WindowMetricsCalculator ( Icda5f )
- Обновлен API расширений. ( Ica92b )
- Добавлен интерфейс для новой функции, которая позволяет встраивать действия и отображать их рядом в окне родительской задачи. ( I5711d )
- Спрятаны конструкторы WindowMetrics и WindowLayoutInfo, вместо этого используйте тестовые API. ( I5a1b5 )
- Добавьте API для создания поддельных объектов WindowLayoutInfo. ( I4a2fd )
Исправления ошибок
- Исправлена утечка памяти. ( 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-бета01
18 августа 2021 г.
Выпущен androidx.window:window-*:1.0.0-beta01
. Версия 1.0.0-beta01 содержит эти коммиты.
Новые функции
- Удалены старые константы и превращены
FoldingFeature
в интерфейс.
Изменения API
- Удалите старые константы и сделайте FoldFeature интерфейсом. ( I9a2d5 )
Исправления ошибок
- Библиотеки, зависящие от библиотеки
Test Core
были обновлены до версии1.4.0
и теперь будут работать с платформой Android версии S. ( I88b72 , b/189353863 )
Версия 1.0.0-альфа10
4 августа 2021 г.
Выпущен androidx.window:window-*:1.0.0-alpha10
. Версия 1.0.0-alpha10 содержит эти коммиты.
Новые функции
- Переименуйте WindowInfoRepo в WindowInfoRepository и настройте соответствующие классы/файлы.
- Преобразуйте текущие метрики окна в поток в WindowInfoRepository, поскольку значение меняется со временем.
- Переименуйте WindowInfoRepoJavaAdapter в WindowInfoRepoCallbackAdapter.
- Добавьте вспомогательный метод для создания тестовых объектов FoldingFeature.
- Обновите пакеты, чтобы сгруппировать классы в зависимости от поддерживаемой ими функции.
Изменения API
- Переименуйте ActivityExt в ActivityExtensions. Измените репо на репозиторий. ( I61a16 )
- Обновление пакетов для занятий. ( I23ae2 )
- Удалить WindowMetrics из WindowInfoRepo ( I24663 )
- Удалите WindowManager и используйте WindowInfoRepo.
- Сделайте WindowBackend внутренним. ( I06d9a )
- Преобразуйте показатели окна в поток.
- Переименуйте Java-адаптер в WindowInfoRepoCallbackAdapter.
- Удалите callbackFlow, чтобы больше не использовались экспериментальные API. ( Ia4d15 )
- Добавьте вспомогательный метод для создания функций тестового отображения.
- Изменение с occlusionMode на occlusionType ( If4cff )
Исправления ошибок
- Исправлена ошибка proguard, из-за которой удалялась основная библиотека.
- Исправлена ошибка, из-за которой WindowLayoutInfo не доставлялась дополнительным подписчикам.
- Исправлена ошибка, из-за которой изменения конфигурации не приводили к обновлению функций складывания.
Версия 1.0.0-альфа09
30 июня 2021 г.
Выпущен androidx.window:window-*:1.0.0-alpha09
. Версия 1.0.0-alpha09 содержит эти коммиты.
Новые функции
- Переход от целочисленных констант к неограниченным перечислениям.
- Добавьте тестовую утилиту для создания тестовых функций складывания.
Изменения API
- Добавьте вспомогательный метод для создания функций тестового отображения. ( I3cf54 )
- Измените
occlusionMode
наocclusionType
.
- Измените
Исправления ошибок
- Выдавайте начальное значение при добавлении нескольких потребителей потоков данных.
Версия 1.0.0-альфа08
16 июня 2021 г.
Выпущен androidx.window:window-*:1.0.0-alpha08
. Версия 1.0.0-alpha08 содержит эти коммиты.
Новые функции
- Выпущен артефакт тестирования, упрощающий тестирование при использовании WindowInfoRepository. Используйте WindowInfoRepository, чтобы получить информацию о DisplayFeatures и WindowMetrics. ( I57f66 , Ida620 )
Версия 1.0.0-альфа07
2 июня 2021 г.
Выпущен androidx.window:window-*:1.0.0-alpha07
. Версия 1.0.0-alpha07 содержит эти коммиты.
Новые функции
- Перенесите основную библиотеку окон в Kotlin. Будут использовать сопрограммы и функции приостановки для предоставления асинхронных данных в будущем.
- Добавьте WindowInfoRepo в качестве основной точки взаимодействия для получения WindowMetrics и потока WindowLayoutInfo.
- Новый артефакт
window-java
, предоставляющий Java-дружественные API для регистрации и отмены регистрации обратных вызовов. - Новые артефакты
window-rxjava2
иwindow-rxjava3
для предоставления адаптированных API RxJava.
Изменения API
- Добавьте
WindowServices
, чтобы обеспечить единообразное предоставление зависимостей.- Добавьте API на основе сопрограммы для использования информации о макете окна. ( Iab70f )
- Перенесите основную библиотеку оконного менеджера на Kotlin. ( Icca34 )
Исправления ошибок
- Добавьте новый класс данных для представления границ объектов. ( I6dcd1 )
Версия 1.0.0-альфа06
5 мая 2021 г.
androidx.window:window:1.0.0-alpha06
выпущен. Версия 1.0.0-alpha06 содержит эти коммиты.
Новые функции
- Мы начали миграцию на Kotlin и закончим в следующем выпуске.
- DeviceState был удален из общедоступного API, вместо него используйте FoldingFeature.
- Мы удалили
STATE_FLIPPED
из состояний FoldingFeature, поскольку на данный момент он не поддерживается ни одним вариантом использования. - Мы также удалили другие устаревшие API.
Изменения API
- Добавление Kotlin в качестве зависимости.
- Перенесите основную библиотеку на Kotlin. ( Idd995 )
- Удален построитель
DisplayFeature
. ( I61fa4 ) - Удален
DeviceState
из общедоступного API, вместо этого используйтеFoldingFeature
. ( Идентификатор6079 ) - Удалите обратный вызов состояния устройства из расширений. ( I5ea83 )
- Удалите
STATE_FLIPPED
из FoldingFeature. ( I9c4e1 ) - Удалите устаревшие методы регистрации. ( Ib381b )
Версия 1.0.0-альфа05
24 марта 2021 г.
androidx.window:window:1.0.0-alpha05
выпущен. Версия 1.0.0-alpha05 содержит эти коммиты.
Новые функции
Мы добавили удобные методы в FoldingFeature, чтобы приложения могли определять, разделяется ли функция, перекрывается ли она, и определять ориентацию шарнира. Мы также скрываем тип петли, чтобы
Мы удаляем методы синхронного чтения из WindowManager. Методы синхронного чтения подвержены ошибкам, поскольку существует неявное состояние гонки. Зарегистрируйте прослушиватели и обратные вызовы, чтобы получать обновления WindowLayoutInfo.
Изменения API
- Добавить удобные методы для работы с FoldingFeatures ( Ie733f )
- Удаляет методы синхронного чтения из WindowManager ( I96fd4 ).
Версия 1.0.0-альфа04
10 марта 2021 г.
androidx.window:window:1.0.0-alpha04
выпущен. Версия 1.0.0-alpha04 содержит эти коммиты.
Новые функции
- Устраняет ошибку, из-за которой WindowLayoutInfo не выдается, если отсутствует OEM-реализация. Теперь мы создаем пустой WIndowLayoutInfo.
- Исправлена ошибка, из-за которой состояние не обновлялось должным образом, если состояние шарнира менялось, когда приложение работало в фоновом режиме. Теперь состояние должно быть последовательным.
- Обновите наши файлы proguard, чтобы игнорировать предупреждения от зависимостей времени выполнения.
Исправления ошибок
- Выдайте пустое значение, если библиотека OEM отсутствует. ( Иде935 )
Версия 1.0.0-альфа03
18 февраля 2021 г.
androidx.window:window:1.0.0-alpha03
выпущен. Версия 1.0.0-alpha03 содержит эти коммиты.
Новые функции
- Выдайте пустое значение для WindowLayoutInfo, если реализация OEM пуста. Это должно облегчить использование библиотеки на большем количестве устройств. Поскольку API являются асинхронными, приложениям по-прежнему рекомендуется писать защитный код и выдавать значение по умолчанию после тайм-аута. У нас нет никаких гарантий на OEM-реализации, и первоначальная стоимость может быть отложена.
Исправления ошибок
- Выдайте пустое значение, если библиотека OEM отсутствует. ( Иде935 )
Версия 1.0.0-альфа02
27 января 2021 г.
androidx.window:window:1.0.0-alpha02
выпущен. Версия 1.0.0-alpha02 содержит эти коммиты.
Новые функции
Мы упразднили некоторые API, чтобы упростить API и уменьшить количество ошибок. Некоторые примечательные примеры — удаление операций синхронного чтения из WindowManager и прекращение поддержки DeviceState. Синхронные операции чтения могут привести к состояниям гонки и иметь неправильный пользовательский интерфейс.
Мы преобразовали DisplayFeature в интерфейс, который в дальнейшем будут реализовывать другие функции. Наша первая функция — FoldingFeature, которая теперь представляет собой складку экрана или шарнир. Он также содержит состояние шарнира, заменяющего DeviceState.
WindowMetrics был представлен в Android 11, чтобы предоставить разработчикам простой способ запроса показателей окна, например его положения и размера на экране, а также любых системных вставок. В этом выпуске мы перенесли API, чтобы разработчики могли использовать WindowMetrics и продолжать поддерживать старые версии Android. WindowMetrics можно получить с помощью API
WindowManager#getCurrentWindowMetrics()
и WindowManager#getMaximumWindowMetrics().
Изменения API
- Устаревшие API, которые будут удалены в следующей альфа-версии ( Ib7cc4 ).
- Обновляет
ExtensionInterface
, чтобы принимать явные ссылки на действия. ( I07ded ) - Представляет API WindowMetrics. ( I3ccee )
- Удалить методы синхронного чтения из WindowManager ( I69983 ).
- Сделайте пакет ExtensionWindowBackend защищенным. ( Ied208 )
Исправления ошибок
- Обновите API-интерфейсы
ExtensionInterface
, чтобы они могли принимать визуальные контексты. ( I8e827 )
Внешний вклад
- Объедините DeviceState и WindowLayoutInfo, чтобы упростить доступ к данным. ( Id34f4 )
Версия 1.0.0-альфа01
27 февраля 2020 г.
Выпущены androidx.window:window:1.0.0-alpha01
и androidx.window:window-extensions:1.0.0-alpha01
. Версия 1.0.0-alpha01 содержит эти коммиты. Это первый выпуск библиотеки оконного менеджера.
Новые функции
-
DisplayFeature
: этот новый API определяет нарушения в сплошных поверхностях плоского экрана, такие как петли или складки. -
DeviceState
: этот новый API предоставляет текущее положение телефона из списка определенных положений (например,CLOSED
,OPENED
,HALF_OPENED
и т. д.).