[android] - allow multiple listeners for camera events, deprecate old api

This commit is contained in:
Tobrun Van Nuland
2017-10-06 13:47:01 +02:00
committed by Tobrun
parent 2a9752d11c
commit 94312acd8b
4 changed files with 366 additions and 85 deletions

View File

@@ -1,5 +1,10 @@
package com.mapbox.mapboxsdk.maps;
import android.support.annotation.NonNull;
import java.util.ArrayList;
import java.util.List;
import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraIdleListener;
import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveCanceledListener;
import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveListener;
@@ -10,6 +15,11 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
private boolean idle = true;
private final List<OnCameraMoveStartedListener> onCameraMoveStartedListenerList = new ArrayList<>();
private final List<OnCameraMoveCanceledListener> onCameraMoveCanceledListenerList = new ArrayList<>();
private final List<OnCameraMoveListener> onCameraMoveListenerList = new ArrayList<>();
private final List<OnCameraIdleListener> onCameraIdleListenerList = new ArrayList<>();
private OnCameraMoveStartedListener onCameraMoveStartedListener;
private OnCameraMoveCanceledListener onCameraMoveCanceledListener;
private OnCameraMoveListener onCameraMoveListener;
@@ -41,6 +51,12 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
if (onCameraMoveStartedListener != null) {
onCameraMoveStartedListener.onCameraMoveStarted(reason);
}
if (!onCameraMoveStartedListenerList.isEmpty()) {
for (OnCameraMoveStartedListener cameraMoveStartedListener : onCameraMoveStartedListenerList) {
cameraMoveStartedListener.onCameraMoveStarted(reason);
}
}
}
@Override
@@ -48,6 +64,12 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
if (onCameraMoveListener != null && !idle) {
onCameraMoveListener.onCameraMove();
}
if (!onCameraMoveListenerList.isEmpty()) {
for (OnCameraMoveListener cameraMoveListener : onCameraMoveListenerList) {
cameraMoveListener.onCameraMove();
}
}
}
@Override
@@ -55,6 +77,12 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
if (onCameraMoveCanceledListener != null && !idle) {
onCameraMoveCanceledListener.onCameraMoveCanceled();
}
if (!onCameraMoveCanceledListenerList.isEmpty()) {
for (OnCameraMoveCanceledListener cameraMoveCanceledListener : onCameraMoveCanceledListenerList) {
cameraMoveCanceledListener.onCameraMoveCanceled();
}
}
}
@Override
@@ -64,6 +92,52 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
if (onCameraIdleListener != null) {
onCameraIdleListener.onCameraIdle();
}
if (!onCameraIdleListenerList.isEmpty()) {
for (OnCameraIdleListener cameraIdleListener : onCameraIdleListenerList) {
cameraIdleListener.onCameraIdle();
}
}
}
}
void addOnCameraIdleListener(@NonNull OnCameraIdleListener listener) {
onCameraIdleListenerList.add(listener);
}
void removeOnCameraIdleListener(@NonNull OnCameraIdleListener listener) {
if (onCameraIdleListenerList.contains(listener)) {
onCameraIdleListenerList.remove(listener);
}
}
void addOnCameraMoveCancelListener(OnCameraMoveCanceledListener listener) {
onCameraMoveCanceledListenerList.add(listener);
}
void removeOnCameraMoveCancelListener(OnCameraMoveCanceledListener listener) {
if (onCameraMoveCanceledListenerList.contains(listener)) {
onCameraMoveCanceledListenerList.remove(listener);
}
}
void addOnCameraMoveStartedListener(OnCameraMoveStartedListener listener) {
onCameraMoveStartedListenerList.add(listener);
}
void removeOnCameraMoveStartedListener(OnCameraMoveStartedListener listener) {
if (onCameraMoveStartedListenerList.contains(listener)) {
onCameraMoveStartedListenerList.remove(listener);
}
}
void addOnCameraMoveListener(OnCameraMoveListener listener) {
onCameraMoveListenerList.add(listener);
}
void removeOnCameraMoveListener(OnCameraMoveListener listener) {
if (onCameraMoveListenerList.contains(listener)) {
onCameraMoveListenerList.remove(listener);
}
}
}

View File

@@ -1725,38 +1725,122 @@ public final class MapboxMap {
* Sets a callback that is invoked when camera movement has ended.
*
* @param listener the listener to notify
* @deprecated use {@link #addOnCameraIdleListener(OnCameraIdleListener)}
* and {@link #removeOnCameraIdleListener(OnCameraIdleListener)} instead
*/
@Deprecated
public void setOnCameraIdleListener(@Nullable OnCameraIdleListener listener) {
cameraChangeDispatcher.setOnCameraIdleListener(listener);
}
/**
* Adds a callback that is invoked when camera movement has ended.
*
* @param listener the listener to notify
*/
public void addOnCameraIdleListener(@Nullable OnCameraIdleListener listener) {
cameraChangeDispatcher.addOnCameraIdleListener(listener);
}
/**
* Removes a callback that is invoked when camera movement has ended.
*
* @param listener the listener to remove
*/
public void removeOnCameraIdleListener(@Nullable OnCameraIdleListener listener) {
cameraChangeDispatcher.removeOnCameraIdleListener(listener);
}
/**
* Sets a callback that is invoked when camera movement was cancelled.
*
* @param listener the listener to notify
* @deprecated use {@link #addOnCameraMoveCancelListener(OnCameraMoveCanceledListener)} and
* {@link #removeOnCameraMoveCancelListener(OnCameraMoveCanceledListener)} instead
*/
@Deprecated
public void setOnCameraMoveCancelListener(@Nullable OnCameraMoveCanceledListener listener) {
cameraChangeDispatcher.setOnCameraMoveCanceledListener(listener);
}
/**
* Adds a callback that is invoked when camera movement was cancelled.
*
* @param listener the listener to notify
*/
public void addOnCameraMoveCancelListener(@Nullable OnCameraMoveCanceledListener listener) {
cameraChangeDispatcher.addOnCameraMoveCancelListener(listener);
}
/**
* Removes a callback that is invoked when camera movement was cancelled.
*
* @param listener the listener to remove
*/
public void removeOnCameraMoveCancelListener(@Nullable OnCameraMoveCanceledListener listener) {
cameraChangeDispatcher.removeOnCameraMoveCancelListener(listener);
}
/**
* Sets a callback that is invoked when camera movement has started.
*
* @param listener the listener to notify
* @deprecated use {@link #addOnCameraMoveStartedListener(OnCameraMoveStartedListener)} and
* {@link #removeOnCameraMoveStartedListener(OnCameraMoveStartedListener)} instead
*/
@Deprecated
public void setOnCameraMoveStartedListener(@Nullable OnCameraMoveStartedListener listener) {
cameraChangeDispatcher.setOnCameraMoveStartedListener(listener);
}
/**
* Adds a callback that is invoked when camera movement has started.
*
* @param listener the listener to notify
*/
public void addOnCameraMoveStartedListener(@Nullable OnCameraMoveStartedListener listener) {
cameraChangeDispatcher.addOnCameraMoveStartedListener(listener);
}
/**
* Removes a callback that is invoked when camera movement has started.
*
* @param listener the listener to remove
*/
public void removeOnCameraMoveStartedListener(@Nullable OnCameraMoveStartedListener listener) {
cameraChangeDispatcher.removeOnCameraMoveStartedListener(listener);
}
/**
* Sets a callback that is invoked when camera position changes.
*
* @param listener the listener to notify
* @deprecated use {@link #addOnCameraMoveListener(OnCameraMoveListener)} and
* {@link #removeOnCameraMoveListener(OnCameraMoveListener)}instead
*/
@Deprecated
public void setOnCameraMoveListener(@Nullable OnCameraMoveListener listener) {
cameraChangeDispatcher.setOnCameraMoveListener(listener);
}
/**
* Adds a callback that is invoked when camera position changes.
*
* @param listener the listener to notify
*/
public void addOnCameraMoveListener(@Nullable OnCameraMoveListener listener) {
cameraChangeDispatcher.addOnCameraMoveListener(listener);
}
/**
* Removes a callback that is invoked when camera position changes.
*
* @param listener the listener to remove
*/
public void removeOnCameraMoveListener(@Nullable OnCameraMoveListener listener) {
cameraChangeDispatcher.removeOnCameraMoveListener(listener);
}
/**
* Sets a callback that's invoked on every frame rendered to the map view.
*