nest scroll parent

Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/1f54c7d3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/1f54c7d3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/1f54c7d3

Branch: refs/heads/master
Commit: 1f54c7d3378bece79a4bb2762ea34b185f0259f1
Parents: 868a9bd
Author: jianbai.gbj <jianbai....@alibaba-inc.com>
Authored: Thu Oct 26 14:35:22 2017 +0800
Committer: jianbai.gbj <jianbai....@alibaba-inc.com>
Committed: Thu Oct 26 14:35:22 2017 +0800

----------------------------------------------------------------------
 .../ui/view/refresh/core/WXSwipeLayout.java     | 27 +++++++++++++++-----
 1 file changed, 20 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1f54c7d3/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/core/WXSwipeLayout.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/core/WXSwipeLayout.java
 
b/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/core/WXSwipeLayout.java
index e9c84e4..b8c8465 100644
--- 
a/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/core/WXSwipeLayout.java
+++ 
b/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/core/WXSwipeLayout.java
@@ -42,6 +42,7 @@ public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent,
 
   private NestedScrollingParentHelper mNestedScrollingParentHelper;
   private NestedScrollingChildHelper mNestedScrollingChildHelper;
+  private final int[] mParentScrollConsumed = new int[2];
   private final int[] mParentOffsetInWindow = new int[2];
   private WXOnRefreshListener onRefreshListener;
   private WXOnLoadingListener onLoadingListener;
@@ -278,13 +279,14 @@ public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent,
 
   @Override
   public boolean onStartNestedScroll(View child, View target, int 
nestedScrollAxes) {
-    return true;
+    return isEnabled()  && !mRefreshing
+            && (nestedScrollAxes & ViewCompat.SCROLL_AXIS_VERTICAL) != 0;
   }
 
   @Override
   public void onNestedScrollAccepted(View child, View target, int axes) {
     mNestedScrollingParentHelper.onNestedScrollAccepted(child, target, axes);
-    startNestedScroll(axes);
+    startNestedScroll(axes & ViewCompat.SCROLL_AXIS_VERTICAL);
   }
 
   /**
@@ -325,13 +327,15 @@ public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent,
     }
 
     if (moveSpinner(-dy)) {
-      consumed[1] += dy;
+       consumed[1] += dy;
     }
-  }
 
-  @Override
-  public void onNestedScroll(View target, int dxConsumed, int dyConsumed, int 
dxUnconsumed, int dyUnconsumed) {
-     dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, 
mParentOffsetInWindow);
+    // Now let our nested parent consume the leftovers
+    final int[] parentConsumed = mParentScrollConsumed;
+    if (dispatchNestedPreScroll(dx - consumed[0], dy - consumed[1], 
parentConsumed, null)) {
+      consumed[0] += parentConsumed[0];
+      consumed[1] += parentConsumed[1];
+    }
   }
 
   @Override
@@ -341,6 +345,15 @@ public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent,
 
 
 
+  @Override
+  public void onNestedScroll(View target, int dxConsumed, int dyConsumed, int 
dxUnconsumed, int dyUnconsumed) {
+     dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, 
mParentOffsetInWindow);
+  }
+
+
+
+
+
   private double calculateDistanceY(View target, int dy) {
     int viewHeight = target.getMeasuredHeight();
     double ratio = (viewHeight - Math.abs(target.getY())) / 1.0d / viewHeight 
* DAMPING;

Reply via email to