I\'m using the following code to detect swipe in my Activity:
getWindow().getDecorView().getRootView().setOnTouchListener(new OnTouchListener() {
mSlop = ViewConfiguration.get(getActivity()).getScaledTouchSlop();
boolean mIsSwiping = false;
public boolean onTouch(View v, MotionEvent event) {
//Timber.d("onTouch, v.getId %d, event.getActionMasked %d", v.getId(), event.getActionMasked());
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
mDownX = event.getX();
mDownY = event.getY();
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
mIsSwiping = false;
break;
case MotionEvent.ACTION_MOVE:
float deltaX = event.getX() - mDownX;
float deltaY = event.getY() - mDownY;
if (!mIsSwiping && Math.abs(deltaX) > mSlop && Math.abs(deltaY) < mSlop) {
mIsSwiping = true;
if (deltaX > 0) {
Timber.d("swipe from left to right, slop %d", mSlop);
// TODO:
} else {
Timber.d("swipe from right to left");
// TODO:
}
return true;
} else if (!mIsSwiping && Math.abs(deltaY) > mSlop) {
mIsSwiping = true;
Timber.d("swipe vertical");
return true;
}
}
return false;
}