0

je fais un lecteur de musique pour Android, mais je récemment mis à jour avec des gestes swipe mais la chose est que un seul geste (swipe fond travaille) j'ai vérifié la classe geste de balayage et rien ne semble se tromper dans ceAndroid SwipeGesture travaillant uniquement dans une direction, je n'ai aucune idée pourquoi?

voici le code de ma mise en œuvre

LinearLayout LL=(LinearLayout) findViewById(R.id.LL); 
LL.setOnTouchListener(new OnSwipeTouchListener() { 
      public void onSwipeTop() { 
       mp.stop(); 
       mp.release(); 
      } 
      public void onSwipeRight() { 
       mp.stop(); 
       mp.release(); 

      } 
      public void onSwipeLeft() { 
       mp.stop(); 
       mp.release(); 

      } 
      public void onSwipeBottom() { 
       mp.stop(); 
       mp.release(); 
      } 
     }); 

et voici ma classe pour glisser

public class OnSwipeTouchListener extends Activity implements OnTouchListener{ 

    private final GestureDetector gestureDetector = new GestureDetector(new GestureListener()); 

    public boolean onTouch(final View view, final MotionEvent motionEvent) { 
     // super.onTouch(view, motionEvent); 
     return gestureDetector.onTouchEvent(motionEvent); 
    } 

    private final class GestureListener extends SimpleOnGestureListener { 

     private static final int SWIPE_THRESHOLD = 70; 
     private static final int SWIPE_VELOCITY_THRESHOLD = 60; 

     @Override 
     public boolean onDown(MotionEvent e) { 
      return true; 
     } 

     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
      boolean result = false; 
      try { 
       float diffY = e2.getY() - e1.getY(); 
       float diffX = e2.getX() - e1.getX(); 
       if (Math.abs(diffX) > Math.abs(diffY)) 
       { 
        if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) 
        { 
         if (diffX > 0) 
         { 
          onSwipeRight(); 
         } 
         else 
         { 
          onSwipeLeft(); 
         } 
        } 
       } 
       else 
       { 
        if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) 
        { 
         if (diffY > 0) 
         { 
          onSwipeBottom(); 
         } else { 
          onSwipeTop(); 
         } 
        } 
       } 
      } catch (Exception exception) { 
       exception.printStackTrace(); 
      } 
      return result; 
     } 
    } 

    public void onSwipeRight() { 
    } 

    public void onSwipeLeft() { 
    } 

    public void onSwipeTop() { 
    } 

    public void onSwipeBottom() { 
    } 
} 
+0

Mais dans mon cas, le balayage fonctionne dans une direction .... pouvez-vous déboguer le code? Si non, pourquoi publiez-vous ces questions avec une approche totalement différente? Je dois d'abord comprendre son code, puis son problème et ensuite le changer en fonction de mes besoins et ensuite vérifier si cela fonctionne pour moi ou pas ... –

Répondre

0

On dirait qu'il n'y avait pas de problème avec le code .... mais le problème était le point de vue, la fichier xml ..La disposition linéaire ne remplissait pas tout l'espace ... donc le seul balayage qui fonctionnait était le balayage du bas ... et cela aussi seulement dans la région supérieure (où la disposition linéaire existait) ....

Questions connexes