Tôi đang cố gắng triển khai cử chỉ "vuốt từ trái sang phải để xóa" hiện diện cho thông báo trong Android ICS trở lên. Tôi có một listview trong ứng dụng của tôi. Tôi có máy dò cử chỉ hoạt động. NHƯNG khi tôi vuốt từ trái sang phải trên một mục danh sách cụ thể, tôi muốn mục đó di chuyển cùng với ngón tay của tôi. Khi tôi di chuyển ngón tay của mình, ngoài một điểm nhất định, chỉ khi đó mục đó sẽ tự xóa. Phương thức OnFling() Tôi hiện không đạt được điều này.Android "vuốt từ trái sang phải để xóa", cử chỉ trên mục danh sách, Kiểu ICS
Làm cách nào tôi có thể sửa đổi phương thức OnFling() để làm cho mục di chuyển cùng với ngón tay của tôi?
Gesture lớp thính giả của tôi là
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;
}
Nếu bạn chưa làm như vậy, bạn có thể muốn peek tại thực hiện Roman Nurik của: https: // plus .google.com/113735310430199015092/posts/Fgo1p5uWZLu hoặc Jake Wharton's backport sử dụng NineOldAndroids: https://github.com/JakeWharton/SwipeToDismissNOA – CommonsWare