Próbuję zaimplementować gest "przesunąć palcem od lewej do prawej strony", który jest obecny dla powiadomień w Androidzie ICS i nowszych wersjach. Mam listview w mojej aplikacji. Mam działający wykrywacz gestów. ALE kiedy przesuwaj od lewej do prawej na konkretnym elemencie listy, chcę, aby element przesuwał się wraz z palcem. Gdy przesuniemy palec, poza pewien punkt, tylko wtedy element powinien sam się usunąć. Metoda OnFling() Obecnie nie osiągam tego.Android "przesuń palcem od lewej do prawej, aby usunąć", gest na elemencie listy, styl ICS
Jak zmodyfikować metodę OnFling(), aby element poruszał się wraz z palcem?
My Gest klasa słuchacz jest
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;
}
Jeżeli nie zostało to zrobione, warto zajrzeć na realizację Roman Nurik za: https: // oraz .google.com/113735310430199015092/posts/Fgo1p5uWZLu lub backport Jake'a Whartona za pomocą NineOldAndroids: https://github.com/JakeWharton/SwipeToDismissNOA – CommonsWare