Фокус в Jetpack Compose Glimmer

Применимые устройства XR
Данное руководство поможет вам создавать приложения для устройств XR такого типа.
Очки с искусственным интеллектом

Все компоненты Jetpack Compose Glimmer разработаны для работы со стандартными методами ввода, аналогичными телефонным, такими как касание или свайп на сенсорной панели очков с искусственным интеллектом, а также для приема команд ввода, специфичных для аппаратного обеспечения очков с искусственным интеллектом, таких как кнопки камеры и дисплея . Компоненты Jetpack Compose Glimmer автоматически обрабатывают необходимые события ввода. Для пользовательских компонентов вы можете использовать существующие API Compose, такие как Modifier.draggable или Modifier.scrollable для реализации определенного поведения взаимодействия.

В очках с искусственным интеллектом и дисплеем ввод указателя может влиять на фокусировку:

  • Касание : Прямое взаимодействие для активации элемента. Фокус перемещается на элемент, когда пользователь взаимодействует с ним.
  • Пролистывание : Используется для навигации и прокрутки. Необработанные жесты пролистывания автоматически преобразуются в перемещение фокуса, обеспечивая плавную навигацию по пользовательскому интерфейсу без прямого ввода указателя.

Изменение фокуса и порядка действий происходит по мере навигации пользователя по приложению.

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

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

Фокус-порядок

Как и в Jetpack Compose, в Jetpack Compose Glimmer используется одномерный поиск фокуса. Чтобы узнать больше о порядке перемещения фокуса, см. раздел «Изменение порядка перемещения фокуса» .

Чтобы изменить элемент, изначально находящийся в фокусе, можно добавить модификатор верхнего уровня Modifier.focusGroup() и указать пользовательское свойство onEnter focusProperty :

Modifier.focusProperties {
    onEnter = {
        initialFocus.requestFocus()
        cancelFocusChange()
    }
}
.focusGroup()

прокручиваемые контейнеры

Для оптимального взаимодействия с пользователем единственным основным элементом на экране должны быть прокручиваемые контейнеры, такие как списки. Избегайте размещения прокручиваемого списка непосредственно над или под другими интерактивными элементами, такими как кнопки, чтобы избежать путаницы в навигации и обеспечить плавное и предсказуемое перемещение фокуса.

Состояния фокуса по умолчанию

Jetpack Compose Glimmer реализует состояния фокуса по умолчанию для всех интерактивных компонентов, включая поверхности, карточки и элементы списков, обеспечивая согласованную и понятную визуальную обратную связь во время взаимодействия с пользователем.

Рисунок 1. Три состояния фокусировки в Jetpack Compose Glimmer, которые различаются с помощью визуальной обратной связи на основе контура.
  • По умолчанию : цвет фона кнопки определяется значением GlimmerTheme.colors.surface , цвет основного содержимого вычисляется в соответствии с цветом этой поверхности, а цвета значков — в соответствии со значением GlimmerTheme.colors.primary .

  • В центре внимания : ширина границы увеличена для передачи ощущения сосредоточенности.

  • В фокусе + Нажато : фон устанавливается в значение GlimmerTheme.colors.surface с полной непрозрачностью, чтобы показать его выбранное состояние.