Quero que meu aplicativo reconheça quando um usuário desliza da direita para a esquerda na tela do telefone.
Como fazer isso?
android
swipe
gesture-recognition
endryha
fonte
fonte
Respostas:
OnSwipeTouchListener.java :
Uso:
fonte
OnSwipeTouchListener
que recebe um contexto, porque esse construtor deGestureDetector
é preterido desde o nível 3 da API e instanciar oGestureDetector
construtor.onTouch
para aOnSwipeTouchListener
definição, caso contrário o meu IDE irá aparecer erro "acesso membro privado"Esse código detecta furtos à esquerda e à direita, evita chamadas de API obsoletas e possui outras melhorias diversas em relação às respostas anteriores.
Use-o assim:
fonte
setOnTouchListener
(normalmenteonCreate
).context
é othis
ponteiro (a menos que você esteja criando um fragmento).Fragment.getActivity()
.Se você também precisar processar os eventos de clique aqui, algumas modificações:
E uso da amostra:
fonte
Expandindo a resposta de Mirek, para o caso em que você deseja usar os gestos de furto dentro de uma exibição de rolagem. Por padrão, o ouvinte de toque da visualização de rolagem é desativado e, portanto, a ação de rolagem não ocorre. Para corrigir isso, você precisa substituir o
dispatchTouchEvent
métodoActivity
e retornar a versão herdada desse método depois de terminar com seu próprio ouvinte.Para fazer algumas modificações no código de Mirek: adiciono um getter para o
gestureDetector
noOnSwipeTouchListener
.Declare o
OnSwipeTouchListener
interior da Atividade como um campo de toda a classe.Modifique o código de uso de acordo:
E substitua o
dispatchTouchEvent
método dentroActivity
:Agora, as ações de rolagem e furto devem funcionar.
fonte
Para se ter
Click Listener
,DoubleClick Listener
,OnLongPress Listener
,Swipe Left
,Swipe Right
,Swipe Up
,Swipe Down
no únicoView
que você precisasetOnTouchListener
. ou seja,Para isso, você precisa de uma
OnSwipeTouchListener
classe que implementeOnTouchListener
.fonte
Você não precisa de cálculos complicados. Isso pode ser feito apenas usando a
OnGestureListener
interface daGestureDetector
classe.onFling
Método interno , você pode detectar todas as quatro direções como esta:MyGestureListener.java
:uso:
fonte
velocityX
evelocityY
noonFling
método. embora você possa experimentar para ver qual valor melhor se adequa às suas necessidades, o número final seria universal.Usar SwipeListView e deixe que ele lide com a detecção de gestos.
fonte
A versão Kotlin do @Mirek Rusin está aqui:
OnSwipeTouchListener.kt:
Uso:
a
open
palavra - chave era o ponto para mim ...fonte
Para adicionar um onClick também, aqui está o que eu fiz.
Eu estou usando fragmentos, então usando getActivity () para o contexto. Foi assim que eu o implementei - e funciona.
fonte
O método de Edward Brey funciona muito bem. Se alguém também quiser copiar e colar as importações do
OnSwipeTouchListener
, aqui estão elas:fonte
Uma pequena modificação na resposta do @Mirek Rusin e agora você pode detectar furtos multitoque. Este código está no Kotlin:
Onde Gesture.SWIPE_RIGHT e outros são identificadores inteiros únicos de gestos que estou usando para detectar o tipo de gesto mais tarde na minha atividade:
Então você vê que o gesto aqui é uma variável inteira que contém o valor que eu já passei antes.
fonte
Minha solução é semelhante à acima, mas eu abstraí o tratamento de gestos para uma classe abstrata
OnGestureRegisterListener.java
, que inclui gestos de deslizar , clicar e clicar por muito tempo .OnGestureRegisterListener.java
E use-o assim. Observe que você também pode passar facilmente seu
View
parâmetro.fonte
Eu tenho feito coisas semelhantes, mas apenas para furtos horizontais
E então ele pode ser usado para visualizar componentes
fonte
Esta pergunta foi feita há muitos anos. Agora, existe uma solução melhor: SmartSwipe: https://github.com/luckybilly/SmartSwipe
código fica assim:
fonte
@Mirek Rusin responder é muito bom. Mas, há um pequeno erro e a correção é solicitada -
Qual é a diferença? Definimos resultado = verdadeiro, apenas se tivermos verificado se todas as requrinments (SWIPE_THRESHOLD e SWIPE_VELOCITY_THRESHOLD estão OK). Isso é importante se descartarmos o furto se algumas das solicitações não forem atingidas e precisarmos fazer o método onTouchEvent do OnSwipeTouchListener!
fonte
Aqui está um código Android simples para detectar a direção do gesto
Em
MainActivity.java
eactivity_main.xml
escreva o seguinte código:fonte
fonte
Se você deseja exibir alguns botões com ações quando um item da lista é deslizado, muitas bibliotecas na Internet têm esse comportamento. Eu implementei a biblioteca que encontrei na internet e estou muito satisfeito. É muito simples de usar e muito rápido. Aprimorei a biblioteca original e adicionei um novo ouvinte de clique para o item. Também adicionei a biblioteca awesome da fonte ( http://fortawesome.github.io/Font-Awesome/ ) e agora você pode simplesmente adicionar um novo título de item e especificar o nome do ícone da fonte awesome.
Aqui está o link do github
fonte
fonte
o uso da resposta de Edward Brey em Kotlin
fonte