android: balayez vers la gauche ou la droite pour glisser les points de vue
J'ai une vue de liste. Sur le clic d'un élément à une vue détaillée de l'élément est ouvert. Cette disposition présente de nombreux widgets comme la vue du texte, ImageView Buttons
etc. Maintenant, je veux faire glisser cette vue de détail d'articles à afficher la vue de détail de l'élément suivant dans la liste. De la même façon à l'élément précédent de la gauche vers la droite.
Je ne suis pas en mesure de mettre en œuvre la vue coulissantes j'ai fait comment pour obtenir le prev /next éléments dans la liste. Mais la réelle glissement est la question
J'ai essayé gesturedetector comme dans Android: Balayez de gauche à droite et de droite à gauche
et quelques autres exemples. Mais quand j'ai essayer de glisser, il n'y a pas d'effet. Je ne vois pas de visual coulissant à tous.
Comment résoudre ce problème?
Essayé ce code mais toujours pas de glisser passe
public class ProductActivity extends Activity implements OnGestureListener {
@
Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.product_details);
setContent();
}
private void setContent() {
Bundle extras = getIntent().getExtras();
TextView title = (TextView) findViewById(R.id.title);
title.setText(extras.getString("Title"));
TextView desc = (TextView) findViewById(R.id.desc);
desc.setText(extras.getString("Desc"));
Button buy = (Button) findViewById(R.id.buy);
String priceTag = ("$" + String.format("%.2g", extras.getDouble("Price")) + " Buy Now >>");
buy.setText(priceTag);
ImageView image = (ImageView) findViewById(R.id.productimage);
Utils.imageLoader.DisplayImage(extras.getString("Image"), image);
}
private static final int SWIPE_MIN_DISTANCE = 6; //120;
private static final int SWIPE_MAX_OFF_PATH = 125; //250;
private static final int SWIPE_THRESHOLD_VELOCITY = 100; //200;
private GestureDetector gestureScanner;
@
Override
public boolean onTouchEvent(MotionEvent me) {
return gestureScanner.onTouchEvent(me);
}
//@Override
public boolean onDown(MotionEvent e) {
//viewA.setText("-" + "DOWN" + "-");
return true;
}
//@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
//right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Left Swipe",
Toast.LENGTH_SHORT).show();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Right Swipe",
Toast.LENGTH_SHORT).show();
} else if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Swipe up",
Toast.LENGTH_SHORT).show();
} else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Swipe down",
Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
//nothing
}
return true;
}
@
Override
public void onLongPress(MotionEvent e) {
Toast mToast = Toast.makeText(getApplicationContext(), "Long Press",
Toast.LENGTH_SHORT);
mToast.show();
}
//@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
//viewA.setText("-" + "SCROLL" + "-");
return true;
}
//@Override
public void onShowPress(MotionEvent e) {
//viewA.setText("-" + "SHOW PRESS" + "-");
} //@Override
public boolean onSingleTapUp(MotionEvent e) {
Toast mToast = Toast.makeText(getApplicationContext(), "Single Tap",
Toast.LENGTH_SHORT);
mToast.show();
return true;
}
}
OriginalL'auteur png | 2012-10-19
Vous devez vous connecter pour publier un commentaire.
J'ai pensé à une nouvelle réponse serait une bonne idée car l'ancien est donc différent.
Je vais commencer avec un peu de fond:
L'idée ici est d'utiliser une barre de défilement horizontale afin de passer à la prochaine série de contrôles dans une jolie façon. Ainsi, lorsque l'utilisateur d'arrêter le défilement le défilement de l'affichage vers la gauche ou la droite, nous voulons changer le texte et les images, et de passer ensuite les faire défiler en arrière vers le milieu, en préparation pour le prochain passage. Quelqu'un a déjà répondu à la façon d'écouter lorsqu'un défilement de l'affichage s'arrête
J'ai inclus un près de de travail exemple de comment vous pouvez l'utiliser pour obtenir l'effet que vous recherchez.
J'espère que cette aide et n'hésitez pas à demander si vous avez plus de problèmes.
Le xml doit être quelque chose le long de ces lignes. Il y a encore beaucoup de travail à faire pour obtenir ce travail, mais j'espère que cela vous met dans la bonne direction.
Lorsque l'utilisateur cesse de défiler, ils ne prennent pas toujours leur doigt de l'écran. Cela signifie que le rouleau est en réalité toujours en mouvement, très lentement. SlowDownThreshold est de savoir comment ralentir le défilement doit être en mouvement avant l'application examinera le défilement complet. Propriétés hscroll est la mise en page de défilement horizontale. HorizontalScrollview propriétés hscroll=(HorizontalScrollview) findViewById(R. id.HorizontalScrollView1). De cette façon, nous n'avons pas à utiliser findViewById chaque fois que nous voulons interagir avec l'horizontale scrollview. ps désolé pour les 2 jours de la fin de la réponse.
merci beaucoup. Cette onscrollchanged qui est de la méthode de classe. Je ne vois pas pour l'activité. Doit implémenter l'interface
Merci beaucoup pour ur efforts pour résoudre le problème. Malheureusement, il n'a pas fonctionné pour moi. Ce qui a fonctionné est ici misha.beshkin.lv/android-glissez-geste-mise en œuvre . J'ai suivi ce tutoriel et il a été très facile et straight forward.
OriginalL'auteur Reefa
Si je vous comprends bien vous avez simplement besoin d'utiliser un geste auditeur, puis d'appeler la méthode que vous utilisez pour remplir tous les le texte et imageviews que vous avez avec l'instance suivante de l'information.
J'ai trouvé cet exemple très utile quand j'ai été l'apprentissage de la reconnaissance gestuelle.
Ajouter d'abord le geste de l'écouteur à votre public class myClass
Alors la suite va tout de suite afin que nous puissions écouter
pour chaque événement de touche.
Vous pouvez mettre les méthodes que vous utilisez pour appeler l'occurrence précédente ou suivante à l'intérieur de la pertinente auditeur où le pain.
Vous pouvez ajuster la sensotivity de la glisse par la modification de ces variables
J'espère que cette aide.
Edit:
Désolé pour le mélange, votre onCreate devrait inclure gestureScanner = new GestureDetector(ce);
Qui doit le faire, sauf pour l'effet visuel. Vous pouvez expérimenter avec l'aide d'un ScrollView pour aider à la diapositive.
j'ai essayé ce. Pls voir ma qué mis à jour. mais je ne vois pas non coulissantes en effet et pas de toast vient. je pense que je suis absent quelque chose de fondamental.
J'ai édité ma réponse qui devrait obtenir votre écouteur de travail pour commencer.
oui, j'ai pu obtenir le toast avec le correctif. Mais j'ai essayé de faire comme déroulante , puis même toast disparu. Au lieu de ce qui se passe est de glisser est en train de devenir de défilement . vues défiler de haut en bas
Je vais mettre un exemple de la façon d'obtenir le visuel de défilement affecter ensemble pour vous, mais j'ai besoin de vous pour poster votre mise en page xml s'il vous plaît.
OriginalL'auteur Reefa