Méthode onTouchEvent pas être appelé
Je vais avoir un problème que ma méthode
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
est plus récente appelée. Toutes les idées pourquoi donc? Je suis en train de construire un api google 4.0.3 application, et je suis trzing pour permettre le passage des doigts pour mon viewFliper. Toutefois, il ne peut pas fonctionner si le toucher est plus récente appelée.
btw:
public class MainActivity extends SherlockMapActivity implements ActionBar.TabListener {
C'est la déclaration de mon activité. et pour détecter le passage des doigts, j'ai mis en place:
SimpleOnGestureListener simpleOnGestureListener = new SimpleOnGestureListener(){
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {
float sensitvity = 50;
if((e1.getX() - e2.getX()) > sensitvity){
SwipeLeft();
}else if((e2.getX() - e1.getX()) > sensitvity){
SwipeRight();
}
return true;
}
};
GestureDetector gestureDetector= new GestureDetector(simpleOnGestureListener);
Merci u!
edit:
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ViewFlipper
android:id="@+id/ViewFlipper"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff" >
<include
android:layout_height="match_parent"
layout="@layout/mymain" />
<include layout="@layout/secondmain" />
<include layout="@layout/thirdmain" />
<include layout="@layout/fourthmain" />
</ViewFlipper>
</LinearLayout>
edit2: toutes mes mises en page ont scrollview mis en œuvre est-il possible de faire défiler prend que les événements et de les gérer. Et comment détecter les gestes si oui?
- ok, maintenant, je suis sûr que le problème est que le scrollview poignée touche, donc de toute façon d'ignorer que et encore être le défilement disponible?
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une solution parfaite. J'ai mis en œuvre la nouvelle méthode:
et maintenant, tout fonctionne très bien!
Edit:
Mon code final:
Comme je l'ai écrit dans Gabrjan le post de commentaires qu'il déclenche en permanence tout en touchant l'écran, il y a effectivement un moyen facile d'obtenir seulement le contact et d'événements:
C'était très utile pour moi de mettre Android en mode immersif lorsqu'une partie quelconque de l'écran a été touché quelle que soit l'élément. Mais je n'ai pas souhaité de jeu immersive mode à plusieurs reprises!
Oui c'est ça le problème, quand android gère les événements tactiles chaque événement se passe d'un enfant à un parent, alors d'abord il est géré par ViewFlipper, mais alors il va à ScrollView. Donc, vous avez à mettre en œuvre getParent().requestDisallowInterceptTouchEvent(vrai) (voir ViewParent classe) afin de rendre tous les événements gérés par ViewFlipper, et puis il suffit de détecter la direction de geste si horizontale, puis retournez voir si pas alors de passer d'événement tactile pour le ScrollView ou il suffit de faire défiler le ScrollView par programme
EDIT: vous pouvez Aussi mettre en œuvre OnTouchListener dans votre ViewFlipper et dans ce auditeur déclencher GestureDetector.onTouchEvent(cas), mais cela nécessite aussi requestDisallowInterceptTouchEvent de votre parent vue true
Tous les gestes et les événements tactiles va vers le plus bas de l'élément dans la vue de la hiérarchie qui peut s'en occuper.
Donc, si vous avez n'importe quel auditeur, par la mise en page que vous pouvez appeler
((TypeOfParrent)yourView.getParent()).onTouchEvent(event)
à l'événement délégué pour le gestionnaire que vous voulez.AJOUTER: je recoment vous d'utiliser
ViewPager
de retournement de point de vue.Dans le ViewPager vous n'avez pas besoin de met en œuvre votre propre onGestureListener.
http://www.edumobile.org/android/android-beginner-tutorials/view-pager-example-in-android-development/
http://developer.android.com/reference/android/support/v4/view/ViewPager.html