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 <zhengshihan...@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; }