Android: balayez l'écran pour ouvrir une autre activité?

je suis un n00b programmeur et ont besoin de beaucoup d'aide.

Juste pour le tutoriel, je veux faire simple flore & de la faune (plante & animal) de l'encyclopédie

Je veux faire de mon écran d'accueil glisser-mesure tout comme l'Android l'écran d'accueil de. Balayez vers la droite pour ouvrir la page de Plantes et balayez vers la gauche pour ouvrir des Animaux de la page.
Je ne sais pas comment faire le effet de transition. Nous pouvons donc faites-le glisser à mi-chemin à coup d'oeil ce qui est dans la page suivante et il suffit de glisser en arrière pour annuler

Pouvez-vous les gars de partager un lien pour la faire glisser en mesure de l'écran?

Grâce avant

[Modifier]

@Agarwal
J'ai essayé le code à partir de votre Link2 et il ne fonctionne pas

J'essaie de tester si le geste est détecté ou non par la mise Toast à l'intérieur de l'intérieur de la classe, mais le pain n'est pas montré. Le Link1 est fondamentalement la même.

et de la porte de la code, je pense que ça ne peut pas faire de mon écran glisser pouvoir comme dans Android l'écran d'accueil de

mon code:

public class Home extends Activity implements OnClickListener {
private GestureDetector gestureDetector;
View.OnTouchListener gestureListener;
ImageButton flora, fauna;
Intent go;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initialize();
gestureDetector = new GestureDetector(new SwipeGestureDetector());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
};
}
private void initialize() {
//find view by id to image button
//set onClickListener to image button
}
public void onClick(View v) {
//normal switch and case for each button
}
private void onLeftSwipe() {
Toast t = Toast.makeText(Home.this, "Left swipe", Toast.LENGTH_LONG);
t.show();
go = new Intent("test.apps.FLORA");
startActivity(go);
}
private void onRightSwipe() {
Toast t = Toast.makeText(Home.this, "Right swipe", Toast.LENGTH_LONG);
t.show();
go = new Intent("test.apps.FAUNA");
startActivity(go);
}
private class SwipeGestureDetector extends SimpleOnGestureListener {
private static final int SWIPE_MIN_DISTANCE = 50;
private static final int SWIPE_MAX_OFF_PATH = 200;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try {
Toast t = Toast.makeText(Home.this, "Gesture detected", Toast.LENGTH_SHORT);
t.show();
float diffAbs = Math.abs(e1.getY() - e2.getY());
float diff = e1.getX() - e2.getX();
if (diffAbs > SWIPE_MAX_OFF_PATH)
return false;
//Left swipe
if (diff > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Home.this.onLeftSwipe();
} 
//Right swipe
else if (-diff > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Home.this.onRightSwipe();
}
} catch (Exception e) {
Log.e("Home", "Error on gestures");
}
return false;
}
}
}
  • Hey, question rapide. Avez-vous jamais comprendre pourquoi la link2 n'a pas de travail? Je suis en train de le faire fonctionner ainsi. Mais j'ai pas de chance dès maintenant.
  • Oui, j'ai trouvé une bonne source de code de ce dragable écran, voici le lien marcreichelt.blogspot.sg/2010/09/...
  • le lien est cassé, voici un lien alternatif web.archive.org/web/2....
  • GestureDetector est maintenant obsolète
InformationsquelleAutor hrsetyono | 2012-04-12