Um dos casos de uso mais básicos para a resposta tátil é fornecer feedback sobre as interações do usuário. Seletores de horário, pressionamento de tecla em um teclado virtual e seleção de texto são exemplos comuns de bons casos de uso para o retorno tátil. Para mais informações sobre quando e como aplicar a tecnologia háptica, leia Princípios de design tátil.
Esta página descreve três maneiras de fornecer feedback tátil.
- Use um
View
(recomendado). Essa abordagem é orientada a ações, tem o suporte mais amplo e não requer a permissãoVIBRATE
. - Use um
VibrationEffect
predefinido. Essa abordagem tem mais flexibilidade, mas com algumas desvantagens. - Use composições avançadas com primitivas. Esse método é mais recente e ainda mais flexível, mas requer suporte específico para o dispositivo.
Esses métodos usam primitivas definidas no nível do dispositivo para fornecer feedback de alta qualidade personalizado para o dispositivo em questão.
Todos os métodos de feedback tátil respeitam as configurações de feedback tátil do usuário por padrão.
Usar componentes View
para gerar feedback tátil
Use o método View.performHapticFeedback
para gerar feedback tátil. As
constantes táteis definidas pelo HapticFeedbackConstants
são focadas na
funcionalidade em um aplicativo, não no tipo de efeito tátil realizado.
A implementação pode variar dependendo dos recursos do dispositivo e do hardware, mas o app só precisa considerar o tipo de feedback a ser fornecido em um contexto específico. Ao se concentrar na funcionalidade, você pode ativar o feedback táctil para interações semelhantes. Os usuários aprendem a associar significados diferentes a diferentes sensações hápticas ao longo do tempo.
Pré-requisitos: ativar o retorno tátil
Enquanto o View
estiver visível, o retorno tátil poderá ser usado para os eventos dele.
Alguns eventos, como o toque longo, têm retorno tátil padrão que são acionados se um
listener na visualização processar o evento (retorna true
).
Um View
do Android pode desativar o feedback tátil definindo a
propriedade View.hapticFeedbackEnabled
como false
. A desativação dessa propriedade
resulta em feedback padrão.
O método performHapticFeedback
também respeita a configuração do sistema
HAPTIC_FEEDBACK_ENABLED
, que permite que o usuário desative
todo o sistema.
Ao contrário de outras APIs hápticas, o uso de HapticFeedbackConstants
com um View
não exige a permissão VIBRATE
.
Escolha uma HapticFeedbackConstant
Ao usar componentes View
com HapticFeedbackConstants
, não é necessário
avaliar o suporte a dispositivos específicos, já que essas constantes terão comportamento
de fallback, se necessário. A única consideração é o nível do SDK da constante
desejada.
Exemplo 1: pressionamento de tecla
Este é um exemplo de como adicionar um feedback tátil a uma entrada de toque em View
usando listeners de toque. Os efeitos simulam a sensação de pressionar e soltar um
botão.
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; } }
Exemplo 2: botão "Enviar"
Os casos de uso de feedback tátil vão além da simulação de uma interação física com o
dispositivo. Elas também podem ser usadas para transmitir um significado abstrato. Por exemplo,
a expectativa geral para um
efeito CONFIRM
é uma
vibração curta e leve, enquanto um
REJECT
pode ser um
feedback mais forte para indicar falha. Isso é ilustrado no exemplo
abaixo para um feedback do botão de envio.
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); } });
Usar um VibrationEffect
predefinido para gerar feedback tátil
O uso da abordagem baseada em View
se concentra na interação do usuário. É
preferível para manter a consistência em todo o sistema. No entanto, APIs VibrationEffect
predefinidas específicas também podem ser invocadas para efeitos de
resposta tátil personalizados.
Os efeitos predefinidos estão disponíveis como constantes
VibrationEffect
e podem ser
verificados para suporte e reproduzidos com o serviço Vibrator
, conforme mostrado nos
exemplos abaixo.
Entender o suporte a dispositivos de APIs VibrationEffect
No uso básico, não é necessário verificar o suporte a APIs
VibrationEffect
individuais. As APIs como Vibrator.areEffectsSupported
e Vibrator.areAllEffectsSupported
são usadas para determinar se o dispositivo tem
uma implementação personalizada da constante. Se um efeito personalizado não estiver
presente, o app ainda poderá reproduzir os efeitos e usar uma implementação padrão
definida pela plataforma.
Para mais detalhes, consulte VibrationEffect
predefinidos.
Pré-requisitos: carregue o vibrador e a permissão VIBRATE
A maioria das vibrações pode ser reproduzida com o serviço Vibrator
, que pode ser carregado
da seguinte maneira:
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
O app precisa ter a
permissão VIBRATE
para
fazer o dispositivo vibrar usando esse serviço. A permissão pode ser adicionada ao
arquivo de manifesto do aplicativo:
<uses-permission android:name="android.permission.VIBRATE"/>
Tocar um VibrationEffect
predefinido
Os efeitos predefinidos podem ser preparados usando VibrationEffect.createPredefined
e depois reproduzidos usando um dos métodos vibrate
em Vibrator
.
Este exemplo reproduz um efeito de clique.
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));
Usar composições avançadas com primitivas
A API VibrationEffect.Composition
oferece mais possibilidades de
feedback tátil. No entanto, ao contrário dos efeitos, essas primitivas não têm
substitutos no nível do sistema, o que significa que é preciso prestar atenção
nas primitivas e em outros recursos aceitos pelo dispositivo.
O uso dessas APIs é discutido em mais detalhes em Como criar efeitos táteis personalizados.