Реализация Multi-Window для Android: Split-Screen, PiP, Freeform

Реализация Multi-Window для Android: Split-Screen, PiP, Freeform Разбитый интерфейс при перетаскивании разделителя в Split-Screen — частая жалоба пользователей Android 7+. Многие приложения, годами работавшие в полноэкранном режиме, при делении экрана теряют половину функционала: кнопки накладыва

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Реализация Multi-Window для Android: Split-Screen, PiP, Freeform
Средний
~3-5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Реализация Multi-Window для Android: Split-Screen, PiP, Freeform

Разбитый интерфейс при перетаскивании разделителя в Split-Screen — частая жалоба пользователей Android 7+. Многие приложения, годами работавшие в полноэкранном режиме, при делении экрана теряют половину функционала: кнопки накладываются, списки не скроллятся, видеоплеер останавливается. Наш опыт с 15+ проектами по адаптации UI показывает, что корректная поддержка Multi-Window требует не просто пары флагов в манифесте, а перепроектирования адаптивности с учётом всех трёх режимов: Split-Screen, Picture-in-Picture (PiP) и Freeform. Мы гарантируем стабильную работу на всех форм-факторах — от телефонов до складных устройств.

Почему стоит добавлять поддержку Multi-Window заранее?

Если приложение не объявляет android:resizeableActivity="true" явно, начиная с Android 12 оно всё равно попадает в split-screen — пользователь может вручную включить режим через недокументированные опции. Результат — Activity пересоздаётся при каждом изменении разделителя, теряя состояние. Мы предотвращаем это: настраиваем configChanges, обрабатываем onConfigurationChanged() через WindowMetrics API (API 30+) и применяем WindowSizeClass из androidx.window:window для адаптивного UI. Это гарантирует плавное изменение размеров без потери данных. Сертифицированные инженеры с 7+ лет опыта проводят аудит и внедрение.

Как мы реализуем полную поддержку Multi-Window?

Процесс включает четыре этапа:

Этап Действия Инструменты
Анализ Аудит текущего UI на уязвимости к изменению размеров Android Studio Layout Inspector, Device File Explorer
Проектирование Выбор стратегии: configChanges + ручная обработка или полный переход на Compose с WindowSizeClass androidx.window, Jetpack Compose
Реализация Настройка манифеста, обработка onConfigurationChanged, адаптация layout под Compact/Medium/Expanded Kotlin, XML, Compose
Тестирование Проверка на физических устройствах (планшет, складной, десктопный режим ChromeOS) Firebase Test Lab, TestRail

На одном из проектов для финансового сервиса мы переписали экран транзакций на Compose с BoxWithConstraints. Вместо хардкода “если ширина > 600dp — показывать две колонки” использовали WindowWidthSizeClass. После развёртывания число жалоб на нечитаемый интерфейс в split-screen упало на 30% за месяц — это в 2 раза эффективнее предыдущего подхода.

Picture-in-Picture: как не сломать плеер

PiP актуален для видеоприложений. Мы внедряем enterPictureInPictureMode() с PictureInPictureParams, добавляем RemoteAction для управления воспроизведением (пауза, следующий трек). Критичная ошибка — остановка плеера в onStop(). Решение флагается через isInPictureInPictureMode:

override fun onStop() { super.onStop() if (!isInPictureInPictureMode) { player.pause() } } 

Колбэк onPictureInPictureModeChanged() скрывает элементы управления, оставляя только видео. Для приёмников Drag and Drop между окнами используем View.setOnDragListener() с API 24, а с API 33 — DropHelper из androidx.draganddrop.

Сравнение режимов Multi-Window

Характеристика Split-Screen PiP Freeform
Минимальный API 24 (Android 7.0) 26 (Android 8.0) 24 (на устройствах ChromeOS)
Размер окна Половина экрана, изменяемый перетаскиванием Маленькое плавающее окно (25% экрана) Произвольный размер, перемещаемы
Типичное использование Одновременная работа двух приложений Просмотр видео во время других действий Многозадачность на больших экранах
Особенности реализации android:resizeableActivity="true" + configChanges PictureInPictureParams, RemoteAction Freeform не требует дополнительных разрешений, но нужно тестирование в desktop mode

Для складных устройств (Galaxy Z Fold) дополнительно используем WindowLayoutInfo от androidx.window:window — отслеживаем состояние шарнира и адаптируем UI (half-opened, tabletop mode). Без этой библиотеки корректная поддержка невозможна.

Что входит в работу

Мы предоставляем:

  • Аудит текущего кода на уязвимости к Multi-Window
  • Настройку манифеста и обработки конфигураций
  • Реализацию адаптивного UI (Compose или View)
  • Внедрение PiP с RemoteAction
  • Интеграцию Drag and Drop между окнами
  • Тестирование на 5+ устройствах разных форм-факторов
  • Документацию по изменениям и рекомендации по доработкам

Сроки: от 3 до 7 дней в зависимости от сложности UI. Оценка проекта бесплатно — пишите на почту или через форму на сайте.

Технические детали: WindowManager для складных устройств

Библиотека androidx.window:window версии 1.3.x предоставляет WindowInfoTracker, возвращающий Flow<WindowLayoutInfo>. Используем его для обнаружения folded/half-opened состояний. Это особенно важно для Galaxy Z Fold и других складных — игнорирование приводит к тому, что приложение не реагирует на изменение угла шарнира и выглядит "застывшим".

Наш опыт с 5+ проектами для складных и планшетов показывает: качественная поддержка Multi-Window повышает retention на 10–15% (по данным внутренней аналитики клиентов). Мы используем сертифицированную среду для тестирования на реальных устройствах в Firebase Test Lab. Подробнее в официальной документации Android Developers: Multi-Window Support.

Заключение

Готовое к Multi-Window приложение — не роскошь, а требование пользователей Android. Мы настраиваем не только Split-Screen, но и PiP, Freeform и адаптацию под складные экраны. Свяжитесь с нами для диагностики вашего проекта — оценим объём работы и предложим решение под ваш стек.