Начиная с 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()
, который сообщает приложениям о пороговых значениях распознавания касания.
Игры и другие приложения, не относящиеся к просмотру
Игры и другие приложения, не имеющие иерархии представлений, часто требуют от пользователя проведения пальцем по областям системных жестов. В таких случаях игры могут использовать Window.setSystemGestureExclusionRects()
для исключения областей, которые перекрываются с областями, зарезервированными для системных жестов. Игры должны исключать эти области только в случае необходимости, например, во время игры.
Если игра требует, чтобы пользователь провел пальцем рядом с домашней областью жестов, приложение может запросить размещение в режиме погружения . Это отключает системные жесты, пока пользователь взаимодействует с игрой, но позволяет пользователю повторно включить системные жесты, проведя пальцем от нижней части экрана.
Обновите свое приложение, чтобы оно поддерживало интеллектуальный жест назад.
Android 13 (уровень API 33) представляет интеллектуальный жест назад для устройств Android, таких как телефоны, большие экраны и складные устройства. Предсказующий жест назад является частью многолетнего выпуска. При полной реализации эта функция позволяет пользователям просматривать пункт назначения или другой результат жеста назад до того, как они полностью его завершат, что позволяет им решить, продолжать или оставаться в текущем представлении.
Подробности см. в разделе Добавление поддержки интеллектуального жеста назад .
Дополнительные ресурсы
Дополнительные сведения о навигации с помощью жестов см. в следующих статьях: