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;
merci, mais qu'est-ce que startTime? – superuser
@superuser, c'était supposé être juste 'start'. J'ai mis à jour mon code pour refléter cela. – Phil
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