From 8412d5013119cde192bec9e44a2dbc34ac9e7bfc Mon Sep 17 00:00:00 2001 From: linfaxin <673636904@qq.com> Date: Thu, 19 Mar 2015 11:36:29 +0800 Subject: [PATCH] Support clickToClose attr, if set to true, the opened swipeLayout will auto close when click on it's surface view --- demo/src/main/res/layout/sample1.xml | 7 ++++-- .../java/com/daimajia/swipe/SwipeLayout.java | 23 +++++++++++++++++++ library/src/main/res/values/attrs.xml | 1 + 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/demo/src/main/res/layout/sample1.xml b/demo/src/main/res/layout/sample1.xml index 01cb211..fd776dd 100644 --- a/demo/src/main/res/layout/sample1.xml +++ b/demo/src/main/res/layout/sample1.xml @@ -1,8 +1,11 @@ - + android:layout_height="80dp" + app:clickToClose="true"> (); if ((dragEdgeChoices & DRAG_LEFT) == DRAG_LEFT) { @@ -881,6 +883,13 @@ public class SwipeLayout extends FrameLayout { if (!isSwipeEnabled()) { return false; } + if(mClickToClose && getOpenStatus() == Status.Open && getSurfaceView()!=null){ + Rect rect = new Rect(); + getSurfaceView().getHitRect(rect); + if(rect.contains((int)ev.getX(), (int)ev.getY())){ + return true; + } + } for (SwipeDenier denier : mSwipeDeniers) { if (denier != null && denier.shouldDenySwipe(ev)) { return false; @@ -970,6 +979,13 @@ public class SwipeLayout extends FrameLayout { return super.onTouchEvent(event) || mIsBeingDragged || action == MotionEvent.ACTION_DOWN; } + public boolean isClickToClose() { + return mClickToClose; + } + + public void setClickToClose(boolean mClickToClose) { + this.mClickToClose = mClickToClose; + } public void setSwipeEnabled(boolean enabled) { mSwipeEnabled = enabled; @@ -1102,6 +1118,13 @@ public class SwipeLayout extends FrameLayout { private GestureDetector gestureDetector = new GestureDetector(getContext(), new SwipeDetector()); class SwipeDetector extends GestureDetector.SimpleOnGestureListener { + @Override + public boolean onSingleTapUp(MotionEvent e) { + if(mClickToClose){ + close(); + } + return super.onSingleTapUp(e); + } @Override public boolean onDoubleTap(MotionEvent e) { if (mDoubleClickListener != null) { diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index 249b944..a671fc5 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -15,5 +15,6 @@ + \ No newline at end of file