diff options
2 files changed, 24 insertions, 1 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java index e8e1f875b0..3f0ddd6e98 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java @@ -164,6 +164,8 @@ public final class LocationComponent { = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<OnCameraTrackingChangedListener> onCameraTrackingChangedListeners = new CopyOnWriteArrayList<>(); + private final CopyOnWriteArrayList<OnRenderModeChangedListener> onRenderModeChangedListeners + = new CopyOnWriteArrayList<>(); // Workaround for too frequent updates, see https://github.com/mapbox/mapbox-gl-native/issues/13587 private long fastestInterval; @@ -864,6 +866,24 @@ public final class LocationComponent { } /** + * Adds a listener that gets invoked when render mode changes. + * + * @param listener Listener that gets invoked when render mode changes. + */ + public void addOnRenderModeChangedListener(@NonNull OnRenderModeChangedListener listener) { + onRenderModeChangedListeners.add(listener); + } + + /** + * Removes a listener that gets invoked when render mode changes. + * + * @param listener Listener that gets invoked when render mode changes. + */ + public void removeRenderModeChangedListener(@NonNull OnRenderModeChangedListener listener) { + onRenderModeChangedListeners.remove(listener); + } + + /** * Adds the passed listener that gets invoked when user updates have stopped long enough for the last update * to be considered stale. * <p> @@ -1323,6 +1343,9 @@ public final class LocationComponent { @Override public void onRenderModeChanged(int currentMode) { updateAnimatorListenerHolders(); + for (OnRenderModeChangedListener listener : onRenderModeChangedListeners) { + listener.onRenderModeChanged(currentMode); + } } }; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/OnRenderModeChangedListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/OnRenderModeChangedListener.java index 1ac016c8f3..12ac220c52 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/OnRenderModeChangedListener.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/OnRenderModeChangedListener.java @@ -5,7 +5,7 @@ import com.mapbox.mapboxsdk.location.modes.RenderMode; /** * Listener that gets invoked when layer render mode changes. */ -interface OnRenderModeChangedListener { +public interface OnRenderModeChangedListener { /** * Invoked on every {@link RenderMode} change. |