2013-08-22 2 views
0

J'ai utilisé la bibliothèque droidQuery, qui est vraiment géniale et facile à utiliser. Je l'ai utilisé pour la détection de gestes personnalisés principalement jusqu'à présent. J'ai un swipeInterceptorView avec un écouteur de balayage pour détecter des balayages, mais j'ai également besoin de détecter le pincement et le zoom dans mon application. Merci!Android Droid Query Comment reconnaître le pincement et le zoom

Répondre

2

La bibliothèque droidQuery ne prend pas en charge le zoom de pincement, mais vous pouvez utiliser « capacité de s avec balayant Android » s droidQueryScaleGestureDetector pour obtenir la détection de geste que vous recherchez.

L'exemple suivant devrait vous aider:

public class MyActivity extends Activity { 

    private float scaleFactor = 1.0f; 
    private ScaleGestureDetector scaleGestureDetector; 
    private SwipeInterceptorView view; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //set main view to the main layout 
     setContentView(R.layout.main); 
     //get a reference to the content view 
     view = (SwipeInterceptorView) findViewById(R.id.swipe_view); 
     //get the scale gesture detector 
     scaleGestureDetector = new ScaleGestureDetector(context, new ScaleListener()); 
     //add Swiper 
     view.setSwipeListener(new SwipeListener() { 
      public void onUpSwipe(View v) { 
       //TODO handle up swipe 
      } 
      public void onRightSwipe(View v) { 
       //TODO handle right swipe 
      } 
      public void onLeftSwipe(View v) { 
       //TODO handle left swipe 
      } 
      public void onDownSwipe(View v) { 
       //TODO handle down swipe 
      } 
     }); 
     view.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if (scaleGestureDetector.onTouchEvent(event))//this will cause a pinch zoom if two fingers are down 
        return true; 
       //if no pinch zoom was handled, the swiping gesture will take over. 
       return super.onTouch(v, event); 
      } 
     }); 
    } 

    //this inner class copied from http://www.vogella.com/articles/AndroidTouch/article.html#scaleGestureDetector 
    private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { 
     @Override 
     public boolean onScale(ScaleGestureDetector detector) { 
      scaleFactor *= detector.getScaleFactor(); 

      // Don't let the object get too small or too large. 
      scaleFactor = Math.max(0.1f, Math.min(scaleFactor, 5.0f)); 

      view.invalidate(); 
      return true; 
     } 
    } 
} 
+0

le pincement et de zoom sont reconnus comme – superuser

+0

@superuser glisser Est-ce au lieu d'effectuer un zoom ou avec elle? – Phil

+0

c'est au lieu de zoomer. – superuser

Questions connexes