2011-06-18 4 views
2

J'ai un GirdView et j'ai un onTouchListener, je veux obtenir la direction de quand quelqu'un glisse leur doigt sur l'écran, je peux obtenir à droite et à gauche facilement, mais je veux aussi monter et descendre.onTouch Direction

Mais mon problème est ..

float currentX; 
     float currentY; 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
       float x = event.getX(); 
       float y = event.getY(); 

       switch(event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        Log.d("Showpatch", "Down Triggered " + x + ", " + y); 
        currentX = x; 
        currentY = y; 
        break; 

       case MotionEvent.ACTION_UP: 
        Log.d("Showpatch", "Up Triggered" + x + ", " + y); 

        Log.d("Showpatch", "Testing Left... " + x + ", " + y); 
        if (currentX > x) { 
         Log.d("Showpatch", "Moved Left"); 
         return false; 
        } 

        Log.d("Showpatch", "Testing Right... " + x + ", " + y); 
        if (currentX < x) { 
         Log.d("Showpatch", "Moved Right"); 
         return false; 
        } 

        Log.d("Showpatch", "Testing Down... " + x + ", " + y); 
        if (currentY < y) { 
         Log.d("Showpatch", "Moved Down"); 
         return false; 
        } 

        Log.d("Showpatch", "Testing Up... " + x + ", " + y); 
        if (currentY < y) { 
         Log.d("Showpatch", "Moved Up"); 
         return false; 
        } 

        break; 
       } 


      return false; 
     } 

Comme je l'ai dit se gauche et à droite sans problème, mais il ne détecte jamais ou vers le bas, car il tire la gauche/droite avant qu'il ne soit à la mise/down instructions, sauf si vous bougez votre doigt exactement de haut en bas, cela ne fonctionne pas ...

Y at-il un moyen d'aller où un utilisateur balaye vers le haut ou vers le bas?

Toute aide est très appréciée, merci.

Répondre