You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by GitBox <gi...@apache.org> on 2019/01/08 07:48:38 UTC

[GitHub] YorkShen closed pull request #1363: [weex-529] [Android] Allow register custom gesture listeners

YorkShen closed pull request #1363: [weex-529] [Android] Allow register custom gesture listeners 
URL: https://github.com/apache/incubator-weex/pull/1363
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageView.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageView.java
index ed6596b22e..9227a90734 100644
--- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageView.java
+++ b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageView.java
@@ -59,6 +59,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   @Override
   public boolean onTouchEvent(MotionEvent event) {
     boolean result = super.onTouchEvent(event);
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXBaseCircleIndicator.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXBaseCircleIndicator.java
index 44af1f5a98..43264bdb19 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXBaseCircleIndicator.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXBaseCircleIndicator.java
@@ -157,6 +157,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   @Override
   public boolean dispatchTouchEvent(MotionEvent event) {
     boolean result = super.dispatchTouchEvent(event);
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXCircleViewPager.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXCircleViewPager.java
index 75f1605e2e..5c79e5ba73 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXCircleViewPager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXCircleViewPager.java
@@ -265,6 +265,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   public int getRealCurrentItem() {
     int i = super.getCurrentItem();
     return ((WXCirclePageAdapter) getAdapter()).getRealPosition(i);
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXEditText.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXEditText.java
index 8401115eeb..d8d67c141f 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXEditText.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXEditText.java
@@ -54,6 +54,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   @Override
   public void setLines(int lines) {
     super.setLines(lines);
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
index 551a0e2789..b3be471a7e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
@@ -23,7 +23,6 @@
 import android.graphics.drawable.Drawable;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
 import android.widget.FrameLayout;
@@ -40,6 +39,7 @@
 import com.taobao.weex.utils.WXExceptionUtils;
 import com.taobao.weex.utils.WXLogUtils;
 import com.taobao.weex.utils.WXViewUtils;
+
 import java.lang.ref.WeakReference;
 import java.util.HashMap;
 import java.util.List;
@@ -66,6 +66,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   @Override
   public boolean dispatchTouchEvent(MotionEvent event) {
     boolean result = super.dispatchTouchEvent(event);
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXHorizontalScrollView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXHorizontalScrollView.java
index bb7843cdf5..7c17d33e37 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXHorizontalScrollView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXHorizontalScrollView.java
@@ -93,6 +93,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   @Override
   public boolean dispatchTouchEvent(MotionEvent event) {
     boolean result = super.dispatchTouchEvent(event);
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
index bd2d418647..b89c7fb509 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
@@ -101,6 +101,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   @Override
   public boolean onTouchEvent(MotionEvent event) {
     boolean result = super.onTouchEvent(event);
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXScrollView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXScrollView.java
index 5bb09779ab..ec6962141e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXScrollView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXScrollView.java
@@ -440,6 +440,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   public Rect getContentFrame() {
     return new Rect(0, 0, computeHorizontalScrollRange(), computeVerticalScrollRange());
   }
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXSwitchView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXSwitchView.java
index fc96a7d67d..abba9f83fc 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXSwitchView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXSwitchView.java
@@ -41,6 +41,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   @Override
   public boolean onTouchEvent(MotionEvent event) {
     boolean result = super.onTouchEvent(event);
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java
index f37670f601..59ed4ad0f3 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java
@@ -77,6 +77,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   @Override
   public CharSequence getText() {
     return textLayout.getText();
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXVideoView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXVideoView.java
index 75b4f16db6..bbd518115f 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXVideoView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXVideoView.java
@@ -54,6 +54,11 @@ public void registerGestureListener(WXGesture wxGesture) {
     this.wxGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return wxGesture;
+  }
+
   public void setOnVideoPauseListener(VideoPlayListener listener) {
     mVideoPauseListener = listener;
   }
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/gesture/WXGesture.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/gesture/WXGesture.java
index ee48c6aeac..a6ed2cccac 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/gesture/WXGesture.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/gesture/WXGesture.java
@@ -47,6 +47,7 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
@@ -85,6 +86,8 @@
   private int     shouldBubbleInterval = 0; //every times try
   private int     shouldBubbleCallRemainTimes = 0;
 
+  private final List<OnTouchListener> mTouchListeners = new LinkedList<>();
+
   public WXGesture(WXComponent wxComponent, Context context) {
     this.component = wxComponent;
     globalRect = new Rect();
@@ -189,6 +192,21 @@ private boolean shouldBubbleTouchEvent(MotionEvent event){
     return  true;
   }
 
+  @SuppressWarnings("unused")
+  public void addOnTouchListener(OnTouchListener listener) {
+    if(listener != null) {
+      mTouchListeners.add(listener);
+    }
+  }
+
+  @SuppressWarnings("unused")
+  public boolean removeTouchListener(OnTouchListener listener) {
+    if(listener != null) {
+      return mTouchListeners.remove(listener);
+    }
+    return false;
+  }
+
   @Override
   public boolean onTouch(View v, MotionEvent event) {
     if(requestDisallowInterceptTouchEvent){
@@ -197,6 +215,13 @@ public boolean onTouch(View v, MotionEvent event) {
     }
     try {
       boolean result = mGestureDetector.onTouchEvent(event);
+
+      if(mTouchListeners != null && !mTouchListeners.isEmpty()) {
+        for(OnTouchListener listener : mTouchListeners) {
+          result |= listener.onTouch(v, event);
+        }
+      }
+
       switch (event.getActionMasked()) {
         case MotionEvent.ACTION_POINTER_DOWN:
         case MotionEvent.ACTION_DOWN:
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/gesture/WXGestureObservable.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/gesture/WXGestureObservable.java
index 1735c3099b..e56879397d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/gesture/WXGestureObservable.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/gesture/WXGestureObservable.java
@@ -38,4 +38,12 @@
    * @param wxGesture The Gesture to register, null for unregister.
    */
   void registerGestureListener(@Nullable WXGesture wxGesture);
+
+  /**
+   * Get gesture listener for corresponding view.
+   *
+   * @return the gesture listener has register before
+   *
+   * */
+  WXGesture getGestureListener();
 }
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/WXRecyclerView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/WXRecyclerView.java
index 275585cc27..d29b7ae7d0 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/WXRecyclerView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/WXRecyclerView.java
@@ -83,6 +83,11 @@ public void registerGestureListener(@Nullable WXGesture wxGesture) {
     mGesture = wxGesture;
   }
 
+  @Override
+  public WXGesture getGestureListener() {
+    return mGesture;
+  }
+
   @Override
   public boolean onTouchEvent(MotionEvent event) {
     if(!scrollable) {
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/wrapper/BounceRecyclerView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/wrapper/BounceRecyclerView.java
index 6f17584a18..bb1d2414f9 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/wrapper/BounceRecyclerView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/wrapper/BounceRecyclerView.java
@@ -125,4 +125,9 @@ public void registerGestureListener(@Nullable WXGesture wxGesture) {
     mGesture = wxGesture;
     getInnerView().registerGestureListener(wxGesture);
   }
+
+  @Override
+  public WXGesture getGestureListener() {
+    return mGesture;
+  }
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services