Android balayez vers la gauche et la droite dans RelativeLayout
Je suis en train de mettre en œuvre balayez vers la gauche ou la droite dans mon RelativeLayout. J'ai écrit du code, mais ne pouvait pas obtenir balayez vers la gauche ou la droite de travail. Je suis à l'aide de GestureDetector
c'est une de mes source
private GestureDetector gesturedetector = null;
private RelativeLayout swipelayout;
@SuppressLint("UseValueOf")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.strada_menu_result_loadmore,
container, false);
swipelayout = (RelativeLayout) rootView.findViewById(R.id.swipelayout);
gesturedetector = new GestureDetector(new MyGestureListener());
swipelayout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
gesturedetector.onTouchEvent(event);
return true;
}
});
return rootView;
}
public boolean dispatchTouchEvent(MotionEvent ev){
return gesturedetector.onTouchEvent(ev);
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
private static final int SWIPE_MIN_DISTANCE = 150;
private static final int SWIPE_MAX_OFF_PATH = 100;
private static final int SWIPE_THRESHOLD_VELOCITY = 100;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
float dX = e2.getX() - e1.getX();
float dY = e1.getY() - e2.getY();
if (Math.abs(dY) >= SWIPE_THRESHOLD_VELOCITY
&& Math.abs(velocityX) >= SWIPE_THRESHOLD_VELOCITY &&
Math.abs(dX) >= SWIPE_MIN_DISTANCE) {
if (dX > 0) {
Toast.makeText(getActivity(), "Right Swipe",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Left Swipe",
Toast.LENGTH_SHORT).show();
}
return true;
}
return false;
}
}
ce que je fais mal? si quelqu'un connait la solution merci de m'aider
grâce
Je vous suggère d'utiliser ViewPager pour le balayage.
Je suppose qu'il veut juste de détecter les mouvements, et non page par
oui j'simple à détecter balayez seul fragment
Nous aider à sortir un peu d'ici là. Qu'essayez-vous de faire? Qu'est-ce exactement est-ce que votre code ne font que vous ne voulez pas?
Je suppose qu'il veut juste de détecter les mouvements, et non page par
Fragments
. Sinon, pourquoi aurait-il utiliser un GestureDetector
?oui j'simple à détecter balayez seul fragment
Nous aider à sortir un peu d'ici là. Qu'essayez-vous de faire? Qu'est-ce exactement est-ce que votre code ne font que vous ne voulez pas?
OriginalL'auteur user3804530 | 2014-07-18
Vous devez vous connecter pour publier un commentaire.
Vous avez juste besoin d'un OnTouchListener, qui devrait être tout pour simple réponse. Prendre un coup d'oeil.
J'ai utilisé ce code dans certains projet de travail, donc tout devrait fonctionner correctement. Mais laissez-moi savoir si il ya quelque chose qui manque et qui ne fonctionne pas.
Ce code il ne prend pas soin de coordonnée Y de la. Ce qu'il fait est, obtient la coordonnée X lorsque vous appuyez sur à l'écran (downX), et obtient la coordonnée X de nouveau lorsque vous relâchez votre doigt (upX). Il compare ensuite ces deux valeurs de comprendre quelle direction votre doigt se déplace. Pour bloquer les "UP" (Sens +Y la Direction de), vous devez ajouter le mildiou et l'upY valeurs, un peu comme X. ensuite, vous pouvez comparer ces deux valeurs, et renvoie la valeur false, si vous n'avez pas que de l'action pour être considéré.
Et vous pouvez également modifier la valeur de seuil, de 100 à quelque chose de plus grand. Ensuite, vous pouvez ignorer les petits X changements de direction, lorsque vous déplacez votre doigt de bas en haut direction.
il devrait être: si (upX - downX > 100* Constantes.la densité) { } else if (downX - upX > 100 * Constantes.la densité) { } U, nous allons changer l'ordre de la upX - downX et aussi d'ajouter de la à 100, ce qui est incorrect. Droit? Je veux dire, j'ai pris l' - à partir de 100 et il fonctionne très bien maintenant, ne prend que la coordonnée Y, ne balayez vers la gauche à tout ce que je fais
Ce que le code ci-dessus n'est, trouve la différence dans les coordonnées X. Entre le moment où vous touchez à l'écran et celui où vous la relâchez,
down
etup
. 100 est le minimum de modifications à la coordonnée X du. Il ne les détecte pas le geste si la différence est de moins de 100 X.OriginalL'auteur osayilgan
Essayer cela va vous aider....
OnSwipeTouchListener.java:
Utilisation:
La même réponse que vous avez donnée est disponible ici: stackoverflow.com/questions/4139288/.... Vous pourriez avoir suggéré la solution par le biais du lien ou de l'améliorer en la réalisation d'une meilleure explication.
j'ai syntacs erreur dans setOnTouchListener méthode pouvez-vous changé votre code sir ?
comment je peux écrire setOnTouchListener méthode à l'heure actuelle ?
c'est la mauvaise réponse, monsieur. je ne peux pas glisser ma mise en page
OriginalL'auteur yashwanth