2010-12-06 28 views
1

Je dois faire la navigation glisser dans Android. J'ai ajouté un code pour la navigation à l'écran. Ce qui n'est pas aussi fluide que la configuration par défaut d'Android. Le code suivant donne la navigation glisser de gauche à droite et de droite à gauche, mais le problème est lorsque vous appuyez sur à droite puis à gauche, puis l'écran navigue. Quelle est la bonne façon de l'atteindre? Dois-je travailler avec le même code pour calculer les valeurs X?
Ci-dessous le code.Android - Drag navigation de l'écran

// On Drag Navigation 
public boolean onTouch(View arg0, MotionEvent arg1) { 

    // Get the action that was done on this touch event 
    switch (arg1.getAction()) 
    { 
     case MotionEvent.ACTION_DOWN: 
     { 
      // store the X value when the user's finger was pressed down 
      downXValue = arg1.getX(); 
      break; 
     } 

     case MotionEvent.ACTION_UP: 
     { 
      // Get the X value when the user released his/her finger 
      float currentX = arg1.getX();    

      // Going Backward: pushing stuff to the right 
      if (downXValue < currentX) 
      { 
       Intent lIntent = new Intent(getApplicationContext(), previousScreen.class); 
       startActivity(lIntent); 
       finish(); 
      } 

      // Going Forward: pushing stuff to the left 
      if (downXValue > currentX) 
      { 
       Intent lIntent = new Intent(getApplicationContext(), nextScreen.class); 
       startActivity(lIntent); 
       finish(); 
      } 
      break; 
     } 
    } 
} 

Veuillez spécifier le bon moyen d'y parvenir.

Merci à l'avance

Répondre

0

Vous ne voulez probablement pas d'utiliser des activités séparées pour cela. Ce modèle est utilisé pour naviguer dans la même activité.

Deux ou trois états doivent être pris en compte selon la façon dont vous choisissez d'y réfléchir. Le premier est l'état de «glisser» lorsque l'utilisateur a un doigt dans l'écran et effectue un panoramique d'avant en arrière. Le deuxième et le troisième sont ce qui se passe lorsque l'utilisateur laisse aller. Si la vélocité lors du lâcher est inférieure à un certain seuil, (le système utilise la vélocité de lancer minimale de ViewConfiguration) pour animer l'écran le plus proche. Si la vitesse dépasse ce seuil, lancez l'écran suivant dans cette direction. Regardez les classes VelocityTracker, Scroller et Interpolator. Tous peuvent vous aider ici.