diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2016-12-21 21:06:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-21 21:06:26 +0100 |
commit | dff42cac689031a250e59b3f435da5f8c9524bec (patch) | |
tree | 0cd3e049a5c1c9f3b38645ce0db2ac685e5b4596 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils | |
parent | 8a0dee6ebd000a0e95a16433a34dc243d430ccd6 (diff) | |
download | qtlocation-mapboxgl-dff42cac689031a250e59b3f435da5f8c9524bec.tar.gz |
[android] - harden MapboxMapOptions, extract duplicate fragment logic, fixup DoubleMapActivity (#7507)
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/MapFragmentUtils.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/MapFragmentUtils.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/MapFragmentUtils.java new file mode 100644 index 0000000000..f810d6231d --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/MapFragmentUtils.java @@ -0,0 +1,56 @@ +package com.mapbox.mapboxsdk.utils; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.support.v4.content.ContextCompat; + +import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.constants.MapboxConstants; +import com.mapbox.mapboxsdk.maps.MapboxMapOptions; + +/** + * MapFragment utility class. + * <p> + * Used to extract duplicate code between {@link com.mapbox.mapboxsdk.maps.MapFragment} and + * {@link com.mapbox.mapboxsdk.maps.SupportMapFragment}. + * </p> + */ +public class MapFragmentUtils { + + public static Bundle createFragmentArgs(MapboxMapOptions options) { + Bundle bundle = new Bundle(); + bundle.putParcelable(MapboxConstants.FRAG_ARG_MAPBOXMAPOPTIONS, options); + return bundle; + } + + public static MapboxMapOptions resolveArgs(Context context, Bundle args) { + MapboxMapOptions options; + if (args != null && args.containsKey(MapboxConstants.FRAG_ARG_MAPBOXMAPOPTIONS)) { + options = args.getParcelable(MapboxConstants.FRAG_ARG_MAPBOXMAPOPTIONS); + } else { + // load default options + options = MapboxMapOptions.createFromAttributes(context, null); + } + options = loadDefaultMyLocationViewDrawables(context, options); + return options; + } + + private static MapboxMapOptions loadDefaultMyLocationViewDrawables(Context context, MapboxMapOptions options) { + Drawable foregroundDrawable = options.getMyLocationForegroundDrawable(); + Drawable foregroundBearingDrawable = options.getMyLocationForegroundBearingDrawable(); + if (foregroundDrawable == null || foregroundBearingDrawable == null) { + if (foregroundDrawable == null) { + foregroundDrawable = ContextCompat.getDrawable(context, R.drawable.mapbox_mylocation_icon_default); + } + if (foregroundBearingDrawable == null) { + foregroundBearingDrawable = ContextCompat.getDrawable(context, R.drawable.mapbox_mylocation_icon_bearing); + } + options.myLocationForegroundDrawables(foregroundDrawable, foregroundBearingDrawable); + } + if (options.getMyLocationBackgroundDrawable() == null) { + options.myLocationBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.mapbox_mylocation_bg_shape)); + } + return options; + } +} |