Все компоненты Jetpack Compose Glimmer разработаны для работы со стандартными методами ввода, аналогичными телефонным, такими как касание или свайп на сенсорной панели очков с искусственным интеллектом, а также для приема команд ввода, специфичных для аппаратного обеспечения очков с искусственным интеллектом, таких как кнопки камеры и дисплея . Компоненты Jetpack Compose Glimmer автоматически обрабатывают необходимые события ввода. Для пользовательских компонентов вы можете использовать существующие API Compose, такие как Modifier.draggable или Modifier.scrollable для реализации определенного поведения взаимодействия.
В очках с искусственным интеллектом и дисплеем ввод указателя может влиять на фокусировку:
- Касание : Прямое взаимодействие для активации элемента. Фокус перемещается на элемент, когда пользователь взаимодействует с ним.
- Пролистывание : Используется для навигации и прокрутки. Необработанные жесты пролистывания автоматически преобразуются в перемещение фокуса, обеспечивая плавную навигацию по пользовательскому интерфейсу без прямого ввода указателя.
Благодаря функции Jetpack Compose система может автоматически устанавливать начальный фокус на самый первый элемент, доступный для фокусировки, при загрузке экрана, которым часто является элемент в верхнем левом углу экрана. Эта функция находится в разработке и не включена по умолчанию. Чтобы активировать эту функцию, установите флаг isInitialFocusOnFocusableAvailable в true в методе onCreate() вашего Activity.
class GlassesActivityExample : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
@OptIn(ExperimentalComposeUiApi::class)
ComposeUiFlags.isInitialFocusOnFocusableAvailable = true
super.onCreate(savedInstanceState)
}
}
Поведение и порядок навигации
Изменение фокуса и порядка действий происходит по мере навигации пользователя по приложению.
Фокусировка движения
В прокручиваемом контейнере фокус перемещается непрерывно при проведении пальцем по сенсорной панели. Для дискретных элементов, таких как ряд кнопок, каждое движение пальцем перемещает фокус на один элемент за раз.
Фокус-порядок
Как и в Jetpack Compose, в Jetpack Compose Glimmer используется одномерный поиск фокуса. Чтобы узнать больше о порядке перемещения фокуса, см. раздел «Изменение порядка перемещения фокуса» .
Чтобы изменить элемент, изначально находящийся в фокусе, можно добавить модификатор верхнего уровня Modifier.focusGroup() и указать пользовательское свойство onEnter focusProperty :
Modifier.focusProperties {
onEnter = {
initialFocus.requestFocus()
cancelFocusChange()
}
}
.focusGroup()
прокручиваемые контейнеры
Для оптимального взаимодействия с пользователем единственным основным элементом на экране должны быть прокручиваемые контейнеры, такие как списки. Избегайте размещения прокручиваемого списка непосредственно над или под другими интерактивными элементами, такими как кнопки, чтобы избежать путаницы в навигации и обеспечить плавное и предсказуемое перемещение фокуса.
Состояния фокуса по умолчанию
Jetpack Compose Glimmer реализует состояния фокуса по умолчанию для всех интерактивных компонентов, включая поверхности, карточки и элементы списков, обеспечивая согласованную и понятную визуальную обратную связь во время взаимодействия с пользователем.

По умолчанию : цвет фона кнопки определяется значением
GlimmerTheme.colors.surface, цвет основного содержимого вычисляется в соответствии с цветом этой поверхности, а цвета значков — в соответствии со значениемGlimmerTheme.colors.primary.В центре внимания : ширина границы увеличена для передачи ощущения сосредоточенности.
В фокусе + Нажато : фон устанавливается в значение
GlimmerTheme.colors.surfaceс полной непрозрачностью, чтобы показать его выбранное состояние.