2017-09-27 4 views
0

Je travaille sur une application très basique montrant des cartes avec une image et du texte. Cela fonctionne parfaitement dans le sens où il est bien centré et ça claque bien. Cependant, lorsque je défile/lance rapidement, la carte qui atterrit peut être la troisième ou même la quatrième de la carte actuelle.Comment puis-je envoyer la carte suivante ou précédente uniquement?

Je veux le limiter de sorte que, lorsque l'utilisateur vole correctement (quelle que soit la rapidité), il ne doit atterrir qu'à une seule carte précédente, et s'il se jette à gauche, il doit passer à la prochaine carte immédiate. Est-il possible de le faire?

+0

Je pense que vous avez besoin d'une sorte de 'ViewPager' – snachmsm

+0

verticales, tout comme les événements de défilement, il y a des événements fling aussi bien. Utiliser ça. – Dennis

Répondre

0

Dans votre cas, je pense que vous devriez le résoudre en changeant la vitesse de fling, RecyclerView a la méthode de fling, vous venez de l'ignorer.

float FLING_SPEED = 0.5f; 

@Override 
public boolean fling(int velocityX, int velocityY) 
{ 
    // FLING_SPEED between (0, 1) => slow down, greater 1 => speed up 
    // velocityY for vertical, velocityX for horizontal 
    velocityY *= FLING_SPEED; 
    return super.fling(velocityX, velocityY); 
}