Новости продуктов

Стабильная версия Jetpack WindowManager 1.5

Время на чтение: 2 минуты
Посмотреть профиль Francesco Romano
Francesco Romano Инженер по связям с разработчиками Android

Мы рады сообщить, что Jetpack WindowManager 1.5.0 теперь стабилен.

В этой версии мы улучшили адаптивность WindowManager, чтобы вам было ещё проще создавать качественные адаптивные интерфейсы, которые отлично выглядят на экранах любого размера. Экосистема Android продолжает расти, и пользователи работают с приложениями на самых разных устройствах: от телефонов и складных устройств до планшетов, подключенных дисплеев, Chromebook и даже автомобильных дисплеев в режиме парковки.

В WindowManager 1.5 мы добавили инструменты, которые помогут вам работать с устройствами разных типов.

Что нового в WindowManager 1.5

В стабильной версии добавлены новые точки останова для очень больших экранов, улучшен API встраивания действий и расширены возможности расчета показателей окон.

Новые классы размеров окон: "Большой" и "Очень большой"

Самое важное изменение в версии 1.5 – добавление двух новых классов размера окна по ширине: "Большой" и "Очень большой".

Классы размеров окон – это официальный набор точек останова области просмотра, который помогает создавать адаптивные макеты. В версии 1.5 мы расширили эти рекомендации, чтобы они охватывали экраны, которые больше, чем у обычных планшетов.

Новые точки останова по ширине:

  • Большой – для ширины от 1200 до 1600 dp.
  • Очень большой – для экранов шириной не менее 1600 dp.
window_size_classes_width.png

Разные классы размеров окон в зависимости от ширины экрана. 

Почему это важно?

Начиная с бета-версии 2 Android 16 QPR1, Android поддерживает подключенные дисплеи, позволяя пользователям подключать к устройству внешний дисплей и превращать его в инструмент, похожий на компьютер, с большим экраном.

ADB_5350_asset.gif

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

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

На таких больших экранах простое масштабирование развернутого макета для планшетов не всегда обеспечивает удобство для пользователей. Например, почтовый клиент может удобно отображать две панели (почтовый ящик и письмо) в окне класса "Развернутое". Но на очень большом мониторе почтовый клиент может одновременно показывать три или даже четыре панели: почтовый ящик, список писем, содержимое письма и календарь или список задач.

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

Классы размера окна можно рассчитать с помощью функции computeWindowSizeClass(), которая является функцией расширения библиотеки androidx.window.core.layout и расширяет тип Set<WindowSizeClass>. 

Чтобы добавить в проект новые классы размеров окна, просто вызовите функцию из набора WindowSizeClass.BREAKPOINTS_V2 вместо WindowSizeClass.BREAKPOINTS_V1:

val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


Затем примените подходящую разметку, когда убедитесь, что в приложении достаточно места:

if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

Адаптивные библиотеки

Адаптивная библиотека Compose Material 3 помогает создавать адаптивные интерфейсы, которые автоматически подстраиваются под текущую конфигурацию окна, например под классы размеров окон или ориентацию устройства. 

Хорошая новость: библиотека уже обновлена с учетом новых точек останова. Начиная с версии 1.2 (сейчас это версия-кандидат), директивы каркаса панели по умолчанию поддерживают классы ширины окна "Большой" и "Очень большой".

Чтобы включить новые точки останова, добавьте в файл сборки Gradle следующую строку:

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

Дополнительные улучшения

  • Встраивание действий – автоматическое сохранение и восстановление. Теперь WindowManager может автоматически сохранять и восстанавливать состояние разделов, в которые встроены действия. Это позволяет сохранить макет при воссоздании процесса, что делает работу с приложением более стабильной и удобной. Разработчикам больше не нужно сохранять и восстанавливать состояние вручную. Они могут просто включить автоматическое сохранение, задав значение true для свойства EmbeddingConfiguration#isAutoSaveEmbeddingState.
  • Расширенные WindowMetrics. Теперь вы можете рассчитывать WindowMetrics на основе контекста приложения, а не только контекста действия. Это позволяет более гибко получать информацию о окнах из разных частей приложения.

С чего начать

Чтобы начать использовать новые классы размеров Large и Extra-large, а также другие функции версии 1.5 в проектах Android, обновите зависимости приложения в файле build.gradle.kts до последней стабильной версии:

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

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5 – это ещё один шаг к созданию полностью адаптивных приложений, которые работают на устройствах Android разных типов. Полный список изменений и исправлений ошибок можно найти в официальных примечаниях к выпуску.

Удачи в программировании!

Автор:
Продолжить чтение