Sto tentando di implementare il gesto "scorri da sinistra a destra per eliminare" presente per le notifiche su Android ICS e versioni successive. Ho una lista nella mia applicazione. Ho il rilevatore di gesti funzionante. MA quando faccio scorrere da sinistra a destra su un particolare elemento della lista, voglio che l'oggetto si muova insieme al mio dito. Quando muovo il mio dito, oltre un certo punto, solo allora l'oggetto si cancellerà da solo. Il metodo OnFling() Al momento non ho raggiunto questo obiettivo.Android "scorri da sinistra a destra per eliminare", gesto sulla voce di elenco, Stile ICS
Come posso modificare il metodo OnFling() per spostare l'elemento con il dito?
mio gesto classe ascoltatore è
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;
}
Se non si è già fatto, si potrebbe desiderare di sbirciare implementazione di Roman Nurik: https: // più .google.com/113735310430199015092/posts/Fgo1p5uWZLu o il backport di Jake Wharton con NineOldAndroids: https://github.com/JakeWharton/SwipeToDismissNOA – CommonsWare