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

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

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

Чтобы добавить зависимость от 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 лучше. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

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

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

Версия 1.5

Версия 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 и target kotlin 1.9 ( Icf15d , b/364652024 )
  • Раскройте API WindowMetricsCalculator . ( I1cebf )

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

  • Эта библиотека теперь использует аннотации nullness JSpecify , которые являются type-use. Разработчики 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 для закрепления/открепления верхнего ActivityStack androidx.Window
    • Обновление демонстрационного приложения для возможности закрепления/открепления верхнего ActivityStack ( I24dd3 )
  • Повторно добавьте #finishActivityStacks и ActivityEmbeddingOptions ( Ic1ab3 )
  • Удалить нестабильные API. ( Ibc534 , b/302380585 )

Версия 1.3

Версия 1.3.0

29 мая 2024 г.

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

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

  • Поддержка Kotlin Multiplatform для классов размера окна.

Версия 1.3.0-rc01

14 мая 2024 г.

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

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

Версия 1.3.0-beta02

1 мая 2024 г.

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

Изменения API

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

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

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

Версия 1.3.0-beta01

3 апреля 2024 г.

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

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

6 марта 2024 г.

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

Изменения API

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

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

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

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

7 февраля 2024 г.

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

Новые возможности

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

Изменения API

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

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

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

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

15 ноября 2023 г.

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

Новые возможности

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

Версия 1.2

Версия 1.2.0

15 ноября 2023 г.

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

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

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

Версия 1.2.0-rc01

1 ноября 2023 г.

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

Новые возможности

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

Версия 1.2.0-beta04

18 октября 2023 г.

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

Изменения API

Версия 1.2.0-beta03

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

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

Новые возможности

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

Изменения API

  • Укажите требуемую версию расширения SDK окна в общедоступных API.
    • Удалить isXXXSupported в компоненте Activity Embedding. ( Ie3dae )
  • Внедрите WindowSdkExtensions для сообщения версии расширения на устройстве.
    • Ввести RequiresWindowSdkExtension для аннотации минимально необходимой версии расширения. ( I05fd4 )
  • Делает WindowAreaInfo#getCapability необнуляемым. ( 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 Embedding.

Изменения API

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

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

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

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

7 июня 2023 г.

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

Новые возможности

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

Изменения API

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

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

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

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

24 мая 2023 г.

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

Новые возможности

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

Изменения API

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

Версия 1.1

Версия 1.1.0

7 июня 2023 г.

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

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

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

  • Добавлено PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED как логическое свойство тега <application> в манифесте приложения.
  • Устаревший isSplitSupported заменен на splitSupportStatus для предоставления более подробной информации о том, почему функция разделения недоступна.
  • Добавлен вложенный класс SplitController.SplitSupportStatus для предоставления констант состояния для свойства splitSupportStatus .
  • Реорганизовал SplitController в несколько модулей:
    • Модуль ActivityEmbeddingController для API, связанных с Activity или ActivityStack .
    • isActivityEmbedded перемещен из SplitController в ActivityEmbeddingController .
    • Модуль RuleController для операций, связанных с EmbeddingRule :
    • Удалены API SplitController :
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Добавлены API RuleController :
    • addRule() — добавляет правило или обновляет правило с тем же тегом.
    • removeRule() — Удаляет правило из коллекции зарегистрированных правил.
    • setRules() — Устанавливает набор правил.
    • clearRules() — Удаляет все зарегистрированные правила.
    • parseRules() — Анализирует правила из определений правил XML.
  • Все модули требуют инициализации контекста методом #getInstance() , включая:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Добавлен класс EmbeddingAspectRatio для определения констант поведения, подобных перечислению, связанных с соотношением сторон дисплея.
  • Добавлен класс 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() для предоставления дополнительной информации, связанной с разделением.

Расположение окна

  • Добавлена ​​экспериментальная поддержка неактивного контекста пользовательского интерфейса в 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 . Другие свойства перемещаются в setters. Подробности см. в разделе «SplitPairRule.Builder migrations».
    • setFinishPrimaryWithPlaceholder принимает константы, подобные перечислению FinishBehavior . Подробности см. в разделе «Миграции SplitRule».
    • setLayoutDirection(layoutDirection) и setSplitRatio(ratio) изменяются на: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Используйте setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) для отображения разделений на устройствах с портретной ориентацией.

Версия 1.1.0-rc01

10 мая 2023 г.

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

Новые возможности

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

Версия 1.1.0-beta02

5 апреля 2023 г.

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

Новые возможности

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

Версия 1.1.0-beta01

22 марта 2023 г.

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

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

  • Добавлено PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED как логическое свойство тега <application> в манифесте приложения.
  • Устаревший isSplitSupported заменен на splitSupportStatus для предоставления более подробной информации о том, почему функция разделения недоступна.
  • Добавлен вложенный класс SplitController.SplitSupportStatus для предоставления констант состояния для свойства splitSupportStatus .
  • Реорганизовал SplitController в несколько модулей:
    • Модуль ActivityEmbeddingController для API, связанных с Activity или ActivityStack .
    • isActivityEmbedded перемещен из SplitController в ActivityEmbeddingController .
    • Модуль RuleController для операций, связанных с EmbeddingRule :
    • Удалены API SplitController :
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Добавлены API RuleController :
      • addRule() — добавляет правило или обновляет правило с тем же тегом.
      • removeRule() — Удаляет правило из коллекции зарегистрированных правил.
      • setRules() — Устанавливает набор правил.
      • clearRules() — Удаляет все зарегистрированные правила.
      • `parseRules() — Анализирует правила из определений правил XML.
  • Все модули требуют инициализации контекста методом #getInstance() , включая:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Добавлен класс EmbeddingAspectRatio для определения констант поведения, подобных перечислению, связанных с соотношением сторон дисплея.
  • Добавлен класс SplitAttributes для определения разделенного макета.
  • Добавлены функции калькулятора 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() для предоставления дополнительной информации, связанной с разделением.

Расположение окна

  • Добавлена ​​поддержка неактивного контекста пользовательского интерфейса в 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 в Pixels от displayMetrics#density .
  • Константы отделки поведения должны быть перенесены в отдел, как 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 . Другие свойства перемещаются на сетеры. Для получения подробной информации см.
    • setFinishPrimaryWithPlaceholder берет FinishBehavior константы, подобные перечислению, подобные Enum. Смотрите «Миграции Splitrule» для получения подробной информации.
    • setLayoutDirection(layoutDirection) и setSplitRatio(ratio) к: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Используйте setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) , чтобы показать расколы на портретных устройствах.

Версия 1.1.0-Alpha06

22 февраля 2023 г.

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

Новые возможности

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

API меняется

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

Версия 1.1.0-Alpha04

9 ноября 2022 года

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

Новые возможности

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

API меняется

  • Сделайте Val isEmpty Public, чтобы заменить забавную isEmpty .
  • Переименовать действия параметров ActivityStack в действие activitiesInProcess . ( IA5055 )
  • Удалите ActivityFilter#matchesClassName и ActivityFilter#matchesClassNameOrWildCard потому что они сбивают с толку.
  • Добавить ActivityFilter#componentName Absd ActivityFilter#intentAction позволить вызывающему вызывающему различным фильтрам ( i41f22 )
  • Удалить @Deprecated API из экспериментального API ( i216b3 )
  • Удалить @ExperimentalWindowApi для активности, встраиваемые с API ( i69ebe )
  • Скрыть конструктор ActivityRule , вместо этого используйте строитель. ( IF4EB6 )
  • Добавьте API, чтобы проверить, является ли деятельность частью ActivityFilter . ( IA43CF )
  • Обновить файлы API, чтобы отразить изменения в классах WindowMetrics и WindowMetricsCalculatorCompat ( i667fe )
  • Обновление ActivityEmbedding свойство Javadoc и название класса ( IA1386 )
  • Добавление названий тегов свойств ActivityEmbedding , которые будут использоваться в AndroidManifest.xml ( id1ad4 )
  • Добавлен новый API SplitPlaceholderFinishBehavior и SplitPlaceholderRule.finishPrimaryWithPlaceholder , это заменяет существующие SplitPlaceholderRule.finishPrimaryWithSecondary со стороны, который определяет, когда заполняются заполнители, как следует вести связанные активности в вступлении в действие. ( I64647 )

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

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

Версия 1.1.0-Alpha03

27 июля 2022 г.

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

Новые возможности

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

API меняется

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

Версия 1.1.0-Alpha02

11 мая 2022 г.

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

Новые возможности

  • Выпустите библиотеки адаптеров, чтобы поддержать Java и Rxjava.

Версия 1.1.0-Alpha01

11 мая 2022 г.

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

Новые возможности

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

Версия 1.1.0-Alpha01

20 апреля 2022 г.

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

Новые возможности

  • Исправляет ошибку, где фона приложение прекращает излучение функций сгиба.
  • Расширить API экспериментального API.

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-бета04

17 ноября 2021 года

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

Новые возможности

  • Переименовать windowinforePository в windowinfotracker.
  • Сделайте активность явной зависимостью метода для WindowInfotracker.
  • Добавьте простую тестирование для WindowmetricsCalculator, чтобы поддержать разработчиков с помощью Robolectric.

API меняется

  • Экстракт расширения ( i25a5f )
  • Добавить Isempty в ActivityStack ( i5a4e6 )
  • Переименовать windowinforePository в windowinfotracker.
    • Обновите Java/Rxjava/Testing зависимости, чтобы соответствовать. ( I0da63 )
  • Добавьте правило тестирования для простого WindowmetricsCalculator. ( Ibacdb )

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

27 октября 2021 г.

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

Новые возможности

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

API меняется

  • Удалили API CurrentWindowMetrics, так как мы не можем предоставить его точно. Вместо этого используйте WindowmetricsCalculator ( ICDA5F )
  • Обновлено API расширения. ( ICA92B )
  • Добавлен интерфейс для новой функции, которая позволяет внедрять действия и показывает их бок о бок в окне родительской задачи. ( I5711d )
  • Спрятали конструкторы для Windowmetrics и Windowlayoutinfo, используйте вместо этого тестовые API. ( I5a1b5 )
  • Добавьте API, чтобы создать поддельные объекты Windowlayoutinfo. ( I4a2fd )

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

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

1 сентября 2021 года

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

Новые возможности

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

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

18 августа 2021 года

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

Новые возможности

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

API меняется

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

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

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

Версия 1.0.0-Alpha10

4 августа 2021 года

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

Новые возможности

  • Переименовать windownforepo в windowinforePository и настраивать соответствующие классы / файлы.
  • Преобразуйте токовые метрики окна в поток в WindowinForePository, так как значение меняется с течением времени.
  • Переименовать windownforepojavaadapter в windowinforepocallbackadapter
  • Добавить вспомогательный метод для создания объектов тестового складывания
  • Обновление пакетов для групповых классов на основе функции, которую они поддерживают.

API меняется

  • Переименовать Activityext на ActivityExtensions Переход от репо в репозиторий. ( I61a16 )
  • Обновить пакеты для занятий. ( I23ae2 )
  • Удалить Windowmetrics из windownforepo ( i24663 )
  • Удалить Windowmanager и использовать WindowinForePO
    • Сделайте Windowbackend внутренним. ( I06D9A )
  • Преобразовать показатели окон в теку.
    • Переименовать адаптер Java в WindowinForePocallbackAdapter
    • Удалите обратный сигнал, чтобы больше не использовались экспериментальные API. ( IA4D15 )
  • Добавьте вспомогательный метод для создания функций тестового дисплея.
    • Изменить от окклюзионного моде на окклюзионный тип ( if4cff )

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

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

Версия 1.0.0-Alpha09

30 июня 2021 г.

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

Новые возможности

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

API меняется

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

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

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

Версия 1.0.0-Alpha08

16 июня 2021 г.

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

Новые возможности

  • Выпустил артефакт тестирования, чтобы облегчить тестирование при использовании WindowinForePository. Используйте windowinforePository, чтобы получить информацию о фиксациях отображения и Windowmetrics. ( I57f66 , ida620 )

Версия 1.0.0-Alpha07

2 июня 2021 г.

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

Новые возможности

  • Мигрируйте библиотеку ядра в Котлин. Будет использовать CORUTINES и приостановить функции для раскрытия асинхронных данных в будущем.
  • Добавьте windowinforepo в качестве основной точки взаимодействия для получения Windowmetrics и потока Windowlayoutinfo.
  • Новый артефакт window-java для разоблачения API, удобных для Java, для регистрации и отмены обратных вызовов.
  • Новые артефакты window-rxjava2 и window-rxjava3 для выставки Rxjava адаптированных API.

API меняется

  • Добавьте WindowServices , чтобы обеспечить зависимости равномерно.
    • Добавьте API на основе Coroutine, чтобы употреблять информацию о макете окна. ( IAB70F )
  • Мигрируйте библиотеку менеджера по основному управлению в Котлин. ( ICCA34 )

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

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

Версия 1.0.0-Alpha06

5 мая 2021 г.

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

Новые возможности

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

API меняется

  • Добавление котлина в качестве зависимости.
    • Мигрировать основную библиотеку в Котлин. ( IDD995 )
  • Удаленное строитель DisplayFeature . ( I61fa4 )
  • Удален DeviceState из публичного API, используйте вместо этого FoldingFeature . ( ID6079 )
  • Удалить обратный вызов состояния устройства из расширений. ( I5ea83 )
  • Удалите STATE_FLIPPED из FoldingFeature. ( I9c4e1 )
  • Удалить устаревшие методы регистрации. ( IB381B )

Версия 1.0.0-Alpha05

24 марта 2021 года

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

Новые возможности

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

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

API меняется

  • Добавьте удобные методы для работы с FoldingFeatures ( IE733F )
  • Удаляет методы синхронного чтения от Windowmanager ( i96fd4 )

Версия 1.0.0-Alpha04

10 марта 2021 г.

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

Новые возможности

  • Исправляет ошибку, в которой Windowlayoutinfo не испускается, если нет реализации OEM. Теперь мы излучаем пустую windowlayoutinfo.
  • Исправьте ошибку, в которой состояние не обновляется должным образом, если бы состояние шарнира изменилось, когда приложение было фоне. Теперь государство должно быть последовательным.
  • Обновите наши файлы Proguard, чтобы игнорировать предупреждения от зависимостей времени выполнения.

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

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

Версия 1.0.0-Alpha03

18 февраля 2021 г.

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

Новые возможности

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

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

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

Версия 1.0.0-Alpha02

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 можно получить через WindowManager#getCurrentWindowMetrics() и Windowmanager#getMaximumWindowMetrics () API.

API меняется

  • Установите API, которые будут удалены в следующей альфа ( IB7CC4 )
  • Обновления ExtensionInterface , чтобы принять явные ссылки на деятельность. ( I07ded )
  • Представляет API Windowmetrics. ( I3ccee )
  • Удалить методы синхронного чтения из Windowmanager ( i69983 )
  • Сделайте защиту пакета ExtensionWindowBackend. ( IED208 )

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

  • Обновить API ExtensionInterface для принятия визуального контекста. ( I8e827 )

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

  • Merge Devicestate и Windowlayoutinfo, так что его легче получить доступ к данным. ( ID34F4 )

Версия 1.0.0-Alpha01

27 февраля 2020 г.

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

Новые возможности

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