From 953e6dca5b2135f2b56d91cd9564e62dcd938632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Paczos?= Date: Mon, 28 Jan 2019 15:27:10 +0100 Subject: [android] expose OnRenderModeChangedListener --- .../mapboxsdk/location/LocationComponent.java | 23 ++++++++++++++++++++++ .../location/OnRenderModeChangedListener.java | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) 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 onCameraTrackingChangedListeners = new CopyOnWriteArrayList<>(); + private final CopyOnWriteArrayList onRenderModeChangedListeners + = new CopyOnWriteArrayList<>(); // Workaround for too frequent updates, see https://github.com/mapbox/mapbox-gl-native/issues/13587 private long fastestInterval; @@ -863,6 +865,24 @@ public final class LocationComponent { onCameraTrackingChangedListeners.remove(listener); } + /** + * 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. @@ -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. -- cgit v1.2.1