Quero que a fling
detecção de gestos funcione no meu aplicativo Android.
O que eu tenho é um GridLayout
que contém 9 ImageView
s. A fonte pode ser encontrada aqui: Grid Layout da Romain Guys .
Esse arquivo é do aplicativo Photostream de Romain Guy e foi apenas ligeiramente adaptado.
Para a situação de clique simples, preciso definir apenas o onClickListener
para cada um ImageView
que adiciono como o principal activity
que implementa View.OnClickListener
. Parece infinitamente mais complicado implementar algo que reconhece a fling
. Presumo que isso é porque pode abranger views
?
Se minha atividade é implementada
OnGestureListener
, não sei como defini-lo como ouvinte de gestos para asGrid
ou asImage
visualizações que adiciono.public class SelectFilterActivity extends Activity implements View.OnClickListener, OnGestureListener { ...
Se minha atividade é implementada
OnTouchListener
, não tenho umonFling
método paraoverride
(ela tem dois eventos como parâmetros, permitindo-me determinar se o caso foi digno de nota).public class SelectFilterActivity extends Activity implements View.OnClickListener, OnTouchListener { ...
Se eu criar um costume
View
, assimGestureImageView
prolongadoImageView
, não sei como dizer à atividade quefling
ocorreu uma a partir da visualização. De qualquer forma, tentei isso e os métodos não foram chamados quando toquei na tela.
Eu realmente só preciso de um exemplo concreto desse trabalho entre pontos de vista. O que, quando e como devo anexar isso listener
? Também preciso detectar cliques únicos.
// Gesture detection
mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
int dx = (int) (e2.getX() - e1.getX());
// don't accept the fling if it's too short
// as it may conflict with a button push
if (Math.abs(dx) > MAJOR_MOVE && Math.abs(velocityX) > Math.absvelocityY)) {
if (velocityX > 0) {
moveRight();
} else {
moveLeft();
}
return true;
} else {
return false;
}
}
});
É possível colocar uma visão transparente por cima da minha tela para capturar arremessos?
Se eu optar por não inflate
exibir as imagens da imagem filha no XML, posso passar o GestureDetector
parâmetro como construtor para uma nova subclasse ImageView
criada por mim?
Esta é a atividade muito simples para a qual estou tentando fazer a fling
detecção funcionar: SelectFilterActivity (Adaptado do photostream) .
Eu estive olhando para estas fontes:
Nada funcionou para mim até agora e eu estava esperando por algumas dicas.