Я хотел бы реализовать жестов для удаления строк в ListView
, аналогичных уведомлениям о android.Проведите по удалению listitem
Сейчас у меня есть ListView
с onTouchListener
- при этом у меня уже есть обнаружение проводов.
gestureDetector = new GestureDetector(this, new GestureListener());
onTouchListener = new TouchListener();
listview.setOnTouchListener(onTouchListener);
Мой GestureListener
класс:
protected class GestureListener extends SimpleOnGestureListener
{
private static final int SWIPE_MIN_DISTANCE = 150;
private static final int SWIPE_MAX_OFF_PATH = 100;
private static final int SWIPE_THRESHOLD_VELOCITY = 100;
private MotionEvent mLastOnDownEvent = null;
@Override
public boolean onDown(MotionEvent e)
{
mLastOnDownEvent = e;
return super.onDown(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) {
Toast.makeText(getApplicationContext(), "Right Swipe", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show();
}
return true;
}
else if (Math.abs(dX) < SWIPE_MAX_OFF_PATH && Math.abs(velocityY)>=SWIPE_THRESHOLD_VELOCITY && Math.abs(dY)>=SWIPE_MIN_DISTANCE) {
if (dY>0) {
Toast.makeText(getApplicationContext(), "Up Swipe", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Down Swipe", Toast.LENGTH_SHORT).show();
}
return true;
}
return false;
}
}
Мой TouchListener
класс:
protected class TouchListener implements View.OnTouchListener
{
@Override
public boolean onTouch(View v, MotionEvent e)
{
if (gestureDetector.onTouchEvent(e)){
return true;
}else{
return false;
}
}
}
Есть некоторые учебники/примеры по этому поводу?
благодаря
Мне нужно реализовать обнаружение салфетки в каждом списке? или я могу оставить его в списке и получить элемент для удаления другими способами? и как я могу заставить элемент на самом деле бросить представление? – marcin
@marcin no, вы можете просто установить его для списка. Нажмите [здесь] (http://stackoverflow.com/questions/4373485/android-swipe-on-list), чтобы увидеть, как реализовать это точно – wdziemia