Um dos casos de uso mais básicos do retorno tátil é fornecer feedback ao usuário e interações. Seletores de horário, pressionamento de tecla em um teclado virtual e texto seleção são exemplos comuns de bons casos de uso para retorno tátil. Para mais informações sobre quando e como aplicar o retorno tátil, leia Princípios de design tátil.
Esta página descreve três maneiras de usar o retorno tátil.
- Usar um
View
(recomendado). Essa abordagem é orientada para a ação, 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. - Usar composições avançadas com primitivos. Isso é mais novo e ainda mais flexível, mas exige dispositivos específicos suporte.
Esses métodos usam primitivos definidos no nível do dispositivo para oferecer alta qualidade feedback personalizado para cada dispositivo.
Todos os métodos de retorno tátil respeitam as configurações de feedback de toque do usuário padrão.
Usar componentes View
para gerar retorno tátil
Use o método View.performHapticFeedback
para gerar retorno tátil. A
constantes táteis definidas por HapticFeedbackConstants
são focadas na
em um aplicativo, não o tipo de efeito tátil realizado.
A implementação pode variar dependendo do dispositivo e do hardware mas o app só precisa considerar o tipo de feedback a ser fornecido em um contexto específico. Ao focar na funcionalidade, você pode ativar o retorno tátil feedback para interações semelhantes. Os usuários aprendem a associar diferentes significados diferentes sensações táteis ao longo do tempo.
Pré-requisitos: ativar o retorno tátil
Desde que o View
esteja visível, o retorno tátil poderá ser usado para os eventos dele.
Alguns eventos, como tocar e manter pressionado, têm retorno tátil padrão que é acionado se um
um listener na visualização processa o evento (retorna true
).
Um View
do Android pode desativar o retorno tátil definindo a
a propriedade View.hapticFeedbackEnabled
como false
. Desativar esta 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 os desative.
de todo o sistema.
Diferente de outras APIs táteis, usar HapticFeedbackConstants
com um View
não requer a permissão VIBRATE
.
Escolha um HapticFeedbackConstant
Ao usar componentes View
com HapticFeedbackConstants
, não é necessário
para avaliar o suporte de dispositivos específicos, pois essas constantes terão
o comportamento deles, se necessário. A única consideração é o nível do SDK dos recursos
constante.
Exemplo 1: pressionamento de tecla
Este é um exemplo de como adicionar um retorno tátil a uma entrada por toque no View
usando listeners de toque. Os efeitos simulam a sensação de pressionar um
e soltando-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 do retorno tátil vão além de simular uma interação física com o
dispositivo. Eles também podem ser usados para transmitir um significado abstrato. Por exemplo:
a expectativa geral
O efeito CONFIRM
é um
vibrações curtas e leves enquanto uma
REJECT
pode ser um
feedback mais forte para sinalizar falhas. Isso é ilustrado no
exemplo para um botão de envio de feedback.
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 retorno tátil
O uso da abordagem baseada em View
tem como foco a interação do usuário. É
mais consistentes para todo o sistema. No entanto, regras predefinidas específicas
As APIs VibrationEffect
também podem ser invocadas para oferecer retorno tátil personalizado.
efeitos
Os efeitos predefinidos estão disponíveis como VibrationEffect
constantes e podem ser
verificou a existência de suporte e foi usado com o serviço Vibrator
, como mostrado no
exemplos a seguir.
Entenda o suporte do dispositivo para APIs VibrationEffect
No uso básico, não deve haver necessidade de verificar o suporte de indivíduos
APIs do VibrationEffect
. As APIs, como Vibrator.areEffectsSupported
e Vibrator.areAllEffectsSupported
são usados para determinar se o dispositivo
uma implementação personalizada da constante. Se um efeito personalizado não for
seu app ainda poderá reproduzir os efeitos e usar uma linguagem de definição
implementação substituta.
Para mais detalhes, consulte Predefinidos
VibrationEffect
.
Pré-requisitos: carregar a permissão "Vibrator" e "VIBRATE
"
A maioria das vibrações pode ser reproduzida com o serviço Vibrator
, que pode ser carregado
da seguinte forma:
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
permissão VIBRATE
para
para vibrar o dispositivo que está usando este 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
Efeitos predefinidos podem ser preparados usando VibrationEffect.createPredefined
,
Depois, ele é reproduzido usando um dos métodos vibrate
em Vibrator
.
Este exemplo tem 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 primitivos
A API VibrationEffect.Composition
oferece mais possibilidades para
retorno tátil. No entanto, ao contrário dos efeitos, esses primitivos não têm
substitutos no nível do sistema, o que significa
que é necessária muita atenção
os primitivos e outros recursos suportados pelo dispositivo.
O uso dessas APIs é discutido com mais detalhes em Como criar efeitos táteis personalizados.