19.4 Ajustes de interacción: tiempo de pulsación, toques repetidos y sensibilidad
1. Tiempo de pulsación prolongada (Long-Press Delay)
El tiempo de pulsación prolongada define cuánto debe mantener el usuario el dedo en pantalla antes de que el sistema o la aplicación considere una “pulsación larga”. Android ofrece:
- Valor por defecto: 500 ms (configurable por el usuario en Ajustes → Accesibilidad → Duración de la pulsación prolongada).
- Configuración de desarrollador: en Settings → Developer options → Input → Long press timeout.
En código, puedes consultar y respetar este valor con:
int timeout = ViewConfiguration.get(context).getLongPressTimeout()
Si necesitas un comportamiento más fino en un View:
- Implementa GestureDetector.OnGestureListener y sobrescribe onLongPress().
- Ajusta el parámetro longPressTimeout al crear el detector:
GestureDetector detector = new GestureDetector(context, listener, null, false)
detector.setIsLongpressEnabled(true)
2. Toques repetidos (Repeat Tap Double-Tap)
Para acciones que requieren pulsaciones múltiples (por ejemplo, doble-tap o triple-tap):
- Double-Tap Timeout (por defecto ~300 ms): tiempo máximo entre dos toques para considerarlo doble-tap.
- Multi-Tap Timeout (por defecto ~600 ms): umbral para secuencias de más de dos toques.
Estos valores también se obtienen de ViewConfiguration:
int doubleTapTimeout = ViewConfiguration.getDoubleTapTimeout()
int multiTapTimeout = ViewConfiguration.getMultiTapTimeout()
Para detección personalizada:
- Usa GestureDetector.SimpleOnGestureListener e implementa onDoubleTap() y onDoubleTapEvent().
- En controles avanzados, gestiona manualmente MotionEvent midiendo event.getEventTime() – event.getDownTime().
3. Sensibilidad de puntero y área táctil
La sensibilidad define la relación entre desplazamiento físico y movimiento de cursor (ratón o touchpad). Se controla desde:
- Ajustes → Accesibilidad → Puntero y ratón → Velocidad del puntero.
- En Developer options: Pointer speed.
Puedes leer/modificar el valor con Settings.System:
// Leer velocidad
int speed = Settings.System.getInt(resolver, Settings.System.POINTER_SPEED, 0)
// Ajustar velocidad
Settings.System.putInt(resolver, Settings.System.POINTER_SPEED, newSpeed)
Para aumentar la accesibilidad:
- Amplía el Touch Target con android:touchDelegate o setTouchDelegate() para zonas pequeñas.
- Ofrece un control de sensibilidad interno en tu app (por ejemplo, un slider para calibrar gestos personalizados).
Buenas prácticas
- Respeta siempre los valores de ViewConfiguration y de usuario antes de aplicar ajustes propios.
- Proporciona feedback visual o háptico cuando cambie la modalidad de interacción.
- Testea en distintos dispositivos y con usuarios con movilidad reducida para verificar usabilidad.
Profundizando sobre: 19.4 Ajustes de interacción: tiempo de pulsación, toques repetidos y sensibilidad
- Android Developers – Accessibility Developer Guide: documentación oficial de Google sobre ajustes de interacción, incluyendo tiempo de pulsación, toques repetidos y sensibilidad.
https://developer.android.com/guide/topics/ui/accessibility - Professional Android, 4th Edition (Reto Meier amp Ian Lake): capítulo dedicado a accesibilidad y manejo de gestos, con ejemplos de personalización de tiempo de pulsación y detección de toques.
- Android Cookbook (Ian F. Darwin): recetas prácticas para detectar gestos, configurar umbrales de sensibilidad y gestionar eventos de toque prolongado.
- Codelab – Accessibility Fundamentals: aprendizaje práctico paso a paso para implementar ajustes de interacción accesibles.
https://codelabs.developers.google.com/android-accessibility-fundamentals - Android UI Design Patterns (Greg Nudelman): incluye patrones y recomendaciones sobre retroalimentación táctil, tiempos de pulsación y gestos repetidos.
Blogs y artículos especializados:
- Accessible Touch Targets – guía de Medium sobre tamaños y sensibilidad de áreas táctiles.
- Custom Gestures on Android – tutorial sobre detección avanzada de gestos y umbrales.
- Handling Long Press and Double Tap – ejemplos de código para gestionar toques prolongados y repetidos.
Foros y comunidades:
- Stack Overflow – android-accessibility
- Google Groups – Android Accessibility
- Reddit r/androiddev – discusiones sobre ajustes de interacción y accesibilidad.
Deja una respuesta