You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/06/15 06:06:24 UTC
[06/12] incubator-weex git commit: + [android] new way to calculate
list vertical scroll offset
+ [android] new way to calculate list vertical scroll offset
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/183df14d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/183df14d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/183df14d
Branch: refs/heads/0.14-dev
Commit: 183df14de637052b281f4783316f8e211a77dab3
Parents: cd06f7d
Author: moxun.ljf <fu...@foxmail.com>
Authored: Tue Jun 6 14:10:40 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Thu Jun 15 14:00:37 2017 +0800
----------------------------------------------------------------------
.../main/java/com/taobao/weex/common/Constants.java | 1 +
.../weex/ui/component/list/BasicListComponent.java | 15 ++++++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/183df14d/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
index eae7080..f683c99 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
@@ -168,6 +168,7 @@ public class Constants {
String RETURN_KEY_TYPE = "returnKeyType";
String OFFSET = "offset";
String ANIMATED = "animated";
+ String STABLE = "stable";
String INSERT_CELL_ANIMATION = "insertAnimation";
String DELETE_CELL_ANIMATION = "deleteAnimation";
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/183df14d/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
index 6127599..aa20902 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
@@ -113,6 +113,7 @@ public abstract class BasicListComponent<T extends ViewGroup & ListComponentView
private int mOffsetAccuracy = 10;
private Point mLastReport = new Point(-1, -1);
+ private boolean mStable = false;
private RecyclerView.ItemAnimator mItemAnimator;
@@ -402,6 +403,9 @@ public abstract class BasicListComponent<T extends ViewGroup & ListComponentView
case Constants.Name.DRAGGABLE:
boolean draggable = WXUtils.getBoolean(param,false);
setDraggable(draggable);
+ case Constants.Name.STABLE:
+ this.mStable = WXUtils.getBoolean(param, false);
+ return true;
}
return super.setProperty(key, param);
}
@@ -1230,11 +1234,20 @@ public abstract class BasicListComponent<T extends ViewGroup & ListComponentView
if (Constants.Event.SCROLL.equals(type) && getHostView() != null && getHostView().getInnerView() != null) {
WXRecyclerView innerView = getHostView().getInnerView();
innerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ private int totalDy = 0;
+
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int offsetX = recyclerView.computeHorizontalScrollOffset();
- int offsetY = recyclerView.computeVerticalScrollOffset();
+ int offsetY = 0;
+ if (mStable) {
+ totalDy -= dy;
+ offsetY = totalDy;
+ } else {
+ offsetY = recyclerView.computeVerticalScrollOffset();
+ }
+
if (shouldReport(offsetX, offsetY)) {
int contentWidth = recyclerView.getMeasuredWidth() + recyclerView.computeHorizontalScrollRange();
int contentHeight = recyclerView.computeVerticalScrollRange();