2013-08-21 4 views
0

J'utilise la bibliothèque droidQuery pour gérer les événements de glissement selon la méthodeAndroid droidQuery Swipe détection de la longueur

$.with(myView).swipe(new Function(...)); 

(voir mon post précédent here), et je me demandais si leur est un moyen d'élargir la réponse afin de vérifier combien de temps l'utilisateur balaye, et réagissent différemment en fonction de combien de temps le temps d'arrêt est. Merci pour vos réponses!

Répondre

1

Vous pouvez suivre le modèle décrit here, avec du code supplémentaire dans la logique de balayage. De hors le code lié, nous avons l'instruction switch suivante:

switch(swipeDirection) { 
    case DOWN : 
     //TODO: Down swipe complete, so do something 
     break; 
    case UP : 
     //TODO: Up swipe complete, so do something 
     break; 
    case LEFT : 
     //TODO: Left swipe complete, so do something 
     break; 
    case RIGHT : 
     //TODO: Right swipe complete, so do something (such as): 
     day++; 
     Fragment1 rightFragment = new Fragment1(); 
     Bundle args = new Bundle(); 
     args.putInt("day", day); 
     rightFragment.setArguments(args); 
     android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
     transaction.replace(R.id.fragment_container, rightFragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 
     break; 
    default : 
     break; 
} 

Pour ajouter un chèque pour le temps d'arrêt, ajoutez les variables de classe suivantes:

private Date start; 
public static final int LONG_SWIPE_TIME = 400;//this will be the number of milliseconds needed to recognize the event as a swipe 

Ensuite, ajoutez cela à la logique DOWN de cas : Dans chacun de vos cas swipe

start = new Date(); 

, vous pouvez ajouter cette vérification:

if (start != null && new Date().getTime() - start.getTime() >= LONG_SWIPE_TIME) { 
    start = null; 
    //handle swipe code here. 
} 

Et enfin dans votre UP cas, ajoutez:

start = null; 

Cela fera en sorte que seuls les grands coups qui sont vers le bas pour plus longtemps que LONG_SWIPE_TIME seront traitées par votre code swipe. Par exemple, pour le cas RIGHT, vous aurez:

case RIGHT : 
     if (start != null && new Date().getTime() - start.getTime() >= LONG_SWIPE_TIME) { 
      start = null; 
      //TODO: Right swipe complete, so do something (such as): 
      day++; 
      Fragment1 rightFragment = new Fragment1(); 
      Bundle args = new Bundle(); 
      args.putInt("day", day); 
      rightFragment.setArguments(args); 
      android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
      transaction.replace(R.id.fragment_container, rightFragment); 
      transaction.addToBackStack(null); 
      transaction.commit(); 
     } 
     break; 
+0

merci, mais qu'est-ce que startTime? – superuser

+0

@superuser, c'était supposé être juste 'start'. J'ai mis à jour mon code pour refléter cela. – Phil

+1

merci beaucoup pour toute cette aide avec votre bibliothèque. C'est vraiment génial. Espérons qu'il deviendra encore plus populaire et plus d'informations apparaîtront sur le web, il sera donc plus facile de faire des recherches. – superuser