summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-12-06 13:46:49 +0100
committerGitHub <noreply@github.com>2016-12-06 13:46:49 +0100
commit9a9e7978db67276cfaab97e00f2b56eeb0222b12 (patch)
tree0da54e64117a64195ee46060e01d270a86c1e45d /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java
parent890b681b182f7d538237604307da487f3619d1b1 (diff)
downloadqtlocation-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.java161
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);
}
}