Swipt detector gestures android

@Override public boolean onTouchEvent(MotionEvent event) { if (gestureDetector.onTouchEvent(event)) { return true; } return super.onTouchEvent(event); } private void onLeftSwipe() { // Do something System.out.println("left swipe"); }

  private void onRightSwipe() {
    // Do something
      System.out.println("right swipe");
  }

  // Private class for gestures
  private class SwipeGestureDetector
          extends SimpleOnGestureListener {
    // Swipe properties, you can change it to make the swipe
    // longer or shorter and speed
    private static final int SWIPE_MIN_DISTANCE = 120;
    private static final int SWIPE_MAX_OFF_PATH = 200;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2,
                         float velocityX, float velocityY) {
      try {
        float diffAbs = Math.abs(e1.getY() - e2.getY());
        float diff = e1.getX() - e2.getX();

        if (diffAbs > SWIPE_MAX_OFF_PATH)
          return false;

        // Left swipe
        if (diff > SWIPE_MIN_DISTANCE
        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
           SlidingMenuActivity.this.onLeftSwipe();

        // Right swipe
        } else if (-diff > SWIPE_MIN_DISTANCE
        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
            SlidingMenuActivity.this.onRightSwipe();
        }
      } catch (Exception e) {
        Log.e("YourActivity", "Error on gestures");
      }
      return false;
    }
  }

I have that but its not working, i am not able to detect swiping left or right.Have declared private GestureDetector gestureDetector; on top of my class, plus oncreate of activity i added gestureDetector = new GestureDetector( new SwipeGestureDetector());

But its not working, nothing is printed? am using kitkat nexus 4.


您必须将侦听器应用于您喜欢它的View,如下所示:

myView.setOnTouchListener(new SwipeGestureDetector(this)....

尝试更新的代码

public class OnSwipeTouchListener implements OnTouchListener {
private final GestureDetector gestureDetector;
int SWIPE_THRESHOLD = 200;
int SWIPE_VELOCITY_THRESHOLD = 200;

public OnSwipeTouchListener(Context context) {
    gestureDetector = new GestureDetector(context, new CustomGestureListenerClass());
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
}

private final class CustomGestureListenerClass extends SimpleOnGestureListener {


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

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        singleClicked(e);
        return super.onSingleTapUp(e);
    }

    @Override
    public boolean onScroll(MotionEvent startMotionEvent, MotionEvent endMotionEvent, float distanceX, float distanceY) {
        return super.onScroll(startMotionEvent, endMotionEvent, distanceX, distanceY);
    }


    @Override
    public boolean onFling(MotionEvent startMotionEvent, MotionEvent endMotionEvent, float velocityX, float velocityY) {

        boolean result = false;
        try {
            float diffY = endMotionEvent.getY() - startMotionEvent.getY();
            float diffX = endMotionEvent.getX() - startMotionEvent.getX();
            if (Math.abs(diffX) > Math.abs(diffY)) {
                if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                    if (diffX > 0) {
                        onSwipeRight();
                    } else {
                        onSwipeLeft();
                    }
                }
                result = true;
            }
            result = true;
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return result;
    }
}

public void onSwipeRight() {
    // if you want done some portion before call this method then write here
}

public void onSwipeLeft() {
    // if you want done some portion before call this method then write here
}

public void singleClicked(MotionEvent e) {
}
}
链接地址: http://www.djcxy.com/p/91236.html

上一篇: 如何在fview中更改imageview中的图像

下一篇: Swipt探测器手势android