Uno de los casos de uso más básicos de la tecnología táctil es proporcionar interacciones. Selectores de hora, presionar la tecla en un teclado virtual y texto son ejemplos comunes de buenos casos de uso de la respuesta táctil. Para ver más para saber cuándo y cómo aplicar la tecnología háptica, lee Principios de diseño de la tecnología táctil.
En esta página, se describen tres formas de proporcionar respuesta táctil.
- Usa un
View
(recomendado). Este enfoque está orientado a la acción, tiene la compatibilidad más amplia y no requiere el permisoVIBRATE
. - Usa un
VibrationEffect
predefinido. Este enfoque ofrece mayor flexibilidad, pero con algunas compensaciones. - Usa composiciones avanzadas con primitivas. Esta método es más nuevo y flexible, pero requiere un dispositivo y asistencia.
Estos métodos usan primitivas definidas a nivel del dispositivo para proporcionar comentarios personalizados para el dispositivo.
Todos los métodos de respuesta táctil respetan la configuración de la respuesta táctil del usuario de forma predeterminada.
Usa componentes de View
para generar respuesta táctil
Usa el método View.performHapticFeedback
para generar respuesta táctil. El
las constantes táctiles definidas por HapticFeedbackConstants
se enfocan en su
las funciones de una aplicación, no el tipo de efecto táctil que se produce.
La implementación subyacente puede variar según el dispositivo y el hardware. del usuario, pero la app solo debe considerar el tipo de retroalimentación que en un contexto particular. Si te centras en la funcionalidad, puedes habilitar la tecnología táctil comentarios sobre interacciones similares. Los usuarios aprenden a asociar distintos significados a diferentes sensaciones táctiles con el tiempo.
Requisitos previos: Habilita la respuesta táctil
Siempre que View
sea visible, se podrá usar la respuesta táctil para sus eventos.
Algunos eventos, como mantener presionado, tienen una tecnología táctil predeterminada que se activa si un
El objeto de escucha de la vista controla el evento (muestra true
).
Un View
de Android puede inhabilitar la respuesta táctil estableciendo
propiedad View.hapticFeedbackEnabled
a false
. Inhabilitar esta propiedad
genera comentarios predeterminados.
El método performHapticFeedback
también respeta la configuración del sistema.
HAPTIC_FEEDBACK_ENABLED
, que permite al usuario inhabilitarlas potencialmente
de todo el sistema.
A diferencia de otras APIs táctiles, el uso de HapticFeedbackConstants
con un View
no requiere el permiso VIBRATE
.
Elige una HapticFeedbackConstant
Cuando usas componentes View
con HapticFeedbackConstants
, no es necesario
para evaluar la compatibilidad con dispositivos específicos, ya que estas constantes tendrán resguardo
comportamiento si es necesario. La única consideración es el nivel de SDK de la
constante.
Ejemplo 1: Presión de teclas
Este es un ejemplo de cómo agregar una respuesta táctil a una entrada táctil en View
.
usando objetos de escucha táctiles. Los efectos simulan la sensación de presionar
botón y, luego, suéltalo.
Kotlin
class HapticTouchListener : View.OnTouchListener { override fun onTouch(View view, MotionEvent event) : Boolean { when (event.actionMasked) { MotionEvent.ACTION_DOWN -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY) MotionEvent.ACTION_UP -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE) } return true } }
Java
class HapticTouchListener implements View.OnTouchListener { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); break; case MotionEvent.ACTION_UP: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE); break; } return true; } }
Ejemplo 2: Botón de envío
Los casos de uso de la retroalimentación táctil van más allá de simular una interacción física con el
dispositivo. También se pueden usar para transmitir un significado abstracto. Por ejemplo:
la expectativa general de un
El efecto CONFIRM
es un
vibración corta y ligera, mientras que un
REJECT
podría ser un
una retroalimentación más sólida
para indicar una falla. Esto se ilustra en el siguiente
de comentarios sobre un botón de envío.
Kotlin
submitButton.setOnClickListener { view -> val successful = performSubmit() if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM) } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT) } }
Java
submitButton.setOnClickListener(view -> { boolean successful = performSubmit(); if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM); } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT); } });
Usa un VibrationEffect
predefinido para generar respuesta táctil
El uso del enfoque basado en View
se centra en la interacción del usuario. Sí
para mantener la coherencia en todo el sistema. Sin embargo, los parámetros predefinidos
También se pueden invocar las APIs de VibrationEffect
para obtener respuestas táctiles personalizadas.
efectos.
Los efectos predefinidos están disponibles como VibrationEffect
constantes y pueden ser
comprobó la compatibilidad y jugó con el servicio Vibrator
, como se muestra en el
que se muestran a continuación.
Información sobre la compatibilidad de los dispositivos con las APIs de VibrationEffect
En el uso básico, no debería ser necesario comprobar la compatibilidad con
APIs de VibrationEffect
. APIs como Vibrator.areEffectsSupported
y Vibrator.areAllEffectsSupported
para determinar si el dispositivo tiene
una implementación personalizada de la constante. Si un efecto personalizado no es
presente, tu app puede reproducir los efectos y usar una plataforma definida
implementación de resguardo.
Para obtener más información, consulta Predefinidos
VibrationEffect
Requisitos previos: Carga el vibrador y el permiso VIBRATE
La mayoría de las vibraciones se pueden reproducir con el servicio Vibrator
, que se puede cargar
de la siguiente manera:
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
La app debe tener las
el permiso VIBRATE
en orden
para hacer vibrar el dispositivo con este servicio. El permiso se puede agregar
archivo de manifiesto de la aplicación:
<uses-permission android:name="android.permission.VIBRATE"/>
Reproducir un VibrationEffect
predefinido
Los efectos predefinidos se pueden preparar usando VibrationEffect.createPredefined
,
luego, jugó con uno de los métodos vibrate
en Vibrator
.
En este ejemplo, se reproduce un efecto de clic.
Kotlin
val vibrator = context.getSystemService(Vibrator::class.java) ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
Java
Vibrator vibrator = context.getSystemService(Vibrator.class); ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
Cómo usar composiciones avanzadas con primitivas
La API de VibrationEffect.Composition
ofrece posibilidades adicionales para
respuesta táctil. Sin embargo, a diferencia de los efectos, estas primitivas no tienen
de resguardo a nivel de sistema, lo que significa
que se debe prestar mucha atención
las primitivas y otras capacidades que admite el dispositivo.
El uso de estas APIs se analiza con más detalle en Cómo crear efectos táctiles personalizados.