diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main')
3 files changed, 66 insertions, 1 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapChangeReceiver.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapChangeReceiver.java index a12c6c7fb3..f569ae3af9 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapChangeReceiver.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapChangeReceiver.java @@ -26,6 +26,8 @@ class MapChangeReceiver implements NativeMapView.StateCallback { = new CopyOnWriteArrayList<>(); private final List<MapView.OnDidFinishRenderingMapListener> onDidFinishRenderingMapListenerList = new CopyOnWriteArrayList<>(); + private final List<MapView.OnDidEnterIdleListener> onDidEnterIdleListenerList + = new CopyOnWriteArrayList<>(); private final List<MapView.OnDidFinishLoadingStyleListener> onDidFinishLoadingStyleListenerList = new CopyOnWriteArrayList<>(); private final List<MapView.OnSourceChangedListener> onSourceChangedListenerList = new CopyOnWriteArrayList<>(); @@ -171,6 +173,20 @@ class MapChangeReceiver implements NativeMapView.StateCallback { } @Override + public void onDidEnterIdle() { + try { + if (!onDidEnterIdleListenerList.isEmpty()) { + for (MapView.OnDidEnterIdleListener listener : onDidEnterIdleListenerList) { + listener.onDidEnterIdle(); + } + } + } catch (Throwable err) { + Logger.e(TAG, "Exception in onDidEnterIdle", err); + throw err; + } + } + + @Override public void onDidFinishLoadingStyle() { try { if (!onDidFinishLoadingStyleListenerList.isEmpty()) { @@ -278,6 +294,14 @@ class MapChangeReceiver implements NativeMapView.StateCallback { onDidFinishRenderingMapListenerList.remove(listener); } + void addOnDidEnterIdleListener(MapView.OnDidEnterIdleListener listener) { + onDidEnterIdleListenerList.add(listener); + } + + void removeOnDidEnterIdleListener(MapView.OnDidEnterIdleListener listener) { + onDidEnterIdleListenerList.remove(listener); + } + void addOnDidFinishLoadingStyleListener(MapView.OnDidFinishLoadingStyleListener listener) { onDidFinishLoadingStyleListenerList.add(listener); } @@ -305,6 +329,7 @@ class MapChangeReceiver implements NativeMapView.StateCallback { onDidFinishRenderingFrameList.clear(); onWillStartRenderingMapListenerList.clear(); onDidFinishRenderingMapListenerList.clear(); + onDidEnterIdleListenerList.clear(); onDidFinishLoadingStyleListenerList.clear(); onSourceChangedListenerList.clear(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index b4c977cf15..8a29ae8070 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -691,13 +691,33 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { /** * Remove a callback that's invoked when the map has finished rendering. * - * @param listener The callback that's invoked when the map has finished rendering + * @param listener The callback that's invoked when the map has has finished rendering. */ public void removeOnDidFinishRenderingMapListener(OnDidFinishRenderingMapListener listener) { mapChangeReceiver.removeOnDidFinishRenderingMapListener(listener); } /** + * Set a callback that's invoked when the map has entered the idle state. + * + * @param listener The callback that's invoked when the map has entered the idle state. + */ + public void addOnDidEnterIdleListener(OnDidEnterIdleListener listener) { + mapChangeReceiver.addOnDidEnterIdleListener(listener); + } + + /** + * Remove a callback that's invoked when the map has entered the idle state. + * + * @param listener The callback that's invoked when the map has entered the idle state. + */ + public void removeOnDidEnterIdleListener(OnDidEnterIdleListener listener) { + mapChangeReceiver.removeOnDidEnterIdleListener(listener); + } + + /** + + /** * Set a callback that's invoked when the style has finished loading. * * @param listener The callback that's invoked when the style has finished loading @@ -871,6 +891,19 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { } /** + * Interface definition for a callback to be invoked when the map has entered the idle state. + * <p> + * {@link MapView#addOnDidEnterIdleListener(OnDidEnterIdleListener)} + * </p> + */ + public interface OnDidEnterIdleListener { + /** + * Called when the map has entered the idle state. + */ + void onDidEnterIdle(); + } + + /** * Interface definition for a callback to be invoked when the map has loaded the style. * <p> * {@link MapView#addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener)} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index bdbca4fbca..59840f5bf3 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -1010,6 +1010,11 @@ final class NativeMapView { } @Keep + private void onDidEnterIdle() { + stateCallback.onDidEnterIdle(); + } + + @Keep private void onDidFinishLoadingStyle() { if (stateCallback != null) { stateCallback.onDidFinishLoadingStyle(); @@ -1472,6 +1477,8 @@ final class NativeMapView { void onDidFinishRenderingMap(boolean fully); + void onDidEnterIdle(); + void onSourceChanged(String sourceId); } } |