Skip to content

Commit

Permalink
Fixes #113
Browse files Browse the repository at this point in the history
  • Loading branch information
heinrichreimer committed Sep 1, 2016
1 parent 6b09a88 commit 4d5af6d
Showing 1 changed file with 31 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.content.Context;
import android.support.annotation.IntDef;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
Expand All @@ -21,14 +22,16 @@ public class SwipeBlockableViewPager extends ViewPager {

private static final int SWIPE_DIRECTION_RIGHT = -1;

private static final int SWIPE_THRESHOLD = 5;
private static final int SWIPE_THRESHOLD = 0;

private float initialX;

private boolean swipeRightEnabled = true;

private boolean swipeLeftEnabled = true;

private boolean locked = false;

public SwipeBlockableViewPager(Context context) {
super(context);
}
Expand All @@ -37,40 +40,51 @@ public SwipeBlockableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}

public boolean isSwipeRightEnabled() {
return swipeRightEnabled;
}

public void setSwipeRightEnabled(boolean swipeRightEnabled) {
this.swipeRightEnabled = swipeRightEnabled;
}

public boolean isSwipeLeftEnabled() {
return swipeLeftEnabled;
}

public void setSwipeLeftEnabled(boolean swipeLeftEnabled) {
this.swipeLeftEnabled = swipeLeftEnabled;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
if (getSwipeDirection(event) == SWIPE_DIRECTION_RIGHT && !swipeRightEnabled) {
return false;
} else if (getSwipeDirection(event) == SWIPE_DIRECTION_LEFT && !swipeLeftEnabled) {
return false;
}
return super.onTouchEvent(event);
return handleTouchEvent(event) && super.onTouchEvent(event);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return handleTouchEvent(event) && super.onInterceptTouchEvent(event);
}

private boolean handleTouchEvent(MotionEvent event) {
if (getSwipeDirection(event) == SWIPE_DIRECTION_RIGHT && !swipeRightEnabled) {
if (!locked) {
updatePosition();
locked = true;
}
return false;
} else if (getSwipeDirection(event) == SWIPE_DIRECTION_LEFT && !swipeLeftEnabled) {
}
else if (getSwipeDirection(event) == SWIPE_DIRECTION_LEFT && !swipeLeftEnabled) {
if (!locked) {
updatePosition();
locked = true;
}
return false;
}
return super.onInterceptTouchEvent(event);
locked = false;
return true;
}

private void updatePosition() {
int currentItem = getCurrentItem();
scrollTo(currentItem * getWidth(), getScrollY());
PagerAdapter adapter = getAdapter();
if (adapter != null) {
adapter.notifyDataSetChanged();
}
setCurrentItem(currentItem);
}

@SwipeDirection
Expand Down

0 comments on commit 4d5af6d

Please sign in to comment.