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

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

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

Рады сообщить, что вышла стабильная версия Jetpack WindowManager 1.5.0.

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

WindowManager 1.5 предлагает улучшенные инструменты для работы с такими устройствами.

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

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

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

Самое большое изменение в версии 1.5 – это добавление двух новых классов размеров окон по ширине: Large и Extra-large.

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

Вот новые контрольные точки ширины:

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

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

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

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

ADB_5350_asset.gif

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

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

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

Благодаря официальным контрольным точкам для очень больших экранов 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 Adaptive помогает создавать адаптивные интерфейсы, которые автоматически подстраиваются под текущие конфигурации окон, например классы размеров окон или положения устройств. 

Хорошая новость заключается в том, что библиотека уже актуальна с учетом новых контрольных точек! Начиная с версии 1.2 (сейчас на стадии релиз-кандидата), директивы по умолчанию для макета панели поддерживают классы ширины окна Large и Extra-large.

Чтобы использовать новые контрольные точки, вам нужно только указать это в файле сборки Gradle:

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

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

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

С чего начать

Чтобы начать использовать новые классы размеров 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 разных типов. Полный список изменений и исправлений ошибок можно найти в официальных примечаниях к выпуску.

Желаем успехов!

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