<
  • Главная
Статьи

Підтримка многооконного режиму

  1. огляд
  2. Життєвий цикл многооконного режиму
  3. Налаштування програми для многооконного режиму
  4. android: resizeableActivity
  5. android: supportsPictureInPicture
  6. атрибути макета
  7. Запуск програми в многооконном режимі
  8. Недоступні можливості в многооконном режимі
  9. Перехід в режим "картинка в картинці"
  10. Запуск нових операцій в многооконном режимі
  11. підтримка перетягування
  12. Тестування програми в многооконном режимі
  13. Налаштування тестового пристрою
  14. Якщо додаток було створено без використання N Preview SDK
  15. Якщо додаток підтримує багатовіконний режим
  16. Контрольний список тестування
  17. Якщо ви відключили підтримку многооконного режиму

В Android N додана підтримка відображення декількох додатків одночасно. На мобільних пристроях два додатки можуть бути запущені поруч або один над одним в режимі поділу екрана. На телевізорах додатки можуть використовувати режим "картинка в картинці", щоб відтворювати відео, поки користувачі працюють з іншим додатком.

Якщо ви створюєте додаток з використанням N Preview SDK, ви можете вказати, як воно буде діяти в многооконном режимі. Наприклад, можна задати мінімальні допустимі розміри вікна програми. Також можна відключити багатовіконний режим для додатка, щоб показати його тільки в повноекранному режимі.

огляд

В Android N кілька додатків можуть одночасно перебувати на екрані. Наприклад, користувач може розділити екран, щоб переглядати веб-сторінку зліва і писати повідомлення електронної пошти справа. Можливості користувача залежать від пристрою.

  • На мобільних пристроях з Android N доступний режим поділу екрана. В цьому режимі два додатки відображаються поруч або один над одним. Користувач може перетягнути лінію поділу, щоб збільшити вікно однієї програми і зменшити вікно іншого.
  • На пристроях Nexus Player з Android N для додатків буде доступний режим "картинка в картинці" , Який дозволить додатком відображати контент, поки користувач переглядає інші додатки або взаємодіє з ними.
  • Виробники більших пристроїв можуть активувати режим довільної форми, де користувач може будь-яким чином змінювати розмір кожного вікна. У цьому випадку крім режиму поділу екрана на пристрої буде доступний і цей режим.
В Android N додана підтримка відображення декількох додатків одночасно

Рис. 1. Два додатки відображаються поруч в режимі поділу екрана.

Користувач може перейти в багатовіконний режим наступними способами.

  • Якщо користувач відкриє екран огляду і тривало натисне назва операції, її можна буде перетягнути в виділену частину екрану і перемкнути в багатовіконний режим.
  • Якщо користувач тривалий час натисне кнопку "Огляд", пристрій перемкне поточну операцію в багатовіконний режим і відкриє екран огляду, де користувач зможе вибрати іншу операцію для спільного відображення.

користувачі можуть перетягувати дані між вікнами операцій в режимі спільного відображення. (Раніше перетягувати дані можна було тільки в рамках однієї операції).

Життєвий цикл многооконного режиму

Багатовіконний режим не змінює життєвий цикл операції .

У цьому режимі в кожен момент часу активною є лише остання операція, з якої взаємодіяв користувач. Така операція вважається самої верхньої. Всі інші операції припинені, навіть якщо вони відображаються. Однак система віддає припиненим, але видимим операціями більш високий пріоритет, ніж невидимим. Якщо користувач взаємодіє з однією з призупинених операцій, вона відновлюється, а колишня сама верхня операція припиняється.

Примітка. У многооконном режимі додаток може бути припинено і раніше мабуть для користувача. Додатком може знадобитися продовжувати свої операції, навіть якщо воно призупинено. Наприклад, видиме припинене додаток, що відтворює відео, буде як і раніше показувати відео. Тому ми не рекомендуємо припиняти відтворення в обробниках onPause () таких додатків. Замість цього слід призупинити відео в onStop () і відновити відтворення в onStart () .

Якщо користувач переводить додаток у багатовіконний режим, система повідомляє операцію про зміну конфігурації, як зазначено в документі Обробка змін під час виконання . По суті це зміна так само діє на життєвий цикл операції, як повідомлення додатки системою про перехід пристрою з вертикальної орієнтації в горизонтальну, тільки змінюються розміри екрану, а не орієнтація. Як описано в документі Обробка змін під час виконання , Операція може обробити зміна конфігурації самостійно або може дозволити системі видалити вікно операції і створити його заново з новими розмірами.

Якщо користувач збільшує одну зі сторін вікна, система змінює розмір вікна операції відповідно до дією користувача і застосовує зміни в режимі виконання по мірі необхідності. Якщо програма не встигає відмалювати нові області, система тимчасово заповнює їх кольором, заданим атрибутом windowBackground або атрибутом стилю windowBackgroundFallback за замовчуванням.

Налаштування програми для многооконного режиму

Якщо ваш додаток призначений для Android N, ви можете вказати, яким чином підтримують (і чи підтримують) операції вашого застосування багатовіконний режим. Атрибути управління розміром і макетом встановлюються в маніфесті. Налаштування атрибутів кореневої операції застосовуються до всіх операцій в її стеку завдань.

Примітка. Якщо додаток з підтримкою різної орієнтації було створено з версією SDK, більш ранній, ніж Android N, і користувач запустить цю програму в многооконном режимі, система примусово змінить розмір програми. Система відображає діалогове вікно з попередженням про те, що додаток може працювати непередбачуваним чином. Система не змінює розмір вікна для додатків з фіксованою орієнтацією. Якщо користувач спробує відкрити такий додаток в многооконном режимі, воно займе весь екран.

android: resizeableActivity

Встановіть цей атрибут в вузлі <activity> або <application> маніфесту, щоб включити або відключити багатовіконний режим:

android: resizeableActivity = [ "true" | "False"]

Якщо для цього атрибута задано значення true, операцію можна запускати в режимах поділу екрана і довільної форми. Якщо для атрибута задано значення false, операція не підтримує багатовіконний режим. Якщо значення дорівнює false і користувач намагається запустити операцію в многооконном режимі, вона займає весь екран.

Якщо додаток призначений для Android N, але значення для цього атрибута не було вказано, то за замовчуванням використовується значення true.

android: supportsPictureInPicture

Встановіть цей атрибут в вузлі <activity> маніфесту, щоб вказати, чи підтримує операція режим "картинка в картинці". Цей атрибут не береться до уваги, якщо для android: resizeableActivity встановлено значення false.

android: supportsPictureInPicture = [ "true" | "False"]

атрибути макета

В Android N елемент маніфесту <layout> підтримує декілька атрибутів, які визначають поведінку операції в многооконном режимі.

android: defaultWidth Ширина вікна операції за замовчуванням в режимі довільної форми. android: defaultHeight Висота вікна операції за замовчуванням в режимі довільної форми. android: gravity Початкова позиція вікна операції в режимі довільної форми. Допустимі значення см. В описі класу Gravity . android: minimalSize Мінімальні значення висоти і ширини вікна операції в режимах поділу екрана і довільної форми. Якщо користувач переміщує розділову лінію в режимі поділу екрана, щоб зробити розмір вікна операції менше зазначеного мінімуму, система обрізає його до запитаного користувачем розміру.

У наступному прикладі коду показано, як задати розмір і позицію вікна операції за замовчуванням, а також її мінімальний розмір в режимі довільної форми:

<Activity android: name = ". MyActivity"> <layout android: defaultHeight = "500dp" android: defaultWidth = "600dp" android: gravity = "top | end" android: minimalSize = "450dp" /> </ activity>

Запуск програми в многооконном режимі

Android N надає нові можливості для підтримки додатків в многооконном режимі.

Недоступні можливості в многооконном режимі

Деякі можливості вимкнено або не враховуються в многооконном режимі, тому що вони не мають сенсу для операції, яка відображається на екрані пристрою одночасно з іншими операціями або додатками. Нижче наведені приклади таких можливостей.

  • Відключені деякі параметри налаштування системного інтерфейсу . Наприклад, програми не можуть приховати рядок стану, якщо вони не працюють на повному екрані.
  • Система не враховує зміни атрибута android: screenOrientation .

Для підтримки многооконного режиму в клас Activity були додані наступні методи. Детальніше про кожного з них див. В довіднику по N Preview SDK .

Activity.inMultiWindow () Викличте цей метод, щоб дізнатися, чи знаходиться операція в многооконном режимі. Activity.inPictureInPicture () Викличте цей метод, щоб дізнатися, чи знаходиться операція в режимі "картинка в картинці".

Примітка. Режим "картинка в картинці" - це окремий випадок многооконного режиму. Якщо метод myActivity.inPictureInPicture () повертає значення true, myActivity.inMultiWindow () також повертає true.

Activity.onMultiWindowChanged () Система викликає цей метод, коли операція переходить в багатовіконний режим або виходить з нього. Система передає методу значення true, якщо операція входить в багатовіконний режим, і значення false, якщо вона виходить з нього. Activity.onPictureInPictureChanged () Система викликає цей метод, коли операція переходить в режим "картинка в картинці". Система передає методу значення true, якщо операція входить в режим "картинка в картинці", і значення false, якщо вона виходить з нього.

Також існують версії Fragment для цих методів, наприклад, Fragment.inMultiWindow ().

Перехід в режим "картинка в картинці"

Щоб перевести операцію в режим "картинка в картинці", викличте новий метод Activity.enterPictureInPicture (). Цей метод ігнорується, якщо пристрій не підтримує режим "картинка в картинці". Додаткова інформація міститься в документації Режим "картинка в картинці" .

Запуск нових операцій в многооконном режимі

При запуску нової операції можна повідомити системі, що вікно нової операції слід показати поруч з поточним, якщо це можливо. Для цього використовуйте прапор Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT. Цей прапор запитує таких дій.

  • Якщо Ви знаходитесь в режимі поділу екрана, система намагається створити вікно нової операції поруч з вікном запустила її операції, щоб розмістити дві операції на екрані. Чи не гарантується, що система зможе це зробити, але якщо це можливо, операції відображаються поруч один з одним.
  • Якщо пристрій не перебуває у режимі поділу екрана, цей прапор не враховується.

Якщо при запуску нової операції пристрій знаходиться в режимі довільної форми, ви можете задати розміри і позицію вікна нової операції, викликавши метод ActivityOptions.setLaunchBounds (). Цей метод ігнорується, якщо у пристрої не активовано многооконном режимі.

Примітка. Якщо запустити операцію в стеці завдань, вона замінить операцію на екрані, успадкувавши всі її властивості многооконного режиму. Щоб запустити нову операцію в окремому вікні в многооконном режимі, її слід запустити в новому стеку завдань.

підтримка перетягування

користувачі можуть перетягувати дані між вікнами операцій в режимі спільного відображення. (Раніше перетягувати дані можна було тільки в рамках однієї операції). Тому ви можете реалізувати функції перетягування в своєму додатку, якщо воно ще їх не підтримує.

В N Preview SDK пакет android.view розширений для підтримки перетягування між додатками. Додаткова інформація про нижчевикладених класах і методах міститься в довіднику по N Preview SDK .

android.view.DropPermissions Об'єкт токена вказати розподільчу здатність з додатком, в яке перетягуються дані. View.startDragAndDrop () Новий псевдонім для View.startDrag () . Щоб дозволити перетягування між операціями, передайте новий прапор View.DRAG_FLAG_GLOBAL. Якщо Вам потрібно надати приймаючої операції дозволу на читання або запис URI, передайте новий прапор View.DRAG_FLAG_GLOBAL_URI_READ або View.DRAG_FLAG_GLOBAL_URI_WRITE відповідно. View.cancelDragAndDrop () Скасовує поточну операцію перетягування. Цей метод може викликати тільки додаток, в якому була ініційована операція перетягування. View.updateDragShadow () Замінює тінь поточної операції перетягування. Цей метод може викликати тільки додаток, в якому була ініційована операція перетягування. Activity.requestDropPermissions () Запитує дозволу для URI контенту, переданих в об'єкті ClipData в DragEvent .

Тестування програми в многооконном режимі

Незалежно від того, оновлюєте ви свій додаток для Android N, вам необхідно підтвердити його поведінку в многооконном режимі на той випадок, якщо користувач спробує запустити його в цьому режимі на пристрої з Android N.

Налаштування тестового пристрою

Якщо встановити Android N на пристрої, режим поділу екрана буде підтримуватися автоматично.

Якщо додаток було створено без використання N Preview SDK

Якщо ви не застосовували N Preview SDK для створення програми та користувач спробує запустити його в многооконном режимі, система примусово змінить розмір вікна програми, якщо його орієнтація не зафіксована.

Якщо для програми не задана фіксована орієнтація, вам слід запустити його на пристрої з Android N і спробувати перевести його в режим поділу екрана. Переконайтеся, що додаток працює нормально після примусового зміни розміру.

Якщо для програми задана фіксована орієнтація, спробуйте перевести його в багатовіконний режим. Переконайтеся, що при цьому додаток залишається в повноекранному режимі.

Якщо додаток підтримує багатовіконний режим

Якщо ви використовували N Preview SDK для створення програми, але не відключили підтримку многооконного режиму, перевірте роботу програми, як описано далі, в режимах поділу екрана і довільної форми.

  • Відкрийте програму в повноекранному режимі, а потім перейдіть в багатовіконний режим довгим натисканням кнопки "Огляд". Переконайтеся, що додаток коректно перемикається між режимами.
  • Відкрийте програму безпосередньо в многооконном режимі і переконайтеся, що воно працює нормально. Ви можете запустити додаток в многооконном режимі, натиснувши кнопку "Огляд", потім довго натиснувши рядок заголовка програми та перетягнувши її в одну з виділених областей на екрані.
  • Змініть розмір вікна програми в режимі поділу екрана, перетягнувши лінію поділу. Переконайтеся, що зміна розміру не призводить до збою і що необхідні елементи інтерфейсу залишаються видимими.
  • Якщо ви вказали мінімальні розміри вікна програми, спробуйте встановити розмір менше мінімального. Переконайтеся в неможливості встановити розмір менше зазначеного мінімуму.
  • Під час всіх тестів стежте за продуктивністю додатки - вона повинна бути прийнятною. Наприклад, переконайтеся, що після зміни розміру вікна програми не виникає великий затримки поновлення інтерфейсу.

Контрольний список тестування

Для перевірки продуктивності додатка в многооконном режимі, виконайте такі операції. Спробуйте виконати їх в режимі поділу екрана і в многооконном режимі, якщо не вказано інше.

  • Перейдіть в багатовіконний режим і вийдіть з нього.
  • Перейдіть зі свого додатка в інший додаток і переконайтеся, що додаток працює нормально, якщо воно мабуть, але не активно. Наприклад, якщо додаток показує відео, воно повинно продовжувати відтворення, коли користувач працює з іншим додатком.
  • У режимі поділу екрана спробуйте вести лінію поділу, збільшуючи і зменшуючи вікно програми. Спробуйте здійснити ці операції, коли вікна двох додатків знаходяться поруч і один над одним. Переконайтеся, що програма не завершується з помилкою, необхідні елементи видно і зміна розміру не займає надто багато часу.
  • Швидко змініть розмір вікна програми кілька разів поспіль. Переконайтеся, що програма не зависає і не викликає витік пам'яті. Інформація про перевірку використання пам'яті додатком міститься в документі Аналіз використання оперативної пам'яті .
  • Попрацюйте з додатком в різних віконних конфігураціях і переконайтеся, що воно веде себе належним чином. Текст повинен легко читатися, а елементи інтерфейсу не повинні бути занадто маленькими.

Якщо ви відключили підтримку многооконного режиму

Якщо ви відключили підтримку многооконного режиму, встановивши атрибут android: resizableActivity = "false", запустіть додаток на пристрої з Android N і спробуйте перевести його в режими довільної форми і поділу екрана. Переконайтеся, що при цьому додаток залишається в повноекранному режимі.



Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью