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

Начиная с 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, таких как телефоны, большие экраны и складные устройства. Предиктивный жест «назад» является частью многолетнего выпуска. После полной реализации эта функция позволяет пользователям предварительно просматривать пункт назначения или другой результат жеста «назад» до его полного завершения, что позволяет им решать, продолжать или оставаться в текущем представлении.

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

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

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

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

Видео