From 3d2cc051219f6b3a2f7ef108d780522fd194897f Mon Sep 17 00:00:00 2001 From: Tobrun Van Nuland Date: Wed, 1 Jun 2016 08:57:23 +0200 Subject: [android] #4929 - MyLocationView now requires less drawables to configure, reuses the foreground instead. --- .../java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java | 10 ++++++++++ .../com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java | 15 ++++++++++++++- .../src/main/res/values/strings.xml | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) 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 17593129e7..25f1a255e8 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 @@ -462,6 +462,16 @@ public class MapboxMapOptions implements Parcelable { return this; } + /** + * + * @param myLocationForegroundDrawable + * @return This + */ + public MapboxMapOptions myLocationForegroundDrawable(Drawable myLocationForegroundDrawable) { + this.myLocationForegroundDrawable = myLocationForegroundDrawable; + return this; + } + /** * @param myLocationBackgroundDrawable * @return This diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java index 20513224f8..a730160ff1 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java @@ -129,9 +129,22 @@ public class MyLocationView extends View { } public final void setForegroundDrawables(Drawable defaultDrawable, Drawable bearingDrawable) { - if (defaultDrawable == null || bearingDrawable == null) { + if (defaultDrawable == null) { return; } + + if (bearingDrawable == null) { + // if user only provided one resource + // use same for bearing mode + bearingDrawable = defaultDrawable; + } + + if (backgroundDrawable == null) { + // if the user didn't provide a background resource we will use the foreground resource instead, + // we need to create a new drawable to handle tinting correctly + backgroundDrawable = defaultDrawable.getConstantState().newDrawable(); + } + if (defaultDrawable.getIntrinsicWidth() != bearingDrawable.getIntrinsicWidth() || defaultDrawable.getIntrinsicHeight() != bearingDrawable.getIntrinsicHeight()) { throw new RuntimeException("The dimensions from location and bearing drawables should be match"); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml index a84035aa58..c8a9b3c9b0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml @@ -38,7 +38,7 @@ Double Map Activity Snapshot Activity User tracking mode - User location customization + User location drawable User location tint color User location toggle Custom Layer -- cgit v1.2.1