Repository: incubator-weex
Updated Branches:
  refs/heads/master 6b3519a2d -> 00a4cd654


nest scroll


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

Branch: refs/heads/master
Commit: 868a9bd64c35cf86ea29a6f4bbfe70e06dccfa8c
Parents: 1538690
Author: jianbai.gbj <jianbai....@alibaba-inc.com>
Authored: Thu Oct 26 14:04:04 2017 +0800
Committer: jianbai.gbj <jianbai....@alibaba-inc.com>
Committed: Thu Oct 26 14:04:04 2017 +0800

----------------------------------------------------------------------
 .../ui/view/refresh/core/WXSwipeLayout.java     | 92 ++++++++++++++++----
 1 file changed, 77 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/868a9bd6/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 fa26de7..e9c84e4 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
@@ -24,6 +24,8 @@ import android.annotation.TargetApi;
 import android.content.Context;
 import android.graphics.Color;
 import android.os.Build;
+import android.support.v4.view.NestedScrollingChild;
+import android.support.v4.view.NestedScrollingChildHelper;
 import android.support.v4.view.NestedScrollingParent;
 import android.support.v4.view.NestedScrollingParentHelper;
 import android.support.v4.view.ViewCompat;
@@ -36,9 +38,11 @@ import android.view.View;
 import android.widget.AbsListView;
 import android.widget.FrameLayout;
 
-public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent {
+public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent, NestedScrollingChild {
 
-  private NestedScrollingParentHelper parentHelper;
+  private NestedScrollingParentHelper mNestedScrollingParentHelper;
+  private NestedScrollingChildHelper mNestedScrollingChildHelper;
+  private final int[] mParentOffsetInWindow = new int[2];
   private WXOnRefreshListener onRefreshListener;
   private WXOnLoadingListener onLoadingListener;
 
@@ -143,7 +147,9 @@ public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent
       throw new RuntimeException("WXSwipeLayout should not have more than one 
child");
     }
 
-    parentHelper = new NestedScrollingParentHelper(this);
+    mNestedScrollingParentHelper = new NestedScrollingParentHelper(this);
+    mNestedScrollingChildHelper = new NestedScrollingChildHelper(this);
+    setNestedScrollingEnabled(true);
 
     if (isInEditMode() && attrs == null) {
       return;
@@ -206,6 +212,68 @@ public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent
     return super.onInterceptTouchEvent(ev);
   }
 
+  // NestedScrollingChild
+
+  @Override
+  public void setNestedScrollingEnabled(boolean enabled) {
+    mNestedScrollingChildHelper.setNestedScrollingEnabled(enabled);
+  }
+
+  @Override
+  public boolean isNestedScrollingEnabled() {
+    return mNestedScrollingChildHelper.isNestedScrollingEnabled();
+  }
+
+  @Override
+  public boolean startNestedScroll(int axes) {
+    return mNestedScrollingChildHelper.startNestedScroll(axes);
+  }
+
+  @Override
+  public void stopNestedScroll() {
+    mNestedScrollingChildHelper.stopNestedScroll();
+  }
+
+  @Override
+  public boolean hasNestedScrollingParent() {
+    return mNestedScrollingChildHelper.hasNestedScrollingParent();
+  }
+
+  @Override
+  public boolean dispatchNestedScroll(int dxConsumed, int dyConsumed, int 
dxUnconsumed,
+                                      int dyUnconsumed, int[] offsetInWindow) {
+    return mNestedScrollingChildHelper.dispatchNestedScroll(dxConsumed, 
dyConsumed,
+            dxUnconsumed, dyUnconsumed, offsetInWindow);
+  }
+
+  @Override
+  public boolean dispatchNestedPreScroll(int dx, int dy, int[] consumed, int[] 
offsetInWindow) {
+    return mNestedScrollingChildHelper.dispatchNestedPreScroll(
+            dx, dy, consumed, offsetInWindow);
+  }
+
+  @Override
+  public boolean onNestedPreFling(View target, float velocityX,
+                                  float velocityY) {
+    return dispatchNestedPreFling(velocityX, velocityY);
+  }
+
+  @Override
+  public boolean onNestedFling(View target, float velocityX, float velocityY,
+                               boolean consumed) {
+    return dispatchNestedFling(velocityX, velocityY, consumed);
+  }
+
+  @Override
+  public boolean dispatchNestedFling(float velocityX, float velocityY, boolean 
consumed) {
+    return mNestedScrollingChildHelper.dispatchNestedFling(velocityX, 
velocityY, consumed);
+  }
+
+  @Override
+  public boolean dispatchNestedPreFling(float velocityX, float velocityY) {
+    return mNestedScrollingChildHelper.dispatchNestedPreFling(velocityX, 
velocityY);
+  }
+
   /*********************************** NestedScrollParent 
*************************************/
 
   @Override
@@ -215,7 +283,8 @@ public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent
 
   @Override
   public void onNestedScrollAccepted(View child, View target, int axes) {
-    parentHelper.onNestedScrollAccepted(child, target, axes);
+    mNestedScrollingParentHelper.onNestedScrollAccepted(child, target, axes);
+    startNestedScroll(axes);
   }
 
   /**
@@ -225,8 +294,9 @@ public class WXSwipeLayout extends FrameLayout implements 
NestedScrollingParent
    */
   @Override
   public void onStopNestedScroll(View child) {
-    parentHelper.onStopNestedScroll(child);
+    mNestedScrollingParentHelper.onStopNestedScroll(child);
     handlerAction();
+    stopNestedScroll();
   }
 
   /**
@@ -261,23 +331,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);
   }
 
   @Override
   public int getNestedScrollAxes() {
-    return parentHelper.getNestedScrollAxes();
+    return mNestedScrollingParentHelper.getNestedScrollAxes();
   }
 
-  @Override
-  public boolean onNestedPreFling(View target, float velocityX, float 
velocityY) {
-    return false;
-  }
 
-  @Override
-  public boolean onNestedFling(View target, float velocityX, float velocityY, 
boolean consumed) {
-    return false;
-  }
 
   private double calculateDistanceY(View target, int dy) {
     int viewHeight = target.getMeasuredHeight();

Reply via email to