diff options
author | Fabian Guerra <fabian.guerra@mapbox.com> | 2018-01-04 12:55:19 -0600 |
---|---|---|
committer | Fabian Guerra <fabian.guerra@mapbox.com> | 2018-01-04 12:55:19 -0600 |
commit | 187b6dc31cf281b5157de1acd92f3e8ef9d0acf9 (patch) | |
tree | 1d9eaac5d1e8393d8fd665aa678581a6086a9eb6 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java | |
parent | c62b0af24fc76b4bb2eb34100611dd3ee9ee5536 (diff) | |
parent | 760ef23ac3faf4437cadb52983383c9501336964 (diff) | |
download | qtlocation-mapboxgl-187b6dc31cf281b5157de1acd92f3e8ef9d0acf9.tar.gz |
Merge branch 'release-agua' into masterupstream/fabian-merge-release-agua
# Conflicts:
# circle.yml
# cmake/core-files.cmake
# platform/android/CHANGELOG.md
# platform/android/MapboxGLAndroidSDK/build.gradle
# platform/android/MapboxGLAndroidSDK/gradle.properties
# platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java
# platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
# platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java
# platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java
# platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java
# platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml
# platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java
# platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LocalGlyphActivity.java
# platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java
# platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_local_glyph.xml
# platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml
# platform/darwin/src/MGLMapSnapshotter.mm
# platform/darwin/src/MGLRendererConfiguration.h
# platform/ios/CHANGELOG.md
# platform/ios/DEVELOPING.md
# platform/ios/INSTALL.md
# platform/ios/README.md
# platform/ios/resources/bg.lproj/Localizable.strings
# platform/ios/resources/es.lproj/Localizable.strings
# platform/ios/resources/vi.lproj/Localizable.strings
# platform/ios/src/MGLMapView.mm
# platform/macos/macos.xcodeproj/project.pbxproj
# src/mbgl/text/glyph_manager.cpp
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java | 90 |
1 files changed, 81 insertions, 9 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java index f046744c31..69a43d4d3e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java @@ -1,5 +1,6 @@ package com.mapbox.mapboxsdk.maps; +import android.os.Handler; import android.support.annotation.NonNull; import java.util.concurrent.CopyOnWriteArrayList; @@ -9,10 +10,16 @@ import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveCanceledListener; import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveListener; import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveStartedListener; +/** + * Class responsible for dispatching camera change events to registered listeners. + */ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, MapboxMap.OnCameraMoveListener, MapboxMap.OnCameraMoveCanceledListener, OnCameraIdleListener { + private final Handler handler = new Handler(); + private boolean idle = true; + private int moveStartedReason; private final CopyOnWriteArrayList<OnCameraMoveStartedListener> onCameraMoveStarted = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<OnCameraMoveCanceledListener> onCameraMoveCanceled = new CopyOnWriteArrayList<>(); @@ -24,6 +31,74 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M private OnCameraMoveListener onCameraMoveListener; private OnCameraIdleListener onCameraIdleListener; + private final Runnable onCameraMoveStartedRunnable = new Runnable() { + @Override + public void run() { + // deprecated API + if (onCameraMoveStartedListener != null) { + onCameraMoveStartedListener.onCameraMoveStarted(moveStartedReason); + } + + // new API + if (!onCameraMoveStarted.isEmpty()) { + for (OnCameraMoveStartedListener cameraMoveStartedListener : onCameraMoveStarted) { + cameraMoveStartedListener.onCameraMoveStarted(moveStartedReason); + } + } + } + }; + + private final Runnable onCameraMoveRunnable = new Runnable() { + @Override + public void run() { + // deprecated API + if (onCameraMoveListener != null && !idle) { + onCameraMoveListener.onCameraMove(); + } + + // new API + if (!onCameraMove.isEmpty() && !idle) { + for (OnCameraMoveListener cameraMoveListener : onCameraMove) { + cameraMoveListener.onCameraMove(); + } + } + } + }; + + private final Runnable onCameraMoveCancelRunnable = new Runnable() { + @Override + public void run() { + // deprecated API + if (onCameraMoveCanceledListener != null && !idle) { + onCameraMoveCanceledListener.onCameraMoveCanceled(); + } + + // new API + if (!onCameraMoveCanceled.isEmpty() && !idle) { + for (OnCameraMoveCanceledListener cameraMoveCanceledListener : onCameraMoveCanceled) { + cameraMoveCanceledListener.onCameraMoveCanceled(); + } + } + } + }; + + private final Runnable onCameraIdleRunnable = new Runnable() { + @Override + public void run() { + // deprecated API + if (onCameraIdleListener != null) { + onCameraIdleListener.onCameraIdle(); + } + + // new API + if (!onCameraIdle.isEmpty()) { + for (OnCameraIdleListener cameraIdleListener : onCameraIdle) { + cameraIdleListener.onCameraIdle(); + } + } + } + }; + @Deprecated void setOnCameraMoveStartedListener(OnCameraMoveStartedListener onCameraMoveStartedListener) { this.onCameraMoveStartedListener = onCameraMoveStartedListener; @@ -45,16 +120,13 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M } @Override - public void onCameraMoveStarted(int reason) { + public void onCameraMoveStarted(final int reason) { if (!idle) { return; } idle = false; - - // deprecated API - if (onCameraMoveStartedListener != null) { - onCameraMoveStartedListener.onCameraMoveStarted(reason); - } + moveStartedReason = reason; + handler.post(onCameraMoveStartedRunnable); // new API if (!onCameraMoveStarted.isEmpty()) { @@ -66,7 +138,7 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M @Override public void onCameraMove() { - // deprecated API + handler.post(onCameraMoveRunnable); if (onCameraMoveListener != null && !idle) { onCameraMoveListener.onCameraMove(); } @@ -81,7 +153,7 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M @Override public void onCameraMoveCanceled() { - // deprecated API + handler.post(onCameraMoveCancelRunnable); if (onCameraMoveCanceledListener != null && !idle) { onCameraMoveCanceledListener.onCameraMoveCanceled(); } @@ -98,7 +170,7 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M public void onCameraIdle() { if (!idle) { idle = true; - // deprecated API + handler.post(onCameraIdleRunnable); if (onCameraIdleListener != null) { onCameraIdleListener.onCameraIdle(); } |