Android “balayez vers la gauche ou la droite pour supprimer”, geste sur un élément de liste, ICS Style
Je suis en train de mettre en œuvre le "balayez vers la gauche ou la droite pour supprimer le" geste qui est présent pour les notifications sous Android ICS et au-dessus.
J'ai une listview dans mon application. J'ai le geste détecteur de travail.
MAIS quand j'ai faites glisser le doigt de gauche à droite sur un élément de la liste, je veux que le point de se déplacer avec mon doigt.Quand je bouge mon doigt, au-delà d'un certain point, alors seulement la suppression de l'élément lui-même.Le OnFling() méthode que j'ai actuellement ne permet pas d'atteindre cet.
Comment puis-je modifier le OnFling() la méthode pour faire le point de se déplacer le long avec mon doigt ?
Mon Geste classe écouteur est
class GestureListener extends SimpleOnGestureListener {
private static final int SWIPE_MIN_DISTANCE = 50;
private static final int SWIPE_MAX_OFF_PATH = 100;
private static final int SWIPE_THRESHOLD_VELOCITY = 25;
private MotionEvent mLastOnDownEvent = null;
@Override
public boolean onDown(MotionEvent e) {
mLastOnDownEvent = e;
return super.onDown(e);
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
//TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "On Single TAP up ", Toast.LENGTH_SHORT).show();
return super.onSingleTapUp(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) {
int position = tasks.pointToPosition((int) e1.getX(),
(int) e1.getY());
int _id = (int) tasks.getItemIdAtPosition(position);
databaseConnector.deleteContact(_id);
new DeleteRow(_id, contactAdapter, getApplicationContext());
contactAdapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(),
"Right Swipe" + _id, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Left Swipe",
Toast.LENGTH_SHORT).show();
}
return true;
}
return false;
}
OriginalL'auteur newbie | 2013-02-25
Vous devez vous connecter pour publier un commentaire.
Vous devez avoir un coup d'oeil au Roman Nurik du mouvement du doigt l'extrait de code sur github si vous souhaitez mettre en place ce type de fonctionnalité. Vous pouvez le trouver ici.
L'auteur de Glisser À Rejeter (Tim Roe) a publié une nouvelle version appelée EnhancedListView : github.com/timroes/EnhancedListView. Vous pouvez même télécharger une démo à partir de Play Store.
Je suis en utilisant le même, mais l'élément listview est de ne pas glisser en douceur, je veux dire, si l'utilisateur de glisser légèrement vers le bas, puis faites glisser l'action n'est pas détecté. Toute aide est appréciée. Merci d'avance
OriginalL'auteur ebarrenechea
Si vous êtes en mesure d'utiliser la plus récente de la bibliothèque de prise en charge,
RecyclerView
a certaines fonctionnalités intégrées dans le formulaire deItemTouchHelper
et laonSwiped
méthode qui peut vous donner le comportement souhaité.Qui prennent en charge a débuté en v22.2.0 de la RecyclerView bibliothèque de prise en charge en fonction de cette réponse utile: https://stackoverflow.com/a/30601554/1518546
OriginalL'auteur John Cummings