2010-12-06 11 views
1

Ich muss die Drag-Navigation in Android tun. Ich habe einen Code für die Drag-Screen-Navigation hinzugefügt. Was ist nicht so glatt wie Android Standard. Der folgende Code zeigt die Drag-Navigation von links nach rechts und von rechts nach links, aber das Problem ist, wenn Sie rechts und dann links tippen, dann navigiert der Bildschirm. Was ist der richtige Weg, um es zu erreichen? Muss ich bei der Berechnung der X-Werte mit dem gleichen Code arbeiten?
Unter dem Code.Android - Drag-Bildschirm Navigation

// 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; 
     } 
    } 
} 

Bitte geben Sie den richtigen Weg um es zu erreichen.

Vielen Dank im Voraus

Antwort

0

Sie wollen wahrscheinlich keine separaten Aktivitäten nutzen werden. Dieses Muster wird verwendet, um innerhalb derselben Aktivität zu navigieren.

Je nachdem, wie Sie darüber nachdenken, sind zwei oder drei Zustände zu berücksichtigen. Der erste ist der Status "Ziehen", wenn der Benutzer einen Finger auf dem Bildschirm hat und vor und zurück schwenkt. Die zweite und dritte ist, was passiert, wenn der Benutzer loslässt. Wenn die Geschwindigkeit beim Loslassen unter einem bestimmten Schwellenwert liegt (das System verwendet die minimale Schleudergeschwindigkeit von ViewConfiguration), animieren Sie zum nächsten Bildschirm. Wenn die Geschwindigkeit über diesem Schwellenwert liegt, blättern Sie zum nächsten Bildschirm in dieser Richtung.

Sehen Sie sich die VelocityTracker-, Scroller- und Interpolator-Klassen an. Sie alle können Ihnen hier helfen.