В помощь мобильному разработчику
Многооконный режим Android

Оптимизируем Android приложение под многоконный режим

Александр Алексеев

Одна из моих любимых функций в Android 7.0 Nougat — это поддержка параллельной работы нескольких приложений в новом мультиоконном режиме. Когда у пользователя открыто какое-то приложение и он при этом осуществляет долгое нажатие на кнопку переключателя приложений, тогда он может добавить второе приложение к первому, чтобы они помещались на дисплее одновременно и последовательно, и благодаря этому открывается путь для новых сценариев, таких как, например, сбрасывание или перетаскивание контента. На планшетах и других крупных устройствах за счёт этого также активизируется новый режим «произвольной формы», который позволяет приложениям прибывать в полностью измененном размере (fully re-sized). Готовые приложения по умолчанию должны иметь возможность воспользоваться преимуществами этого нового режима, так как Android Activities будут автоматически изменить размер приложения в правильных пропорциях, когда оно перейдёт в этот режим. Здесь представлены два приложения Xamarin.Android в новом мультиоконном режиме; одно разработано при помощи Xamarin.Forms, а другое — посредством традиционного Xamarin.Android.

Как видите, мультиоконный режим должен поддерживаться приложением по умолчанию, однако, существует множество других возможностей для оптимизации, то есть, для включения дополнительных функций, которые могут понравиться пользователям.

 

Настройка приложения

Существует несколько простых настроек для включения и отключения мультиоконного режима применительно ко всему приложению для одного из Activity при компиляции с API 24.

Если Вы используете субклассовое приложение, то можете добавить атрибут ResizeableActivity:

 

 

Если всё установлено правильно, тогда activity и приложение могут быть запущены в режимах разделенного экрана и произвольной формы. Если Вы указываете его в отдельном Activity и пользователь переходит к нему, тогда новое Activity вернётся в полноэкранный режим. Если Вы разрабатываете на API 24 и не устанавливали ранее этот атрибут, то вариант по умолчанию будет true.

 

Запуск Activities, расположенных бок о бок

Кроме того, если пользователь уже перешёл в сессию разделенного экрана, тогда есть возможность запуска расположенных параллельно приложений посредством добавления нескольких флагов в intent перед началом нового Activity:

 

Настройка конфигурации Activity

Начиная с Android 7.0 стал доступен новый атрибут макета, и его можно добавить к любому классу Activity, который определяет дополнительные параметры в то время, когда Activity находится в мультиоконном режиме. Вот пример определения местоположения с минимальными и дефолтными геометрическими параметрами (dimensions) в то время, когда Activity запущено в режиме произвольной формы:

 

Определение мультиоконного режима

Иногда требуется включить или отключить части пользовательского интерфейса или функциональности, когда пользователь заходит в мультиоконный режим. Новое логическое значение IsInMultiWindowMode можно с лёгкостью обнаружить в любом Activity.

 

Сверх того, Вы можете узнавать о том, что пользователь зашёл или вышел из мультиоконного режима посредством переопределения при помощи метода OnMultiWindowModeChanged:

 

Заключение

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

Автор: James Montemagno
ИсточникОфициальный блог Xamarin

Александр Алексеев
Александр Алексеев

Xamarin - разработчик. Работаю с .NET платформой с 2012 года, программирую в основном с использованием C#. За это время успел поработать с ASP.NET, Entity Framework, MSSQL, Git

Написать ответ