Ich versuche, die Geste "wischen von links nach rechts zu löschen" zu implementieren, die für die Benachrichtigungen in Android ICS und höher vorhanden ist. Ich habe eine Listenansicht in meiner Anwendung. Ich arbeite mit dem Gesten-Detektor. ABER wenn ich auf einem bestimmten Listenelement von links nach rechts wische, möchte ich, dass sich das Objekt mit meinem Finger bewegt. Wenn ich meinen Finger über einen bestimmten Punkt hinaus bewege, dann sollte sich das Objekt selbst löschen. Die OnFling() Methode Das habe ich derzeit nicht erreicht.Android "Swipe von links nach rechts zu löschen", Gesten auf Listenelement, ICS-Stil
Wie kann ich die OnFling() -Methode ändern, damit sich der Gegenstand mit meinem Finger bewegt?
My Gesture-Listener-Klasse ist
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;
}
Wenn Sie dies noch nicht getan haben, bei Roman Nurik Implementierung Sie vielleicht spähen: https: // Plus .google.com/113735310430199015092/posts/Fgo1p5uWZLu oder Jake Whartons Backport mit NineOldAndroids: https://github.com/JakeWharton/SwipeToDismissNOA – CommonsWare