summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2017-03-30 17:30:47 +0200
committerGitHub <noreply@github.com>2017-03-30 17:30:47 +0200
commita46d91f7c5cbcdd9343d1a3dfba17e375a466e2a (patch)
tree9d65795b9955cd5aa016f43ce945e8c9962e7f9f /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations
parentdcb14f98ee534b22cae8a0f829302a0b2b2459b2 (diff)
downloadqtlocation-mapboxgl-a46d91f7c5cbcdd9343d1a3dfba17e375a466e2a.tar.gz
Revert 5.x touch changes (#8585)
* Revert "[android] - only dispatch events if not handled by MarkerView (#8447)" This reverts commit 09d76854ab15b2a6f473c270da9d46e903e426da. * Revert "[android] - move touch handling of MarkerViews back to View#setOnClickListener. Workaround panning issue by dispatching touch events to the parent ViewGroup. (#8272)" This reverts commit 1693b389d7d17315b8a2a9bdd862207ace053f77.
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewContainer.java34
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java49
2 files changed, 28 insertions, 55 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewContainer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewContainer.java
deleted file mode 100644
index d590582f09..0000000000
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewContainer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.mapbox.mapboxsdk.annotations;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-
-/**
- * ViewGroup that dispatches TouchEvents to the parent ViewGroup.
- * <p>
- * This allows to dispatch touch events that occur on MarkerView to MapView.
- * https://github.com/mapbox/mapbox-gl-native/issues/5388
- * </p>
- */
-public class MarkerViewContainer extends FrameLayout {
-
- public MarkerViewContainer(Context context, AttributeSet attrs) {
- super(context, attrs);
- setTag(false);
- }
-
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- super.dispatchTouchEvent(ev);
- boolean actionUp = (boolean) getTag();
- if (!actionUp) {
- ((ViewGroup) getParent()).onTouchEvent(ev);
- } else {
- setTag(false);
- }
- return true;
- }
-}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java
index 0f1298eeaf..315e12d280 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java
@@ -8,7 +8,6 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.util.LongSparseArray;
import android.view.LayoutInflater;
-import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@@ -504,26 +503,6 @@ public class MarkerViewManager implements MapView.OnMapChangedListener {
}
}
- adaptedView.setOnTouchListener(new View.OnTouchListener() {
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (event.getAction() == MotionEvent.ACTION_UP) {
- boolean clickHandled = false;
- if (onMarkerViewClickListener != null) {
- clickHandled = onMarkerViewClickListener.onMarkerClick(marker, v, adapter);
- markerViewContainer.setTag(true);
- }
-
- if (!clickHandled) {
- ensureInfoWindowOffset(marker);
- select(marker, v, adapter);
- }
- }
- return true;
- }
- });
-
marker.setMapboxMap(mapboxMap);
markerViewMap.put(marker, adaptedView);
if (convertView == null) {
@@ -552,6 +531,34 @@ public class MarkerViewManager implements MapView.OnMapChangedListener {
}
/**
+ * When the provided {@link MarkerView} is clicked on by a user, we check if a custom click
+ * event has been created and if not, display a {@link InfoWindow}.
+ *
+ * @param markerView that the click event occurred.
+ */
+ public boolean onClickMarkerView(MarkerView markerView) {
+ boolean clickHandled = false;
+
+ MapboxMap.MarkerViewAdapter adapter = getViewAdapter(markerView);
+ View view = getView(markerView);
+ if (adapter == null || view == null) {
+ // not a valid state
+ return true;
+ }
+
+ if (onMarkerViewClickListener != null) {
+ clickHandled = onMarkerViewClickListener.onMarkerClick(markerView, view, adapter);
+ }
+
+ if (!clickHandled) {
+ ensureInfoWindowOffset(markerView);
+ select(markerView, view, adapter);
+ }
+
+ return clickHandled;
+ }
+
+ /**
* Handles the {@link MarkerView}'s info window offset.
*
* @param marker that we are ensuring info window offset.