Doigt listitem
Je tiens à mettre en œuvre un geste de balayage pour supprimer des lignes dans une ListView
similaire à android notifications.
Dès maintenant tout ce que j'ai est un ListView
avec un onTouchListener
- cela dit, j'ai déjà balayez vers la détection de travail.
gestureDetector = new GestureDetector(this, new GestureListener());
onTouchListener = new TouchListener();
listview.setOnTouchListener(onTouchListener);
Mon GestureListener
classe:
protected class GestureListener extends SimpleOnGestureListener
{
private static final int SWIPE_MIN_DISTANCE = 150;
private static final int SWIPE_MAX_OFF_PATH = 100;
private static final int SWIPE_THRESHOLD_VELOCITY = 100;
private MotionEvent mLastOnDownEvent = null;
@Override
public boolean onDown(MotionEvent e)
{
mLastOnDownEvent = e;
return super.onDown(e);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
if(e1 == null){
e1 = mLastOnDownEvent;
}
if(e1==null || e2==null){
return false;
}
float dX = e2.getX() - e1.getX();
float dY = e1.getY() - e2.getY();
if (Math.abs(dY) < SWIPE_MAX_OFF_PATH && Math.abs(velocityX) >= SWIPE_THRESHOLD_VELOCITY && Math.abs(dX) >= SWIPE_MIN_DISTANCE ) {
if (dX > 0) {
Toast.makeText(getApplicationContext(), "Right Swipe", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show();
}
return true;
}
else if (Math.abs(dX) < SWIPE_MAX_OFF_PATH && Math.abs(velocityY)>=SWIPE_THRESHOLD_VELOCITY && Math.abs(dY)>=SWIPE_MIN_DISTANCE ) {
if (dY>0) {
Toast.makeText(getApplicationContext(), "Up Swipe", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Down Swipe", Toast.LENGTH_SHORT).show();
}
return true;
}
return false;
}
}
Mon TouchListener
classe:
protected class TouchListener implements View.OnTouchListener
{
@Override
public boolean onTouch(View v, MotionEvent e)
{
if (gestureDetector.onTouchEvent(e)){
return true;
}else{
return false;
}
}
}
Sont là certains des tutoriels et des exemples sur qui?
grâce
OriginalL'auteur marcin | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
Si vous avez votre balayez vers la détection de travail, tout ce qui reste est pour supprimer l'élément. Pour cela, le code suivant permet de supprimer l'élément hors de l'écran.
non, vous pouvez simplement le mettre pour le contrôle listview. Cliquez ici pour voir comment la mettre exactement
OriginalL'auteur wdziemia
Vous pouvez obtenir un bel effet en ajoutant ceci à votre balayage de détection:
OriginalL'auteur htafoya
je suppose que j'ai vraiment besoin de mettre en œuvre une touche d'écoute sur chaque ligne de la liste. -> look personnalisé ArrayAdapter
comme pour les jeter, j'ai trouvé un tutoriel qui répond à la plupart de mes questions: http://mobile.tutsplus.com/tutorials/android/android-gesture/
OriginalL'auteur marcin
Dans ma recherche pour une sorte de balayage à l'écoute, je suis tombé sur Roman Nurik de Balayage de code. [1]: https://github.com/romannurik/android-swipetodismiss
J'ai été de les utiliser dans mon application et il fonctionne comme un charme!
Il est écrit de la même manière un auditeur serait donc j'ai trouvé qu'il était facile de travailler avec.
OriginalL'auteur Havnar