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;