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

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

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.

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

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

Обновите приложение, чтобы оно поддерживало предиктивный жест «назад».

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

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

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

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

Сообщения в блоге

Видео