Entrada de la pluma stylus en los campos de texto

Android 14 (nivel de API 34) y las versiones posteriores permiten que los usuarios escriban en cualquier entrada de texto en cualquier app con una pluma stylus. Los campos de entrada de texto de Android, que incluyen Componentes de EditText y WebView widgets de texto, compatibilidad la entrada de la pluma stylus de forma predeterminada.

Sin embargo, si tu app requiere campos de entrada de texto personalizados (consulta Texto personalizado editores) o tiene un diseño complejo con campos de entrada de texto superpuestos sobre una superficie de dibujo, necesitas personalizar tu app.

Figura 1: Entrada de escritura a mano con una pluma stylus.

EditText

La escritura a mano con la pluma stylus está habilitada de forma predeterminada en todos los campos de EditText en Android 14 y versiones posteriores. Se inicia el modo de escritura a mano para una EditText cuando se activa un movimiento de la pluma stylus. si se detecta un evento de escritura a mano dentro de los límites de la vista.

Los límites de escritura a mano incluyen 40 dp de padding vertical y 10 dp de padding horizontal. padding alrededor de la vista. Ajusta los límites de escritura a mano con setHandwritingBoundsOffsets() Inhabilitar la escritura a mano con setAutoHandwritingEnabled(false)

Campo de entrada con el rectángulo alrededor que indica los límites para la detección de eventos de movimiento de la pluma stylus.
Figura 2: Límites de escritura a mano de EditText campos.

Delegación de entrada

Las apps pueden mostrar elementos de la IU de marcador de posición que parecen ser campos de entrada de texto, pero en realidad son solo elementos estáticos de la IU sin capacidad de entrada de texto. Búsqueda son un ejemplo común. Cuando se presiona el elemento estático de la IU, se activa una transición a una nueva IU que contiene un campo de entrada de texto funcional enfocado en la entrada.

Figura 3: Delegación de entrada del elemento estático de la IU al campo de entrada de texto.

Delegación de entrada de la pluma stylus

Usa las APIs de delegación de escritura a mano para admitir la entrada de escritura a mano con pluma stylus para campos de entrada de marcador de posición (consulta setHandwritingDelegatorCallback() y setIsHandwritingDelegate()). El elemento de marcador de posición de la IU está configurado para delegar la escritura a mano a una red campo de entrada, por ejemplo:

Kotlin

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback {
        showAndFocusDelegateInputField()
    }
    delegateInputField.setIsHandwritingDelegate(true)
}

Java

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback(this::showAndFocusInputFieldDelegate);
    delegateInputField.setIsHandwritingDelegate(true);
}

El movimiento de la pluma stylus sobre la vista del campo de entrada de texto del marcador de posición invoca la devolución de llamada. La devolución de llamada activa la transición de la IU para mostrar y enfocar la entrada funcional . La implementación de devolución de llamada suele ser la misma que la implementación para un objeto de escucha de clics en el elemento de marcador de posición. Cuando el campo de entrada funcional crea un InputConnection: se iniciará el modo de escritura a mano con la pluma stylus.

Figura 4: Delegación de entrada de la pluma stylus del elemento estático de la IU al campo de entrada de texto.

Material Design

El com.google.android.material.search proporciona la SearchBar y SearchView clases para facilitar la implementación del patrón de la IU del marcador de posición.

El marcador de posición y las vistas de búsqueda funcional están vinculadas con setUpWithSearchBar()

La delegación de escritura a mano se configura en la biblioteca de Material sin restricciones y del desarrollo de aplicaciones necesarios para tu aplicación.

Se superpone con las superficies de dibujo

Si tu app tiene una superficie de dibujo con un campo de texto superpuesto, es posible que deba inhabilitar la escritura a mano con la pluma stylus para permitir que el usuario dibuje. Consulta setAutoHandwritingEnabled()

Prueba

La escritura a mano con la pluma stylus es compatible con dispositivos Android 14 y versiones posteriores que tengan un un dispositivo de entrada con pluma stylus compatible y un método de entrada de seguridad (IME) que admite las APIs de escritura a mano con pluma stylus de Android 14.

Si no tienes un dispositivo de entrada con pluma stylus, simula una entrada de pluma stylus en cualquier dispositivo con acceso con permisos de administrador (incluidos los emuladores) mediante Android Debug Bridge (adb):


// Android 14
adb shell setprop persist.debug.input.simulate_stylus_with_touch true && adb shell stop && adb shell start

// Android 15 and higher
// Property takes effect after screen reconfiguration such as orientation change.
adb shell setprop debug.input.simulate_stylus_with_touch true

Usa la versión beta de Gboard para realizar pruebas si usas un dispositivo que no es compatible pluma stylus.

Recursos adicionales