Je souhaite que la fling
détection des gestes fonctionne dans mon application Android.
Ce que j'ai est un GridLayout
qui contient 9 ImageView
s. La source se trouve ici: Romain Guys's Grid Layout .
Ce fichier que je prends est issu de l' application Photostream de Romain Guy et n'a été que légèrement adapté.
Pour la situation de clic simple, je n'ai besoin que de définir onClickListener
pour chaque ImageView
que j'ajoute être le principal activity
qui implémente View.OnClickListener
. Il semble infiniment plus compliqué de mettre en œuvre quelque chose qui reconnaît a fling
. Je suppose que c'est parce que cela peut s'étendre views
?
Si mon activité implémente,
OnGestureListener
je ne sais pas comment définir cela comme écouteur de gestes pour laGrid
ou lesImage
vues que j'ajoute.public class SelectFilterActivity extends Activity implements View.OnClickListener, OnGestureListener { ...
Si mon activité est implémentée,
OnTouchListener
je n'ai aucuneonFling
méthode pour le faireoverride
(elle a deux événements comme paramètres me permettant de déterminer si le lancer était notable).public class SelectFilterActivity extends Activity implements View.OnClickListener, OnTouchListener { ...
Si j'effectue une personnalisation
View
, commeGestureImageView
celle-ci,ImageView
je ne sais pas comment dire à l'activité qu'ilfling
s'est produit depuis la vue. Dans tous les cas, j'ai essayé et les méthodes n'étaient pas appelées lorsque j'ai touché l'écran.
J'ai vraiment besoin d'un exemple concret de ce travail à travers les vues. Quoi, quand et comment dois-je le joindre listener
? Je dois également pouvoir détecter les clics simples.
// 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;
}
}
});
Est-il possible de placer une vue transparente sur le haut de mon écran pour capturer des flings?
Si je choisis de ne pas voir inflate
mes images enfant à partir de XML, puis-je passer le GestureDetector
paramètre en tant que constructeur à une nouvelle sous-classe ImageView
que je crée?
C'est l'activité très simple pour laquelle j'essaie de faire fonctionner la fling
détection: SelectFilterActivity (Adapté de photostream) .
J'ai regardé ces sources:
Jusqu'à présent, rien n'a fonctionné pour moi et j'espérais quelques indications.