diff --git a/demo/src/main/java/com/daimajia/swipedemo/ListViewExample.java b/demo/src/main/java/com/daimajia/swipedemo/ListViewExample.java
index 4f88863..cf4e096 100644
--- a/demo/src/main/java/com/daimajia/swipedemo/ListViewExample.java
+++ b/demo/src/main/java/com/daimajia/swipedemo/ListViewExample.java
@@ -19,7 +19,6 @@ public class ListViewExample extends Activity {
private ListView mListView;
private ListViewAdapter mAdapter;
- private int mPositionToTest;
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/demo/src/main/res/drawable/hover_background.xml b/demo/src/main/res/drawable/hover_background.xml
deleted file mode 100644
index feae5ba..0000000
--- a/demo/src/main/res/drawable/hover_background.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/src/main/res/drawable/hover_border_normal.xml b/demo/src/main/res/drawable/hover_border_normal.xml
deleted file mode 100644
index 38551a7..0000000
--- a/demo/src/main/res/drawable/hover_border_normal.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/src/main/res/drawable/hover_border_pressed.xml b/demo/src/main/res/drawable/hover_border_pressed.xml
deleted file mode 100644
index 4da7005..0000000
--- a/demo/src/main/res/drawable/hover_border_pressed.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/src/main/res/drawable/item.xml b/demo/src/main/res/drawable/item.xml
new file mode 100644
index 0000000..e49e2a7
--- /dev/null
+++ b/demo/src/main/res/drawable/item.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/src/main/res/layout/gridview.xml b/demo/src/main/res/layout/gridview.xml
index 3c30b7b..d7091ca 100644
--- a/demo/src/main/res/layout/gridview.xml
+++ b/demo/src/main/res/layout/gridview.xml
@@ -5,7 +5,7 @@
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:numColumns="2"
- android:listSelector="@drawable/hover_background"
+ android:listSelector="@drawable/item"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
diff --git a/demo/src/main/res/layout/listview_item.xml b/demo/src/main/res/layout/listview_item.xml
index 0b05757..23ae179 100644
--- a/demo/src/main/res/layout/listview_item.xml
+++ b/demo/src/main/res/layout/listview_item.xml
@@ -1,55 +1,58 @@
-
-
-
-
+
-
-
-
-
+ android:layout_height="wrap_content"
+ >
-
-
-
-
-
+ android:layout_height="80dp">
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/src/main/res/layout/sample1.xml b/demo/src/main/res/layout/sample1.xml
index 3cc9b3f..214aab7 100644
--- a/demo/src/main/res/layout/sample1.xml
+++ b/demo/src/main/res/layout/sample1.xml
@@ -1,6 +1,7 @@
+
+ #E8E8E0
+ #DBDBD3
+
\ No newline at end of file
diff --git a/library/src/main/java/com/daimajia/swipe/SwipeLayout.java b/library/src/main/java/com/daimajia/swipe/SwipeLayout.java
index afd0402..bfe37a4 100644
--- a/library/src/main/java/com/daimajia/swipe/SwipeLayout.java
+++ b/library/src/main/java/com/daimajia/swipe/SwipeLayout.java
@@ -654,13 +654,12 @@ public class SwipeLayout extends FrameLayout {
}else{
break;
}
- break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
mTouchConsumedByChild = false;
}
- if(mTouchConsumedByChild) return false;
+ if(mTouchConsumedByChild) return false;
return mDragHelper.shouldInterceptTouchEvent(ev);
}
@@ -718,12 +717,23 @@ public class SwipeLayout extends FrameLayout {
int action = event.getActionMasked();
ViewParent parent = getParent();
gestureDetector.onTouchEvent(event);
+ Status status = getOpenStatus();
+ ViewGroup touching = null;
+ if(status == Status.Close){
+ touching = getSurfaceView();
+ }else if(status == Status.Open){
+ touching = getBottomView();
+ }
switch (action){
case MotionEvent.ACTION_DOWN:
mDragHelper.processTouchEvent(event);
parent.requestDisallowInterceptTouchEvent(true);
sX = event.getRawX();
sY = event.getRawY();
+
+ if(touching != null)
+ touching.setPressed(true);
+
return true;
case MotionEvent.ACTION_MOVE:{
if(sX == -1 || sY == -1){
@@ -737,18 +747,22 @@ public class SwipeLayout extends FrameLayout {
sY = event.getRawY();
return true;
}
+
+ if(touching != null)
+ touching.setPressed(false);
+
float distanceX = event.getRawX() - sX;
float distanceY = event.getRawY() - sY;
float angle = Math.abs(distanceY / distanceX);
angle = (float)Math.toDegrees(Math.atan(angle));
- Status status = getOpenStatus();
+
+ boolean doNothing = false;
if(mDragEdge == DragEdge.Right){
boolean suitable = (status == Status.Open && distanceX > 0) || (status == Status.Close && distanceX < 0);
suitable = suitable || (status == Status.Middle);
if(angle > 30 || !suitable){
- parent.requestDisallowInterceptTouchEvent(false);
- return false;
+ doNothing = true;
}
}
@@ -757,8 +771,7 @@ public class SwipeLayout extends FrameLayout {
suitable = suitable || status == Status.Middle;
if(angle > 30 || ! suitable){
- parent.requestDisallowInterceptTouchEvent(false);
- return false;
+ doNothing = true;
}
}
@@ -767,8 +780,7 @@ public class SwipeLayout extends FrameLayout {
suitable = suitable || status == Status.Middle;
if(angle < 60 || ! suitable){
- parent.requestDisallowInterceptTouchEvent(false);
- return false;
+ doNothing = true;
}
}
@@ -777,13 +789,17 @@ public class SwipeLayout extends FrameLayout {
suitable = suitable || status == Status.Middle;
if(angle < 60 || ! suitable){
- parent.requestDisallowInterceptTouchEvent(false);
- return false;
+ doNothing = true;
}
}
- parent.requestDisallowInterceptTouchEvent(true);
- mDragHelper.processTouchEvent(event);
+ if(doNothing){
+ parent.requestDisallowInterceptTouchEvent(false);
+ return false;
+ }else{
+ parent.requestDisallowInterceptTouchEvent(true);
+ mDragHelper.processTouchEvent(event);
+ }
break;
}
case MotionEvent.ACTION_UP:
@@ -791,6 +807,9 @@ public class SwipeLayout extends FrameLayout {
{
sX = -1;
sY = -1;
+ if(touching != null){
+ touching.setPressed(false);
+ }
}
default:
parent.requestDisallowInterceptTouchEvent(true);