Merge pull request #7 from PeterCxy/patch-2
SwipeLayout: Allow childs to deny swipe gesture
This commit is contained in:
commit
b8457a51d5
|
|
@ -28,6 +28,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
private ShowMode mShowMode;
|
||||
|
||||
private List<SwipeListener> mSwipeListeners = new ArrayList<SwipeListener>();
|
||||
private List<SwipeDenier> mSwipeDeniers = new ArrayList<SwipeDenier>();
|
||||
private Map<View, ArrayList<OnRevealListener>> mRevealListeners = new HashMap<View, ArrayList<OnRevealListener>>();
|
||||
private Map<View, Boolean> mShowEntirely = new HashMap<View, Boolean>();
|
||||
|
||||
|
|
@ -82,6 +83,31 @@ public class SwipeLayout extends FrameLayout {
|
|||
mSwipeListeners.clear();
|
||||
}
|
||||
|
||||
public static interface SwipeDenier {
|
||||
/*
|
||||
* Called in onInterceptTouchEvent
|
||||
* Determines if this swipe event should be denied
|
||||
* Implement this interface if you are using views with swipe gestures
|
||||
* As a child of SwipeLayout
|
||||
*
|
||||
* @return true deny
|
||||
* false allow
|
||||
*/
|
||||
public boolean shouldDenySwipe(MotionEvent ev);
|
||||
}
|
||||
|
||||
public void addSwipeDenier(SwipeDenier denier) {
|
||||
mSwipeDeniers.add(denier);
|
||||
}
|
||||
|
||||
public void removeSwipeDenier(SwipeDenier denier) {
|
||||
mSwipeDeniers.remove(denier);
|
||||
}
|
||||
|
||||
public void removeAllSwipeDeniers() {
|
||||
mSwipeDeniers.clear();
|
||||
}
|
||||
|
||||
public interface OnRevealListener {
|
||||
public void onReveal(View child, DragEdge edge, float fraction, int distance);
|
||||
}
|
||||
|
|
@ -615,6 +641,12 @@ public class SwipeLayout extends FrameLayout {
|
|||
|
||||
@Override
|
||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||
for (SwipeDenier denier : mSwipeDeniers) {
|
||||
if (denier != null && denier.shouldDenySwipe(ev)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return mDragHelper.shouldInterceptTouchEvent(ev);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue