DrawerLayout modifie la sensibilité?

La sensibilité par défaut de DrawerLayout est correcte, mais j'aimerais faciliter un geste de glissement de gauche à droite sur le côté de l'écran pour ouvrir le tiroir. Je trouve qu'il est difficile pour les tablettes, mais aussi sur certains téléphones.

Je ne vois pas de références de gestes ou de gestes dans la page DrawerLayout sur l'API Web. Est-ce que quelqu'un a vu quelque chose qui nous permettra de le faire?

  • Comment centrer la mise en page dans la boîte de dialogue Android?
  • Comment programmer le bouton drawableLeft sur le bouton Android?
  • Android Web Scraping avec un navigateur sans tête
  • Élément avec l'application: showAsAction not showing
  • Comment afficher un bouton à la fin d'une Android ListView
  • Comment exécuter l'application Android dans un périphérique?
  • Lint personnalisé pour Java / Android Report si nous trouvons un appel de classe sans implémenter son interface
  • Comment implémenter / utiliser un type dynamique dans la conception de matériel d'Android
  • Comment faire un SeekBar vertical dans Android?
  • Les classes suivantes n'ont pas pu être trouvées: android.support.v7.internal.app.WindowDecorActionBar
  • Les problèmes ADK et Eclipse - com.android.future et USBAccessory?
  • Android: fitsSystemWindows ne fonctionne pas
  • 2 Solutions collect form web for “DrawerLayout modifie la sensibilité?”

    Un exemple de geste simple: vous pouvez essayer de mettre sur l'écran supérieur 2 images avec un cercle, et lorsque vous appuyez sur celui pour passer à une autre couche, et à nouveau, vous avez pressé le cercle précédent pour sauter à nouveau. Essayez de passer d'une activité à une autre et si vous souhaitez fermer l'activité précédente, après avoir appelé l'activité suivante, fermez la précédente avec .finish ();

    Pour android.support.v4.widget.DrawerLayout J'ai créé un hack qui vous permet d'étendre la zone où le geste coulissant (stroke) peut commencer, ce qui rend le geste glissant plus facile.

    Mise en œuvre du hack:

      // assuming mDrawerLayout is an instance of android.support.v4.widget.DrawerLayout try { // get dragger responsible for the dragging of the left drawer Field draggerField = DrawerLayout.class.getDeclaredField("mLeftDragger"); draggerField.setAccessible(true); ViewDragHelper vdh = (ViewDragHelper)draggerField.get(mDrawerLayout); // get access to the private field which defines // how far from the edge dragging can start Field edgeSizeField = ViewDragHelper.class.getDeclaredField("mEdgeSize"); edgeSizeField.setAccessible(true); // increase the edge size - while x2 should be good enough, // try bigger values to easily see the difference int origEdgeSize = (int)edgeSizeField.get(vdh); int newEdgeSize = (int) (origEdgeSize * 2); edgeSizeField.setInt(vdh, newEdgeSize); } catch (Exception e) { // we unexpectedly failed - eg if internal implementation of // either ViewDragHelper or DrawerLayout changed } 

    Explication:

    Le hack est basé sur le fait que la classe DrawerLayout repose sur les instances de ViewDragHelper pour gérer le traînage. Il y a deux instances: une pour le tiroir gauche, et une pour la droite. Ils sont instanciés comme ceci:

      public DrawerLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); ... code omitted for brevity .. mLeftDragger = ViewDragHelper.create(this, TOUCH_SLOP_SENSITIVITY, mLeftCallback); mLeftDragger.setEdgeTrackingEnabled(ViewDragHelper.EDGE_LEFT); mLeftDragger.setMinVelocity(minVel); mLeftCallback.setDragger(mLeftDragger); mRightDragger = ViewDragHelper.create(this, TOUCH_SLOP_SENSITIVITY, mRightCallback); mRightDragger.setEdgeTrackingEnabled(ViewDragHelper.EDGE_RIGHT); mRightDragger.setMinVelocity(minVel); mRightCallback.setDragger(mRightDragger); ... code omitted for brevity .. } 

    Les deux mLeftDragger et mRightDragger sont des champs privés, et le champ ViewDragHelper dans ViewDragHelper est également privé. Il n'existe pas de méthodes publiques permettant au code client de définir ces champs – d'où le hack repose sur la réflexion, qui est fragile face aux modifications internes de la mise en œuvre dans les classes ViewDragHelper et DrawerLayout.

    Prime:
    Un tutoriel complet sur l'utilisation de ViewDragHelper

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.