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 2018/12/21 08:45:55 UTC
[incubator-weex] branch master updated: [WEEX][Android] Fix Scroll
End Be Fired When ScrollEnd But Touch Not End (#1945)
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 0bb4d4c [WEEX][Android] Fix Scroll End Be Fired When ScrollEnd But Touch Not End (#1945)
0bb4d4c is described below
commit 0bb4d4c40078067318db1f39d2a614f35e5a3536
Author: codefurture <gu...@163.com>
AuthorDate: Fri Dec 21 16:45:51 2018 +0800
[WEEX][Android] Fix Scroll End Be Fired When ScrollEnd But Touch Not End (#1945)
* [WEEX][Android] Fix Scroll End Be Fired When ScrollEnd But Touch Not End
---
.../java/com/taobao/weex/ui/component/WXScroller.java | 1 +
.../weex/ui/component/helper/ScrollStartEndHelper.java | 16 ++++++++++++++++
.../weex/ui/component/list/BasicListComponent.java | 2 +-
.../component/list/template/WXRecyclerTemplateList.java | 1 +
4 files changed, 19 insertions(+), 1 deletion(-)
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 2f6554d..e4ab9f8 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
@@ -575,6 +575,7 @@ public class WXScroller extends WXVContainer<ViewGroup> implements WXScrollViewL
}
}
}
+ getScrollStartEndHelper().onScrollStateChanged(OnWXScrollListener.IDLE);
}
@Override
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 871f86a..85c43f9 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
@@ -22,6 +22,7 @@ import android.os.Handler;
import android.os.Looper;
import com.taobao.weex.common.Constants;
+import com.taobao.weex.common.OnWXScrollListener;
import com.taobao.weex.ui.component.WXComponent;
import com.taobao.weex.ui.component.WXScroller;
import com.taobao.weex.ui.component.list.BasicListComponent;
@@ -45,6 +46,8 @@ public class ScrollStartEndHelper implements Runnable{
private int x;
private int y;
+ private boolean hasScrollEnd;
+
public ScrollStartEndHelper(WXComponent component) {
this.component = component;
@@ -78,10 +81,15 @@ public class ScrollStartEndHelper implements Runnable{
if(component.isDestoryed()){
return;
}
+ if(!hasScrollEnd){
+ return;
+ }
if(component.getEvents().contains(Constants.Event.SCROLL_END)){
component.fireEvent(Constants.Event.SCROLL_END, getScrollEvent(this.x, this.y));
}
hasStart = false;
+ hasScrollEnd = false;
+
}
private Map<String, Object> getScrollEvent(int offsetX, int offsetY){
@@ -103,6 +111,14 @@ public class ScrollStartEndHelper implements Runnable{
return null;
}
+ public void onScrollStateChanged(int newState){
+ if(newState == OnWXScrollListener.IDLE){
+ hasScrollEnd = true;
+ handler.removeCallbacks(this);
+ handler.postDelayed(this, minInterval);
+ }
+ }
+
public static boolean isScrollEvent(String type){
if(Constants.Event.SCROLL.equals(type)){
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 3d7393f..7b86229 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
@@ -319,7 +319,7 @@ public abstract class BasicListComponent<T extends ViewGroup & ListComponentView
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
-
+ getScrollStartEndHelper().onScrollStateChanged(newState);
List<OnWXScrollListener> listeners = getInstance().getWXScrollListeners();
int size;
OnWXScrollListener listener;
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
index 6b7e233..5831cb9 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
@@ -290,6 +290,7 @@ public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> imp
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
+ getScrollStartEndHelper().onScrollStateChanged(newState);
List<OnWXScrollListener> listeners = getInstance().getWXScrollListeners();
if (listeners != null && listeners.size() > 0) {
for (OnWXScrollListener listener : listeners) {