Обеспечьте совместимость с навигацией жестами

Начиная с Android 10 (уровень API 29), система Android поддерживает навигацию, полностью основанную на жестах. Чтобы обеспечить совместимость приложений с этой функцией, разработчики приложений должны сделать две вещи:

  • Растяните контент приложения от края до края.
  • Устраните конфликты жестов в приложениях.

Кроме того, в Android 13 (уровень API 33) появился предпросмотр для жеста "Назад" на устройствах Android, таких как телефоны, складные устройства и устройства с большим экраном. Это часть многолетнего проекта. Разработчики приложений могут добавить в свои приложения поддержку предпросмотра для жеста "Назад".

Как сделать так, чтобы контент приложения занимал весь экран

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

Подробнее о том, как показывать контент на весь экран…

Как устранить конфликты жестов в приложениях

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

Конфликты с жестами "Назад"

Новый системный жест для возврата – это свайп от левого или правого края экрана к центру. Это может помешать работе элементов навигации приложения в этих областях. Чтобы сохранить функциональность элементов у левого и правого краев экрана, отключите жест "Назад" выборочно, указав системе, какие области должны получать сенсорный ввод. Для этого передайте List<Rect> в API View.setSystemGestureExclusionRects(), который появился в Android 10. Этот метод также доступен в ViewCompat с androidx.core:core:1.1.0-dev01.

Пример:

Kotlin

var exclusionRects = listOf(rect1, rect2, rect3)

fun onLayout(
        changedCanvas: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
  // Update rect bounds and the exclusionRects list
  setSystemGestureExclusionRects(exclusionRects)
}

fun onDraw(canvas: Canvas) {
  // Update rect bounds and the exclusionRects list
  setSystemGestureExclusionRects(exclusionRects)
}

Java

List<Rect> exclusionRects;

public void onLayout(
        boolean changedCanvas, int left, int top, int right, int bottom) {
    // Update rect bounds and the exclusionRects list
    setSystemGestureExclusionRects(exclusionRects);
}

public void onDraw(Canvas canvas) {
    // Update rect bounds and the exclusionRects list
    setSystemGestureExclusionRects(exclusionRects);
}

Конфликты с жестами для перехода на главный экран или быстрого переключения

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

Чтобы решить эту проблему, в Android 10 был добавлен API WindowInsets.getMandatorySystemGestureInsets(), который сообщает приложениям о пороговых значениях распознавания касаний.

Игры и другие приложения, не использующие View

В играх и других приложениях, в которых нет иерархии View, пользователям часто приходится проводить по экрану рядом с областями системных жестов. В таких случаях в играх можно использовать Window.setSystemGestureExclusionRects(), чтобы исключить области, которые пересекаются с областями, зарезервированными для системных жестов. В играх эти области должны исключаться только при необходимости, например во время игрового процесса.

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

Как добавить в приложение поддержку предпросмотра для жеста "Назад"

В Android 13 (уровень API 33) появился предпросмотр для жеста "Назад" на устройствах Android, таких как телефоны, складные устройства и устройства с большим экраном. Предпросмотр для жеста "Назад" – это часть многолетнего проекта. При полной реализации эта функция позволяет пользователям предварительно просмотреть место назначения или другой результат жеста "Назад" до его полного завершения, что позволяет им решить, следует ли продолжить или остаться в текущем представлении.

Подробнее о том, как добавить поддержку предпросмотра для жеста "Назад"…

Дополнительные ресурсы

Чтобы узнать больше о навигации жестами, ознакомьтесь со следующими ресурсами:

Записи в блоге

Видео