diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps')
27 files changed, 297 insertions, 138 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationContainer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationContainer.java index 939fadc9c2..4612d7d941 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationContainer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationContainer.java @@ -27,6 +27,7 @@ class AnnotationContainer implements Annotations { return annotations.get(id); } + @NonNull @Override public List<Annotation> obtainAll() { List<Annotation> annotations = new ArrayList<>(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java index 8ebc2beba2..958ceb352c 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java @@ -42,6 +42,7 @@ class AnnotationManager { private static final long NO_ANNOTATION_ID = -1; + @Nullable private final MapView mapView; private final IconManager iconManager; private final InfoWindowManager infoWindowManager = new InfoWindowManager(); @@ -50,8 +51,11 @@ class AnnotationManager { private final List<Marker> selectedMarkers = new ArrayList<>(); private MapboxMap mapboxMap; + @Nullable private MapboxMap.OnMarkerClickListener onMarkerClickListener; + @Nullable private MapboxMap.OnPolygonClickListener onPolygonClickListener; + @Nullable private MapboxMap.OnPolylineClickListener onPolylineClickListener; private Annotations annotations; @@ -60,7 +64,7 @@ class AnnotationManager { private Polygons polygons; private Polylines polylines; - AnnotationManager(MapView mapView, LongSparseArray<Annotation> annotationsArray, + AnnotationManager(@Nullable MapView mapView, LongSparseArray<Annotation> annotationsArray, MarkerViewManager markerViewManager, IconManager iconManager, Annotations annotations, Markers markers, Polygons polygons, Polylines polylines, ShapeAnnotations shapeAnnotations) { this.mapView = mapView; @@ -80,6 +84,7 @@ class AnnotationManager { // TODO refactor MapboxMap out for Projection and Transform // Requires removing MapboxMap from Annotations by using Peer model from #6912 + @NonNull AnnotationManager bind(MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; this.markerViewManager.bind(mapboxMap); @@ -224,7 +229,7 @@ class AnnotationManager { return polygons.addBy(polygonOptionsList, mapboxMap); } - void updatePolygon(Polygon polygon) { + void updatePolygon(@NonNull Polygon polygon) { if (!isAddedToMap(polygon)) { logNonAdded(polygon); return; @@ -248,7 +253,7 @@ class AnnotationManager { return polylines.addBy(polylineOptionsList, mapboxMap); } - void updatePolyline(Polyline polyline) { + void updatePolyline(@NonNull Polyline polyline) { if (!isAddedToMap(polyline)) { logNonAdded(polyline); return; @@ -333,10 +338,12 @@ class AnnotationManager { selectedMarkers.remove(marker); } + @NonNull List<Marker> getSelectedMarkers() { return selectedMarkers; } + @NonNull InfoWindowManager getInfoWindowManager() { return infoWindowManager; } @@ -345,7 +352,7 @@ class AnnotationManager { return markerViewManager; } - void adjustTopOffsetPixels(MapboxMap mapboxMap) { + void adjustTopOffsetPixels(@NonNull MapboxMap mapboxMap) { int count = annotationsArray.size(); for (int i = 0; i < count; i++) { Annotation annotation = annotationsArray.get(i); @@ -364,11 +371,11 @@ class AnnotationManager { } } - private boolean isAddedToMap(Annotation annotation) { + private boolean isAddedToMap(@Nullable Annotation annotation) { return annotation != null && annotation.getId() != -1 && annotationsArray.indexOfKey(annotation.getId()) > -1; } - private void logNonAdded(Annotation annotation) { + private void logNonAdded(@NonNull Annotation annotation) { Logger.w(TAG, String.format( "Attempting to update non-added %s with value %s", annotation.getClass().getCanonicalName(), annotation) ); @@ -378,7 +385,7 @@ class AnnotationManager { // Click event // - boolean onTap(PointF tapPoint) { + boolean onTap(@NonNull PointF tapPoint) { MarkerHit markerHit = getMarkerHitFromTouchArea(tapPoint); long markerId = new MarkerHitResolver(mapboxMap).execute(markerHit); if (markerId != NO_ANNOTATION_ID) { @@ -440,11 +447,11 @@ class AnnotationManager { return true; } - private boolean onClickMarker(Marker marker) { + private boolean onClickMarker(@NonNull Marker marker) { return onMarkerClickListener != null && onMarkerClickListener.onMarkerClick(marker); } - private void toggleMarkerSelectionState(Marker marker) { + private void toggleMarkerSelectionState(@NonNull Marker marker) { if (!selectedMarkers.contains(marker)) { selectMarker(marker); } else { @@ -460,7 +467,8 @@ class AnnotationManager { this.shapeAnnotations = shapeAnnotations; } - public Annotation execute(ShapeAnnotationHit shapeHit) { + @Nullable + public Annotation execute(@NonNull ShapeAnnotationHit shapeHit) { Annotation foundAnnotation = null; List<Annotation> annotations = shapeAnnotations.obtainAllIn(shapeHit.tapPoint); if (annotations.size() > 0) { @@ -472,18 +480,24 @@ class AnnotationManager { private static class MarkerHitResolver { + @NonNull private final MarkerViewManager markerViewManager; + @NonNull private final Projection projection; private final int minimalTouchSize; + @Nullable private View view; private Bitmap bitmap; private int bitmapWidth; private int bitmapHeight; private PointF markerLocation; + @NonNull private Rect hitRectView = new Rect(); + @NonNull private RectF hitRectMarker = new RectF(); + @NonNull private RectF highestSurfaceIntersection = new RectF(); private long closestMarkerId = NO_ANNOTATION_ID; @@ -494,7 +508,7 @@ class AnnotationManager { this.minimalTouchSize = (int) (32 * Mapbox.getApplicationContext().getResources().getDisplayMetrics().density); } - public long execute(MarkerHit markerHit) { + public long execute(@NonNull MarkerHit markerHit) { resolveForMarkers(markerHit); return closestMarkerId; } @@ -509,7 +523,7 @@ class AnnotationManager { } } - private void resolveForMarkerView(MarkerHit markerHit, MarkerView markerView) { + private void resolveForMarkerView(@NonNull MarkerHit markerHit, @NonNull MarkerView markerView) { view = markerViewManager.getView(markerView); if (view != null) { view.getHitRect(hitRectView); @@ -518,7 +532,7 @@ class AnnotationManager { } } - private void resolveForMarker(MarkerHit markerHit, Marker marker) { + private void resolveForMarker(@NonNull MarkerHit markerHit, Marker marker) { markerLocation = projection.toScreenLocation(marker.getPosition()); bitmap = marker.getIcon().getBitmap(); @@ -540,7 +554,7 @@ class AnnotationManager { hitTestMarker(markerHit, marker, hitRectMarker); } - private void hitTestMarker(MarkerHit markerHit, Marker marker, RectF hitRectMarker) { + private void hitTestMarker(MarkerHit markerHit, @NonNull Marker marker, RectF hitRectMarker) { if (hitRectMarker.contains(markerHit.getTapPointX(), markerHit.getTapPointY())) { hitRectMarker.intersect(markerHit.tapRect); if (isRectangleHighestSurfaceIntersection(hitRectMarker)) { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java index 5cba2109e2..f849dc7f15 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java @@ -8,6 +8,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Toast; @@ -40,7 +41,9 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt private static final String MAP_FEEDBACK_URL = "https://www.mapbox.com/map-feedback"; private static final String MAP_FEEDBACK_LOCATION_FORMAT = MAP_FEEDBACK_URL + "/#/%f/%f/%d"; + @NonNull private final Context context; + @NonNull private final MapboxMap mapboxMap; private Set<Attribution> attributionSet; @@ -51,7 +54,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt // Called when someone presses the attribution icon on the map @Override - public void onClick(View view) { + public void onClick(@NonNull View view) { attributionSet = new AttributionBuilder(mapboxMap, view.getContext()).build(); boolean isActivityFinishing = false; @@ -66,7 +69,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt } } - protected void showAttributionDialog(String[] attributionTitles) { + protected void showAttributionDialog(@NonNull String[] attributionTitles) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.mapbox_attributionsDialogTitle); builder.setAdapter(new ArrayAdapter<>(context, R.layout.mapbox_attribution_list_item, attributionTitles), this); @@ -101,7 +104,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt builder.setMessage(R.string.mapbox_attributionTelemetryMessage); builder.setPositiveButton(R.string.mapbox_attributionTelemetryPositive, new DialogInterface.OnClickListener() { @Override - public void onClick(DialogInterface dialog, int which) { + public void onClick(@NonNull DialogInterface dialog, int which) { TelemetryDefinition telemetry = Mapbox.getTelemetry(); if (telemetry != null) { telemetry.setUserTelemetryRequestState(true); @@ -111,14 +114,14 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt }); builder.setNeutralButton(R.string.mapbox_attributionTelemetryNeutral, new DialogInterface.OnClickListener() { @Override - public void onClick(DialogInterface dialog, int which) { + public void onClick(@NonNull DialogInterface dialog, int which) { showWebPage(context.getResources().getString(R.string.mapbox_telemetryLink)); dialog.cancel(); } }); builder.setNegativeButton(R.string.mapbox_attributionTelemetryNegative, new DialogInterface.OnClickListener() { @Override - public void onClick(DialogInterface dialog, int which) { + public void onClick(@NonNull DialogInterface dialog, int which) { TelemetryDefinition telemetry = Mapbox.getTelemetry(); if (telemetry != null) { telemetry.setUserTelemetryRequestState(false); @@ -138,7 +141,8 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt showWebPage(url); } - private String buildMapFeedbackMapUrl(CameraPosition cameraPosition) { + @NonNull + private String buildMapFeedbackMapUrl(@Nullable CameraPosition cameraPosition) { // appends current location to the map feedback url if available return cameraPosition != null ? String.format(Locale.getDefault(), MAP_FEEDBACK_LOCATION_FORMAT, cameraPosition.target.getLongitude(), cameraPosition.target.getLatitude(), @@ -160,6 +164,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt private static class AttributionBuilder { private final MapboxMap mapboxMap; + @NonNull private final WeakReference<Context> context; AttributionBuilder(MapboxMap mapboxMap, Context context) { 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 e5b8722ca8..b3472ac81e 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 @@ -152,7 +152,7 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M } @Override - public void handleMessage(Message msg) { + public void handleMessage(@NonNull Message msg) { CameraChangeDispatcher dispatcher = dispatcherWeakReference.get(); if (dispatcher != null) { switch (msg.what) { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/IconManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/IconManager.java index 80ffa973e7..7aca93fe2e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/IconManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/IconManager.java @@ -2,6 +2,7 @@ package com.mapbox.mapboxsdk.maps; import android.graphics.Bitmap; +import android.support.annotation.NonNull; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.annotations.Icon; import com.mapbox.mapboxsdk.annotations.IconFactory; @@ -37,7 +38,7 @@ class IconManager { loadIcon(IconFactory.recreate(IconFactory.ICON_MARKERVIEW_ID, IconFactory.ICON_MARKERVIEW_BITMAP)); } - Icon loadIconForMarker(Marker marker) { + Icon loadIconForMarker(@NonNull Marker marker) { Icon icon = marker.getIcon(); if (icon == null) { // TODO replace with anchor implementation, we are faking an anchor by adding extra pixels and diving height by 2 @@ -50,14 +51,14 @@ class IconManager { return icon; } - void loadIconForMarkerView(MarkerView marker) { + void loadIconForMarkerView(@NonNull MarkerView marker) { Icon icon = marker.getIcon(); Bitmap bitmap = icon.getBitmap(); updateHighestIconSize(bitmap); addIcon(icon, false); } - int getTopOffsetPixelsForIcon(Icon icon) { + int getTopOffsetPixelsForIcon(@NonNull Icon icon) { return (int) (nativeMapView.getTopOffsetPixelsForAnnotationSymbol(icon.getId()) * nativeMapView.getPixelRatio()); } @@ -77,11 +78,11 @@ class IconManager { return icon; } - private void addIcon(Icon icon) { + private void addIcon(@NonNull Icon icon) { addIcon(icon, true); } - private void addIcon(Icon icon, boolean addIconToMap) { + private void addIcon(@NonNull Icon icon, boolean addIconToMap) { if (!iconMap.keySet().contains(icon)) { iconMap.put(icon, 1); if (addIconToMap) { @@ -125,7 +126,7 @@ class IconManager { } } - void ensureIconLoaded(Marker marker, MapboxMap mapboxMap) { + void ensureIconLoaded(@NonNull Marker marker, @NonNull MapboxMap mapboxMap) { Icon icon = marker.getIcon(); if (icon == null) { icon = loadDefaultIconForMarker(marker); @@ -134,7 +135,7 @@ class IconManager { setTopOffsetPixels(marker, mapboxMap, icon); } - private void setTopOffsetPixels(Marker marker, MapboxMap mapboxMap, Icon icon) { + private void setTopOffsetPixels(Marker marker, @NonNull MapboxMap mapboxMap, @NonNull Icon icon) { // this seems to be a costly operation according to the profiler so I'm trying to save some calls Marker previousMarker = marker.getId() != -1 ? (Marker) mapboxMap.getAnnotation(marker.getId()) : null; if (previousMarker == null || previousMarker.getIcon() == null || previousMarker.getIcon() != marker.getIcon()) { @@ -142,7 +143,7 @@ class IconManager { } } - void iconCleanup(Icon icon) { + void iconCleanup(@NonNull Icon icon) { Integer refCounter = iconMap.get(icon); if (refCounter != null) { refCounter--; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/InfoWindowManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/InfoWindowManager.java index af207204d9..434244a7c1 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/InfoWindowManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/InfoWindowManager.java @@ -23,11 +23,15 @@ class InfoWindowManager { private final List<InfoWindow> infoWindows = new ArrayList<>(); + @Nullable private MapboxMap.InfoWindowAdapter infoWindowAdapter; private boolean allowConcurrentMultipleInfoWindows; + @Nullable private MapboxMap.OnInfoWindowClickListener onInfoWindowClickListener; + @Nullable private MapboxMap.OnInfoWindowLongClickListener onInfoWindowLongClickListener; + @Nullable private MapboxMap.OnInfoWindowCloseListener onInfoWindowCloseListener; void update() { @@ -42,6 +46,7 @@ class InfoWindowManager { this.infoWindowAdapter = infoWindowAdapter; } + @Nullable MapboxMap.InfoWindowAdapter getInfoWindowAdapter() { return infoWindowAdapter; } @@ -54,7 +59,7 @@ class InfoWindowManager { return allowConcurrentMultipleInfoWindows; } - boolean isInfoWindowValidForMarker(Marker marker) { + boolean isInfoWindowValidForMarker(@Nullable Marker marker) { return marker != null && (!TextUtils.isEmpty(marker.getTitle()) || !TextUtils.isEmpty(marker.getSnippet())); } @@ -62,6 +67,7 @@ class InfoWindowManager { onInfoWindowClickListener = listener; } + @Nullable MapboxMap.OnInfoWindowClickListener getOnInfoWindowClickListener() { return onInfoWindowClickListener; } @@ -70,6 +76,7 @@ class InfoWindowManager { onInfoWindowLongClickListener = listener; } + @Nullable MapboxMap.OnInfoWindowLongClickListener getOnInfoWindowLongClickListener() { return onInfoWindowLongClickListener; } @@ -78,6 +85,7 @@ class InfoWindowManager { onInfoWindowCloseListener = listener; } + @Nullable MapboxMap.OnInfoWindowCloseListener getOnInfoWindowCloseListener() { return onInfoWindowCloseListener; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java index 17670abd09..5a5b2219e1 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java @@ -51,6 +51,7 @@ public final class MapFragment extends Fragment implements OnMapReadyCallback { * @param mapboxMapOptions The configuration options to be used. * @return MapFragment instantiated. */ + @NonNull public static MapFragment newInstance(@Nullable MapboxMapOptions mapboxMapOptions) { MapFragment mapFragment = new MapFragment(); mapFragment.setArguments(MapFragmentUtils.createFragmentArgs(mapboxMapOptions)); @@ -65,7 +66,7 @@ public final class MapFragment extends Fragment implements OnMapReadyCallback { * @param savedInstanceState The saved instance state for the map fragment. */ @Override - public void onInflate(Context context, AttributeSet attrs, Bundle savedInstanceState) { + public void onInflate(@NonNull Context context, AttributeSet attrs, Bundle savedInstanceState) { super.onInflate(context, attrs, savedInstanceState); setArguments(MapFragmentUtils.createFragmentArgs(MapboxMapOptions.createFromAttributes(context, attrs))); } @@ -92,7 +93,7 @@ public final class MapFragment extends Fragment implements OnMapReadyCallback { * @return The view created */ @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); Context context = inflater.getContext(); map = new MapView(context, MapFragmentUtils.resolveArgs(context, getArguments())); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java index d82eec45ea..ec2b238ff4 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java @@ -6,6 +6,7 @@ import android.animation.ValueAnimator; import android.content.Context; import android.graphics.PointF; import android.os.Handler; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.InputDevice; import android.view.MotionEvent; @@ -72,6 +73,7 @@ final class MapGestureDetector { /** * User-set focal point. */ + @Nullable private PointF focalPoint; private AndroidGesturesManager gesturesManager; @@ -85,9 +87,10 @@ final class MapGestureDetector { * Cancels scheduled velocity animations if user doesn't lift fingers within * {@link MapboxConstants#SCHEDULED_ANIMATION_TIMEOUT} */ + @NonNull private Handler animationsTimeoutHandler = new Handler(); - MapGestureDetector(Context context, Transform transform, Projection projection, UiSettings uiSettings, + MapGestureDetector(@Nullable Context context, Transform transform, Projection projection, UiSettings uiSettings, AnnotationManager annotationManager, CameraChangeDispatcher cameraChangeDispatcher) { this.annotationManager = annotationManager; this.transform = transform; @@ -106,7 +109,7 @@ final class MapGestureDetector { } } - private void initializeGestureListeners(Context context, boolean attachDefaultListeners) { + private void initializeGestureListeners(@NonNull Context context, boolean attachDefaultListeners) { if (attachDefaultListeners) { StandardGestureListener standardGestureListener = new StandardGestureListener(); MoveGestureListener moveGestureListener = new MoveGestureListener(); @@ -128,7 +131,7 @@ final class MapGestureDetector { } } - private void initializeGesturesManager(AndroidGesturesManager androidGesturesManager, + private void initializeGesturesManager(@NonNull AndroidGesturesManager androidGesturesManager, boolean setDefaultMutuallyExclusives) { if (setDefaultMutuallyExclusives) { Set<Integer> shoveScaleSet = new HashSet<>(); @@ -158,7 +161,7 @@ final class MapGestureDetector { * * @param focalPoint the center point for gestures */ - void setFocalPoint(PointF focalPoint) { + void setFocalPoint(@Nullable PointF focalPoint) { if (focalPoint == null) { // resetting focal point, if (uiSettings.getFocalPoint() != null) { @@ -193,7 +196,7 @@ final class MapGestureDetector { * @param motionEvent the MotionEvent * @return True if touch event is handled */ - boolean onTouchEvent(MotionEvent motionEvent) { + boolean onTouchEvent(@Nullable MotionEvent motionEvent) { // Framework can return null motion events in edge cases #9432 if (motionEvent == null) { return false; @@ -244,7 +247,7 @@ final class MapGestureDetector { dispatchCameraIdle(); } - private void cancelAnimator(Animator animator) { + private void cancelAnimator(@Nullable Animator animator) { if (animator != null && animator.isStarted()) { animator.cancel(); } @@ -253,6 +256,7 @@ final class MapGestureDetector { /** * Posted on main thread with {@link #animationsTimeoutHandler}. Cancels all scheduled animators if needed. */ + @NonNull private Runnable cancelAnimatorsRunnable = new Runnable() { @Override public void run() { @@ -427,7 +431,7 @@ final class MapGestureDetector { private final class MoveGestureListener extends MoveGestureDetector.SimpleOnMoveGestureListener { @Override - public boolean onMoveBegin(MoveGestureDetector detector) { + public boolean onMoveBegin(@NonNull MoveGestureDetector detector) { if (!uiSettings.isScrollGesturesEnabled()) { return false; } @@ -439,7 +443,7 @@ final class MapGestureDetector { } @Override - public boolean onMove(MoveGestureDetector detector, float distanceX, float distanceY) { + public boolean onMove(@NonNull MoveGestureDetector detector, float distanceX, float distanceY) { // first move event is often delivered with no displacement if (distanceX != 0 || distanceY != 0) { // dispatching camera start event only when the movement actually occurred @@ -454,7 +458,7 @@ final class MapGestureDetector { } @Override - public void onMoveEnd(MoveGestureDetector detector, float velocityX, float velocityY) { + public void onMoveEnd(@NonNull MoveGestureDetector detector, float velocityX, float velocityY) { dispatchCameraIdle(); notifyOnMoveEndListeners(detector); } @@ -464,6 +468,7 @@ final class MapGestureDetector { private final float minimumVelocity; + @Nullable private PointF scaleFocalPoint; private boolean quickZoom; @@ -472,7 +477,7 @@ final class MapGestureDetector { } @Override - public boolean onScaleBegin(StandardScaleGestureDetector detector) { + public boolean onScaleBegin(@NonNull StandardScaleGestureDetector detector) { if (!uiSettings.isZoomGesturesEnabled()) { return false; } @@ -505,7 +510,7 @@ final class MapGestureDetector { } @Override - public boolean onScale(StandardScaleGestureDetector detector) { + public boolean onScale(@NonNull StandardScaleGestureDetector detector) { // dispatching camera start event only when the movement actually occurred cameraChangeDispatcher.onCameraMoveStarted(CameraChangeDispatcher.REASON_API_GESTURE); @@ -521,7 +526,7 @@ final class MapGestureDetector { } @Override - public void onScaleEnd(StandardScaleGestureDetector detector, float velocityX, float velocityY) { + public void onScaleEnd(@NonNull StandardScaleGestureDetector detector, float velocityX, float velocityY) { if (quickZoom) { //if quickzoom, re-enabling move gesture detector gesturesManager.getMoveGestureDetector().setEnabled(true); @@ -551,7 +556,7 @@ final class MapGestureDetector { scheduleAnimator(scaleAnimator); } - private void setScaleFocalPoint(StandardScaleGestureDetector detector) { + private void setScaleFocalPoint(@NonNull StandardScaleGestureDetector detector) { if (focalPoint != null) { // around user provided focal point scaleFocalPoint = focalPoint; @@ -587,6 +592,7 @@ final class MapGestureDetector { } private final class RotateGestureListener extends RotateGestureDetector.SimpleOnRotateGestureListener { + @Nullable private PointF rotateFocalPoint; private final float minimumScaleSpanWhenRotating; private final float minimumAngularVelocity; @@ -600,7 +606,7 @@ final class MapGestureDetector { } @Override - public boolean onRotateBegin(RotateGestureDetector detector) { + public boolean onRotateBegin(@NonNull RotateGestureDetector detector) { if (!uiSettings.isRotateGesturesEnabled()) { return false; } @@ -625,7 +631,7 @@ final class MapGestureDetector { } @Override - public boolean onRotate(RotateGestureDetector detector, float rotationDegreesSinceLast, + public boolean onRotate(@NonNull RotateGestureDetector detector, float rotationDegreesSinceLast, float rotationDegreesSinceFirst) { // dispatching camera start event only when the movement actually occurred cameraChangeDispatcher.onCameraMoveStarted(CameraChangeDispatcher.REASON_API_GESTURE); @@ -644,7 +650,8 @@ final class MapGestureDetector { } @Override - public void onRotateEnd(RotateGestureDetector detector, float velocityX, float velocityY, float angularVelocity) { + public void onRotateEnd(@NonNull RotateGestureDetector detector, float velocityX, + float velocityY, float angularVelocity) { if (uiSettings.isIncreaseScaleThresholdWhenRotating()) { // resetting default scale threshold values gesturesManager.getStandardScaleGestureDetector().setSpanSinceStartThreshold(defaultSpanSinceStartThreshold); @@ -673,7 +680,7 @@ final class MapGestureDetector { scheduleAnimator(rotateAnimator); } - private void setRotateFocalPoint(RotateGestureDetector detector) { + private void setRotateFocalPoint(@NonNull RotateGestureDetector detector) { if (focalPoint != null) { // User provided focal point rotateFocalPoint = focalPoint; @@ -689,7 +696,7 @@ final class MapGestureDetector { animator.setInterpolator(new DecelerateInterpolator()); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override - public void onAnimationUpdate(ValueAnimator animation) { + public void onAnimationUpdate(@NonNull ValueAnimator animation) { transform.setBearing( transform.getRawBearing() + (float) animation.getAnimatedValue(), rotateFocalPoint.x, rotateFocalPoint.y, @@ -723,7 +730,7 @@ final class MapGestureDetector { private final class ShoveGestureListener extends ShoveGestureDetector.SimpleOnShoveGestureListener { @Override - public boolean onShoveBegin(ShoveGestureDetector detector) { + public boolean onShoveBegin(@NonNull ShoveGestureDetector detector) { if (!uiSettings.isTiltGesturesEnabled()) { return false; } @@ -741,7 +748,8 @@ final class MapGestureDetector { } @Override - public boolean onShove(ShoveGestureDetector detector, float deltaPixelsSinceLast, float deltaPixelsSinceStart) { + public boolean onShove(@NonNull ShoveGestureDetector detector, + float deltaPixelsSinceLast, float deltaPixelsSinceStart) { // dispatching camera start event only when the movement actually occurred cameraChangeDispatcher.onCameraMoveStarted(CameraChangeDispatcher.REASON_API_GESTURE); @@ -759,7 +767,7 @@ final class MapGestureDetector { } @Override - public void onShoveEnd(ShoveGestureDetector detector, float velocityX, float velocityY) { + public void onShoveEnd(@NonNull ShoveGestureDetector detector, float velocityX, float velocityY) { dispatchCameraIdle(); // re-enabling move gesture @@ -771,7 +779,7 @@ final class MapGestureDetector { private final class TapGestureListener implements MultiFingerTapGestureDetector.OnMultiFingerTapGestureListener { @Override - public boolean onMultiFingerTap(MultiFingerTapGestureDetector detector, int pointersCount) { + public boolean onMultiFingerTap(@NonNull MultiFingerTapGestureDetector detector, int pointersCount) { if (!uiSettings.isZoomGesturesEnabled() || pointersCount != 2) { return false; } @@ -797,15 +805,15 @@ final class MapGestureDetector { } } - private Animator createScaleAnimator(double currentZoom, double zoomAddition, final PointF animationFocalPoint, - long animationTime) { + private Animator createScaleAnimator(double currentZoom, double zoomAddition, + @NonNull final PointF animationFocalPoint, long animationTime) { ValueAnimator animator = ValueAnimator.ofFloat((float) currentZoom, (float) (currentZoom + zoomAddition)); animator.setDuration(animationTime); animator.setInterpolator(new DecelerateInterpolator()); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override - public void onAnimationUpdate(ValueAnimator animation) { + public void onAnimationUpdate(@NonNull ValueAnimator animation) { transform.setZoom((Float) animation.getAnimatedValue(), animationFocalPoint); } }); @@ -838,7 +846,7 @@ final class MapGestureDetector { * @param runImmediately if true, animation will be started right away, otherwise it will wait until * {@link MotionEvent#ACTION_UP} is registered. */ - void zoomInAnimated(PointF zoomFocalPoint, boolean runImmediately) { + void zoomInAnimated(@NonNull PointF zoomFocalPoint, boolean runImmediately) { zoomAnimated(true, zoomFocalPoint, runImmediately); } @@ -849,11 +857,11 @@ final class MapGestureDetector { * @param runImmediately if true, animation will be started right away, otherwise it will wait until * {@link MotionEvent#ACTION_UP} is registered. */ - void zoomOutAnimated(PointF zoomFocalPoint, boolean runImmediately) { + void zoomOutAnimated(@NonNull PointF zoomFocalPoint, boolean runImmediately) { zoomAnimated(false, zoomFocalPoint, runImmediately); } - private void zoomAnimated(boolean zoomIn, PointF zoomFocalPoint, boolean runImmediately) { + private void zoomAnimated(boolean zoomIn, @NonNull PointF zoomFocalPoint, boolean runImmediately) { //canceling here as well, because when using a button it will not be canceled automatically by onDown() cancelAnimator(scaleAnimator); @@ -891,7 +899,7 @@ final class MapGestureDetector { && (!uiSettings.isTiltGesturesEnabled() || !gesturesManager.getShoveGestureDetector().isInProgress()); } - private void sendTelemetryEvent(String eventType, PointF focalPoint) { + private void sendTelemetryEvent(String eventType, @NonNull PointF focalPoint) { TelemetryDefinition telemetry = Mapbox.getTelemetry(); if (telemetry != null) { CameraPosition cameraPosition = transform.getCameraPosition(); @@ -909,7 +917,7 @@ final class MapGestureDetector { return mapZoom >= MapboxConstants.MINIMUM_ZOOM && mapZoom <= MapboxConstants.MAXIMUM_ZOOM; } - void notifyOnMapClickListeners(PointF tapPoint) { + void notifyOnMapClickListeners(@NonNull PointF tapPoint) { for (MapboxMap.OnMapClickListener listener : onMapClickListenerList) { if (listener.onMapClick(projection.fromScreenLocation(tapPoint))) { return; @@ -917,7 +925,7 @@ final class MapGestureDetector { } } - void notifyOnMapLongClickListeners(PointF longClickPoint) { + void notifyOnMapLongClickListeners(@NonNull PointF longClickPoint) { for (MapboxMap.OnMapLongClickListener listener : onMapLongClickListenerList) { if (listener.onMapLongClick(projection.fromScreenLocation(longClickPoint))) { return; @@ -931,73 +939,73 @@ final class MapGestureDetector { } } - void notifyOnMoveBeginListeners(MoveGestureDetector detector) { + void notifyOnMoveBeginListeners(@NonNull MoveGestureDetector detector) { for (MapboxMap.OnMoveListener listener : onMoveListenerList) { listener.onMoveBegin(detector); } } - void notifyOnMoveListeners(MoveGestureDetector detector) { + void notifyOnMoveListeners(@NonNull MoveGestureDetector detector) { for (MapboxMap.OnMoveListener listener : onMoveListenerList) { listener.onMove(detector); } } - void notifyOnMoveEndListeners(MoveGestureDetector detector) { + void notifyOnMoveEndListeners(@NonNull MoveGestureDetector detector) { for (MapboxMap.OnMoveListener listener : onMoveListenerList) { listener.onMoveEnd(detector); } } - void notifyOnRotateBeginListeners(RotateGestureDetector detector) { + void notifyOnRotateBeginListeners(@NonNull RotateGestureDetector detector) { for (MapboxMap.OnRotateListener listener : onRotateListenerList) { listener.onRotateBegin(detector); } } - void notifyOnRotateListeners(RotateGestureDetector detector) { + void notifyOnRotateListeners(@NonNull RotateGestureDetector detector) { for (MapboxMap.OnRotateListener listener : onRotateListenerList) { listener.onRotate(detector); } } - void notifyOnRotateEndListeners(RotateGestureDetector detector) { + void notifyOnRotateEndListeners(@NonNull RotateGestureDetector detector) { for (MapboxMap.OnRotateListener listener : onRotateListenerList) { listener.onRotateEnd(detector); } } - void notifyOnScaleBeginListeners(StandardScaleGestureDetector detector) { + void notifyOnScaleBeginListeners(@NonNull StandardScaleGestureDetector detector) { for (MapboxMap.OnScaleListener listener : onScaleListenerList) { listener.onScaleBegin(detector); } } - void notifyOnScaleListeners(StandardScaleGestureDetector detector) { + void notifyOnScaleListeners(@NonNull StandardScaleGestureDetector detector) { for (MapboxMap.OnScaleListener listener : onScaleListenerList) { listener.onScale(detector); } } - void notifyOnScaleEndListeners(StandardScaleGestureDetector detector) { + void notifyOnScaleEndListeners(@NonNull StandardScaleGestureDetector detector) { for (MapboxMap.OnScaleListener listener : onScaleListenerList) { listener.onScaleEnd(detector); } } - void notifyOnShoveBeginListeners(ShoveGestureDetector detector) { + void notifyOnShoveBeginListeners(@NonNull ShoveGestureDetector detector) { for (MapboxMap.OnShoveListener listener : onShoveListenerList) { listener.onShoveBegin(detector); } } - void notifyOnShoveListeners(ShoveGestureDetector detector) { + void notifyOnShoveListeners(@NonNull ShoveGestureDetector detector) { for (MapboxMap.OnShoveListener listener : onShoveListenerList) { listener.onShove(detector); } } - void notifyOnShoveEndListeners(ShoveGestureDetector detector) { + void notifyOnShoveEndListeners(@NonNull ShoveGestureDetector detector) { for (MapboxMap.OnShoveListener listener : onShoveListenerList) { listener.onShoveEnd(detector); } @@ -1063,8 +1071,8 @@ final class MapGestureDetector { return gesturesManager; } - void setGesturesManager(Context context, AndroidGesturesManager gesturesManager, boolean attachDefaultListeners, - boolean setDefaultMutuallyExclusives) { + void setGesturesManager(@NonNull Context context, @NonNull AndroidGesturesManager gesturesManager, + boolean attachDefaultListeners, boolean setDefaultMutuallyExclusives) { initializeGesturesManager(gesturesManager, setDefaultMutuallyExclusives); initializeGestureListeners(context, attachDefaultListeners); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapKeyListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapKeyListener.java index 08110ff326..afb80027d9 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapKeyListener.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapKeyListener.java @@ -4,6 +4,7 @@ import android.graphics.PointF; import android.os.Handler; import android.os.Looper; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.ViewConfiguration; @@ -23,6 +24,7 @@ final class MapKeyListener { private final UiSettings uiSettings; private final MapGestureDetector mapGestureDetector; + @Nullable private TrackballLongPressTimeOut currentTrackballLongPressTimeOut; MapKeyListener(Transform transform, UiSettings uiSettings, MapGestureDetector mapGestureDetector) { 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 d6dcce434d..ca7fd213c9 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 @@ -69,7 +69,9 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { private final MapCallback mapCallback = new MapCallback(); private final InitialRenderCallback initialRenderCallback = new InitialRenderCallback(); + @Nullable private NativeMapView nativeMapView; + @Nullable private MapboxMap mapboxMap; private MapboxMapOptions mapboxMapOptions; private MapRenderer mapRenderer; @@ -81,8 +83,11 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { private ImageView attrView; private ImageView logoView; + @Nullable private MapGestureDetector mapGestureDetector; + @Nullable private MapKeyListener mapKeyListener; + @Nullable private Bundle savedInstanceState; @UiThread @@ -211,7 +216,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { }; } - private MapboxMap.OnCompassAnimationListener createCompassAnimationListener(final CameraChangeDispatcher + private MapboxMap.OnCompassAnimationListener createCompassAnimationListener(@NonNull final CameraChangeDispatcher cameraChangeDispatcher) { return new MapboxMap.OnCompassAnimationListener() { @Override @@ -227,7 +232,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { }; } - private OnClickListener createCompassClickListener(final CameraChangeDispatcher cameraChangeDispatcher) { + private OnClickListener createCompassClickListener(@NonNull final CameraChangeDispatcher cameraChangeDispatcher) { return new OnClickListener() { @Override public void onClick(View v) { @@ -438,7 +443,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { } @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { + public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { return mapKeyListener.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event); } @@ -448,17 +453,17 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { } @Override - public boolean onKeyUp(int keyCode, KeyEvent event) { + public boolean onKeyUp(int keyCode, @NonNull KeyEvent event) { return mapKeyListener.onKeyUp(keyCode, event) || super.onKeyUp(keyCode, event); } @Override - public boolean onTrackballEvent(MotionEvent event) { + public boolean onTrackballEvent(@NonNull MotionEvent event) { return mapKeyListener.onTrackballEvent(event) || super.onTrackballEvent(event); } @Override - public boolean onGenericMotionEvent(MotionEvent event) { + public boolean onGenericMotionEvent(@NonNull MotionEvent event) { if (!isGestureDetectorInitialized()) { return super.onGenericMotionEvent(event); } @@ -517,7 +522,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { * @param definition the offline region definition * @see OfflineRegionDefinition */ - public void setOfflineRegionDefinition(OfflineRegionDefinition definition) { + public void setOfflineRegionDefinition(@NonNull OfflineRegionDefinition definition) { double minZoom = definition.getMinZoom(); double maxZoom = definition.getMaxZoom(); @@ -564,6 +569,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { // ViewCallback // + @Nullable @Override public Bitmap getViewContent() { return BitmapUtils.createBitmapFromView(this); @@ -973,6 +979,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { return mapGestureDetector != null; } + @Nullable MapboxMap getMapboxMap() { return mapboxMap; } @@ -1240,10 +1247,11 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { */ private static class AttributionClickListener implements OnClickListener { + @NonNull private final AttributionDialogManager defaultDialogManager; private UiSettings uiSettings; - private AttributionClickListener(Context context, MapboxMap mapboxMap) { + private AttributionClickListener(@NonNull Context context, @NonNull MapboxMap mapboxMap) { this.defaultDialogManager = new AttributionDialogManager(context, mapboxMap); this.uiSettings = mapboxMap.getUiSettings(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 7172a6a52a..f986d9d96c 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -78,6 +78,7 @@ public final class MapboxMap { private final OnGesturesManagerInteractionListener onGesturesManagerInteractionListener; private LocationComponent locationComponent; + @Nullable private MapboxMap.OnFpsChangedListener onFpsChangedListener; MapboxMap(NativeMapView map, Transform transform, UiSettings ui, Projection projection, @@ -681,7 +682,7 @@ public final class MapboxMap { * @param update The change that should be applied to the camera. * @see com.mapbox.mapboxsdk.camera.CameraUpdateFactory for a set of updates. */ - public final void easeCamera(CameraUpdate update) { + public final void easeCamera(@NonNull CameraUpdate update) { easeCamera(update, MapboxConstants.ANIMATION_DURATION); } @@ -698,7 +699,7 @@ public final class MapboxMap { * Do not update or ease the camera from within onCancel(). * @see com.mapbox.mapboxsdk.camera.CameraUpdateFactory for a set of updates. */ - public final void easeCamera(CameraUpdate update, @Nullable final MapboxMap.CancelableCallback callback) { + public final void easeCamera(@NonNull CameraUpdate update, @Nullable final MapboxMap.CancelableCallback callback) { easeCamera(update, MapboxConstants.ANIMATION_DURATION, callback); } @@ -1074,7 +1075,7 @@ public final class MapboxMap { * @param style The bundled style. * @see Style */ - public void setStyle(@Style.StyleUrl String style) { + public void setStyle(@NonNull @Style.StyleUrl String style) { setStyleUrl(style); } @@ -1090,7 +1091,7 @@ public final class MapboxMap { * @param callback The callback to be invoked when the style has finished loading * @see Style */ - public void setStyle(@Style.StyleUrl String style, @Nullable OnStyleLoadedListener callback) { + public void setStyle(@NonNull @Style.StyleUrl String style, @Nullable OnStyleLoadedListener callback) { setStyleUrl(style, callback); } @@ -1769,7 +1770,7 @@ public final class MapboxMap { */ @NonNull @Deprecated - public CameraPosition getCameraForGeometry(Geometry geometry, double bearing, int[] padding) { + public CameraPosition getCameraForGeometry(@NonNull Geometry geometry, double bearing, @NonNull int[] padding) { return getCameraForGeometry(geometry, padding, bearing, transform.getTilt()); } @@ -2556,6 +2557,7 @@ public final class MapboxMap { private Context context; private final Class<U> persistentClass; + @NonNull private final Pools.SimplePool<View> viewReusePool; /** @@ -2639,6 +2641,7 @@ public final class MapboxMap { * * @return the pool associated to this adapter */ + @NonNull public final Pools.SimplePool<View> getViewReusePool() { return viewReusePool; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java index eb745fdec5..a5a6ede1dd 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java @@ -142,6 +142,7 @@ public class MapboxMapOptions implements Parcelable { * @param attrs Attributeset containing configuration * @return the MapboxMapOptions created from attributes */ + @NonNull public static MapboxMapOptions createFromAttributes(@NonNull Context context, @Nullable AttributeSet attrs) { MapboxMapOptions mapboxMapOptions = new MapboxMapOptions(); float pxlRatio = context.getResources().getDisplayMetrics().density; @@ -247,6 +248,7 @@ public class MapboxMapOptions implements Parcelable { * @param apiBaseUrl The base of our API endpoint * @return This */ + @NonNull public MapboxMapOptions apiBaseUrl(String apiBaseUrl) { this.apiBaseUrl = apiBaseUrl; return this; @@ -258,6 +260,7 @@ public class MapboxMapOptions implements Parcelable { * @param cameraPosition Inital camera position * @return This */ + @NonNull public MapboxMapOptions camera(CameraPosition cameraPosition) { this.cameraPosition = cameraPosition; return this; @@ -269,6 +272,7 @@ public class MapboxMapOptions implements Parcelable { * @param styleUrl Url to be used to load a styleUrl * @return This */ + @NonNull public MapboxMapOptions styleUrl(String styleUrl) { this.styleUrl = styleUrl; return this; @@ -280,6 +284,7 @@ public class MapboxMapOptions implements Parcelable { * @param styleJson json to used as style * @return This */ + @NonNull public MapboxMapOptions styleJson(String styleJson) { this.styleJson = styleJson; return this; @@ -291,6 +296,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True is debug is enabled * @return This */ + @NonNull public MapboxMapOptions debugActive(boolean enabled) { debugActive = enabled; return this; @@ -302,6 +308,7 @@ public class MapboxMapOptions implements Parcelable { * @param minZoom Zoom level to be used * @return This */ + @NonNull public MapboxMapOptions minZoomPreference(double minZoom) { this.minZoom = minZoom; return this; @@ -313,6 +320,7 @@ public class MapboxMapOptions implements Parcelable { * @param maxZoom Zoom level to be used * @return This */ + @NonNull public MapboxMapOptions maxZoomPreference(double maxZoom) { this.maxZoom = maxZoom; return this; @@ -324,6 +332,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True and mapbox_compass_icon is shown * @return This */ + @NonNull public MapboxMapOptions compassEnabled(boolean enabled) { compassEnabled = enabled; return this; @@ -335,6 +344,7 @@ public class MapboxMapOptions implements Parcelable { * @param gravity Android SDK Gravity. * @return This */ + @NonNull public MapboxMapOptions compassGravity(int gravity) { compassGravity = gravity; return this; @@ -346,6 +356,7 @@ public class MapboxMapOptions implements Parcelable { * @param margins 4 long array for LTRB margins * @return This */ + @NonNull public MapboxMapOptions compassMargins(int[] margins) { compassMargins = margins; return this; @@ -360,6 +371,7 @@ public class MapboxMapOptions implements Parcelable { * @param compassFadeWhenFacingNorth true is mapbox_compass_icon fades to invisble * @return This */ + @NonNull public MapboxMapOptions compassFadesWhenFacingNorth(boolean compassFadeWhenFacingNorth) { this.fadeCompassFacingNorth = compassFadeWhenFacingNorth; return this; @@ -374,6 +386,7 @@ public class MapboxMapOptions implements Parcelable { * @param compass the drawable to show as image compass * @return This */ + @NonNull public MapboxMapOptions compassImage(Drawable compass) { this.compassImage = compass; return this; @@ -385,6 +398,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True and logo is shown * @return This */ + @NonNull public MapboxMapOptions logoEnabled(boolean enabled) { logoEnabled = enabled; return this; @@ -396,6 +410,7 @@ public class MapboxMapOptions implements Parcelable { * @param gravity Android SDK Gravity. * @return This */ + @NonNull public MapboxMapOptions logoGravity(int gravity) { logoGravity = gravity; return this; @@ -407,6 +422,7 @@ public class MapboxMapOptions implements Parcelable { * @param margins 4 long array for LTRB margins * @return This */ + @NonNull public MapboxMapOptions logoMargins(int[] margins) { logoMargins = margins; return this; @@ -418,6 +434,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True and attribution is shown * @return This */ + @NonNull public MapboxMapOptions attributionEnabled(boolean enabled) { attributionEnabled = enabled; return this; @@ -429,6 +446,7 @@ public class MapboxMapOptions implements Parcelable { * @param gravity Android SDK Gravity. * @return This */ + @NonNull public MapboxMapOptions attributionGravity(int gravity) { attributionGravity = gravity; return this; @@ -440,6 +458,7 @@ public class MapboxMapOptions implements Parcelable { * @param margins 4 long array for LTRB margins * @return This */ + @NonNull public MapboxMapOptions attributionMargins(int[] margins) { attributionMargins = margins; return this; @@ -451,6 +470,7 @@ public class MapboxMapOptions implements Parcelable { * @param color integer resembling a color * @return This */ + @NonNull public MapboxMapOptions attributionTintColor(@ColorInt int color) { attributionTintColor = color; return this; @@ -462,6 +482,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True and gesture will be enabled * @return This */ + @NonNull public MapboxMapOptions rotateGesturesEnabled(boolean enabled) { rotateGesturesEnabled = enabled; return this; @@ -473,6 +494,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True and gesture will be enabled * @return This */ + @NonNull public MapboxMapOptions scrollGesturesEnabled(boolean enabled) { scrollGesturesEnabled = enabled; return this; @@ -484,6 +506,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True and gesture will be enabled * @return This */ + @NonNull public MapboxMapOptions tiltGesturesEnabled(boolean enabled) { tiltGesturesEnabled = enabled; return this; @@ -495,6 +518,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True and gesture will be enabled * @return This */ + @NonNull public MapboxMapOptions zoomGesturesEnabled(boolean enabled) { zoomGesturesEnabled = enabled; return this; @@ -506,6 +530,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True and gesture will be enabled * @return This */ + @NonNull public MapboxMapOptions doubleTapGesturesEnabled(boolean enabled) { doubleTapGesturesEnabled = enabled; return this; @@ -524,11 +549,13 @@ public class MapboxMapOptions implements Parcelable { * @param textureMode True to enable texture mode * @return This */ + @NonNull public MapboxMapOptions textureMode(boolean textureMode) { this.textureMode = textureMode; return this; } + @NonNull public MapboxMapOptions translucentTextureSurface(boolean translucentTextureSurface) { this.translucentTextureSurface = translucentTextureSurface; return this; @@ -540,6 +567,7 @@ public class MapboxMapOptions implements Parcelable { * @param loadColor the color to show during map creation * @return This */ + @NonNull public MapboxMapOptions foregroundLoadColor(@ColorInt int loadColor) { this.foregroundLoadColor = loadColor; return this; @@ -553,6 +581,7 @@ public class MapboxMapOptions implements Parcelable { * @param enable true to enable * @return This */ + @NonNull public MapboxMapOptions setPrefetchesTiles(boolean enable) { this.prefetchesTiles = enable; return this; @@ -568,6 +597,7 @@ public class MapboxMapOptions implements Parcelable { * @param crossSourceCollisions true to enable, false to disable * @return This */ + @NonNull public MapboxMapOptions crossSourceCollisions(boolean crossSourceCollisions) { this.crossSourceCollisions = crossSourceCollisions; return this; @@ -583,6 +613,7 @@ public class MapboxMapOptions implements Parcelable { * @param fontFamily font family for local ideograph generation. * @return This */ + @NonNull public MapboxMapOptions localIdeographFontFamily(String fontFamily) { this.localIdeographFontFamily = fontFamily; return this; @@ -595,6 +626,7 @@ public class MapboxMapOptions implements Parcelable { * @param pixelRatio the custom pixel ratio of the map under construction * @return This */ + @NonNull public MapboxMapOptions pixelRatio(float pixelRatio) { this.pixelRatio = pixelRatio; return this; @@ -896,7 +928,7 @@ public class MapboxMapOptions implements Parcelable { } public static final Parcelable.Creator<MapboxMapOptions> CREATOR = new Parcelable.Creator<MapboxMapOptions>() { - public MapboxMapOptions createFromParcel(Parcel in) { + public MapboxMapOptions createFromParcel(@NonNull Parcel in) { return new MapboxMapOptions(in); } @@ -911,7 +943,7 @@ public class MapboxMapOptions implements Parcelable { } @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeParcelable(cameraPosition, flags); dest.writeByte((byte) (debugActive ? 1 : 0)); @@ -954,7 +986,7 @@ public class MapboxMapOptions implements Parcelable { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MarkerContainer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MarkerContainer.java index 2c2f07a112..8b9ff78aa3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MarkerContainer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MarkerContainer.java @@ -48,6 +48,7 @@ class MarkerContainer implements Markers { return marker; } + @NonNull @Override public List<Marker> addBy(@NonNull List<? extends BaseMarkerOptions> markerOptionsList, @NonNull MapboxMap mapboxMap) { @@ -82,6 +83,7 @@ class MarkerContainer implements Markers { annotations.setValueAt(annotations.indexOfKey(updatedMarker.getId()), updatedMarker); } + @NonNull @Override public List<Marker> obtainAll() { List<Marker> markers = new ArrayList<>(); @@ -137,6 +139,7 @@ class MarkerContainer implements Markers { return marker; } + @NonNull @Override public List<MarkerView> addViewsBy(@NonNull List<? extends BaseMarkerViewOptions> markerViewOptions, @NonNull MapboxMap mapboxMap) { @@ -160,6 +163,7 @@ class MarkerContainer implements Markers { return markers; } + @NonNull @Override public List<MarkerView> obtainViewsIn(@NonNull RectF rectangle) { float pixelRatio = nativeMapView.getPixelRatio(); @@ -210,12 +214,13 @@ class MarkerContainer implements Markers { return marker; } - private void ensureIconLoaded(Marker marker, MapboxMap mapboxMap) { + private void ensureIconLoaded(Marker marker, @NonNull MapboxMap mapboxMap) { if (!(marker instanceof MarkerView)) { iconManager.ensureIconLoaded(marker, mapboxMap); } } + @NonNull private List<Annotation> obtainAnnotations() { List<Annotation> annotations = new ArrayList<>(); for (int i = 0; i < this.annotations.size(); i++) { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Markers.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Markers.java index d646e0ac49..d85f388d09 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Markers.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Markers.java @@ -25,6 +25,7 @@ interface Markers { List<Marker> obtainAll(); + @NonNull List<Marker> obtainAllIn(@NonNull RectF rectangle); MarkerView addViewBy(@NonNull BaseMarkerViewOptions markerOptions, @NonNull MapboxMap mapboxMap, 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 eaba89e31b..532f311e90 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 @@ -55,9 +55,11 @@ final class NativeMapView { private final MapRenderer mapRenderer; // Used to validate if methods are called from the correct thread + @NonNull private final Thread thread; // Used for view callbacks + @Nullable private ViewCallback viewCallback; // Used for map change callbacks @@ -84,8 +86,9 @@ final class NativeMapView { // Constructors // - public NativeMapView(final Context context, final boolean crossSourceCollisions, final ViewCallback viewCallback, - final StateCallback stateCallback, final MapRenderer mapRenderer) { + public NativeMapView(@NonNull final Context context, final boolean crossSourceCollisions, + final ViewCallback viewCallback, final StateCallback stateCallback, + final MapRenderer mapRenderer) { this(context, context.getResources().getDisplayMetrics().density, crossSourceCollisions, viewCallback, stateCallback, mapRenderer); } @@ -239,14 +242,14 @@ final class NativeMapView { nativeMoveBy(dx / pixelRatio, dy / pixelRatio, duration); } - public void setLatLng(LatLng latLng) { + public void setLatLng(@NonNull LatLng latLng) { if (checkState("setLatLng")) { return; } setLatLng(latLng, 0); } - public void setLatLng(LatLng latLng, long duration) { + public void setLatLng(@NonNull LatLng latLng, long duration) { if (checkState("setLatLng")) { return; } @@ -312,7 +315,7 @@ final class NativeMapView { nativeSetPitch(pitch, duration); } - public void setZoom(double zoom, PointF focalPoint, long duration) { + public void setZoom(double zoom, @NonNull PointF focalPoint, long duration) { if (checkState("setZoom")) { return; } @@ -437,7 +440,8 @@ final class NativeMapView { return nativeAddMarkers(markers)[0]; } - public long[] addMarkers(List<Marker> markers) { + @NonNull + public long[] addMarkers(@NonNull List<Marker> markers) { if (checkState("addMarkers")) { return new long[] {}; } @@ -452,7 +456,8 @@ final class NativeMapView { return nativeAddPolylines(polylines)[0]; } - public long[] addPolylines(List<Polyline> polylines) { + @NonNull + public long[] addPolylines(@NonNull List<Polyline> polylines) { if (checkState("addPolylines")) { return new long[] {}; } @@ -467,14 +472,15 @@ final class NativeMapView { return nativeAddPolygons(polygons)[0]; } - public long[] addPolygons(List<Polygon> polygons) { + @NonNull + public long[] addPolygons(@NonNull List<Polygon> polygons) { if (checkState("addPolygons")) { return new long[] {}; } return nativeAddPolygons(polygons.toArray(new Polygon[polygons.size()])); } - public void updateMarker(Marker marker) { + public void updateMarker(@NonNull Marker marker) { if (checkState("updateMarker")) { return; } @@ -483,14 +489,14 @@ final class NativeMapView { nativeUpdateMarker(marker.getId(), position.getLatitude(), position.getLongitude(), icon.getId()); } - public void updatePolygon(Polygon polygon) { + public void updatePolygon(@NonNull Polygon polygon) { if (checkState("updatePolygon")) { return; } nativeUpdatePolygon(polygon.getId(), polygon); } - public void updatePolyline(Polyline polyline) { + public void updatePolyline(@NonNull Polyline polyline) { if (checkState("updatePolyline")) { return; } @@ -512,6 +518,7 @@ final class NativeMapView { nativeRemoveAnnotations(ids); } + @NonNull public long[] queryPointAnnotations(RectF rect) { if (checkState("queryPointAnnotations")) { return new long[] {}; @@ -519,6 +526,7 @@ final class NativeMapView { return nativeQueryPointAnnotations(rect); } + @NonNull public long[] queryShapeAnnotations(RectF rectF) { if (checkState("queryShapeAnnotations")) { return new long[] {}; @@ -596,14 +604,14 @@ final class NativeMapView { return nativeGetMetersPerPixelAtLatitude(lat, getZoom()) / pixelRatio; } - public ProjectedMeters projectedMetersForLatLng(LatLng latLng) { + public ProjectedMeters projectedMetersForLatLng(@NonNull LatLng latLng) { if (checkState("projectedMetersForLatLng")) { return null; } return nativeProjectedMetersForLatLng(latLng.getLatitude(), latLng.getLongitude()); } - public LatLng latLngForProjectedMeters(ProjectedMeters projectedMeters) { + public LatLng latLngForProjectedMeters(@NonNull ProjectedMeters projectedMeters) { if (checkState("latLngForProjectedMeters")) { return new LatLng(); } @@ -611,7 +619,8 @@ final class NativeMapView { projectedMeters.getEasting()).wrap(); } - public PointF pixelForLatLng(LatLng latLng) { + @NonNull + public PointF pixelForLatLng(@NonNull LatLng latLng) { if (checkState("pixelForLatLng")) { return new PointF(); } @@ -620,7 +629,7 @@ final class NativeMapView { return pointF; } - public LatLng latLngForPixel(PointF pixel) { + public LatLng latLngForPixel(@NonNull PointF pixel) { if (checkState("latLngForPixel")) { return new LatLng(); } @@ -634,14 +643,14 @@ final class NativeMapView { return nativeGetTopOffsetPixelsForAnnotationSymbol(symbolName); } - public void jumpTo(double angle, LatLng center, double pitch, double zoom) { + public void jumpTo(double angle, @NonNull LatLng center, double pitch, double zoom) { if (checkState("jumpTo")) { return; } nativeJumpTo(angle, center.getLatitude(), center.getLongitude(), pitch, zoom); } - public void easeTo(double angle, LatLng center, long duration, double pitch, double zoom, + public void easeTo(double angle, @NonNull LatLng center, long duration, double pitch, double zoom, boolean easingInterpolator) { if (checkState("easeTo")) { return; @@ -650,13 +659,14 @@ final class NativeMapView { easingInterpolator); } - public void flyTo(double angle, LatLng center, long duration, double pitch, double zoom) { + public void flyTo(double angle, @NonNull LatLng center, long duration, double pitch, double zoom) { if (checkState("flyTo")) { return; } nativeFlyTo(angle, center.getLatitude(), center.getLongitude(), duration, pitch, zoom); } + @NonNull public CameraPosition getCameraPosition() { if (checkState("getCameraValues")) { return new CameraPosition.Builder().build(); @@ -967,7 +977,7 @@ final class NativeMapView { } @Keep - protected void onSnapshotReady(Bitmap mapContent) { + protected void onSnapshotReady(@Nullable Bitmap mapContent) { if (checkState("OnSnapshotReady")) { return; } @@ -998,12 +1008,14 @@ final class NativeMapView { @Keep private native void nativeSetStyleUrl(String url); + @NonNull @Keep private native String nativeGetStyleUrl(); @Keep private native void nativeSetStyleJson(String newStyleJson); + @NonNull @Keep private native String nativeGetStyleJson(); @@ -1022,13 +1034,16 @@ final class NativeMapView { @Keep private native void nativeSetLatLng(double latitude, double longitude, long duration); + @NonNull @Keep private native LatLng nativeGetLatLng(); + @NonNull @Keep private native CameraPosition nativeGetCameraForLatLngBounds( LatLngBounds latLngBounds, double top, double left, double bottom, double right, double bearing, double tilt); + @NonNull @Keep private native CameraPosition nativeGetCameraForGeometry( Geometry geometry, double top, double left, double bottom, double right, double bearing, double tilt); @@ -1084,21 +1099,26 @@ final class NativeMapView { @Keep private native void nativeUpdateMarker(long markerId, double lat, double lon, String iconId); + @NonNull @Keep private native long[] nativeAddMarkers(Marker[] markers); + @NonNull @Keep private native long[] nativeAddPolylines(Polyline[] polylines); + @NonNull @Keep private native long[] nativeAddPolygons(Polygon[] polygons); @Keep private native void nativeRemoveAnnotations(long[] id); + @NonNull @Keep private native long[] nativeQueryPointAnnotations(RectF rect); + @NonNull @Keep private native long[] nativeQueryShapeAnnotations(RectF rect); @@ -1133,15 +1153,19 @@ final class NativeMapView { @Keep private native double nativeGetMetersPerPixelAtLatitude(double lat, double zoom); + @NonNull @Keep private native ProjectedMeters nativeProjectedMetersForLatLng(double latitude, double longitude); + @NonNull @Keep private native LatLng nativeLatLngForProjectedMeters(double northing, double easting); + @NonNull @Keep private native PointF nativePixelForLatLng(double lat, double lon); + @NonNull @Keep private native LatLng nativeLatLngForPixel(float x, float y); @@ -1160,6 +1184,7 @@ final class NativeMapView { private native void nativeFlyTo(double angle, double latitude, double longitude, long duration, double pitch, double zoom); + @NonNull @Keep private native CameraPosition nativeGetCameraPosition(); @@ -1175,9 +1200,11 @@ final class NativeMapView { @Keep private native void nativeSetTransitionDelay(long delay); + @NonNull @Keep private native Layer[] nativeGetLayers(); + @NonNull @Keep private native Layer nativeGetLayer(String layerId); @@ -1190,18 +1217,22 @@ final class NativeMapView { @Keep private native void nativeAddLayerAt(long layerPtr, int index) throws CannotAddLayerException; + @NonNull @Keep private native Layer nativeRemoveLayerById(String layerId); @Keep private native void nativeRemoveLayer(long layerId); + @NonNull @Keep private native Layer nativeRemoveLayerAt(int index); + @NonNull @Keep private native Source[] nativeGetSources(); + @NonNull @Keep private native Source nativeGetSource(String sourceId); @@ -1220,6 +1251,7 @@ final class NativeMapView { @Keep private native void nativeRemoveImage(String name); + @NonNull @Keep private native Bitmap nativeGetImage(String name); @@ -1232,17 +1264,20 @@ final class NativeMapView { @Keep private native void nativeTakeSnapshot(); + @NonNull @Keep private native Feature[] nativeQueryRenderedFeaturesForPoint(float x, float y, String[] layerIds, Object[] filter); + @NonNull @Keep private native Feature[] nativeQueryRenderedFeaturesForBox(float left, float top, float right, float bottom, String[] layerIds, Object[] filter); + @NonNull @Keep private native Light nativeGetLight(); @@ -1278,7 +1313,7 @@ final class NativeMapView { nativeTakeSnapshot(); } - public void setOnFpsChangedListener(final MapboxMap.OnFpsChangedListener listener) { + public void setOnFpsChangedListener(@NonNull final MapboxMap.OnFpsChangedListener listener) { final Handler handler = new Handler(); mapRenderer.queueEvent(new Runnable() { @@ -1316,6 +1351,7 @@ final class NativeMapView { this.sdf = sdf; } + @NonNull @Override protected List<Image> doInBackground(HashMap<String, Bitmap>... params) { HashMap<String, Bitmap> bitmapHashMap = params[0]; @@ -1345,7 +1381,7 @@ final class NativeMapView { } @Override - protected void onPostExecute(List<Image> images) { + protected void onPostExecute(@NonNull List<Image> images) { super.onPostExecute(images); if (nativeMapView != null && !nativeMapView.checkState("nativeAddImages")) { nativeMapView.nativeAddImages(images.toArray(new Image[images.size()])); @@ -1358,6 +1394,7 @@ final class NativeMapView { int getHeight(); + @Nullable Bitmap getViewContent(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PolygonContainer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PolygonContainer.java index 016862bddc..2cdcc052fb 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PolygonContainer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PolygonContainer.java @@ -36,6 +36,7 @@ class PolygonContainer implements Polygons { return polygon; } + @NonNull @Override public List<Polygon> addBy(@NonNull List<PolygonOptions> polygonOptionsList, @NonNull MapboxMap mapboxMap) { int count = polygonOptionsList.size(); @@ -62,11 +63,12 @@ class PolygonContainer implements Polygons { } @Override - public void update(Polygon polygon) { + public void update(@NonNull Polygon polygon) { nativeMapView.updatePolygon(polygon); annotations.setValueAt(annotations.indexOfKey(polygon.getId()), polygon); } + @NonNull @Override public List<Polygon> obtainAll() { List<Polygon> polygons = new ArrayList<>(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PolylineContainer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PolylineContainer.java index 303b25fb55..ed0ceceb1f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PolylineContainer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PolylineContainer.java @@ -36,6 +36,7 @@ class PolylineContainer implements Polylines { return polyline; } + @NonNull @Override public List<Polyline> addBy(@NonNull List<PolylineOptions> polylineOptionsList, @NonNull MapboxMap mapboxMap) { int count = polylineOptionsList.size(); @@ -61,11 +62,12 @@ class PolylineContainer implements Polylines { } @Override - public void update(Polyline polyline) { + public void update(@NonNull Polyline polyline) { nativeMapView.updatePolyline(polyline); annotations.setValueAt(annotations.indexOfKey(polyline.getId()), polyline); } + @NonNull @Override public List<Polyline> obtainAll() { List<Polyline> polylines = new ArrayList<>(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Projection.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Projection.java index 3ecf7354c4..8e3092ae1d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Projection.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Projection.java @@ -21,6 +21,7 @@ import java.util.List; */ public class Projection { + @NonNull private final NativeMapView nativeMapView; private int[] contentPadding; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/ShapeAnnotationContainer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/ShapeAnnotationContainer.java index 6ded2f32fb..d04860a345 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/ShapeAnnotationContainer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/ShapeAnnotationContainer.java @@ -1,6 +1,7 @@ package com.mapbox.mapboxsdk.maps; import android.graphics.RectF; +import android.support.annotation.NonNull; import android.support.v4.util.LongSparseArray; import com.mapbox.mapboxsdk.annotations.Annotation; @@ -18,13 +19,15 @@ class ShapeAnnotationContainer implements ShapeAnnotations { this.annotations = annotations; } + @NonNull @Override - public List<Annotation> obtainAllIn(RectF rectangle) { + public List<Annotation> obtainAllIn(@NonNull RectF rectangle) { RectF rect = nativeMapView.getDensityDependantRectangle(rectangle); long[] annotationIds = nativeMapView.queryShapeAnnotations(rect); return getAnnotationsFromIds(annotationIds); } + @NonNull private List<Annotation> getAnnotationsFromIds(long[] annotationIds) { List<Annotation> shapeAnnotations = new ArrayList<>(); for (long annotationId : annotationIds) { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java index 590851d354..184153a241 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java @@ -51,6 +51,7 @@ public class SupportMapFragment extends Fragment implements OnMapReadyCallback { * @param mapboxMapOptions The configuration options to be used. * @return MapFragment created. */ + @NonNull public static SupportMapFragment newInstance(@Nullable MapboxMapOptions mapboxMapOptions) { SupportMapFragment mapFragment = new SupportMapFragment(); mapFragment.setArguments(MapFragmentUtils.createFragmentArgs(mapboxMapOptions)); @@ -78,7 +79,7 @@ public class SupportMapFragment extends Fragment implements OnMapReadyCallback { * @param savedInstanceState The saved instance state for the map fragment. */ @Override - public void onInflate(Context context, AttributeSet attrs, Bundle savedInstanceState) { + public void onInflate(@NonNull Context context, AttributeSet attrs, Bundle savedInstanceState) { super.onInflate(context, attrs, savedInstanceState); setArguments(MapFragmentUtils.createFragmentArgs(MapboxMapOptions.createFromAttributes(context, attrs))); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java index 6be45e3000..457353d4b9 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java @@ -30,7 +30,9 @@ final class Transform implements MapView.OnCameraDidChangeListener { private final MarkerViewManager markerViewManager; private final Handler handler = new Handler(); + @Nullable private CameraPosition cameraPosition; + @Nullable private MapboxMap.CancelableCallback cameraCancelableCallback; private CameraChangeDispatcher cameraChangeDispatcher; @@ -66,6 +68,7 @@ final class Transform implements MapView.OnCameraDidChangeListener { // Camera API // + @Nullable @UiThread public final CameraPosition getCameraPosition() { if (cameraPosition == null) { @@ -100,7 +103,8 @@ final class Transform implements MapView.OnCameraDidChangeListener { } @UiThread - final void moveCamera(MapboxMap mapboxMap, CameraUpdate update, final MapboxMap.CancelableCallback callback) { + final void moveCamera(@NonNull MapboxMap mapboxMap, CameraUpdate update, + @Nullable final MapboxMap.CancelableCallback callback) { CameraPosition cameraPosition = update.getCameraPosition(mapboxMap); if (isValidCameraPosition(cameraPosition)) { cancelTransitions(); @@ -120,8 +124,8 @@ final class Transform implements MapView.OnCameraDidChangeListener { } @UiThread - final void easeCamera(MapboxMap mapboxMap, CameraUpdate update, int durationMs, boolean easingInterpolator, - final MapboxMap.CancelableCallback callback) { + final void easeCamera(@NonNull MapboxMap mapboxMap, CameraUpdate update, int durationMs, boolean easingInterpolator, + @Nullable final MapboxMap.CancelableCallback callback) { CameraPosition cameraPosition = update.getCameraPosition(mapboxMap); if (isValidCameraPosition(cameraPosition)) { cancelTransitions(); @@ -137,8 +141,8 @@ final class Transform implements MapView.OnCameraDidChangeListener { } @UiThread - final void animateCamera(MapboxMap mapboxMap, CameraUpdate update, int durationMs, - final MapboxMap.CancelableCallback callback) { + final void animateCamera(@NonNull MapboxMap mapboxMap, CameraUpdate update, int durationMs, + @Nullable final MapboxMap.CancelableCallback callback) { CameraPosition cameraPosition = update.getCameraPosition(mapboxMap); if (isValidCameraPosition(cameraPosition)) { cancelTransitions(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java index 8bc8a412f3..4caccec80d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java @@ -29,15 +29,20 @@ import com.mapbox.mapboxsdk.utils.ColorUtils; */ public final class UiSettings { + @NonNull private final FocalPointChangeListener focalPointChangeListener; + @NonNull private final Projection projection; + @NonNull private final CompassView compassView; private final int[] compassMargins = new int[4]; + @NonNull private final ImageView attributionsView; private final int[] attributionsMargins = new int[4]; private AttributionDialogManager attributionDialogManager; + @NonNull private final View logoView; private final int[] logoMargins = new int[4]; @@ -62,6 +67,7 @@ public final class UiSettings { private boolean deselectMarkersOnTap = true; + @Nullable private PointF userProvidedFocalPoint; UiSettings(@NonNull Projection projection, @NonNull FocalPointChangeListener listener, @@ -83,7 +89,7 @@ public final class UiSettings { initialiseAttribution(context, options); } - void onSaveInstanceState(Bundle outState) { + void onSaveInstanceState(@NonNull Bundle outState) { saveGestures(outState); saveCompass(outState); saveLogo(outState); @@ -137,7 +143,7 @@ public final class UiSettings { savedInstanceState.getBoolean(MapboxConstants.STATE_INCREASE_SCALE_THRESHOLD)); } - private void initialiseCompass(MapboxMapOptions options, Resources resources) { + private void initialiseCompass(MapboxMapOptions options, @NonNull Resources resources) { setCompassEnabled(options.getCompassEnabled()); setCompassGravity(options.getCompassGravity()); int[] compassMargins = options.getCompassMargins(); @@ -178,13 +184,13 @@ public final class UiSettings { compassView.getContext(), savedInstanceState.getByteArray(MapboxConstants.STATE_COMPASS_IMAGE_BITMAP))); } - private void initialiseLogo(MapboxMapOptions options, Resources resources) { + private void initialiseLogo(MapboxMapOptions options, @NonNull Resources resources) { setLogoEnabled(options.getLogoEnabled()); setLogoGravity(options.getLogoGravity()); setLogoMargins(resources, options.getLogoMargins()); } - private void setLogoMargins(Resources resources, int[] logoMargins) { + private void setLogoMargins(@NonNull Resources resources, @Nullable int[] logoMargins) { if (logoMargins != null) { setLogoMargins(logoMargins[0], logoMargins[1], logoMargins[2], logoMargins[3]); } else { @@ -212,7 +218,7 @@ public final class UiSettings { savedInstanceState.getInt(MapboxConstants.STATE_LOGO_MARGIN_BOTTOM)); } - private void initialiseAttribution(Context context, MapboxMapOptions options) { + private void initialiseAttribution(@NonNull Context context, MapboxMapOptions options) { setAttributionEnabled(options.getAttributionEnabled()); setAttributionGravity(options.getAttributionGravity()); setAttributionMargins(context, options.getAttributionMargins()); @@ -221,7 +227,7 @@ public final class UiSettings { ? attributionTintColor : ColorUtils.getPrimaryColor(context)); } - private void setAttributionMargins(Context context, int[] attributionMargins) { + private void setAttributionMargins(@NonNull Context context, @Nullable int[] attributionMargins) { if (attributionMargins != null) { setAttributionMargins(attributionMargins[0], attributionMargins[1], attributionMargins[2], attributionMargins[3]); @@ -928,6 +934,7 @@ public final class UiSettings { * * @return The focal point */ + @Nullable public PointF getFocalPoint() { return userProvidedFocalPoint; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java index 492f653dae..0c529aa464 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java @@ -4,6 +4,7 @@ import android.content.Context; import android.support.annotation.CallSuper; import android.support.annotation.Keep; +import android.support.annotation.NonNull; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.storage.FileSource; @@ -25,7 +26,7 @@ public abstract class MapRenderer implements MapRendererScheduler { private MapboxMap.OnFpsChangedListener onFpsChangedListener; - public MapRenderer(Context context, String localIdeographFontFamily) { + public MapRenderer(@NonNull Context context, String localIdeographFontFamily) { FileSource fileSource = FileSource.getInstance(context); float pixelRatio = context.getResources().getDisplayMetrics().density; String programCacheDir = FileSource.getInternalCachePath(context); @@ -64,7 +65,7 @@ public abstract class MapRenderer implements MapRendererScheduler { } @CallSuper - protected void onSurfaceChanged(GL10 gl, int width, int height) { + protected void onSurfaceChanged(@NonNull GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); nativeOnSurfaceChanged(width, height); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/egl/EGLConfigChooser.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/egl/EGLConfigChooser.java index 65db8241cf..178911b0ac 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/egl/EGLConfigChooser.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/egl/EGLConfigChooser.java @@ -67,7 +67,7 @@ public class EGLConfigChooser implements GLSurfaceView.EGLConfigChooser { } @Override - public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) { + public EGLConfig chooseConfig(@NonNull EGL10 egl, EGLDisplay display) { int[] configAttribs = getConfigAttributes(); // Determine number of possible configurations @@ -90,6 +90,7 @@ public class EGLConfigChooser implements GLSurfaceView.EGLConfigChooser { return config; } + @NonNull private int[] getNumberOfConfigurations(EGL10 egl, EGLDisplay display, int[] configAttributes) { int[] numConfigs = new int[1]; if (!egl.eglChooseConfig(display, configAttributes, null, 0, numConfigs)) { @@ -101,6 +102,7 @@ public class EGLConfigChooser implements GLSurfaceView.EGLConfigChooser { return numConfigs; } + @NonNull private EGLConfig[] getPossibleConfigurations(EGL10 egl, EGLDisplay display, int[] configAttributes, int[] numConfigs) { EGLConfig[] configs = new EGLConfig[numConfigs[0]]; @@ -139,7 +141,7 @@ public class EGLConfigChooser implements GLSurfaceView.EGLConfigChooser { } } - private EGLConfig chooseBestMatchConfig(EGL10 egl, EGLDisplay display, EGLConfig[] configs) { + private EGLConfig chooseBestMatchConfig(@NonNull EGL10 egl, EGLDisplay display, EGLConfig[] configs) { class Config implements Comparable<Config> { private final BufferFormat bufferFormat; private final DepthStencilFormat depthStencilFormat; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java index ed0bed0ac0..584c9dcf57 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java @@ -3,6 +3,7 @@ package com.mapbox.mapboxsdk.maps.renderer.glsurfaceview; import android.content.Context; import android.opengl.GLSurfaceView; +import android.support.annotation.NonNull; import com.mapbox.mapboxsdk.maps.renderer.MapRenderer; import com.mapbox.mapboxsdk.maps.renderer.egl.EGLConfigChooser; @@ -19,6 +20,7 @@ import static android.opengl.GLSurfaceView.RENDERMODE_WHEN_DIRTY; */ public class GLSurfaceViewMapRenderer extends MapRenderer implements GLSurfaceView.Renderer { + @NonNull private final GLSurfaceView glSurfaceView; public GLSurfaceViewMapRenderer(Context context, diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewRenderThread.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewRenderThread.java index 8f4f1c852c..165b15a512 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewRenderThread.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewRenderThread.java @@ -2,6 +2,7 @@ package com.mapbox.mapboxsdk.maps.renderer.textureview; import android.graphics.SurfaceTexture; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.annotation.UiThread; import android.view.TextureView; import com.mapbox.mapboxsdk.log.Logger; @@ -26,7 +27,9 @@ class TextureViewRenderThread extends Thread implements TextureView.SurfaceTextu private static final String TAG = "Mbgl-TextureViewRenderThread"; + @NonNull private final TextureViewMapRenderer mapRenderer; + @NonNull private final EGLHolder eglHolder; // Lock used for synchronization @@ -34,6 +37,7 @@ class TextureViewRenderThread extends Thread implements TextureView.SurfaceTextu // Guarded by lock private final ArrayList<Runnable> eventQueue = new ArrayList<>(); + @Nullable private SurfaceTexture surface; private int width; private int height; @@ -118,7 +122,7 @@ class TextureViewRenderThread extends Thread implements TextureView.SurfaceTextu /** * May be called from any thread */ - void queueEvent(Runnable runnable) { + void queueEvent(@NonNull Runnable runnable) { if (runnable == null) { throw new IllegalArgumentException("runnable must not be null"); } @@ -328,6 +332,7 @@ class TextureViewRenderThread extends Thread implements TextureView.SurfaceTextu private boolean translucentSurface; private EGL10 egl; + @Nullable private EGLConfig eglConfig; private EGLDisplay eglDisplay = EGL10.EGL_NO_DISPLAY; private EGLContext eglContext = EGL10.EGL_NO_CONTEXT; @@ -370,6 +375,7 @@ class TextureViewRenderThread extends Thread implements TextureView.SurfaceTextu } } + @NonNull GL10 createGL() { return (GL10) eglContext.getGL(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java index 45f72af1c5..9c800c078f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java @@ -3,6 +3,7 @@ package com.mapbox.mapboxsdk.maps.widgets; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewPropertyAnimatorCompat; import android.support.v4.view.ViewPropertyAnimatorListenerAdapter; @@ -30,21 +31,22 @@ public final class CompassView extends AppCompatImageView implements Runnable { private float rotation = 0.0f; private boolean fadeCompassViewFacingNorth = true; + @Nullable private ViewPropertyAnimatorCompat fadeAnimator; private MapboxMap.OnCompassAnimationListener compassAnimationListener; private boolean isAnimating = false; - public CompassView(Context context) { + public CompassView(@NonNull Context context) { super(context); initialize(context); } - public CompassView(Context context, AttributeSet attrs) { + public CompassView(@NonNull Context context, AttributeSet attrs) { super(context, attrs); initialize(context); } - public CompassView(Context context, AttributeSet attrs, int defStyleAttr) { + public CompassView(@NonNull Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initialize(context); } |