diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps')
30 files changed, 324 insertions, 154 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 95795f6bb9..86eb0b10e6 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 @@ -45,13 +45,17 @@ class AnnotationManager { private final MapView mapView; private final IconManager iconManager; private final InfoWindowManager infoWindowManager = new InfoWindowManager(); + @NonNull private final MarkerViewManager markerViewManager; private final LongSparseArray<Annotation> annotationsArray; 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,8 +64,8 @@ class AnnotationManager { private Polygons polygons; private Polylines polylines; - AnnotationManager(NativeMapView view, MapView mapView, LongSparseArray<Annotation> annotationsArray, - MarkerViewManager markerViewManager, IconManager iconManager, Annotations annotations, + AnnotationManager(@Nullable NativeMapView view, MapView mapView, LongSparseArray<Annotation> annotationsArray, + @NonNull MarkerViewManager markerViewManager, IconManager iconManager, Annotations annotations, Markers markers, Polygons polygons, Polylines polylines, ShapeAnnotations shapeAnnotations) { this.mapView = mapView; this.annotationsArray = annotationsArray; @@ -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,19 +338,22 @@ class AnnotationManager { selectedMarkers.remove(marker); } + @NonNull List<Marker> getSelectedMarkers() { return selectedMarkers; } + @NonNull InfoWindowManager getInfoWindowManager() { return infoWindowManager; } + @NonNull MarkerViewManager getMarkerViewManager() { 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 +372,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 +386,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 +448,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 +468,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 +481,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 +509,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 +524,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 +533,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 +555,7 @@ class AnnotationManager { hitTestMarker(markerHit, marker, hitRectMarker); } - private void hitTestMarker(MarkerHit markerHit, Marker marker, RectF hitRectMarker) { + private void hitTestMarker(@NonNull MarkerHit markerHit, @NonNull Marker marker, @NonNull 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 a87a290fd7..3f969df022 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 @@ -203,7 +203,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/FocalPointChangeListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/FocalPointChangeListener.java index aec9a848b7..c5c0a15ac6 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/FocalPointChangeListener.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/FocalPointChangeListener.java @@ -1,11 +1,12 @@ package com.mapbox.mapboxsdk.maps; import android.graphics.PointF; +import android.support.annotation.NonNull; /** * Interface definition of a callback that is invoked when the focal point will change. */ public interface FocalPointChangeListener { - void onFocalPointChanged(PointF pointF); + void onFocalPointChanged(@NonNull PointF pointF); } 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 d6057e28f8..f89b280c4c 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())); @@ -227,6 +228,6 @@ public final class MapFragment extends Fragment implements OnMapReadyCallback { * * @param mapView The created mapview */ - void onMapViewReady(MapView mapView); + void onMapViewReady(@NonNull MapView mapView); } } 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 711896e45e..ea211e7246 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; @@ -81,6 +82,7 @@ final class MapGestureDetector { /** * User-set focal point. */ + @Nullable private PointF focalPoint; private AndroidGesturesManager gesturesManager; @@ -94,9 +96,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; @@ -115,7 +118,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(); @@ -137,7 +140,7 @@ final class MapGestureDetector { } } - private void initializeGesturesManager(AndroidGesturesManager androidGesturesManager, + private void initializeGesturesManager(@NonNull AndroidGesturesManager androidGesturesManager, boolean setDefaultMutuallyExclusives) { if (setDefaultMutuallyExclusives) { Set<Integer> shoveScaleSet = new HashSet<>(); @@ -167,7 +170,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) { @@ -202,7 +205,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; @@ -253,7 +256,7 @@ final class MapGestureDetector { dispatchCameraIdle(); } - private void cancelAnimator(Animator animator) { + private void cancelAnimator(@Nullable Animator animator) { if (animator != null && animator.isStarted()) { animator.cancel(); } @@ -262,6 +265,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() { @@ -436,7 +440,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; } @@ -448,7 +452,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 @@ -464,7 +468,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); } @@ -474,6 +478,7 @@ final class MapGestureDetector { private final float minimumVelocity; + @Nullable private PointF scaleFocalPoint; private boolean quickZoom; @@ -482,7 +487,7 @@ final class MapGestureDetector { } @Override - public boolean onScaleBegin(StandardScaleGestureDetector detector) { + public boolean onScaleBegin(@NonNull StandardScaleGestureDetector detector) { if (!uiSettings.isZoomGesturesEnabled()) { return false; } @@ -515,7 +520,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); @@ -531,7 +536,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); @@ -561,7 +566,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; @@ -597,6 +602,7 @@ final class MapGestureDetector { } private final class RotateGestureListener extends RotateGestureDetector.SimpleOnRotateGestureListener { + @Nullable private PointF rotateFocalPoint; private final float minimumScaleSpanWhenRotating; private final float minimumAngularVelocity; @@ -610,7 +616,7 @@ final class MapGestureDetector { } @Override - public boolean onRotateBegin(RotateGestureDetector detector) { + public boolean onRotateBegin(@NonNull RotateGestureDetector detector) { if (!uiSettings.isRotateGesturesEnabled()) { return false; } @@ -635,7 +641,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); @@ -654,7 +660,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); @@ -683,7 +690,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; @@ -699,7 +706,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, @@ -733,7 +740,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; } @@ -751,7 +758,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); @@ -769,7 +777,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 @@ -781,7 +789,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; } @@ -807,15 +815,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); } }); @@ -848,7 +856,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); } @@ -859,11 +867,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); @@ -901,7 +909,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(); @@ -919,7 +927,7 @@ final class MapGestureDetector { return mapZoom >= MapboxConstants.MINIMUM_ZOOM && mapZoom <= MapboxConstants.MAXIMUM_ZOOM; } - void notifyOnMapClickListeners(PointF tapPoint) { + void notifyOnMapClickListeners(@NonNull PointF tapPoint) { // deprecated API if (onMapClickListener != null) { onMapClickListener.onMapClick(projection.fromScreenLocation(tapPoint)); @@ -931,7 +939,7 @@ final class MapGestureDetector { } } - void notifyOnMapLongClickListeners(PointF longClickPoint) { + void notifyOnMapLongClickListeners(@NonNull PointF longClickPoint) { // deprecated API if (onMapLongClickListener != null) { onMapLongClickListener.onMapLongClick(projection.fromScreenLocation(longClickPoint)); @@ -967,73 +975,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); } @@ -1123,8 +1131,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 1c92b3fe0b..bd44807033 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 @@ -80,7 +80,9 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { private final CopyOnWriteArrayList<OnMapChangedListener> onMapChangedListeners = new CopyOnWriteArrayList<>(); private final MapChangeReceiver mapChangeReceiver = new MapChangeReceiver(); + @Nullable private NativeMapView nativeMapView; + @Nullable private MapboxMap mapboxMap; private MapboxMapOptions mapboxMapOptions; private MapRenderer mapRenderer; @@ -92,9 +94,12 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { private ImageView attrView; private ImageView logoView; + @Nullable private MapGestureDetector mapGestureDetector; + @Nullable private MapKeyListener mapKeyListener; private MapZoomButtonController mapZoomButtonController; + @Nullable private Bundle savedInstanceState; @UiThread @@ -231,7 +236,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 @@ -247,7 +252,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) { @@ -460,7 +465,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { } @Override - public boolean onTouchEvent(MotionEvent event) { + public boolean onTouchEvent(@NonNull MotionEvent event) { if (!isMapInitialized() || !isZoomButtonControllerInitialized() || !isGestureDetectorInitialized()) { return super.onTouchEvent(event); } @@ -472,7 +477,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); } @@ -482,17 +487,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); } @@ -500,7 +505,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { } @Override - public boolean onHoverEvent(MotionEvent event) { + public boolean onHoverEvent(@NonNull MotionEvent event) { if (!isZoomButtonControllerInitialized()) { return super.onHoverEvent(event); } @@ -590,9 +595,9 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { } } - private void setOfflineRegionDefinition(String styleUrl, LatLng cameraTarget, double minZoom, double maxZoom) { + private void setOfflineRegionDefinition(@NonNull String styleUrl, LatLng latLng, double minZoom, double maxZoom) { CameraPosition cameraPosition = new CameraPosition.Builder() - .target(cameraTarget) + .target(latLng) .zoom(minZoom) .build(); setStyleUrl(styleUrl); @@ -678,6 +683,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { // ViewCallback // + @Nullable @Override public Bitmap getViewContent() { return BitmapUtils.createBitmapFromView(this); @@ -1117,6 +1123,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { return mapGestureDetector != null; } + @Nullable MapboxMap getMapboxMap() { return mapboxMap; } @@ -1658,10 +1665,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 c1392be731..ba6339f2fb 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 @@ -77,6 +77,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, @@ -686,7 +687,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); } @@ -1064,7 +1065,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); } @@ -1080,7 +1081,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); } @@ -1759,7 +1760,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()); } @@ -2429,7 +2430,7 @@ public final class MapboxMap { * * @param position The CameraPosition at the end of the last camera change. */ - void onCameraChange(CameraPosition position); + void onCameraChange(@NonNull CameraPosition position); } /** @@ -2711,6 +2712,7 @@ public final class MapboxMap { private Context context; private final Class<U> persistentClass; + @NonNull private final Pools.SimplePool<View> viewReusePool; /** @@ -2794,6 +2796,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 3fac981fe5..f1d1c1715d 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 @@ -143,6 +143,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; @@ -250,6 +251,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; @@ -261,6 +263,7 @@ public class MapboxMapOptions implements Parcelable { * @param cameraPosition Inital camera position * @return This */ + @NonNull public MapboxMapOptions camera(CameraPosition cameraPosition) { this.cameraPosition = cameraPosition; return this; @@ -272,6 +275,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; @@ -283,6 +287,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; @@ -294,6 +299,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; @@ -305,6 +311,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; @@ -316,6 +323,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; @@ -327,6 +335,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; @@ -338,6 +347,7 @@ public class MapboxMapOptions implements Parcelable { * @param gravity Android SDK Gravity. * @return This */ + @NonNull public MapboxMapOptions compassGravity(int gravity) { compassGravity = gravity; return this; @@ -349,6 +359,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; @@ -363,6 +374,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; @@ -377,6 +389,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; @@ -388,6 +401,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; @@ -399,6 +413,7 @@ public class MapboxMapOptions implements Parcelable { * @param gravity Android SDK Gravity. * @return This */ + @NonNull public MapboxMapOptions logoGravity(int gravity) { logoGravity = gravity; return this; @@ -410,6 +425,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; @@ -421,6 +437,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; @@ -432,6 +449,7 @@ public class MapboxMapOptions implements Parcelable { * @param gravity Android SDK Gravity. * @return This */ + @NonNull public MapboxMapOptions attributionGravity(int gravity) { attributionGravity = gravity; return this; @@ -443,6 +461,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; @@ -454,6 +473,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; @@ -465,6 +485,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; @@ -476,6 +497,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; @@ -487,6 +509,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; @@ -498,6 +521,7 @@ public class MapboxMapOptions implements Parcelable { * @param enabled True and gesture will be enabled * @return This */ + @NonNull public MapboxMapOptions zoomControlsEnabled(boolean enabled) { zoomControlsEnabled = enabled; return this; @@ -509,6 +533,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; @@ -520,6 +545,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; @@ -538,11 +564,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; @@ -554,6 +582,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; @@ -567,6 +596,7 @@ public class MapboxMapOptions implements Parcelable { * @param enable true to enable * @return This */ + @NonNull public MapboxMapOptions setPrefetchesTiles(boolean enable) { this.prefetchesTiles = enable; return this; @@ -582,6 +612,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; @@ -597,6 +628,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; @@ -609,6 +641,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; @@ -919,7 +952,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); } @@ -934,7 +967,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)); @@ -978,7 +1011,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 48c571ee98..1ce1f4ba38 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 @@ -50,18 +50,23 @@ final class NativeMapView { private static final String TAG = "Mbgl-NativeMapView"; //Hold a reference to prevent it from being GC'd as long as it's used on the native side + @NonNull private final FileSource fileSource; // Used to schedule work on the MapRenderer Thread + @NonNull private final MapRenderer mapRenderer; // Used to validate if methods are called from the correct thread + @NonNull private final Thread thread; // Used for view callbacks + @NonNull private ViewCallback viewCallback; // Used for map change callbacks + @NonNull private StateCallback stateCallback; // Device density @@ -87,15 +92,16 @@ final class NativeMapView { // Constructors // - public NativeMapView(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); + public NativeMapView(@NonNull final Context context, final boolean crossSourceCollisions, + @NonNull final ViewCallback viewCallback, @NonNull final StateCallback stateCallback, + @NonNull final MapRenderer mapRenderer) { + this(context, context.getResources().getDisplayMetrics().density, + crossSourceCollisions, viewCallback, stateCallback, mapRenderer); } - public NativeMapView(final Context context, final float pixelRatio, final boolean crossSourceCollisions, - final ViewCallback viewCallback, final StateCallback stateCallback, - final MapRenderer mapRenderer) { + public NativeMapView(@NonNull final Context context, final float pixelRatio, final boolean crossSourceCollisions, + @NonNull final ViewCallback viewCallback, @NonNull final StateCallback stateCallback, + @NonNull final MapRenderer mapRenderer) { this.mapRenderer = mapRenderer; this.viewCallback = viewCallback; this.fileSource = FileSource.getInstance(context); @@ -243,14 +249,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; } @@ -316,7 +322,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; } @@ -441,7 +447,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[] {}; } @@ -456,7 +463,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[] {}; } @@ -471,14 +479,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; } @@ -487,14 +496,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; } @@ -516,6 +525,7 @@ final class NativeMapView { nativeRemoveAnnotations(ids); } + @NonNull public long[] queryPointAnnotations(RectF rect) { if (checkState("queryPointAnnotations")) { return new long[] {}; @@ -523,6 +533,7 @@ final class NativeMapView { return nativeQueryPointAnnotations(rect); } + @NonNull public long[] queryShapeAnnotations(RectF rectF) { if (checkState("queryShapeAnnotations")) { return new long[] {}; @@ -600,14 +611,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(); } @@ -615,7 +626,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(); } @@ -624,7 +636,7 @@ final class NativeMapView { return pointF; } - public LatLng latLngForPixel(PointF pixel) { + public LatLng latLngForPixel(@NonNull PointF pixel) { if (checkState("latLngForPixel")) { return new LatLng(); } @@ -638,14 +650,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; @@ -654,13 +666,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(); @@ -1007,7 +1020,7 @@ final class NativeMapView { } @Keep - protected void onSnapshotReady(Bitmap mapContent) { + protected void onSnapshotReady(@Nullable Bitmap mapContent) { if (checkState("OnSnapshotReady")) { return; } @@ -1038,12 +1051,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(); @@ -1062,13 +1077,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); @@ -1124,21 +1142,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); @@ -1173,15 +1196,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); @@ -1200,6 +1227,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(); @@ -1215,9 +1243,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); @@ -1230,18 +1260,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); @@ -1260,6 +1294,7 @@ final class NativeMapView { @Keep private native void nativeRemoveImage(String name); + @NonNull @Keep private native Bitmap nativeGetImage(String name); @@ -1272,17 +1307,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(); @@ -1339,7 +1377,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() { @@ -1377,6 +1415,7 @@ final class NativeMapView { this.sdf = sdf; } + @NonNull @Override protected List<Image> doInBackground(HashMap<String, Bitmap>... params) { HashMap<String, Bitmap> bitmapHashMap = params[0]; @@ -1406,7 +1445,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()])); @@ -1419,6 +1458,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 0e54002a17..cda59380a9 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/TelemetryDefinition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java index 3918c67129..ae1b210a00 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java @@ -1,5 +1,6 @@ package com.mapbox.mapboxsdk.maps; +import android.support.annotation.NonNull; import com.mapbox.mapboxsdk.offline.OfflineRegionDefinition; /** @@ -20,7 +21,7 @@ public interface TelemetryDefinition { * @param longitude the longitude value of the gesture focal point * @param zoom current zoom of the map */ - void onGestureInteraction(String eventType, double latitude, double longitude, double zoom); + void onGestureInteraction(@NonNull String eventType, double latitude, double longitude, double zoom); /** * Set the end-user selected state to participate or opt-out in telemetry collection. @@ -45,5 +46,5 @@ public interface TelemetryDefinition { * * @param offlineDefinition the offline region definition */ - void onCreateOfflineRegion(OfflineRegionDefinition offlineDefinition); + void onCreateOfflineRegion(@NonNull OfflineRegionDefinition offlineDefinition); } 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 3c039d3de2..14f5495a5b 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 @@ -31,9 +31,12 @@ final class Transform implements MapView.OnMapChangedListener { private final MarkerViewManager markerViewManager; private final Handler handler = new Handler(); + @Nullable private CameraPosition cameraPosition; + @Nullable private MapboxMap.CancelableCallback cameraCancelableCallback; + @Nullable private MapboxMap.OnCameraChangeListener onCameraChangeListener; private CameraChangeDispatcher cameraChangeDispatcher; @@ -58,6 +61,7 @@ final class Transform implements MapView.OnMapChangedListener { // Camera API // + @Nullable @UiThread public final CameraPosition getCameraPosition() { if (cameraPosition == null) { @@ -92,7 +96,8 @@ final class Transform implements MapView.OnMapChangedListener { } @UiThread - final void moveCamera(MapboxMap mapboxMap, CameraUpdate update, final MapboxMap.CancelableCallback callback) { + final void moveCamera(@NonNull MapboxMap mapboxMap, @NonNull CameraUpdate update, + @Nullable final MapboxMap.CancelableCallback callback) { CameraPosition cameraPosition = update.getCameraPosition(mapboxMap); if (isValidCameraPosition(cameraPosition)) { cancelTransitions(); @@ -112,8 +117,9 @@ final class Transform implements MapView.OnMapChangedListener { } @UiThread - final void easeCamera(MapboxMap mapboxMap, CameraUpdate update, int durationMs, boolean easingInterpolator, - final MapboxMap.CancelableCallback callback, boolean isDismissable) { + final void easeCamera(@NonNull MapboxMap mapboxMap, @NonNull CameraUpdate update, int durationMs, + boolean easingInterpolator, @Nullable final MapboxMap.CancelableCallback callback, + boolean isDismissable) { CameraPosition cameraPosition = update.getCameraPosition(mapboxMap); if (isValidCameraPosition(cameraPosition)) { cancelTransitions(); @@ -129,8 +135,8 @@ final class Transform implements MapView.OnMapChangedListener { } @UiThread - final void animateCamera(MapboxMap mapboxMap, CameraUpdate update, int durationMs, - final MapboxMap.CancelableCallback callback) { + final void animateCamera(@NonNull MapboxMap mapboxMap, @NonNull 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 32fc0589d1..f49481b50a 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 @@ -30,15 +30,21 @@ 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]; + @Nullable private AttributionDialogManager attributionDialogManager; + @NonNull private final View logoView; private final int[] logoMargins = new int[4]; @@ -65,6 +71,7 @@ public final class UiSettings { private boolean deselectMarkersOnTap = true; + @Nullable private PointF userProvidedFocalPoint; UiSettings(@NonNull Projection projection, @NonNull FocalPointChangeListener listener, @@ -87,7 +94,7 @@ public final class UiSettings { initialiseZoomControl(context); } - void onSaveInstanceState(Bundle outState) { + void onSaveInstanceState(@NonNull Bundle outState) { saveGestures(outState); saveCompass(outState); saveLogo(outState); @@ -144,7 +151,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(); @@ -185,13 +192,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 { @@ -219,7 +226,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()); @@ -228,7 +235,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]); @@ -544,7 +551,7 @@ public final class UiSettings { * * @param attributionDialogManager the manager class used for showing attribution */ - public void setAttributionDialogManager(@NonNull AttributionDialogManager attributionDialogManager) { + public void setAttributionDialogManager(@Nullable AttributionDialogManager attributionDialogManager) { this.attributionDialogManager = attributionDialogManager; } @@ -553,7 +560,7 @@ public final class UiSettings { * * @return the active manager class used for showing attribution */ - @NonNull + @Nullable public AttributionDialogManager getAttributionDialogManager() { return attributionDialogManager; } @@ -975,6 +982,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/MapRendererScheduler.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRendererScheduler.java index fd12cceee6..80403b575a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRendererScheduler.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRendererScheduler.java @@ -1,6 +1,7 @@ package com.mapbox.mapboxsdk.maps.renderer; import android.support.annotation.Keep; +import android.support.annotation.NonNull; /** * Can be used to schedule work on the map renderer @@ -12,6 +13,6 @@ public interface MapRendererScheduler { void requestRender(); @Keep - void queueEvent(Runnable runnable); + void queueEvent(@NonNull Runnable runnable); } 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 fb2c70cb73..a7eecfd958 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 @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; 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; @@ -32,21 +33,22 @@ public final class CompassView extends ImageView 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); } |