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

Начиная с 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 .

Например:

Котлин

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)
}

Ява

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

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

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

Обновите приложение, чтобы оно поддерживало функцию предиктивного жеста «Назад».

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

Подробную информацию смотрите в разделе Добавление поддержки предиктивного жеста «Назад» .

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

Дополнительную информацию о навигации с помощью жестов см. в следующих разделах:

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

Видео