You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2019/07/10 08:00:46 UTC

[incubator-weex] branch master updated: [Android] bugfix of the scrollstart and scrollend event mismatching (#2638)

This is an automated email from the ASF dual-hosted git repository.

kyork pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git


The following commit(s) were added to refs/heads/master by this push:
     new c928c5c  [Android] bugfix of  the scrollstart and scrollend  event mismatching (#2638)
c928c5c is described below

commit c928c5c7638b5462c3a5079acb9bef021a38e3c7
Author: zshshr <zh...@gmail.com>
AuthorDate: Wed Jul 10 16:00:40 2019 +0800

    [Android] bugfix of  the scrollstart and scrollend  event mismatching (#2638)
---
 .../ui/component/helper/ScrollStartEndHelper.java     | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/helper/ScrollStartEndHelper.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/helper/ScrollStartEndHelper.java
index dd375aa..29eb775 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/helper/ScrollStartEndHelper.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/helper/ScrollStartEndHelper.java
@@ -42,7 +42,10 @@ public class ScrollStartEndHelper implements Runnable{
     private Handler handler;
     private WXComponent component;
     private boolean  hasStart;
+    private boolean  canStart = false;
+
     private long  minInterval;
+    private int oldState = OnWXScrollListener.IDLE;
 
     private int x;
     private int y;
@@ -64,14 +67,16 @@ public class ScrollStartEndHelper implements Runnable{
                 || component.getEvents().contains(Constants.Event.SCROLL_END))){
             this.x = x;
             this.y = y;
-            if(!hasStart){
+            if(!hasStart && canStart){
                 if(component.getEvents().contains(Constants.Event.SCROLL_START)){
                     Map<String, Object> event = getScrollEvent(x,y);
                     if (null !=event && !event.isEmpty()){
                         component.fireEvent(Constants.Event.SCROLL_START,event);
+
                     }
                 }
                 hasStart = true;
+                canStart = false;
             }
             handler.removeCallbacks(this);
             handler.postDelayed(this, minInterval);
@@ -87,8 +92,13 @@ public class ScrollStartEndHelper implements Runnable{
         if(!hasScrollEnd){
             return;
         }
+        if(canStart){
+            component.fireEvent(Constants.Event.SCROLL_START, getScrollEvent(this.x, this.y));
+            canStart = false;
+        }
         if(component.getEvents().contains(Constants.Event.SCROLL_END)){
             component.fireEvent(Constants.Event.SCROLL_END, getScrollEvent(this.x, this.y));
+
         }
         hasStart = false;
         hasScrollEnd = false;
@@ -115,11 +125,18 @@ public class ScrollStartEndHelper implements Runnable{
     }
 
     public void onScrollStateChanged(int newState){
+
+        if(oldState == OnWXScrollListener.IDLE){
+            canStart = true;
+        }
+
         if(newState == OnWXScrollListener.IDLE){
             hasScrollEnd = true;
             handler.removeCallbacks(this);
             handler.postDelayed(this, minInterval);
         }
+
+        oldState = newState;
     }