Оконный менеджер

Библиотека Jetpack WindowManager позволяет разработчикам приложений поддерживать новые форм-факторы устройств и многооконные среды. Библиотека предоставляет общую поверхность API для версий API 14 и более поздних версий. Первоначальная версия предназначена для складных устройств, но в будущих версиях будет добавлено больше типов дисплеев и оконных функций.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
2 октября 2024 г. 1.3.0 - - 1.4.0-альфа04

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

Чтобы добавить зависимость от WindowManager, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .

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

Groovy

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

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

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

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

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

Kotlin

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

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

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

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

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

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

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

Создать новую задачу

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

Версия 1.4

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

2 октября 2024 г.

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

Изменения API

  • Добавлен метод вычисления WindowSizeClass из WindowMetrics . ( 874 дБА )
  • Для ясности измените методы 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 , б/364677934 , б/364677802 , б/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 . ( Если89а6 )
  • Обновите API WindowSizeClass , чтобы в будущем поддерживать добавление новых значений точек останова. Вместо абсолютных границ мы используем нижние границы и рекомендуем разработчикам использовать проверки нижних границ при обработке WindowSizeClass . Существующие классы WindowWidthSizeClass и WindowHeightSizeClass станут устаревшими, поскольку они не будут развиваться дальше. ( I014ce )

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

7 августа 2024 г.

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

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

  • Закрепление ActivityStack позволяет приложениям закреплять контент в одном контейнере и изолировать навигацию от другого контейнера.
  • Интерактивный разделитель позволяет приложениям отображать фиксированный или перетаскиваемый разделитель между двумя действиями в разделенной презентации.
  • Полноэкранное затемнение диалога позволяет приложениям указывать затемненную область диалогового окна, чтобы либо затемнить все окно задачи, либо затемнить только контейнер, в котором отображается диалоговое окно.
  • Обратный вызов встроенной информации об окне активности позволяет приложениям постоянно получать обновления встроенного окна активности.
  • Внедрение фона анимации позволяет приложениям указывать фон анимации, улучшая качество анимации перехода при использовании 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 )

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

  • Исправлена ​​ошибка на некоторых устройствах, из-за которой вместо ACTIVE возвращалось значение UNAVAILABLE, когда сеанс активен.
  • Удалена поддержка 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 , б/345472586 )
  • Разрешить расширениям принимать параметры анимации для SplitAttributes , чтобы устройство могло использовать их для переходов анимации. ( Иеде00 )
  • Скрыть API-интерфейсы наложения ( Ic4251 )
  • Представление API для настройки фиксированного или перетаскиваемого разделителя для разделения ( Ia7a78 ).
  • Добавлена ​​плотность в WindowMetrics ( Id6723 ).
  • Добавьте API, чтобы получить SupportedPostures . ( Если557а )
  • Удалить 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 , б/302380585 )

Версия 1.3

Версия 1.3.0

29 мая 2024 г.

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

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

  • Многоплатформенная поддержка Kotlin для классов размера окон.

Версия 1.3.0-rc01

14 мая 2024 г.

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

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

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

1 мая 2024 г.

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

Изменения API

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

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

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

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

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 , б/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 )
  • Добавьте удобную функцию для создания класса размера по ширине, высоте и плотности. ( Если67f4 )

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

  • Исправлено исключение, когда значение с плавающей запятой усекается до 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-бета04

18 октября 2023 г.

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

Изменения API

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

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

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

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

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

Изменения API

  • Аннотируйте требуемую версию расширения Windows SDK в общедоступных API.
    • Удалите isXXXSupported в компоненте «Внедрение действий». ( Ie3dae )
  • Введите WindowSdkExtensions , чтобы сообщить версию расширения на устройстве.
    • Введите RequiresWindowSdkExtension , чтобы указать минимально необходимую версию расширения. ( I05fd4 )
  • Делает WindowAreaInfo#getCapability необнуляемым. ( I17048 )

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

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 для поддержки модульного тестирования при внедрении действий.

Изменения 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 , чтобы указать, доступно ли внедрение активности. ( 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 для поддержки переопределений WindowLayoutInfo на основе Context . ( я2037а )

Версия 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 для определения макета разделения.
  • В SplitController добавлены функции калькулятора SplitAttributes для настройки разделенных макетов:
    • 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 . Другие свойства перемещаются в сеттеры. Подробности см. в разделе «Миграции 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-бета01

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

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

22 февраля 2023 г.

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

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

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

Изменения API

  • Добавьте splitSupportStatus , чтобы указать, доступно ли внедрение активности. ( I10024 )
  • Сделать API контекста пользовательского интерфейса WindowLayoutInfo экспериментальным. ( I58ee0 )
  • Представляет WindowAreaController и API, позволяющие включить режим RearDisplay для перемещения текущего окна на дисплей, совмещенный с задней камерой. ( Иффкбф )
  • Обновить цвет фона по умолчанию. ( I1ac1b )
  • Добавьте параметры SplitAttributes . ( I18bdd )
  • Добавьте API для SplitRule , SplitAttributes , SplitAttributesCalculator . ( I92d23 )
  • Улучшите API-интерфейсы maxAspectRatio :
    1. Замените alwaysAllow() и alwaysDisallow() на ALWAYS_ALLOW и ALWAYS_DISALLOW .
    2. Обновите документацию по API @see с помощью отдельной документации. ( I3057b )
  • Следующие конструкторы удалены из общедоступных API, поскольку приложения не должны вызывать их.
    • Конструктор SplitInfo
    • Конструктор ActivityStack ( Ide534 )
  • SplitRule теперь принимает maxAspectRatioInPortrait/Landscape . Он позволяет разделить действия только в том случае, если соотношение сторон родительских границ меньше или равно запрошенному maxAspectRatio . ( Я5990 )
  • Измените RuleController#parseRules на статический ( I785df )
  • Улучшите API-интерфейсы ActivityEmbedding.
    1. Согласуйте именование API. Используйте добавление/удаление для нескольких экземпляров:
    2. registerRule меняется на addRule
    3. unregisterRule меняется на removeRule
    4. Замените getSplitRules на getRules , поскольку ActivityRule не является правилом разделения.
    5. Добавьте RuleController#setRules чтобы установить набор правил.
    6. Извлеките API-интерфейсы, связанные с правилами, из SplitController в одноэлементный RuleController . Они есть:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. 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-альфа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, чтобы получить информацию о фиксациях отображения и Windowmetrics. ( I57f66 , ida620 )

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

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

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

24 марта 2021 г.

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

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

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

Мы удаляем методы синхронного чтения от 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 отсутствует. ( IDE935 )

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

18 февраля 2021 г.

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

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

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

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

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

Версия 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 можно получить через 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-альфа01

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 и т. Д.)
,

Windowmanager

Библиотека JetPack Windowmanager позволяет разработчикам приложений поддерживать новые форм-факторы устройства и среды с несколькими окнами. Библиотека обеспечивает общую поверхность API для версий API 14 и более поздней. Первоначальный выпуск предназначен для складных устройств, но будущие версии будут распространяться на большее количество типов дисплеев и функций окон.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
2 октября 2024 г. 1.3.0 - - 1.4.0-Альфа04

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

Чтобы добавить зависимость от Windowmanager, вы должны добавить репозиторий Google Maven в свой проект. Для получения дополнительной информации прочтите репозиторий Google Maven .

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

Groovy

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

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

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

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

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

Kotlin

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

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

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

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

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

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

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

Создать новую задачу

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

Версия 1.4

Версия 1.4.0-Alpha04

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-Alpha03

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

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

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

  • Добавьте метод утилиты, чтобы получить WindowSizeClass от WindowMetrics . ( I83f1f )
  • Переименуйте isAtLeast в containsBreakpoint . ( I85b47 )
  • Добавьте перегрузку в computeWindowSizeClass с помощью Floats. ( I3dcb2 , b/364677934 , b/364677802 , b/364680886 )

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

  • Добавьте отсутствующие точки останова в набор точки останова WindowSizeClass умолчанию по умолчанию.
  • Исправлена ​​ошибка, в которой в некоторых случаях не выбираются компактные размеры.

Версия 1.4.0-Alpha02

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

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

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

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

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

Изменения API

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

Версия 1.4.0-Alpha01

7 августа 2024 г.

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

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

  • Пиннинг ActivityStack позволяет приложениям прикреплять контент в одном контейнере и выделять навигацию из другого контейнера.
  • Interactive Divider позволяет приложениям отображать фиксированную или перетаскиваемую разделитель между двумя действиями в разделенной презентации.
  • Полноэкранное диалоговое за Fum Limming позволяет приложениям указать область DIGAG DIM, либо размять все окно задачи, либо только размять контейнер, который показывает диалоговое окно.
  • Встроенный окно активности Информация о обратном вызове позволяет приложениям постоянно получать обновления встроенного окна активности.
  • Встроенный фон анимации позволяет приложениям указывать фон анимации, улучшая качество анимации перехода при использовании ActivityEmbedding .
  • Улучшение управления ActivityStack позволяет приложениям иметь больше контроля над ActivityStacks , когда используется ActivityEmbedding , включая:
  • Запуск деятельности в указанный ActivityStack
  • Завершение ActivityStack

Изменения API

  • Новый API WindowInfoTracker#supportedPostures

    • API, чтобы определить, поддерживает ли устройство режим настольного режима для складываемых. Добавляет windowareasessionPresenter#GetWindow
  • Добавьте API в поддержку Pinning ActivityStack :

    • SplitPinRule Class
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • Добавить API, чтобы включить и настроить интерактивное разделитель

    • DividerAttributes Class
    • SplitAttributes.Builder#setDividerAttributes
  • Добавить API для установки EmbeddingConfiguration и DimAreaBehavior для диалогов

    • Класс EmbeddingConfiguration
    • DimAreaBehavior Class
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • Добавить API для получения встроенных обновлений окна активности

    • EmbeddedActivityWindowInfo Class
    • 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 )

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

  • Исправляет ошибку на определенных устройствах, где недоступные будут возвращены вместо активности, когда сеанс активен.
  • Удаляет поддержку transferActivityToWindowArea на устройствах с vendorApiLevel 2 из 2 из -за нестабильной поддержки API.
  • Введите API, чтобы включить Drag-to-FullScreen для активности, внедряющего драгбейный разделитель. ( I645c9 )
  • Позвольте приложениям отключить анимацию ActivityEmbedding через анимационные параметры для SplitAttributes . ( IDC01A )
  • Убрано ручное определение доступа к API новой платформы, поскольку это происходит автоматически посредством моделирования API при использовании R8 с AGP 7.3 или новее (например, R8 версии 3.3) и для всех сборок при использовании AGP 8.1 или новее (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется выполнить обновление до D8 версии 8.1 или более поздней. Более подробную информацию можно найти в этой статье . ( Ia60e0 , б/345472586 )
  • Позвольте расширениям принимать анимационные параметры для SplitAttributes . ( Iede00 )
  • Скрыть API наложения ( IC4251 )
  • Введите API для настройки фиксированного или перетаскиваемого разделителя для разделения ( IA7A78 )
  • Добавлена ​​плотность к WindowMetrics ( ID6723 )
  • Добавьте API, чтобы получить SupportedPostures . ( If557a )
  • Удалить setLaunchingActivityStack из экспериментального API ( I191CF )
  • Введение ActivityEmbeddingController#embeddedActivityWindowInfo ( I24312 )
  • Установите #getToken и добавьте #getActivityStackToken ( IE0471 )
  • Введите адаптер обратного вызова для embeddedActivityWindowInfo Flow API ( IDA77F )
  • Добавить адаптер обратного вызова для API потока Overtayinfo ( i7264f )
  • Введите WindowSdkExtensionsRule , чтобы переопределить extensionsVersion для тестирования. ( IFB928 )
  • - Перенос #setLaunchingActivityStack , чтобы объединить, чтобы совместно с использованием 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 )
  • - Добавление PIN/Uncin Top ActivityStack androidx.Window APIS
    • Обновление демонстрационного приложения, чтобы разрешить PIN/UNCIN Top 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

  • Котлин многоплатформенная поддержка для классов размера окна.

Версия 1.3.0-rc01

14 мая 2024 г.

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

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

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

1 мая 2024 г.

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

Изменения API

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

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

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

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

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 класса размера окна, для повышения гибкости для разработчиков, которые хотят использовать свои классы собственного размера.

Изменения 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 содержит эти коммиты.

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

  • Выставьте экспериментальные APIS для доступа к заднему экрану.
  • Тестовые 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

  • Выставьте экспериментальные APIS для доступа к заднему экрану.
  • Тестовые 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 содержит эти коммиты.

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

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

Версия 1.2.0-бета04

18 октября 2023 г.

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

Изменения API

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

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

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

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

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

Изменения API

  • Аннотируйте необходимое окно для расширения SDK версии на общедоступных API.
    • Снимите isXXXSupported в компоненте встраивания активности. ( IE3DAE )
  • Введите WindowSdkExtensions , чтобы сообщить о расширении версии на устройстве.
    • Введите RequiresWindowSdkExtension для аннотирования минимальной необходимой версии расширения. ( I05fd4 )
  • Делает WindowAreaInfo#getCapability не нулевой. ( I17048 )

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

26 июля 2023 г.

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

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

  • Выставьте экспериментальные APIS для доступа к заднему экрану.
  • Тестовые 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, чтобы поддержать одновременные дисплеи.
  • Добавьте свойство, чтобы отказаться от вынужденного переопределения размера.
  • Добавьте свойство, чтобы отказаться от Min Asposio Catio. Переопределение.
  • Стабилизация ActivityEmbeddingRule

Изменения API

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

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

  • Добавление свойства отказа от Compat для переопределения Force Cressize ( IE7AB1 )
  • Удаляет SESSION_STATE_CONTENT_INVISIBLE из интерфейса расширений. ( I6ed19 )
  • Стабилизация ActivityEmbeddingRule ( I8d6b6 )
  • Добавление свойства отказа от Compat для переопределения соотношения магистра. ( I66390 )
  • Удаление устаревшего API Windowarea ( IEB67C )
  • Переименовать свойство запроса на ориентацию на PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED . ( IE2FBD )
  • Обновления постоянных имен сеанса окна ( i83675 )
  • Добавление свойства отказа от Compat, которое игнорирует цикл запроса ориентации при обнаружении ( I0A7A2 )
  • Добавьте WindowAreaComponent#STATUS_ACTIVE чтобы показать, что функция уже активна. ( I62bc3 )
  • Добавить API 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 для настройки запасного типа Split. ( IFCC59 )
  • Установите add / removeSplitCallback
    • Переместите add / removeSplitCallback в SplitControllerCallbackAdapter
    • Добавить поддержку Flow , чтобы получить список SplitInfo ( i7f1b6 )
  • Добавьте правило теста для ActivityEmbeddingController ( i42e9b )
  • Переименование ActivityOptionsCompat в ActivityEmbeddingOptions ( I89301 )
  • Добавьте splitSupportStatus , чтобы указать, доступно ли встраивание активности. ( I10024 )
  • Представьте SplitAttributes.BackgroundColor , чтобы лучше представлять значение DEFAULT . Уточните, что цвет фона анимации, не являющегося анимацией, не поддерживается, поэтому любые непак-цвета будут рассматриваться как по умолчанию, что означает использование текущего цвета фона окна темы. ( IC6B95 )
  • Замените alwaysAllow() и ALWAYS_ALLOW alwaysDisallow() на ALWAYS_DISALLOW . ( I3057b )
  • Добавьте API для SplitRule , SplitAttributes , SplitAttributesCalculator . ( I92d23 )
  • Добавить TestActivityStack для создания ActivityStack для тестирования
    • Добавьте TestSplitInfo для создания SplitInfo для тестирования. ( I8e779 )
  • Добавьте способ SplitAttributesCalculator фальшивые SplitAttributesCalculatorParams .
  • Добавить 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 вокруг встраивания активности и WindowLayoutInfoTracker . ActivityEmbeddingRule была способна стабильно. WindowMetricsCalculatorRule был продвинут до стабильной. Функции утилиты для создания FoldingFeature для тестирования были продвинуты до стабильной.

Изменения API

  • Стабилизация ActivityEmbeddingRule ( 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 .
  • Refactored SplitController на несколько модулей:
    • ActivityEmbeddingController Module для Activity или API -интерфейсов, связанных с 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 для настройки макетов Split:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() Чтобы проверить, поддерживаются ли API SplitAttributesCalculator
  • Добавлен поле EmbeddingRule#tag .
  • API updates in SplitRule :
    • Added defaultSplitAttributes — Defines the default split layout of a split; replaces splitRatio and layoutDirection .
    • Added translation of the XML properties splitRatio and splitLayoutDirection to defaultSplitAttributes .
    • Changed minimum dimension definitions to use density-independent pixels (dp) instead of pixels.
    • Added minHeightDp with default value 600dp.
    • Changed minWidth to minWidthDp with default value 600dp.
    • Changed minSmallestWidth to minSmallestWidthDp with default value 600dp.
    • Added maxAspectRatioInHorizontal with default value ALWAYS_ALLOW .
    • Added maxAspectRatioInPortrait with default value 1.4.
    • Defined FinishBehavior nested class to replace finish behavior constants.
    • Applied the property changes to the Builder nested class of SplitPairRule and SplitPlaceholderRule .
  • Replaced SplitInfo#getSplitRatio() with SplitInfo#getSplitAttributes() to provide additional split-related information.

WindowLayout

  • Added experimental non-activity UI context support to WindowInfoTracker .
  • Added experimental non-activity UI context to WindowMetricsCalculator .

Migration Steps

  • To enable activity embedding to display activities in splits, apps must add the PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED property to the manifest <application> tag: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> This allows the system to optimize the split behaviors for an application ahead of time.
  • SplitInfo ratio
    • Check if the current split is stacked: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Check the current ratio: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController migrations:
    • SplitController.getInstance() changes to SplitController.getInstance(Context) .
    • SplitController.initialize(Context, @ResId int) changes to RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) .
    • SplitController.getInstance().isActivityEmbedded(Activity) changes to ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) .
    • SplitController.getInstance().registerRule(rule) changes to RuleController.getInstance(Context).addRule(rule) .
    • SplitController.getInstance().unregisterRule(rule) changes to RuleController.getInstance(Context).removeRule(rule) .
    • SplitController.getInstance().clearRegisteredRules() changes to RuleController.getInstance(Context).clearRules() .
    • SplitController.getInstance().getSplitRules() changes to RuleController.getInstance(Context).getRules() .
  • SplitRule property migrations:
    • minWidth and minSmallestWidth now use dp units instead of pixels. Apps can use the following call: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) or simply divide minWith in pixels by displayMetrics#density .
  • Finish behavior constants must be migrated to FinishBehavior enum-like class constants:
    • FINISH_NEVER changes to FinishBehavior.NEVER .
    • FINISH_ALWAYS changes to FinishBehavior.ALWAYS .
    • FINISH_ADJACENT changes to FinishBehavior.ADJACENT .
  • Layout direction must be migrated to SplitAttributes.LayoutDirection :
    • ltr changes to SplitAttributes.LayoutDirection.LEFT_TO_RIGHT .
    • rtl changes to SplitAttributes.LayoutDirection.RIGHT_TO_LEFT .
    • locale changes to SplitAttributes.LayoutDirection.LOCALE .
    • splitRatio must be migrated to SplitAttributes.SplitType.ratio(splitRatio) .
  • SplitPairRule.Builder migrations:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) changes to kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) and setSplitRatio(ratio) changes to kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary and setFinishSecondaryWithPrimary take the FinishBehavior enum-like constants. See “SplitRule migrations” for details.
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) to show splits on portrait devices.
  • SplitPlaceholder.Builder migrations:
    • Has only filters and placeholderIntent parameters. Other properties move to setters. See “SplitPairRule.Builder migrations” for details.
    • setFinishPrimaryWithPlaceholder takes the FinishBehavior enum-like constants. See “SplitRule migrations” for details.
    • setLayoutDirection(layoutDirection) and setSplitRatio(ratio) change to: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) to show splits on portrait devices.

Version 1.1.0-rc01

10 мая 2023 г.

androidx.window:window-*:1.1.0-rc01 is released. Version 1.1.0-rc01 contains these commits.

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

  • Release ActivityEmbedding as a stable API.
  • Various bug fixes.

Version 1.1.0-beta02

5 апреля 2023 г.

androidx.window:window-*:1.1.0-beta02 is released. Version 1.1.0-beta02 contains these commits.

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

  • Internal fixes and clean up.

Version 1.1.0-beta01

22 марта 2023 г.

androidx.window:window-*:1.1.0-beta01 is released. Version 1.1.0-beta01 contains these commits.

Activity Embedding

  • Added PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED as a boolean property of the <application> tag in the app manifest.
  • Deprecated isSplitSupported and replaced with splitSupportStatus to provide more detailed information about why the split feature is not available.
  • Added the SplitController.SplitSupportStatus nested class to provide state constants for the splitSupportStatus property.
  • Refactored SplitController to several modules:
    • ActivityEmbeddingController module for Activity or ActivityStack related APIs.
    • Moved isActivityEmbedded from SplitController to ActivityEmbeddingController .
    • RuleController module for EmbeddingRule related operations:
    • Removed SplitController APIs:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Added RuleController APIs:
      • addRule() — Adds a rule or updates the rule that has the same tag.
      • removeRule() — Removes a rule from the collection of registered rules.
      • setRules() — Establishes a collection of rules.
      • clearRules() — Removes all registered rules.
      • `parseRules() — Parses rules from XML rule definitions.
  • All modules require a context to be initialized by #getInstance() method, including:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Added the EmbeddingAspectRatio class to define enum-like behavior constants related to display aspect ratio.
  • Added the SplitAttributes class to define the split layout.
  • Added SplitAttributes calculator functions to SplitController to customize split layouts:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() to check if the SplitAttributesCalculator APIs are supported on the device
  • Added EmbeddingRule#tag field.
  • API updates in SplitRule :
    • Added defaultSplitAttributes — Defines the default split layout of a split; replaces splitRatio and layoutDirection .
    • Added translation of the XML properties splitRatio and splitLayoutDirection to defaultSplitAttributes .
    • Changed minimum dimension definitions to use density-independent pixels (dp) instead of pixels.
    • Added minHeightDp with default value 600dp.
    • Changed minWidth to minWidthDp with default value 600dp.
    • Changed minSmallestWidth to minSmallestWidthDp with default value 600dp.
    • Added maxAspectRatioInHorizontal with default value ALWAYS_ALLOW .
    • Added maxAspectRatioInPortrait with default value 1.4 .
    • Defined FinishBehavior nested class to replace finish behavior constants.
    • Applied the property changes to the Builder nested class of SplitPairRule and SplitPlaceholderRule .
  • Replaced SplitInfo#getSplitRatio() with SplitInfo#getSplitAttributes() to provide additional split-related information.

WindowLayout

  • Added non-activity UI context support to WindowInfoTracker .
  • Added non-activity UI context to WindowMetricsCalculator .

Migration Steps

  • To enable activity embedding to display activities in splits, apps must add the PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED property to the manifest <application> tag: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> This allows the system to optimize the split behaviors for an application ahead of time.
  • SplitInfo ratio
    • Check if the current split is stacked: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Check the current ratio: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController migrations:
    • SplitController.getInstance() changes to SplitController.getInstance(Context) .
    • SplitController.initialize(Context, @ResId int) changes to RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) .
    • SplitController.getInstance().isActivityEmbedded(Activity) changes to ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) .
    • SplitController.getInstance().registerRule(rule) changes to RuleController.getInstance(Context).addRule(rule) .
    • SplitController.getInstance().unregisterRule(rule) changes to RuleController.getInstance(Context).removeRule(rule) .
    • SplitController.getInstance().clearRegisteredRules() changes to RuleController.getInstance(Context).clearRules() .
    • SplitController.getInstance().getSplitRules() changes to RuleController.getInstance(Context).getRules() .
  • SplitRule property migrations:
    • minWidth and minSmallestWidth now use dp units instead of pixels. Apps can use the following call: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) or simply divide minWith in pixels by displayMetrics#density .
  • Finish behavior constants must be migrated to FinishBehavior enum-like class constants:
    • FINISH_NEVER changes to FinishBehavior.NEVER .
    • FINISH_ALWAYS changes to FinishBehavior.ALWAYS .
    • FINISH_ADJACENT changes to FinishBehavior.ADJACENT .
  • Layout direction must be migrated to SplitAttributes.LayoutDirection :
    • ltr changes to SplitAttributes.LayoutDirection.LEFT_TO_RIGHT .
    • rtl changes to SplitAttributes.LayoutDirection.RIGHT_TO_LEFT .
    • locale changes to SplitAttributes.LayoutDirection.LOCALE .
    • splitRatio must be migrated to SplitAttributes.SplitType.ratio(splitRatio) .
  • SplitPairRule.Builder migrations:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) changes to kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) and setSplitRatio(ratio) change to kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary and setFinishSecondaryWithPrimary take the FinishBehavior enum-like constants. See “SplitRule migrations” for details.
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) to show splits on portrait devices.
  • SplitPlaceholder.Builder migrations:
    • Has only filters and placeholderIntent parameters. Other properties move to setters. See “SplitPairRule.Builder migrations” for details.
    • setFinishPrimaryWithPlaceholder takes the FinishBehavior enum-like constants. See “SplitRule migrations” for details.
    • setLayoutDirection(layoutDirection) and setSplitRatio(ratio) change to: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) to show splits on portrait devices.

Version 1.1.0-alpha06

22 февраля 2023 г.

androidx.window:window-*:1.1.0-alpha06 is released. Version 1.1.0-alpha06 contains these commits.

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

  • Expose experimental version of getting the WindowLayoutInfo from a UI context.

Изменения API

  • Add splitSupportStatus to indicate if Activity embedding is available. ( I10024 )
  • Make UI Context WindowLayoutInfo API as experimental. ( I58ee0 )
  • Introduces the WindowAreaController and API's to enable RearDisplay Mode to move the current window to the display that is aligned with the rear camera. ( Iffcbf )
  • Update default background color. ( I1ac1b )
  • Add SplitAttributes params. ( I18bdd )
  • Add APIs for SplitRule , SplitAttributes , SplitAttributesCalculator . ( I92d23 )
  • Improve the APIs around maxAspectRatio :
    1. Replace alwaysAllow() and alwaysDisallow() with ALWAYS_ALLOW and ALWAYS_DISALLOW .
    2. Update API documentation of @see with standalone documentation. ( I3057b )
  • The following constructors are removed from public APIs because they are not supposed to be called by apps.
    • SplitInfo constructor
    • ActivityStack constructor ( Ide534 )
  • SplitRule now takes maxAspectRatioInPortrait/Landscape . It only allows activities split when the aspect ratio of the parent bounds is smaller or equal to the requested maxAspectRatio . ( Ia5990 )
  • Change RuleController#parseRules to be static ( I785df )
  • Improve the APIs around ActivityEmbedding
    1. Align the API naming - Use add/remove for multiple instances:
    2. registerRule changes to addRule
    3. unregisterRule changes to removeRule
    4. Replace getSplitRules with getRules since ActivityRule is not a split rule
    5. Add RuleController#setRules to set a bunch of rules
    6. Extract rule related APIs from SplitController to singleton RuleController . Они есть:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Extract #isActivityEmbedded from SplitController to singleton ActivityEmbeddingController . Они есть:
    14. isActivityEmbedded
    15. Remove SplitController#initialize . To set rules from XML file, please use RuleController#parseRules and #setRules . Before this change: SplitController.initialize(context, R.xml.static_rules) After this change: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. We don't distinguish static rules with runtime rules anymore. That said, calling #clearRules results to clear all rules no matter they are registered with static XML rule definitions or at runtime. To hav the legacy behavior of SplitController#clearRegisteredRules , please call RuleController#parseRules with the XML resources id and call RuleController#setRules to set back the rules again. Before this change: SplitController.getInstance(context).clearRegisteredRules() After this change: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) ( Ib3967 )
  • Improve the SplitRule APIs:
    1. Take min dimensions in DP instead of pixels for SplitRule .
    2. Refactor for SplitRule Builder to take min dimensions as optional. ( I95f17 )
  • Pass a Context to initialize SplitController ( I42549 )
  • Renamed SplitRule#layoutDir to #layoutDirection and SplitRule Builder#setLayoutDir to Builder#setLayoutDirection . ( I3f6d1 )

Version 1.1.0-alpha04

9 ноября 2022 г.

androidx.window:window-*:1.1.0-alpha04 is released. Version 1.1.0-alpha04 contains these commits.

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

  • Expose a method to determine if an ActivityStack is empty for ActivityEmbedding .
  • Removed experimental API tags from ActivityEmbedding APIs.
  • Hide ActivityRule constructor as the Builder is the preferred way to construct.
  • Add an experimental method to get the WindowInsets on WindowMetrics .
  • Update SplitPlaceholderFinishBehavior to prevent finishing the placeholder. Finishing the placeholder caused some confusing behavior.

Изменения API

  • Make val isEmpty public to replace fun isEmpty .
  • Rename ActivityStack parameter activities to activitiesInProcess . ( Ia5055 )
  • Remove ActivityFilter#matchesClassName and ActivityFilter#matchesClassNameOrWildCard because they are confusing.
  • Add ActivityFilter#componentName abd ActivityFilter#intentAction to allow the caller to distinguish different filters ( I41f22 )
  • Remove the @Deprecated APIs from the experimental API ( I216b3 )
  • Remove @ExperimentalWindowApi for Activity Embedding APIs ( I69ebe )
  • Hide ActivityRule constructor, use Builder instead. ( If4eb6 )
  • Add APIs to check if an Activity is part of the ActivityFilter . ( Ia43cf )
  • Update API files to reflect changes in WindowMetrics and WindowMetricsCalculatorCompat classes ( I667fe )
  • Update ActivityEmbedding Property Javadoc and class name ( Ia1386 )
  • Adding ActivityEmbedding property tag names to be used in AndroidManifest.xml ( Id1ad4 )
  • Added new API SplitPlaceholderFinishBehavior and SplitPlaceholderRule.finishPrimaryWithPlaceholder , this replaces existing SplitPlaceholderRule.finishPrimaryWithSecondary which defines when placeholder activites are finished, how associated activites in Activity Embedding should behave. ( I64647 )

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

  • Introduces the WindowAreaController and API's to enable RearDisplay Mode to move the current window to the display that is aligned with the rear camera. ( I388ab )

Version 1.1.0-alpha03

27 июля 2022 г.

androidx.window:window-*:1.1.0-alpha03 is released. Version 1.1.0-alpha03 contains these commits.

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

  • Update the default values for embedding rules.

Изменения API

  • Update default values for embedding rule properties. ( Ic4d35 )

Version 1.1.0-alpha02

11 мая 2022 г.

androidx.window:window-*:1.1.0-alpha02 is released. Version 1.1.0-alpha02 contains these commits.

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

  • Release the adapter libraries to support Java and RxJava.

Version 1.1.0-alpha01

11 мая 2022 г.

androidx.window:window-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

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

  • Release adapters to support java and RxJava

Version 1.1.0-alpha01

20 апреля 2022 г.

androidx.window:window:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

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

  • Fixes a bug where backgrounding an app stops emitting fold features.
  • Expand on the experimental ActivityEmbedding API.

Изменения API

  • A public API to check if an activity is being embedded. ( I39eb7 )

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

  • Add APIs that customize finishing behavior for containers in activity splits ( I1a1e4 )
  • Added a new configuration option for activity split rules. ( Iec6af )

Версия 1.0

Версия 1.0.0

January 26, 2022

androidx.window:window-*:1.0.0 is released. Version 1.0.0 contains these commits.

Major features of 1.0.0

  • Support for folding phones through WindowInfoTracker and FoldingFeature . WindowMetricsCalculator to help calculate the current WindowMetrics.

Версия 1.0.0-RC01

15 декабря 2021 г.

androidx.window:window-*:1.0.0-rc01 is released. Version 1.0.0-rc01 contains these commits.

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

  • Add support for folding phones through WindowInfoTracker .
  • Add methods to calculate the current and maximum WindowMetrics .
  • Add supporting test APIs.

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

17 ноября 2021 г.

androidx.window:window-*:1.0.0-beta04 is released. Version 1.0.0-beta04 contains these commits.

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

  • Rename WindowInfoRepository to WindowInfoTracker.
  • Make Activity an explicit method dependency for WindowInfoTracker.
  • Add a simple TestRule for WindowMetricsCalculator to support developers using Robolectric.

Изменения API

  • Extract extensions ( I25a5f )
  • add isEmpty in ActivityStack ( I5a4e6 )
  • Rename WindowInfoRepository to WindowInfoTracker.
    • Update java/rxjava/testing dependencies to match. ( I0da63 )
  • Add a test rule for a simple WindowMetricsCalculator. ( Ibacdb )

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

October 27, 2021

androidx.window:window-*:1.0.0-beta03 is released. Version 1.0.0-beta03 contains these commits.

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

  • Add experimental Activity Embedding APIs. This initial layout version allows showing two Activities side by side.

Изменения API

  • Removed the currentWindowMetrics API since we can not provide it accurately. Please use WindowMetricsCalculator instead ( Icda5f )
  • Updated the extensions api. ( Ica92b )
  • Added an interface for a new feature that allows embedding activities and showing them side-by-side within the parent task window. ( I5711d )
  • Hid the constructors for WindowMetrics and WindowLayoutInfo, please use the test APIs instead. ( I5a1b5 )
  • Add an API to create fake WindowLayoutInfo objects. ( I4a2fd )

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

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

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

androidx.window:window-*:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.

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

  • Add an experimental annotation to annotate experimental APIs. ( I9f1b6 )
  • Add a test method to create a test FoldingFeature that accepts a Rect. This will make it easie to test when using Robolectric as opposed to an actual Activity. ( Id1cca )

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

August 18, 2021

androidx.window:window-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.

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

  • Removed old constants and made FoldingFeature into an interface.

Изменения API

  • Remove old constants and make FoldFeature an interface. ( I9a2d5 )

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

  • Libraries that depend on the Test Core library have been upgraded to version 1.4.0 and will now work with Android platform version S. ( I88b72 , b/189353863 )

Version 1.0.0-alpha10

4 августа 2021 г.

androidx.window:window-*:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.

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

  • Rename WindowInfoRepo to WindowInfoRepository and adjust corresponding classes / files.
  • Convert current window metrics to a Flow in WindowInfoRepository since the value changes over time.
  • Rename WindowInfoRepoJavaAdapter to WindowInfoRepoCallbackAdapter
  • Add helper method to create test FoldingFeature objects
  • Update packages to group classes based on the feature they are supporting.

Изменения API

  • Rename ActivityExt to ActivityExtensions Change from Repo to Repository. ( I61a16 )
  • Update packages for classes. ( I23ae2 )
  • Remove WindowMetrics from WindowInfoRepo ( I24663 )
  • Remove WindowManager and use WindowInfoRepo
    • Make WindowBackend internal. ( I06d9a )
  • Convert window metrics to Flow.
    • Rename java adapter to WindowInfoRepoCallbackAdapter
    • Remove callbackFlow so no more experimental APIs are in use. ( Ia4d15 )
  • Add helper method to create test display features.
    • Change from occlusionMode to occlusionType ( If4cff )

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

  • Fix proguard error where core library was being removed.
  • Fix error where WindowLayoutInfo was not being delivered to additional subscribers.
  • Fix error where config changes would not trigger folding feature updates.

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

June 30, 2021

androidx.window:window-*:1.0.0-alpha09 is released. Версия 1.0.0-alpha09 содержит эти коммиты.

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

  • Change from integer constants to unbounded enums.
  • Add a test util to create test folding features.

Изменения API

  • Add helper method to create test display features. ( I3cf54 )
    • Change from occlusionMode to occlusionType .

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

  • Emit initial value when adding multiple consumers of the data streams.

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

16 июня 2021 г.

androidx.window:window-*:1.0.0-alpha08 is released. Версия 1.0.0-alpha08 содержит эти коммиты.

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

  • Released a testing artifact to make it easier to test when using WindowInfoRepository. Use WindowInfoRepository to get information about DisplayFeatures and the WindowMetrics. ( I57f66 , Ida620 )

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

2 июня 2021 г.

androidx.window:window-*:1.0.0-alpha07 is released. Версия 1.0.0-alpha07 содержит эти коммиты.

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

  • Migrate core window library to Kotlin. Will use coroutines and suspend functions to expose asynchronous data going forward.
  • Add WindowInfoRepo as the main interaction point for getting the WindowMetrics and the stream of WindowLayoutInfo.
  • New window-java artifact to expose Java-friendly APIs to register and unregister callbacks.
  • New window-rxjava2 and window-rxjava3 artifacts to expose RxJava adapted APIs.

Изменения API

  • Add WindowServices to provide dependencies uniformly.
    • Add coroutine based api to consume window layout info. ( Iab70f )
  • Migrate core window manager library to Kotlin. ( Icca34 )

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

  • Add new data class to represent feature bounds. ( I6dcd1 )

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

May 5, 2021

androidx.window:window:1.0.0-alpha06 is released. Версия 1.0.0-alpha06 содержит эти коммиты.

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

  • We have started our migration to Kotlin and will finish in the next release.
  • DeviceState has been removed from the public API, please use FoldingFeature instead.
  • We have removed STATE_FLIPPED from the FoldingFeature states since it is not supported by any use-case at the moment.
  • We have also removed other deprecated APIs.

Изменения API

  • Adding Kotlin as a dependency.
    • Migrate core library to Kotlin. ( Idd995 )
  • Removed DisplayFeature builder. ( I61fa4 )
  • Removed DeviceState from public api, use FoldingFeature instead. ( Id6079 )
  • Remove device state callback from extensions. ( I5ea83 )
  • Remove STATE_FLIPPED from FoldingFeature. ( I9c4e1 )
  • Remove deprecated registration methods. ( Ib381b )

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

24 марта 2021 г.

androidx.window:window:1.0.0-alpha05 is released. Версия 1.0.0-alpha05 содержит эти коммиты.

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

We have added convenience methods to FoldingFeature so that apps can tell if the feature is separating, occluding, and determine the orientation of the hinge. We are also hiding the hinge type so that

We are removing the synchronous read methods from WindowManager. Synchronous read methods are error prone since there is an implicit race condition. Register listeners and callbacks to receive updates on the WindowLayoutInfo.

Изменения API

  • Add convenience methods for working with FoldingFeatures ( Ie733f )
  • Removes synchronous read methods from WindowManager ( I96fd4 )

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

10 марта 2021 г.

androidx.window:window:1.0.0-alpha04 is released. Версия 1.0.0-alpha04 содержит эти коммиты.

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

  • Fixes a bug where no WindowLayoutInfo is emitted if there isn't an OEM implementation. Now we emit an empty WIndowLayoutInfo.
  • Fix a bug where state would not update properly if the hinge state changed while the app was backgrounded. Now the state should be consistent.
  • Update our proguard files to ignore warnings from runtime dependencies.

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

  • Emit an empty value when the OEM library is missing. ( Ide935 )

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

18 февраля 2021 г.

androidx.window:window:1.0.0-alpha03 is released. Версия 1.0.0-alpha03 содержит эти коммиты.

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

  • Emit an empty value for WindowLayoutInfo when the OEM implementation is empty. This should make it easier to use the library on more devices. Since the APIs are asynchronous it is still recommended that apps write some defensive code and emit a default value after a timeout. We do not have any guarantees on OEM implementations and the initial value may be delayed.

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

  • Emit an empty value when the OEM library is missing. ( Ide935 )

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

27 января 2021 г.

androidx.window:window:1.0.0-alpha02 is released. Версия 1.0.0-alpha02 содержит эти коммиты.

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

  • We have deprecated some APIs to help streamline the api and reduce mistakes. Some notable examples are removing the synchronous read operations from WindowManager and deprecating DeviceState. Synchronous read operations can lead to race conditions and have incorrect UI.

  • We have converted DisplayFeature to an interface that other features will implement going forward. Our first feature is FoldingFeature which is now the representation of a screen fold or a hinge. This also contains the state of the hinge replacing DeviceState.

  • WindowMetrics was introduced in Android 11 to provide developers with a simple way to query for metrics about a window, for example its position and size on screen and any system insets. We've backported the API in this release so that developers can leverage WindowMetrics and continue to support older Android versions. WindowMetrics can be obtained through the WindowManager#getCurrentWindowMetrics() and WindowManager#getMaximumWindowMetrics() APIs.

Изменения API

  • Deprecate APIs that will be removed in the next alpha ( Ib7cc4 )
  • Updates ExtensionInterface to accept explicit Activity references. ( I07ded )
  • Introduces the WindowMetrics API. ( I3ccee )
  • Remove synchronous read methods from WindowManager ( I69983 )
  • Make ExtensionWindowBackend package protected. ( Ied208 )

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

  • Update ExtensionInterface APIs to accept visual contexts. ( I8e827 )

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

  • Merge DeviceState and WindowLayoutInfo so it is easier to access data. ( Id34f4 )

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

February 27, 2020

androidx.window:window:1.0.0-alpha01 and androidx.window:window-extensions:1.0.0-alpha01 are released. Версия 1.0.0-alpha01 содержит эти коммиты. This is the first release of the Window Manager library.

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

  • DisplayFeature : This new API identifies disruptions in the continuous flat screen surfaces such as hinges or folds
  • DeviceState : This new API provides the current posture of the phone from a list of defined postures (For example, CLOSED , OPENED , HALF_OPENED , etc.)