Todos los componentes de Glimmer de Jetpack Compose están diseñados para funcionar con métodos de entrada estándar, como un toque o un deslizamiento en el panel táctil de los lentes, y también son receptivos a comandos de entrada de nivel inferior que son específicos del hardware de los lentes de pantalla. Los componentes de Glimmer de Jetpack Compose controlan automáticamente los eventos de entrada necesarios.
Para las acciones estándar, como el desplazamiento y el arrastre, usa los componentes de Glimmer de Jetpack Compose para promover una experiencia coherente. Sin embargo, para los componentes personalizados o los comportamientos de interacción específicos, puedes usar las APIs de Compose existentes, como Modifier.draggable o Modifier.scrollable.
Entrada y enfoque del puntero
En los lentes de pantalla, la entrada del puntero puede afectar el enfoque:
- Presionar: Interacción directa para activar el elemento. El enfoque se mueve a un elemento cuando un usuario interactúa con él.
- Deslizar: Se usa para navegar y desplazarse. Los gestos de deslizamiento no controlados se traducen automáticamente en movimientos de enfoque, lo que permite una navegación fluida por la IU sin entrada directa del puntero.
Comportamiento y orden de la navegación
El movimiento y el orden del enfoque cambian a medida que el usuario navega por tu app.
Movimiento de enfoque
En un contenedor desplazable, el enfoque se mueve de forma continua con un deslizamiento en el panel táctil. En el caso de los elementos discretos, como una fila de botones, cada deslizamiento mueve el enfoque un elemento a la vez.
Orden de enfoque
Al igual que en Jetpack Compose, Jetpack Compose Glimmer usa la búsqueda de enfoque unidimensional. Para obtener más información sobre el orden de recorrido del enfoque, consulta Cómo cambiar el orden de recorrido del enfoque.
Para cambiar el elemento enfocado inicialmente, puedes agregar un Modifier.focusGroup() de nivel superior y especificar un onEnter personalizado focusProperty:
Modifier.focusProperties {
onEnter = {
initialFocus.requestFocus()
// Prevent focus from exiting the group
cancelFocusChange()
}
}
.focusGroup()
Contenedores de desplazamiento
Para una experiencia del usuario óptima, los contenedores de desplazamiento, como las listas, deben ser el único componente principal en una pantalla. Evita colocar una lista desplazable directamente arriba o abajo de otros elementos interactivos, como botones, para evitar confusiones en la navegación y promover un movimiento del enfoque suave y predecible.
Estados de enfoque predeterminados
Jetpack Compose Glimmer implementa estados de enfoque predeterminados en todos sus componentes interactivos, incluidas las superficies, las tarjetas y los elementos de la lista, lo que promueve comentarios visuales coherentes y claros durante la interacción del usuario.
Predeterminado: El color de fondo del botón se deriva de
GlimmerTheme.colors.surface, y su contenido principal calcula el color de contenido de esa superficie.Enfocado: El ancho del borde aumenta para comunicar el enfoque.
Enfocado y presionado: El fondo se establece en
GlimmerTheme.colors.surfacecon una opacidad mayor para comunicar su estado seleccionado.