Je souhaite que la flingdétection des gestes fonctionne dans mon application Android.
Ce que j'ai est un GridLayoutqui contient 9 ImageViews. 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 onClickListenerpour chaque ImageViewque j'ajoute être le principal activityqui 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,
OnGestureListenerje ne sais pas comment définir cela comme écouteur de gestes pour laGridou lesImagevues que j'ajoute.public class SelectFilterActivity extends Activity implements View.OnClickListener, OnGestureListener { ...Si mon activité est implémentée,
OnTouchListenerje n'ai aucuneonFlingmé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, commeGestureImageViewcelle-ci,ImageViewje ne sais pas comment dire à l'activité qu'ilflings'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 inflatemes images enfant à partir de XML, puis-je passer le GestureDetectorparamètre en tant que constructeur à une nouvelle sous-classe ImageViewque je crée?
C'est l'activité très simple pour laquelle j'essaie de faire fonctionner la flingdé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.
Il y a 2 importations soyez prudent en choisissant que les deux sont différents
