2016-03-21 3 views
0

Мне нужно поймать движение движений справа налево и наоборот (проведите пальцем) Почему это не работает?Жест Android справа налево

public boolean onTouchEvent(MotionEvent event) 
    { 

     float x = event.getX(); 
     float y = event.getY(); 
     int action = event.getAction(); 
     int edgeFlags = event.getEdgeFlags(); 


     switch (edgeFlags) 

     { 
      case MotionEvent.EDGE_LEFT: 
      sex=3; break; 


      case MotionEvent.EDGE_RIGHT: 
      sex=1; 
       break; 

      case MotionEvent.EDGE_TOP: 
       break; 

      case MotionEvent.EDGE_BOTTOM: 
       break; 

      default: 

       break; 
     } 

return true; 
} 

это меня не устраивает ->How to detect the swipe left or Right in Android?

ответ

0

Попробуйте с этим подходом:

общественного абстрактного класса CustomGestureListener простирается GestureDetector.SimpleOnGestureListener реализует Loggable {

private final View mView; 

public CustomGestureListener(View view){ 
    mView = view; 
} 

@Override 
public boolean onSingleTapConfirmed(MotionEvent e) { 
    mView.onTouchEvent(e); 
    return super.onSingleTapConfirmed(e); 
} 

@Override 
public boolean onSingleTapUp(MotionEvent e) { 
    onTouch(); 
    return false; 
} 

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    if (e1.getX() < e2.getX()) { 
     return onSwipeRight(); 
    } 

    if (e1.getX() > e2.getX()) { 
     return onSwipeLeft(); 
    } 

    return onTouch(); 
} 

public abstract boolean onSwipeRight(); 
public abstract boolean onSwipeLeft(); 
public abstract boolean onTouch(); 

}

Проверить this статья для полного примера источника.

+0

Одна из проблем заключается в том, что срабатывание очень чувствительно - его можно обнаружить, когда вы поднимаете палец без прокрутки. Он основан на скорости изменения. Я бы также включил масштаб изменений, чтобы убедиться, что небольшое движение не превращается в бросок. –

+0

Я проверил этот код и отлично поработал для меня. –

+0

Вы не все люди, и события касания могут быть чувствительны к размеру и форме пальцев. Я получаю события в 20% случаев, когда я поднимаю палец. Это не плохой стартовый подход, ему просто нужны дополнения. –

0

Поскольку пограничные флаги возвращаются только в том случае, если пользователь делает большой палец на краю экрана, что является редкостью. Вам нужно сбросить этот подход. Вместо этого закрепите точку, где они установили свой палец, сохраните местоположение и время. Когда вы получите событие совпадения, сравните местоположение и время и убедитесь, что это был преимущественно горизонтальный ход и в достаточно короткие сроки. Это было бы удачным.

Смежные вопросы