Управление жестами

Всем привет. Специально для студентов продвинутого курса по Android-разработке подготовили перевод интересной статьи.

Это первая статья их серии «Управление Жестами». Другие статьи вы можете найти по .
В Android Q был добавлен новый режим навигации по системе, позволяющий пользователю возвращаться на предыдущий экран, переходить на главный экран и запускать ассистента с помощью жестов.

Демонстрация новых жестов в Android Q
С переходом на модель управления системой жестами приложения получили больше экранного пространства. Это позволило приложениям обеспечивать более иммерсивный пользовательский опыт.
На большинстве устройств пользователи могут выбрать режим навигации на свой вкус. Существующий трехкнопочный режим навигации (состоящий из кнопок back, home, recents) тем не менее остается. Эта мера является необходимой для всех устройств версии Q и выше.
Больше об исследованиях и решениях, которые вошли в концепцию управления жестами, вы можете прочитать в этой статье от Product-менеджеров Android System UI.
Эта статья первая в небольшой серии, которая ориентирована на то, как разработчики могут обеспечить в своих приложениях управление жестами. В серии мы рассмотрим следующие темы:

  1. От края до края: позволить вашему приложению занимать весь экран.
  2. Обработка визуальных перекрытий системного пользовательского интерфейса.
  3. Обработка конфликтов жестов приложения с жестами системы.
  4. Распространенные сценарии и способы их поддержки.

Давайте начнем с того, как приложения могут располагаться от края до края экрана.

Содержание

От края до края

Я использую термин «от края до края», чтобы описать приложения, окно которых можно расширить на весь экран для достижения более захватывающего эффекта. По умолчанию приложения располагаются под строкой состояния (status bar) и над панелью навигации (navigation bar) (вместе они называются панелями системы (system bars)).
Располагаясь от края до края, приложения выходят за системные панели. Это позволит контенту вашего приложения находиться в самом центре внимания, чтобы создать хороший пользовательский опыт.
На практике это значит, что создатель приложения должен помнить о двух вещах:

Использование области панели навигации

Первое и самое важное соображение для поддержки управления жестами – это обработка расположения за панелью навигации. Поскольку панель навигации уменьшилась в размере и значимости, настоятельно рекомендуется, чтобы приложения могли размещаться за панелью навигации при работе с Android Q+ для создания более убедительного и современного UX.
При запуске на устройствах с Android Pie и ниже, расположение за панелью навигации считается необязательным, и оставляет решать создателю приложения имеет ли это смысл. Тем не менее, почти все необходимые API имеют обратную совместимость до API 21 (или AndroidX обработает различия самостоятельно), поэтому объем дополнительной работы, необходимый для поддержки устройств перед Q версией минимален. Пользователи на устройствах до поколения Q также могут получить иммерсивный опыт. Необязательным считается только минимизация необходимой работы и тестирования.

Использование области строки состояния

Во-вторых, вы уделяете внимание верхней части экрана – строке состояния. Сейчас имеет смысл использовать области строки состояния, если это требуется вашему контенту или макету. Что мы имеем в виду под этим? Примером макета, который может занять строку состояния является широкоформатное изображение. Для разработчиков это значит использование чего-то вроде AppBarLayout, который располагается и закрепляется в верхней части экрана.

Пример приложения с картинкой во всю ширину экрана на строке состояния
С другой стороны, если пользовательский интерфейс состоит из списка элементов с фиксированной позицией Toolbar наверху, смысла в использовании области строки состояния может не быть. Те же правила справедливы и для панели навигации: совершенно необязательно использовать их на устройствах до Android Q.

Реализация

Есть три ключевых шага в реализации использования областей от края до края.

  1. Запрос на отображение в полноэкранном режиме

Первый шаг состоит в том, чтобы сказать системе, что наше приложение должно располагаться поверх панелей системы (по оси Y). API, который мы используем для этого – это setSystemUiVisibility() на view с несколькими флагами. Флаги, которые нас интересуют выглядят так:
view.systemUiVisibility = // Tells the system that the window wishes the content to // be laid out at the most extreme scenario. See the docs for // more information on the specifics View.SYSTEM_UI_FLAG_LAYOUT_STABLE or // Tells the system that the window wishes the content to // be laid out as if the navigation bar was hidden View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
После этого наши view будут располагаться в полноэкранном режиме на панели навигации.

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

  1. Изменение цветов системной панели

Поскольку наше приложение теперь в полноэкранном режиме, нам нужно изменить цвета системной панели, чтобы мы могли видеть содержимое, которое находится за ней.
Android Q
При запуске на Android Q, наша единственная задача – сделать системную панель прозрачной.
<!— values-v29/themes.xml —> <style name=»Theme.MyApp»> <item name=»android:navigationBarColor»> @android:color/transparent </item> <!— Optional, if drawing behind the status bar too —> <item name=»android:statusBarColor»> @android:color/transparent </item> </style>
В Android Q система теперь отвечает за обработку всей визуальной защиты содержания системной панели (время, иконки, обработка перетаскивания и т.д.) во всех режимах навигации. Это означает, что нам больше не нужно об этом думать. На практике это значит, что система будет делать одно из двух:
Динамическая адаптация цвета
Содержимое системной панели меняет цвет в зависимости от содержимого, находящегося за ней. Таким образом, если панель находится над каким-то светлым контентом, то ее цвет поменяется на темный. И наоборот, цвет поменяется на светлый, если контент темный. Это то, что мы называем динамической адаптацией цвета.

Динамическая адаптация цвета в Android Q
Полупрозрачная сетка
В качестве альтернативы, система может использовать полупрозрачную сетку (scrim) за системными панелями. Обратите внимание, что это работает только если вы объявили targetSdkVersion 29 в своем приложении. Если ваше приложение нацелено на SDK 28 или ниже, автоматически сетка отображаться не будет, и вы останетесь с прозрачной панелью навигации.

Предоставленная системой сетка в режиме управления на Android Q
Оба этих действия выполняются, чтобы пользователь всегда мог видеть содержимое системной панели. Вариант, который выберет система, зависит от нескольких факторов. Сетка будет использована, в случае если:

  • Включен один из кнопочных режимов (2-х или 3-х кнопочный);
  • В режиме управления жестами сам производитель решил отключить динамическую адаптацию цвета. Возможной причиной может оказаться недостаточная производительность устройства для обработки адаптации цвета.


Пример того, как экран может использоваться с управлением жестами
Во всех других случаях динамическая адаптация цвета использоваться будет. Перечисленные причины актуальны лишь на данный момент времени, в будущем все может измениться.
Отключение защиты системной панели в Q
Если вы не хотите, чтобы система автоматически защищала контент, вы можете отключить эту опцию установив android:enforceNavigationBarContrast и/или android:enforceStatusBarContrast в false.

Android Pie и ниже
Если вы решили перейти к концепции «от края до края» и на устройствах до версии Q, вам нужно установить полупрозрачные цвета системной панели, чтобы использовать защиту контента. Черная сетка с непрозрачностью 70% будет хорошим шагом для создания темы с темными системными панелями.
<!— values/themes.xml —> <style name=»Theme.MyApp»> <item name=»android:navigationBarColor»> #B3FFFFFF </item> </style> <!— values-night/themes.xml —> <style name=»Theme.MyApp»> <item name=»android:navigationBarColor»> #B3000000 </item> </style>
Вам может потребоваться настроить прозрачность верхней и нижней панели, в зависимости от контента, который за ними расположен. Для светлых тем вы можете поставить светлый полупрозрачный цвет (например, #B3FFFFFF).
Пример, показывающий обе сетки в темной и светлой темах

  1. Визуальные конфликты

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

Все перечисленные ниже функции протестированы на Android 9.0 Pie. В других версиях ОС или сторонних оболочках некоторые жесты могут работать иначе или не работать совсем.

Двойной свайп вниз от границы экрана — полное выдвижение панели настроек

Стандартный свайп вниз от верхней границы экрана показывает только уведомления. Чтобы выдвинуть всю верхнюю панель и получить доступ к быстрым настройкам системы, нужно делать ещё один свайп. Но вы можете заменить эти два жеста одним — точно таким же, но выполненным двумя пальцами. Такой двойной свайп выдвигает панель целиком.

Долгое нажатие на уведомление — быстрый доступ к настройкам программы

Если одна из программ начинает постоянно присылать уведомления, возникает острое желание уменьшить их количество или просто отключить. Для этого приходится открывать приложение и копаться в нём в поисках нужных настроек. Но можно просто нажать на уведомление и удерживать палец несколько секунд — появится кнопка для быстрого доступа к нужным настройкам.

Горизонтальные свайпы вдоль адресной строки — перелистывание вкладок в Chrome

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

Долгое нажатие кнопки отключения — переход в безопасный режим

Если устройство начинает тормозить, а перезагрузка не помогает, уместно протестировать его работу в безопасном режиме. В этом состоянии на аппарат не влияют сторонние программы, поэтому вызванные ими проблемы проще устранить. Чтобы перейти в безопасный режим, зажмите клавишу питания и удерживайте, пока на дисплее не появится кнопка «Отключить питание». Затем задержите касание на ней — через секунду увидите предложение перейти в безопасный режим.

Щипок и долгое нажатие в Google Photos — удобное управление снимками

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

Кроме того, вы можете быстро выделить множество изображений. Для этого задержите касание на одном из нужных снимков и, не отрывая пальца от экрана, проведите им по остальным.

Двойное нажатие на карте и вертикальные свайпы — изменение масштаба в Google Maps

Масштабировать карту традиционным жестом — щипком — не очень-то удобно на ходу, когда вы держите смартфон одной рукой. Разработчики учли этот нюанс и добавили альтернативный способ. Чтобы изменить размер карты одним пальцем, быстро нажмите на неё дважды и, не отрывая пальца, проведите им вверх или вниз. Масштаб будет меняться.

Тройное нажатие и свайпы — масштабирование интерфейса и изображений

Если захотите быстро рассмотреть мелкий фрагмент снимка или прочесть крохотный шрифт сайта, на котором стандартное масштабирование не работает, можете воспользоваться спрятанным жестом. Для этого надо нажать трижды на экран и, не поднимая пальца, поделать свайпы в разные стороны. Но способ сработает, если предварительно вы активируете опцию «Жесты для увеличения» в разделе «Специальные возможности» в настройках смартфона.

Горизонтальные свайпы вдоль кнопки пробела — управление курсором в клавиатуре Google

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

В течение десяти лет центром управления iPhone была кнопка Домой. В зависимости от того, сколько раз нажать и как долго удерживать эту кнопку, она выполняет самые разные функции, начиная от вызова Siri и запуска Apple Pay и заканчивая открытием переключателя приложений и меню универсального доступа.

Как известно, в iPhone X компания Apple избавилась от кнопки Домой с целью убрать рамку и освободить больше места для дисплея. На смену навигации с помощью этой кнопки пришло управление жестами. Ниже мы расскажем вам, как управлять iPhone X, iPhone Xs, iPhone Xs Max и iPhone Xr без привычной кнопки Домой.

ПО ТЕМЕ: Скрытые возможности iPhone: 25 функций iOS, о которых Вы могли не знать.

Как открыть домашний экран на iPhone XS, iPhone XS Max, iPhone XR и iPhone X

Кнопки Домой больше нет, однако на главный домашний экран все равно нужно как-то попасть (например, с экрана блокировки, с других домашних экранов, с экранов виджетов, из приложений и пр.). В iPhone XS, iPhone XS Max, iPhone XR и iPhone X вместо кнопки для этого используется специальный жест.

1. Коснитесь пальцем панели жестов в нижней части дисплея;

2. Быстрым коротким движением смахните вверх и сразу же отпустите палец.

Жест практически такой же, как для вызова Пункта управления в других моделях iPhone. Он очень прост и быстро становится привычным.

ПО ТЕМЕ: .

Как переключаться между приложениями на iPhone XS, iPhone XS Max, iPhone XR и iPhone X

В предыдущих моделях iPhone для переключения с одного приложения на другое нужно было вызывать экран многозадачности. В iPhone XS, iPhone XS Max, iPhone XR и iPhone X переключаться с одной программы на другую стало еще быстрее. Теперь вы можете перелистывать приложения.

1. Коснитесь пальцем панели жестов в нижней части дисплея;

2. Проведите пальцем слева направо, чтобы вернуться к предыдущему приложению;

3. Проведите пальцем справа налево, чтобы перейти к следующему открытому приложению.

Обратите внимание, если вы остановились или вас прервали, последнее приложение, в котором вы находились, будет считаться самым последним открытым приложением. То есть, вы сможете листать только назад, но не вперед.

Как открыть экран многозадачности на iPhone XS, iPhone XS Max, iPhone XR и iPhone X

В новых iPhone вы также можете легко и быстро переключаться между множеством приложений. Конечно, для этого вы больше не сможете дважды нажать кнопку Домой или использовать глубокое нажатие 3D Touch. К счастью, в iPhone XS, iPhone XS Max, iPhone XR и iPhone X предусмотрен специальный жест для вызова экрана многозадачности.

1. Коснитесь пальцем панели жестов в нижней части дисплея;

2. Смахните вверх и немного задержите палец у экрана.

На первых порах вам может понадобиться повторить жест несколько раз, чтобы открыть многозадачность, однако со временем вы достаточно попрактикуетесь, чтобы все получалось с первого раза.

ПО ТЕМЕ: В каком смартфоне самая лучшая камера в 2019 году – Топ 10.

Как быстро закрыть приложение на iPhone XS, iPhone XS Max, iPhone XR и iPhone X

Начиная с iOS 12 процедура закрытия приложений в смартфонах без кнопки Домой была упрощена.

1. Коснитесь пальцем панели жестов в нижней части дисплея;

2. Смахните вверх и немного задержите палец у экрана – откроется панель многозадачности.

3. Смахните свайпами (жестами) вверх необходимые карточки приложений для их закрытия.

ПО ТЕМЕ: Почему лучше купить iPhone 8 / 8 Plus, чем iPhone X: 10 причин.

Как включить режим Удобный доступ (Reachability) на iPhone XS, iPhone XS Max, iPhone XR и iPhone X

iPhone XS, iPhone XS Max, iPhone XR и iPhone X оснащены большими дисплеями и далеко не все пользователи обладают достаточно длинными большими пальцами, чтобы доставать до любого места на экране при пользовании смартфоном одной рукой. К счастью, теперь вы можете опустить вниз экран, чтобы расположить его ближе к нижнему краю для более комфортного использования одним пальцем.

Для начала проверьте, включена ли функция Удобный доступ на iPhone.

1. На домашнем экране откройте «Настройки»;

2. Выберите «Основные»;

3. Выберите «Универсальный доступ»;

4. Передвиньте бегунок напротив Удобный доступ в позицию «вкл»;

5. Включив функцию, вы можете пользоваться ею в любое время.

6. Коснитесь пальцем панели жестов в нижней части дисплея;

7. Сделайте быстрый и короткий свайп вниз.

В режиме Удобный доступ вы даже можете делать свайп одним пальцем с правого верхнего угла для доступа к «Пункту управления».

Как открыть «Пункт управления» на iPhone XS, iPhone XS Max, iPhone XR и iPhone X

Свайп снизу вверх в iPhone XS, iPhone XS Max, iPhone XR и iPhone X открывает не «Пункт управления», как в старых смартфонах Apple, а сворачивает приложение, либо открывает режим многозадачности. Кроме того, в новых смартфонах «Пункт управления» переехал наверх, потеснив «Центр уведомлений», который теперь вызывается свайпом вниз от верхнего левого «ушка» или от модуля камеры TrueDepth в центре. Правое же «ушко» занимает «Пункт управления».

1. Прикоснитесь к правому «ушку» вверху экрана, где расположен индикатор заряда батареи.

2. Сделайте свайп вниз.

3. Как уже было сказано выше, в режиме Удобный доступ (Reachability) вы можете делать свайп одной рукой даже с правого верхнего угла экрана.

ПО ТЕМЕ: Как быстро перезвонить на последний набранный номер с iPhone.

Как активировать (разбудить) дисплей iPhone XS, iPhone XS Max, iPhone XR и iPhone X

Раньше для этого нужно было нажимать на кнопку Домой или боковую кнопку, теперь же достаточно просто коснуться экрана.

Как включить iPhone XS, iPhone XS Max, iPhone XR и iPhone X

Нажмите и удерживайте боковую кнопку.

Как заблокировать на iPhone XS, iPhone XS Max, iPhone XR и iPhone X

Нажмите на боковую кнопку.

Как вызвать Siri на iPhone iPhone XS, iPhone XS Max, iPhone XR и iPhone X

Нажмите и удерживайте боковую кнопку (или настройте функцию «Привет, Siri»).

Как сделать Экстренный вызов (SOS) на iPhone XS, iPhone XS Max, iPhone XR и iPhone X

1. Одновременно нажмите и удерживайте боковую кнопку и одну из кнопок громкости (то есть, сожмите устройство по бокам).

2. Передвиньте ползунок отвечающий за нужную функцию, чтобы послать сигнал о помощи (SOS).

ПО ТЕМЕ: Face ID: что это, как настроить и можно ли взломать?

Как выключить iPhone iPhone XS, iPhone XS Max, iPhone XR и iPhone X

1. Одновременно нажмите и удерживайте боковую кнопку и одну из кнопок громкости (то есть, сожмите устройство по бокам);

2. Передвиньте ползунок отвечающий за нужную функцию, чтобы выключить устройство.

ПО ТЕМЕ: 10 крутых возможностей связки iPhone + Mac при совместном использовании.

Как использовать функции «Универсального доступа» на iPhone XS, iPhone XS Max, iPhone XR и iPhone X с помощью боковой кнопки

На iPhone XS, iPhone XS Max, iPhone XR и iPhone X некоторое количество функций «Универсального доступа» в iOS можно быстро включать или отключать с помощью боковой кнопки.

1. Для того чтобы выбрать и включить команду из «Универсального доступа» перейдите в «Настройки» → «Основные» → «Универсальный доступ» → «Быстрые команды», а затем выберите ту функцию, которую вы хотите включать с помощью тройного нажатия боковой кнопки.

2. Для того же чтобы изменить скорость нажатия, например на «Медленно» и «Очень медленно», зайдите в «Настройки» → «Основные» → «Универсальный доступ» → «Боковая кнопка»