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;
}