Фокус в режиме создания

Пользователи часто взаимодействуют с приложением не только с помощью сенсорного ввода.

  • Настольные компьютеры. Пользователи перемещаются по экрану и вводят данные с помощью физических клавиатур и сенсорных панелей.
  • Android TV. Пользователи перемещаются по интерфейсу с помощью D-pad.
  • Автомобили. Водители и пассажиры взаимодействуют с системой с помощью поворотных контроллеров.
  • Складные телефоны и планшеты. Пользователи подключают чехлы-клавиатуры и внешние устройства ввода.

Во всех этих сценариях ваше приложение должно отслеживать, какой интерактивный элемент активен на экране. Это активное состояние называется фокусом.

Основные факторы, обеспечивающие интуитивно понятную навигацию с помощью клавиатуры

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

  1. Логичный начальный фокус. Поместите начальный фокус на элемент, с которым пользователи, скорее всего, будут взаимодействовать при входе на экран.
  2. Последовательный порядок навигации. Обеспечьте предсказуемое одномерное (клавиша Tab) и двумерное (клавиши со стрелками или d-pad) перемещение фокуса.
  3. Постоянный фокус. Легко восстанавливайте фокус после прерываний, закрытия диалоговых окон или изменения конфигурации.
  4. Четкое состояние фокуса. Показывайте заметные и доступные визуальные подсказки (например, кольца фокуса или рябь), указывающие, какой элемент в данный момент находится в фокусе.
  5. Интуитивная прокрутка. Убедитесь, что элемент в фокусе и окружающий его контекст плавно прокручиваются в видимую область просмотра.

Руководства по фокусировке

Ознакомьтесь со следующими руководствами, чтобы узнать, как управлять фокусом и настраивать его в Compose:

  • Цели фокусировки. Узнайте, как интерактивные компоненты становятся целями фокусировки и как сделать настраиваемые composable-функции фокусируемыми.
  • Порядок обхода фокуса. Узнайте, как работает одномерный порядок появления и двумерная пространственная навигация, а также как настраивать пути обхода.
  • Фокус в текстовых полях. Узнайте, как в однострочных и многострочных текстовых полях обрабатываются нажатия клавиши Tab и стрелок, а также как работает взаимодействие с редактором метода ввода на телевизоре.
  • Группировка целей фокуса. Группируйте компоненты с помощью focusGroup и перехватывайте перенаправление входа или выхода.
  • Восстановление фокуса. Восстанавливайте фокус на ранее активных дочерних элементах в контейнерах, управляйте компонентами навигации и фокусом при переходах между экранами.
  • Обозначьте состояние фокуса. Используйте визуальные подсказки и специальные индикаторы, чтобы выделить компоненты в фокусе.
  • Реагирование на фокус. Отслеживайте изменения фокуса и запрашивайте свойства состояния фокуса с помощью onFocusChanged.
  • Программно запрашивайте фокус. Явно перемещайте фокус в ответ на действия пользователя или ошибки валидации.
  • Перемещение и очистка фокуса. Программное перемещение или очистка фокуса с помощью FocusManager.
  • Захват и освобождение фокуса. Захватывайте фокус для модальных подовзаимодействий и безопасно освобождайте его.
  • Протестируйте навигацию с фокусом. Напишите автоматические тесты Compose, чтобы проверить взаимодействие с клавиатурой в одномерном и двумерном режимах, а также в текстовых полях.