diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2016-12-06 13:46:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-06 13:46:49 +0100 |
commit | 9a9e7978db67276cfaab97e00f2b56eeb0222b12 (patch) | |
tree | 0da54e64117a64195ee46060e01d270a86c1e45d /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java | |
parent | 890b681b182f7d538237604307da487f3619d1b1 (diff) | |
download | qtlocation-mapboxgl-9a9e7978db67276cfaab97e00f2b56eeb0222b12.tar.gz |
[android] - Refactor dependencies, introduce focused components (#7189)
* [android] - refactor dependencies
* ignore tests
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java | 161 |
1 files changed, 90 insertions, 71 deletions
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 d6ad80d11e..1523fcefa7 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 @@ -1,23 +1,32 @@ package com.mapbox.mapboxsdk.maps; +import android.graphics.Color; import android.graphics.PointF; import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.UiThread; +import android.support.v4.content.ContextCompat; import android.view.Gravity; import android.view.View; +import android.widget.FrameLayout; +import android.widget.ImageView; + +import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.maps.widgets.CompassView; +import com.mapbox.mapboxsdk.utils.ColorUtils; /** * Settings for the user interface of a MapboxMap. To obtain this interface, call getUiSettings(). */ -public class UiSettings { - - private MapView mapView; +public final class UiSettings { - private CompassViewSettings compassSettings; - private ViewSettings logoSettings; - private ViewSettings attributionSettings; + private final FocalPointChangeListener focalPointChangeListener; + private final Projection projection; + private final CompassView compassView; + private final ImageView attributionsView; + private final View logoView; + private float pixelRatio; private boolean rotateGesturesEnabled = true; private boolean rotateGestureChangeAllowed = true; @@ -35,13 +44,17 @@ public class UiSettings { private boolean deselectMarkersOnTap = true; - private PointF focalPoint; + private PointF userProvidedFocalPoint; - UiSettings(@NonNull MapView mapView) { - this.mapView = mapView; - this.compassSettings = new CompassViewSettings(); - this.logoSettings = new ViewSettings(); - this.attributionSettings = new ViewSettings(); + UiSettings(@NonNull Projection projection, @NonNull FocalPointChangeListener listener, @NonNull CompassView compassView, @NonNull ImageView attributionsView, @NonNull View logoView) { + this.projection = projection; + this.focalPointChangeListener = listener; + this.compassView = compassView; + this.attributionsView = attributionsView; + this.logoView = logoView; + if(logoView.getResources()!=null) { + this.pixelRatio = logoView.getResources().getDisplayMetrics().density; + } } /** @@ -56,8 +69,7 @@ public class UiSettings { * @param compassEnabled True to enable the compass; false to disable the compass. */ public void setCompassEnabled(boolean compassEnabled) { - compassSettings.setEnabled(compassEnabled); - mapView.setCompassEnabled(compassEnabled); + compassView.setEnabled(compassEnabled); } /** @@ -66,7 +78,7 @@ public class UiSettings { * @return True if the compass is enabled; false if the compass is disabled. */ public boolean isCompassEnabled() { - return compassSettings.isEnabled(); + return compassView.isEnabled(); } /** @@ -81,8 +93,7 @@ public class UiSettings { */ @UiThread public void setCompassGravity(int gravity) { - compassSettings.setGravity(gravity); - mapView.setCompassGravity(gravity); + setWidgetGravity(compassView, gravity); } /** @@ -94,8 +105,7 @@ public class UiSettings { * @param compassFadeFacingNorth True to enable the fading animation; false to disable it */ public void setCompassFadeFacingNorth(boolean compassFadeFacingNorth) { - compassSettings.setFadeFacingNorth(compassFadeFacingNorth); - mapView.setCompassFadeFacingNorth(compassFadeFacingNorth); + compassView.fadeCompassViewFacingNorth(compassFadeFacingNorth); } /** @@ -103,8 +113,8 @@ public class UiSettings { * * @return True if the compass will fade, false if it remains visible */ - public boolean isCompassFadeWhenFacingNorth(){ - return compassSettings.isFadeFacingNorth(); + public boolean isCompassFadeWhenFacingNorth() { + return compassView.isFadeCompassViewFacingNorth(); } /** @@ -113,7 +123,7 @@ public class UiSettings { * @return The gravity */ public int getCompassGravity() { - return compassSettings.getGravity(); + return ((FrameLayout.LayoutParams) compassView.getLayoutParams()).gravity; } /** @@ -127,8 +137,7 @@ public class UiSettings { */ @UiThread public void setCompassMargins(int left, int top, int right, int bottom) { - compassSettings.setMargins(new int[]{left, top, right, bottom}); - mapView.setCompassMargins(left, top, right, bottom); + setWidgetMargins(compassView, left, top, right, bottom); } /** @@ -137,7 +146,7 @@ public class UiSettings { * @return The left margin in pixels */ public int getCompassMarginLeft() { - return compassSettings.getMargins()[0]; + return ((FrameLayout.LayoutParams) compassView.getLayoutParams()).leftMargin; } /** @@ -146,7 +155,7 @@ public class UiSettings { * @return The top margin in pixels */ public int getCompassMarginTop() { - return compassSettings.getMargins()[1]; + return ((FrameLayout.LayoutParams) compassView.getLayoutParams()).topMargin; } /** @@ -155,7 +164,7 @@ public class UiSettings { * @return The right margin in pixels */ public int getCompassMarginRight() { - return compassSettings.getMargins()[2]; + return ((FrameLayout.LayoutParams) compassView.getLayoutParams()).rightMargin; } /** @@ -164,7 +173,7 @@ public class UiSettings { * @return The bottom margin in pixels */ public int getCompassMarginBottom() { - return compassSettings.getMargins()[3]; + return ((FrameLayout.LayoutParams) compassView.getLayoutParams()).bottomMargin; } /** @@ -176,8 +185,7 @@ public class UiSettings { * @param enabled True to enable the logo; false to disable the logo. */ public void setLogoEnabled(boolean enabled) { - logoSettings.setEnabled(enabled); - mapView.setLogoEnabled(enabled); + logoView.setVisibility(enabled ? View.VISIBLE : View.GONE); } /** @@ -186,7 +194,7 @@ public class UiSettings { * @return True if the logo is enabled; false if the logo is disabled. */ public boolean isLogoEnabled() { - return logoSettings.isEnabled(); + return logoView.getVisibility() == View.VISIBLE; } /** @@ -200,8 +208,7 @@ public class UiSettings { * @see Gravity */ public void setLogoGravity(int gravity) { - logoSettings.setGravity(gravity); - mapView.setLogoGravity(gravity); + setWidgetGravity(logoView, gravity); } /** @@ -210,7 +217,7 @@ public class UiSettings { * @return The gravity */ public int getLogoGravity() { - return logoSettings.getGravity(); + return ((FrameLayout.LayoutParams) logoView.getLayoutParams()).gravity; } /** @@ -223,8 +230,7 @@ public class UiSettings { * @param bottom The bottom margin in pixels. */ public void setLogoMargins(int left, int top, int right, int bottom) { - logoSettings.setMargins(new int[]{left, top, right, bottom}); - mapView.setLogoMargins(left, top, right, bottom); + setWidgetMargins(logoView, left, top, right, bottom); } /** @@ -233,7 +239,7 @@ public class UiSettings { * @return The left margin in pixels */ public int getLogoMarginLeft() { - return logoSettings.getMargins()[0]; + return ((FrameLayout.LayoutParams) logoView.getLayoutParams()).leftMargin; } /** @@ -242,7 +248,7 @@ public class UiSettings { * @return The top margin in pixels */ public int getLogoMarginTop() { - return logoSettings.getMargins()[1]; + return ((FrameLayout.LayoutParams) logoView.getLayoutParams()).topMargin; } /** @@ -251,7 +257,7 @@ public class UiSettings { * @return The right margin in pixels */ public int getLogoMarginRight() { - return logoSettings.getMargins()[2]; + return ((FrameLayout.LayoutParams) logoView.getLayoutParams()).rightMargin; } /** @@ -260,7 +266,7 @@ public class UiSettings { * @return The bottom margin in pixels */ public int getLogoMarginBottom() { - return logoSettings.getMargins()[3]; + return ((FrameLayout.LayoutParams) logoView.getLayoutParams()).bottomMargin; } /** @@ -272,8 +278,7 @@ public class UiSettings { * @param enabled True to enable the attribution; false to disable the attribution. */ public void setAttributionEnabled(boolean enabled) { - attributionSettings.setEnabled(enabled); - mapView.setAttributionEnabled(enabled ? View.VISIBLE : View.GONE); + attributionsView.setVisibility(enabled ? View.VISIBLE : View.GONE); } /** @@ -282,7 +287,7 @@ public class UiSettings { * @return True if the attribution is enabled; false if the attribution is disabled. */ public boolean isAttributionEnabled() { - return attributionSettings.isEnabled(); + return attributionsView.getVisibility() == View.VISIBLE; } /** @@ -295,8 +300,7 @@ public class UiSettings { * @see Gravity */ public void setAttributionGravity(int gravity) { - attributionSettings.setGravity(gravity); - mapView.setAttributionGravity(gravity); + setWidgetGravity(attributionsView, gravity); } /** @@ -305,7 +309,7 @@ public class UiSettings { * @return The gravity */ public int getAttributionGravity() { - return attributionSettings.getGravity(); + return ((FrameLayout.LayoutParams) attributionsView.getLayoutParams()).gravity; } /** @@ -317,8 +321,7 @@ public class UiSettings { * @param bottom The bottom margin in pixels. */ public void setAttributionMargins(int left, int top, int right, int bottom) { - attributionSettings.setMargins(new int[]{left, top, right, bottom}); - mapView.setAttributionMargins(left, top, right, bottom); + setWidgetMargins(attributionsView, left, top, right, bottom); } /** @@ -330,17 +333,12 @@ public class UiSettings { * @param tintColor Color to tint the attribution. */ public void setAttributionTintColor(@ColorInt int tintColor) { - attributionSettings.setTintColor(tintColor); - mapView.setAtttibutionTintColor(tintColor); - } - - /** - * Returns the tint color value of the attribution view. - * - * @return The tint color - */ - public int getAttributionTintColor() { - return attributionSettings.getTintColor(); + // Check that the tint color being passed in isn't transparent. + if (Color.alpha(tintColor) == 0) { + ColorUtils.setTintList(attributionsView, ContextCompat.getColor(attributionsView.getContext(), R.color.mapbox_blue)); + } else { + ColorUtils.setTintList(attributionsView, tintColor); + } } /** @@ -349,7 +347,7 @@ public class UiSettings { * @return The left margin in pixels */ public int getAttributionMarginLeft() { - return attributionSettings.getMargins()[0]; + return ((FrameLayout.LayoutParams) attributionsView.getLayoutParams()).leftMargin; } /** @@ -358,7 +356,7 @@ public class UiSettings { * @return The top margin in pixels */ public int getAttributionMarginTop() { - return attributionSettings.getMargins()[1]; + return ((FrameLayout.LayoutParams) attributionsView.getLayoutParams()).topMargin; } /** @@ -367,7 +365,7 @@ public class UiSettings { * @return The right margin in pixels */ public int getAttributionMarginRight() { - return attributionSettings.getMargins()[2]; + return ((FrameLayout.LayoutParams) attributionsView.getLayoutParams()).rightMargin; } /** @@ -376,7 +374,7 @@ public class UiSettings { * @return The bottom margin in pixels */ public int getAttributionMarginBottom() { - return attributionSettings.getMargins()[3]; + return ((FrameLayout.LayoutParams) attributionsView.getLayoutParams()).bottomMargin; } /** @@ -593,8 +591,8 @@ public class UiSettings { * @param focalPoint the focal point to be used. */ public void setFocalPoint(@Nullable PointF focalPoint) { - this.focalPoint = focalPoint; - mapView.setFocalPoint(focalPoint); + this.userProvidedFocalPoint = focalPoint; + focalPointChangeListener.onFocalPointChanged(focalPoint); } /** @@ -603,7 +601,7 @@ public class UiSettings { * @return The focal point */ public PointF getFocalPoint() { - return focalPoint; + return userProvidedFocalPoint; } /** @@ -612,7 +610,7 @@ public class UiSettings { * @return height in pixels */ public float getHeight() { - return mapView.getMeasuredHeight(); + return projection.getHeight(); } /** @@ -621,15 +619,36 @@ public class UiSettings { * @return widht in pixels */ public float getWidth() { - return mapView.getMeasuredWidth(); + return projection.getWidth(); + } + + float getPixelRatio() { + return pixelRatio; } /** * Invalidates the ViewSettings instances shown on top of the MapView */ public void invalidate() { - mapView.setLogoMargins(getLogoMarginLeft(), getLogoMarginTop(), getLogoMarginRight(), getLogoMarginBottom()); - mapView.setCompassMargins(getCompassMarginLeft(), getCompassMarginTop(), getCompassMarginRight(), getCompassMarginBottom()); - mapView.setAttributionMargins(getAttributionMarginLeft(), getAttributionMarginTop(), getAttributionMarginRight(), getAttributionMarginBottom()); + setLogoMargins(getLogoMarginLeft(), getLogoMarginTop(), getLogoMarginRight(), getLogoMarginBottom()); + setCompassMargins(getCompassMarginLeft(), getCompassMarginTop(), getCompassMarginRight(), getCompassMarginBottom()); + setAttributionMargins(getAttributionMarginLeft(), getAttributionMarginTop(), getAttributionMarginRight(), getAttributionMarginBottom()); + } + + private void setWidgetGravity(@NonNull final View view, int gravity) { + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) view.getLayoutParams(); + layoutParams.gravity = gravity; + view.setLayoutParams(layoutParams); + } + + private void setWidgetMargins(@NonNull final View view, int left, int top, int right, int bottom) { + int contentPadding[] = projection.getContentPadding(); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) view.getLayoutParams(); + left += contentPadding[0]; + top += contentPadding[1]; + right += contentPadding[2]; + bottom += contentPadding[3]; + layoutParams.setMargins(left, top, right, bottom); + view.setLayoutParams(layoutParams); } } |