prettify the code and do clean up.

This commit is contained in:
daimajia 2015-06-11 21:53:44 +08:00
parent a10e28ded7
commit 6f6498e549
1 changed files with 184 additions and 136 deletions

View File

@ -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();
}