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/09 01:52:58 UTC

[47/50] incubator-weex git commit: * [android] parallax multiple scroller binding

* [android] parallax multiple scroller binding


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

Branch: refs/heads/master
Commit: 6428fab248b67264a5438cb1c4cf248ab60b8e17
Parents: a283e16
Author: zshshr <zh...@gmail.com>
Authored: Tue Jun 6 10:23:51 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Thu Jun 8 18:45:41 2017 +0800

----------------------------------------------------------------------
 .../com/taobao/weex/common/ICheckBindingScroller.java  |  9 +++++++++
 .../java/com/taobao/weex/ui/component/WXComponent.java | 11 +++++++++++
 .../java/com/taobao/weex/ui/component/WXScroller.java  |  9 ++++++++-
 .../com/taobao/weex/ui/component/WXVContainer.java     | 13 +++++++++++++
 .../weex/ui/component/list/BasicListComponent.java     |  9 ++++++++-
 5 files changed, 49 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6428fab2/android/sdk/src/main/java/com/taobao/weex/common/ICheckBindingScroller.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/ICheckBindingScroller.java b/android/sdk/src/main/java/com/taobao/weex/common/ICheckBindingScroller.java
new file mode 100644
index 0000000..967869d
--- /dev/null
+++ b/android/sdk/src/main/java/com/taobao/weex/common/ICheckBindingScroller.java
@@ -0,0 +1,9 @@
+package com.taobao.weex.common;
+
+/**
+ * Created by zhengshihan on 2017/6/5.
+ */
+
+public interface ICheckBindingScroller {
+  boolean isNeedScroller(String ref,Object option);
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6428fab2/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index 659cb16..ba12251 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -850,6 +850,17 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
     }
   }
 
+  /**
+   * get Scroller components
+   */
+  @Nullable
+  public Scrollable getFirstScroller() {
+   if(this instanceof Scrollable){
+     return (Scrollable)this;
+   }
+   return null;
+  }
+
   public WXVContainer getParent() {
     return mParent;
   }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6428fab2/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java
index ca2e174..24e4940 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java
@@ -37,6 +37,7 @@ import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.annotation.Component;
 import com.taobao.weex.annotation.JSMethod;
 import com.taobao.weex.common.Constants;
+import com.taobao.weex.common.ICheckBindingScroller;
 import com.taobao.weex.common.OnWXScrollListener;
 import com.taobao.weex.common.WXThread;
 import com.taobao.weex.dom.WXDomObject;
@@ -397,7 +398,13 @@ public class WXScroller extends WXVContainer<ViewGroup> implements WXScrollViewL
           if(listeners!=null && listeners.size()>0){
             for (OnWXScrollListener listener : listeners) {
               if (listener != null) {
-                listener.onScrolled(scrollView, x, y);
+                if(listener instanceof ICheckBindingScroller){
+                  if(((ICheckBindingScroller) listener).isNeedScroller(getRef(),null)){
+                    listener.onScrolled(scrollView, x, y);
+                  }
+                }else {
+                  listener.onScrolled(scrollView, x, y);
+                }
               }
             }
           }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6428fab2/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
index 2e75f31..afdad86 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
@@ -126,6 +126,19 @@ public abstract class WXVContainer<T extends ViewGroup> extends WXComponent<T> {
   }
 
 
+  public Scrollable getFirstScroller(){
+    if(this instanceof Scrollable){
+      return (Scrollable)this;
+    }else{
+      for (int i=0;i<getChildCount();i++){
+        Scrollable scrollable = getChild(i).getFirstScroller();
+        if(scrollable!=null){
+          return scrollable;
+        }
+      }
+    }
+    return null;
+  }
   @Override
   public void bindData(WXComponent component) {
     if(!isLazy()) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6428fab2/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 efe9147..0d60fb9 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
@@ -43,6 +43,7 @@ import com.taobao.weex.WXEnvironment;
 import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.annotation.JSMethod;
 import com.taobao.weex.common.Constants;
+import com.taobao.weex.common.ICheckBindingScroller;
 import com.taobao.weex.common.OnWXScrollListener;
 import com.taobao.weex.dom.ImmutableDomObject;
 import com.taobao.weex.dom.WXDomObject;
@@ -273,7 +274,13 @@ public abstract class BasicListComponent<T extends ViewGroup & ListComponentView
         if (listeners != null && listeners.size() > 0) {
           for (OnWXScrollListener listener : listeners) {
             if (listener != null) {
-              listener.onScrolled(recyclerView, dx, dy);
+              if(listener instanceof ICheckBindingScroller){
+                if(((ICheckBindingScroller) listener).isNeedScroller(getRef(),null)){
+                  listener.onScrolled(recyclerView, dx, dy);
+                }
+              }else {
+                listener.onScrolled(recyclerView, dx, dy);
+              }
             }
           }
         }