prettify the code and do clean up.
This commit is contained in:
parent
a10e28ded7
commit
6f6498e549
|
|
@ -43,15 +43,15 @@ public class SwipeLayout extends FrameLayout {
|
|||
private ViewDragHelper mDragHelper;
|
||||
|
||||
private int mDragDistance = 0;
|
||||
private LinkedHashMap<DragEdge, View> mDragEdges = new LinkedHashMap<DragEdge, View>();
|
||||
private LinkedHashMap<DragEdge, View> mDragEdges = new LinkedHashMap<>();
|
||||
private ShowMode mShowMode;
|
||||
|
||||
private float[] mEdgeSwipesOffset = new float[4];
|
||||
|
||||
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>();
|
||||
private List<SwipeListener> mSwipeListeners = new ArrayList<>();
|
||||
private List<SwipeDenier> mSwipeDeniers = new ArrayList<>();
|
||||
private Map<View, ArrayList<OnRevealListener>> mRevealListeners = new HashMap<>();
|
||||
private Map<View, Boolean> mShowEntirely = new HashMap<>();
|
||||
|
||||
private DoubleClickListener mDoubleClickListener;
|
||||
|
||||
|
|
@ -59,14 +59,14 @@ public class SwipeLayout extends FrameLayout {
|
|||
private boolean[] mSwipesEnabled = new boolean[]{true, true, true, true};
|
||||
private boolean mClickToClose = false;
|
||||
|
||||
public static enum DragEdge {
|
||||
public enum DragEdge {
|
||||
Left,
|
||||
Top,
|
||||
Right,
|
||||
Bottom
|
||||
}
|
||||
|
||||
public static enum ShowMode {
|
||||
public enum ShowMode {
|
||||
LayDown,
|
||||
PullOut
|
||||
}
|
||||
|
|
@ -111,17 +111,17 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
|
||||
public interface SwipeListener {
|
||||
public void onStartOpen(SwipeLayout layout);
|
||||
void onStartOpen(SwipeLayout layout);
|
||||
|
||||
public void onOpen(SwipeLayout layout);
|
||||
void onOpen(SwipeLayout layout);
|
||||
|
||||
public void onStartClose(SwipeLayout layout);
|
||||
void onStartClose(SwipeLayout layout);
|
||||
|
||||
public void onClose(SwipeLayout layout);
|
||||
void onClose(SwipeLayout layout);
|
||||
|
||||
public void onUpdate(SwipeLayout layout, int leftOffset, int topOffset);
|
||||
void onUpdate(SwipeLayout layout, int leftOffset, int topOffset);
|
||||
|
||||
public void onHandRelease(SwipeLayout layout, float xvel, float yvel);
|
||||
void onHandRelease(SwipeLayout layout, float xvel, float yvel);
|
||||
}
|
||||
|
||||
public void addSwipeListener(SwipeListener l) {
|
||||
|
|
@ -136,7 +136,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
mSwipeListeners.clear();
|
||||
}
|
||||
|
||||
public static interface SwipeDenier {
|
||||
public interface SwipeDenier {
|
||||
/*
|
||||
* Called in onInterceptTouchEvent Determines if this swipe event should
|
||||
* be denied Implement this interface if you are using views with swipe
|
||||
|
|
@ -144,7 +144,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
*
|
||||
* @return true deny false allow
|
||||
*/
|
||||
public boolean shouldDenySwipe(MotionEvent ev);
|
||||
boolean shouldDenySwipe(MotionEvent ev);
|
||||
}
|
||||
|
||||
public void addSwipeDenier(SwipeDenier denier) {
|
||||
|
|
@ -160,7 +160,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
|
||||
public interface OnRevealListener {
|
||||
public void onReveal(View child, DragEdge edge, float fraction, int distance);
|
||||
void onReveal(View child, DragEdge edge, float fraction, int distance);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -330,6 +330,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
|
||||
boolean isCloseBeforeDrag = true;
|
||||
|
||||
@Override
|
||||
public void onViewReleased(View releasedChild, float xvel, float yvel) {
|
||||
super.onViewReleased(releasedChild, xvel, yvel);
|
||||
|
|
@ -646,7 +647,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
* to support it from API 8.
|
||||
*/
|
||||
public interface OnLayout {
|
||||
public void onLayout(SwipeLayout v);
|
||||
void onLayout(SwipeLayout v);
|
||||
}
|
||||
|
||||
private List<OnLayout> mOnLayoutListeners;
|
||||
|
|
@ -659,23 +660,29 @@ public class SwipeLayout extends FrameLayout {
|
|||
public void removeOnLayoutListener(OnLayout l) {
|
||||
if (mOnLayoutListeners != null) mOnLayoutListeners.remove(l);
|
||||
}
|
||||
|
||||
public void clearDragEdge() {
|
||||
mDragEdges.clear();
|
||||
}
|
||||
|
||||
public void setDrag(DragEdge dragEdge, int childId) {
|
||||
clearDragEdge();
|
||||
addDrag(dragEdge, childId);
|
||||
}
|
||||
|
||||
public void setDrag(DragEdge dragEdge, View child) {
|
||||
clearDragEdge();
|
||||
addDrag(dragEdge, child);
|
||||
}
|
||||
|
||||
public void addDrag(DragEdge dragEdge, int childId) {
|
||||
addDrag(dragEdge, findViewById(childId), null);
|
||||
}
|
||||
|
||||
public void addDrag(DragEdge dragEdge, View child) {
|
||||
addDrag(dragEdge, child, null);
|
||||
}
|
||||
|
||||
public void addDrag(DragEdge dragEdge, View child, ViewGroup.LayoutParams params) {
|
||||
if (child == null) return;
|
||||
|
||||
|
|
@ -687,16 +694,25 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
int gravity = -1;
|
||||
switch (dragEdge) {
|
||||
case Left:gravity = Gravity.LEFT;break;
|
||||
case Right:gravity = Gravity.RIGHT;break;
|
||||
case Top:gravity = Gravity.TOP;break;
|
||||
case Bottom:gravity = Gravity.BOTTOM;break;
|
||||
case Left:
|
||||
gravity = Gravity.LEFT;
|
||||
break;
|
||||
case Right:
|
||||
gravity = Gravity.RIGHT;
|
||||
break;
|
||||
case Top:
|
||||
gravity = Gravity.TOP;
|
||||
break;
|
||||
case Bottom:
|
||||
gravity = Gravity.BOTTOM;
|
||||
break;
|
||||
}
|
||||
if (params instanceof FrameLayout.LayoutParams) {
|
||||
((LayoutParams) params).gravity = gravity;
|
||||
}
|
||||
addView(child, 0, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addView(View child, int index, ViewGroup.LayoutParams params) {
|
||||
if (child == null) return;
|
||||
|
|
@ -775,6 +791,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
|
||||
private boolean mIsBeingDragged;
|
||||
|
||||
private void checkCanDrag(MotionEvent ev) {
|
||||
if (mIsBeingDragged) return;
|
||||
if (getOpenStatus() == Status.Middle) {
|
||||
|
|
@ -847,6 +864,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
mIsBeingDragged = !doNothing;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||
if (!isSwipeEnabled()) {
|
||||
|
|
@ -936,6 +954,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
|
||||
return super.onTouchEvent(event) || mIsBeingDragged || action == MotionEvent.ACTION_DOWN;
|
||||
}
|
||||
|
||||
public boolean isClickToClose() {
|
||||
return mClickToClose;
|
||||
}
|
||||
|
|
@ -991,6 +1010,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
public void setBottomSwipeEnabled(boolean bottomSwipeEnabled) {
|
||||
this.mSwipesEnabled[DragEdge.Bottom.ordinal()] = bottomSwipeEnabled;
|
||||
}
|
||||
|
||||
private boolean insideAdapterView() {
|
||||
return getAdapterView() != null;
|
||||
}
|
||||
|
|
@ -1015,6 +1035,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean performAdapterViewItemLongClick() {
|
||||
if (getOpenStatus() != Status.Close) return false;
|
||||
ViewParent t = getParent();
|
||||
|
|
@ -1043,6 +1064,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
|
|
@ -1066,13 +1088,17 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
OnClickListener clickListener;
|
||||
|
||||
@Override
|
||||
public void setOnClickListener(OnClickListener l) {
|
||||
super.setOnClickListener(l);
|
||||
clickListener = l;
|
||||
}
|
||||
|
||||
OnLongClickListener longClickListener;
|
||||
|
||||
@Override
|
||||
public void setOnLongClickListener(OnLongClickListener l) {
|
||||
super.setOnLongClickListener(l);
|
||||
|
|
@ -1080,6 +1106,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
|
||||
private Rect hitSurfaceRect;
|
||||
|
||||
private boolean isTouchOnSurface(MotionEvent ev) {
|
||||
View surfaceView = getSurfaceView();
|
||||
if (surfaceView == null) {
|
||||
|
|
@ -1091,6 +1118,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
surfaceView.getHitRect(hitSurfaceRect);
|
||||
return hitSurfaceRect.contains((int) ev.getX(), (int) ev.getY());
|
||||
}
|
||||
|
||||
private GestureDetector gestureDetector = new GestureDetector(getContext(), new SwipeDetector());
|
||||
|
||||
class SwipeDetector extends GestureDetector.SimpleOnGestureListener {
|
||||
|
|
@ -1101,6 +1129,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
return super.onSingleTapUp(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDoubleTap(MotionEvent e) {
|
||||
if (mDoubleClickListener != null) {
|
||||
|
|
@ -1155,13 +1184,17 @@ public class SwipeLayout extends FrameLayout {
|
|||
return mShowMode;
|
||||
}
|
||||
|
||||
/**return null if there is no surface view(no children) */
|
||||
/**
|
||||
* return null if there is no surface view(no children)
|
||||
*/
|
||||
public View getSurfaceView() {
|
||||
if (getChildCount() == 0) return null;
|
||||
return getChildAt(getChildCount() - 1);
|
||||
}
|
||||
|
||||
/**return null if there is no bottom view */
|
||||
/**
|
||||
* return null if there is no bottom view
|
||||
*/
|
||||
@Nullable
|
||||
public View getCurrentBottomView() {
|
||||
List<View> bottoms = getBottomViews();
|
||||
|
|
@ -1170,6 +1203,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return all bottomViews: left, top, right, bottom (may null if the edge is not set)
|
||||
*/
|
||||
|
|
@ -1368,6 +1402,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
|
||||
/**
|
||||
* a helper function to compute the Rect area that surface will hold in.
|
||||
*
|
||||
* @param open open status or close status.
|
||||
*/
|
||||
private Rect computeSurfaceLayoutArea(boolean open) {
|
||||
|
|
@ -1442,7 +1477,7 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
|
||||
public interface DoubleClickListener {
|
||||
public void onDoubleClick(SwipeLayout layout, boolean surface);
|
||||
void onDoubleClick(SwipeLayout layout, boolean surface);
|
||||
}
|
||||
|
||||
private int dp2px(float dp) {
|
||||
|
|
@ -1450,7 +1485,9 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
|
||||
|
||||
/**Deprecated, use {@link #setDrag(DragEdge, View)} */
|
||||
/**
|
||||
* Deprecated, use {@link #setDrag(DragEdge, View)}
|
||||
*/
|
||||
@Deprecated
|
||||
public void setDragEdge(DragEdge dragEdge) {
|
||||
clearDragEdge();
|
||||
|
|
@ -1467,17 +1504,22 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Map<DragEdge, View> getDragEdgeMap() {
|
||||
return mDragEdges;
|
||||
}
|
||||
|
||||
/**Deprecated, use {@link #getDragEdgeMap()} */
|
||||
/**
|
||||
* Deprecated, use {@link #getDragEdgeMap()}
|
||||
*/
|
||||
@Deprecated
|
||||
public List<DragEdge> getDragEdges() {
|
||||
return new ArrayList<DragEdge>(mDragEdges.keySet());
|
||||
}
|
||||
|
||||
/**Deprecated, use {@link #setDrag(DragEdge, View)} */
|
||||
/**
|
||||
* Deprecated, use {@link #setDrag(DragEdge, View)}
|
||||
*/
|
||||
@Deprecated
|
||||
public void setDragEdges(List<DragEdge> dragEdges) {
|
||||
clearDragEdge();
|
||||
|
|
@ -1492,12 +1534,15 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
}
|
||||
|
||||
/**Deprecated, use {@link #addDrag(DragEdge, View)} */
|
||||
/**
|
||||
* Deprecated, use {@link #addDrag(DragEdge, View)}
|
||||
*/
|
||||
@Deprecated
|
||||
public void setDragEdges(DragEdge... mDragEdges) {
|
||||
clearDragEdge();
|
||||
setDragEdges(Arrays.asList(mDragEdges));
|
||||
}
|
||||
|
||||
/**
|
||||
* Deprecated, use {@link #addDrag(DragEdge, View)}
|
||||
* When using multiple drag edges it's a good idea to pass the ids of the views that
|
||||
|
|
@ -1526,13 +1571,16 @@ public class SwipeLayout extends FrameLayout {
|
|||
if (currentBottomView != null) {
|
||||
if (mCurrentDragEdge == DragEdge.Left || mCurrentDragEdge == DragEdge.Right) {
|
||||
mDragDistance = currentBottomView.getMeasuredWidth() - dp2px(getCurrentOffset());
|
||||
} else {
|
||||
mDragDistance = currentBottomView.getMeasuredHeight() - dp2px(getCurrentOffset());
|
||||
}
|
||||
else mDragDistance = currentBottomView.getMeasuredHeight() - dp2px(getCurrentOffset());
|
||||
}
|
||||
|
||||
if (mShowMode == ShowMode.PullOut)
|
||||
if (mShowMode == ShowMode.PullOut) {
|
||||
layoutPullOut();
|
||||
else if (mShowMode == ShowMode.LayDown) layoutLayDown();
|
||||
} else if (mShowMode == ShowMode.LayDown) {
|
||||
layoutLayDown();
|
||||
}
|
||||
|
||||
safeBottomView();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue