Android“从左向右滑动删除”,在列表项上的手势,ICS样式

我正在尝试执行Android ICS及更高版本中针对通知的“从左向右滑动删除”手势。 我在我的应用程序中有一个列表视图。 我有手势检测器工作。 但是当我从左到右在特定列表项上滑动时,我希望项目随着手指一起移动。当我移动手指时,超过了某个点,只有该项目应该删除自己。OnFling()方法I目前还没有达到这个目标。

我怎样才能修改OnFling()方法,使物品与我的手指一起移动?

我的手势监听器类是

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; } 

Solutions Collecting From Web of "Android“从左向右滑动删除”,在列表项上的手势,ICS样式"

如果你想实现这种types的function,你应该看看Roman Nurik的刷卡去掉github上的代码片段。 你可以在这里find它。

如果你能够使用更新的支持库, RecyclerView有一些内置的ItemTouchHelperonSwiped方法可以给你想要的行为。

该支持从RecyclerView支持库的v22.2.0开始,根据这个非常有用的答案: https ://stackoverflow.com/a/30601554/1518546