From ea0992b72f3d70eb474a8c120e776032bfc57d01 Mon Sep 17 00:00:00 2001 From: tobrunvannuland Date: Tue, 1 Sep 2015 08:36:53 +0200 Subject: [PATCH] Added info icon and map box logo --- .../com/mapbox/mapboxgl/views/MapView.java | 133 +++++++++++++++++- .../main/res/color/material_bg_selector.xml | 8 ++ .../ic_info_outline_black_24dp.png | Bin 0 -> 487 bytes .../ic_info_outline_black_24dp.png | Bin 0 -> 323 bytes .../ic_info_outline_black_24dp.png | Bin 0 -> 640 bytes .../ic_info_outline_black_24dp.png | Bin 0 -> 940 bytes .../res/drawable-xxhdpi/ic_logo_mapbox.png | Bin 0 -> 7059 bytes .../ic_info_outline_black_24dp.png | Bin 0 -> 1256 bytes .../src/main/res/values/arrays.xml | 13 ++ .../src/main/res/values/attrs.xml | 62 +++++++- .../src/main/res/values/strings.xml | 3 + 11 files changed, 215 insertions(+), 4 deletions(-) create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/color/material_bg_selector.xml create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_info_outline_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_info_outline_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_info_outline_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/ic_info_outline_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/ic_logo_mapbox.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/ic_info_outline_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/values/arrays.xml diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java index 0c3429e00..7bb9f4327 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java @@ -1,16 +1,22 @@ package com.mapbox.mapboxgl.views; import android.app.ActivityManager; +import android.app.AlertDialog; +import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.content.res.ColorStateList; import android.content.res.TypedArray; +import android.content.res.XmlResourceParser; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.PointF; import android.graphics.RectF; +import android.graphics.drawable.Drawable; import android.hardware.GeomagneticField; import android.hardware.Sensor; import android.hardware.SensorEvent; @@ -19,10 +25,12 @@ import android.hardware.SensorManager; import android.location.Location; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; +import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v4.view.GestureDetectorCompat; import android.support.v4.view.ScaleGestureDetectorCompat; import android.text.TextUtils; @@ -37,6 +45,8 @@ import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.ViewConfiguration; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ZoomButtonsController; @@ -94,6 +104,10 @@ public class MapView extends FrameLayout implements LocationListener { private static final String STATE_MY_LOCATION_ENABLED = "myLocationEnabled"; private static final String STATE_USER_LOCATION_TRACKING_MODE = "userLocationTrackingMode"; + // Used for positioning views + private static final float DIMENSION_SIXTEEN_DP = 16f; + private static final float DIMENSION_TEN_DP = 10f; + /** * Every annotation that has been added to the map. */ @@ -155,6 +169,12 @@ public class MapView extends FrameLayout implements LocationListener { private float mCompassBearing; private boolean mCompassValid = false; + // Used for MapboxLogo + private ImageView mLogoView; + + // Used for attributions control + private ImageView mAttributionsView; + // Used for map toggle mode private long t0 = new Date().getTime(); @@ -305,6 +325,8 @@ public class MapView extends FrameLayout implements LocationListener { // Get the screen's density mScreenDensity = context.getResources().getDisplayMetrics().density; + int tenDp = (int)(10 * mScreenDensity); + int sixteenDp = (int)(16 * mScreenDensity); // Get the cache path String cachePath = context.getCacheDir().getAbsolutePath(); @@ -372,13 +394,30 @@ public class MapView extends FrameLayout implements LocationListener { mCompassView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.compass)); mCompassView.setContentDescription(getResources().getString(R.string.compassContentDescription)); LayoutParams lp = new FrameLayout.LayoutParams((int)(48 * mScreenDensity), (int)(48 * mScreenDensity)); - lp.gravity = Gravity.TOP | Gravity.END; - int tenDp = (int)(10 * mScreenDensity); - lp.setMargins(tenDp, tenDp, tenDp, tenDp); mCompassView.setLayoutParams(lp); addView(mCompassView); mCompassView.setOnClickListener(new CompassOnClickListener()); + // Setup Mapbox logo + mLogoView = new ImageView(mContext); + mLogoView.setImageDrawable(ContextCompat.getDrawable(mContext, R.drawable.ic_logo_mapbox)); + mLogoView.setContentDescription(getResources().getString(R.string.mapboxIconContentDescription)); + LayoutParams logoParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + mLogoView.setLayoutParams(logoParams); + addView(mLogoView); + + // Setup Attributions control + mAttributionsView = new ImageView(mContext); + Drawable attrDrawable = ContextCompat.getDrawable(mContext, R.drawable.ic_info_outline_black_24dp); + attrDrawable = DrawableCompat.wrap(attrDrawable); + DrawableCompat.setTintList(attrDrawable, getResources().getColorStateList(R.color.material_bg_selector, mContext.getTheme())); + mAttributionsView.setImageDrawable(attrDrawable); + mAttributionsView.setContentDescription(getResources().getString(R.string.attributionsIconContentDescription)); + LayoutParams attrParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + mAttributionsView.setLayoutParams(attrParams); + addView(mAttributionsView); + mAttributionsView.setOnClickListener(new AttributionOnClickListener()); + // Setup Support For Listener Tracking // MapView's internal listener is setup in onCreate() mOnMapChangedListener = new ArrayList<>(); @@ -411,7 +450,29 @@ public class MapView extends FrameLayout implements LocationListener { } setStyleClasses(styleClasses); } + + // Compass setCompassEnabled(typedArray.getBoolean(R.styleable.MapView_compassEnabled, true)); + setCompassGravity(typedArray.getInt(R.styleable.MapView_compassGravity, Gravity.TOP | Gravity.END)); + setWidgetMargins(mCompassView, typedArray.getDimension(R.styleable.MapView_compassMarginLeft, DIMENSION_TEN_DP) + , typedArray.getDimension(R.styleable.MapView_compassMarginTop, DIMENSION_TEN_DP) + , typedArray.getDimension(R.styleable.MapView_compassMarginRight, DIMENSION_TEN_DP) + , typedArray.getDimension(R.styleable.MapView_compassMarginBottom, DIMENSION_TEN_DP)); + + // Logo + setLogoGravity(typedArray.getInt(R.styleable.MapView_logoGravity, Gravity.BOTTOM | Gravity.START)); + setWidgetMargins(mLogoView, typedArray.getDimension(R.styleable.MapView_logoMarginLeft, DIMENSION_SIXTEEN_DP) + , typedArray.getDimension(R.styleable.MapView_logoMarginTop, DIMENSION_SIXTEEN_DP) + , typedArray.getDimension(R.styleable.MapView_logoMarginRight, DIMENSION_SIXTEEN_DP) + , typedArray.getDimension(R.styleable.MapView_logoMarginBottom, DIMENSION_SIXTEEN_DP)); + + // Attribution + setAttributionGravity(typedArray.getInt(R.styleable.MapView_attributionGravity, Gravity.BOTTOM | Gravity.END)); + setWidgetMargins(mAttributionsView, typedArray.getDimension(R.styleable.MapView_attributionMarginLeft, DIMENSION_SIXTEEN_DP) + , typedArray.getDimension(R.styleable.MapView_attributionMarginTop, DIMENSION_SIXTEEN_DP) + , typedArray.getDimension(R.styleable.MapView_attributionMarginRight, DIMENSION_SIXTEEN_DP) + , typedArray.getDimension(R.styleable.MapView_attributionMarginBottom, DIMENSION_SIXTEEN_DP)); + setMyLocationEnabled(typedArray.getBoolean(R.styleable.MapView_myLocationEnabled, false)); } finally { typedArray.recycle(); @@ -1827,6 +1888,48 @@ public class MapView extends FrameLayout implements LocationListener { updateMap(MapChange.MapChangeNullChange); } + public void setCompassGravity(int gravity){ + setWidgetGravity(mCompassView, gravity); + } + + public void setCompassMargins(int left, int top, int right, int bottom){ + setWidgetMargins(mCompassView, left, top, right, bottom); + } + + public void setLogoGravity(int gravity){ + setWidgetGravity(mLogoView, gravity); + } + + public void setLogoMargins(int left, int top, int right, int bottom){ + setWidgetMargins(mLogoView, left, top, right, bottom); + } + + public void setAttributionGravity(int gravity){ + setWidgetGravity(mAttributionsView, gravity); + } + + public void setAttributionMargins(int left, int top, int right, int bottom) { + setWidgetMargins(mAttributionsView, left, top, right, bottom); + } + + private void setWidgetGravity(@NonNull final View view, int gravity){ + LayoutParams layoutParams = (LayoutParams) view.getLayoutParams(); + layoutParams.gravity = gravity; + view.setLayoutParams(layoutParams); + } + + private void setWidgetMargins(@NonNull final View view, int left, int top, int right, int bottom){ + LayoutParams layoutParams = (LayoutParams) view.getLayoutParams(); + layoutParams.setMargins(left,top,right,bottom); + view.setLayoutParams(layoutParams); + } + + private void setWidgetMargins(@NonNull final View view, float leftDp, float topDp, float rightDp, float bottomDp){ + LayoutParams layoutParams = (LayoutParams) view.getLayoutParams(); + layoutParams.setMargins((int)(leftDp*mScreenDensity),(int)(topDp*mScreenDensity),(int)(rightDp*mScreenDensity),(int)(bottomDp*mScreenDensity)); + view.setLayoutParams(layoutParams); + } + // This class handles sensor updates to calculate compass bearing private class CompassListener implements SensorEventListener { @@ -1881,6 +1984,30 @@ public class MapView extends FrameLayout implements LocationListener { } + private static class AttributionOnClickListener implements View.OnClickListener, DialogInterface.OnClickListener { + + // Called when someone presses the attribution icon + @Override + public void onClick(View v) { + Context context = v.getContext(); + String[] items = context.getResources().getStringArray(R.array.attribution_names); + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(R.string.attributionsDialogTitle); + builder.setAdapter(new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, items), this); + builder.show(); + } + + // Called when someone selects an attribution + @Override + public void onClick(DialogInterface dialog, int which) { + Context context = ((Dialog)dialog).getContext(); + String[]links = context.getResources().getStringArray(R.array.attribution_links); + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(links[which])); + context.startActivity(intent); + } + } + /** * LOST's LocationListener Callback * @param location New Location diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/color/material_bg_selector.xml b/android/java/MapboxGLAndroidSDK/src/main/res/color/material_bg_selector.xml new file mode 100644 index 000000000..0da674ac7 --- /dev/null +++ b/android/java/MapboxGLAndroidSDK/src/main/res/color/material_bg_selector.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_info_outline_black_24dp.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_info_outline_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5ab06e19d61515cf3a7395db43a81bb30a8203 GIT binary patch literal 487 zcmVS-P=?%O3jv@aJa6HGW<0ceyC!`rEoc~?j{U=`ic|b z9N*QPsMv*+MQv@1i8kR%)UIh1`=XoCqqIYBOKErvea{GWZ!y>;D~RpT`=%tUi9cM8 zjMJd-5IZXpx*;AQpQG66NVp4e3Hh{Q=T<@);yl@>u@F125nkF002ovPDHLkV1kFY-~<2w literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_info_outline_black_24dp.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_info_outline_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c9fe0eb8457013fbfa6e2efea61fca70bb9303 GIT binary patch literal 323 zcmV-J0lfZ+P)&s5ci5fY}sT-yed|rRg0)~VyRe(RxP5| ziKSu?+iDTDUGbuL5L2~?+LgFdoQk=|C}Pxj7RQRtyXcJ~MwepHsvL@iJ?s4SCH8$Y z6AQgYt#Ro~-1uQ)CSvZwj!tLSm1hyxCe}LeCL$stVz6(6)`@$smX==JIoA4R{{X3C VfQx`Hg^K_H002ovPDHLkV1oM>kN^Mx literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_info_outline_black_24dp.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_info_outline_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b706f0d06a9a1e5e2f6606c01e84094ee6a99b42 GIT binary patch literal 640 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 literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/ic_info_outline_black_24dp.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/ic_info_outline_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e2a03a4bc540419ce1165d5dedd8d5345fdec2 GIT binary patch literal 1256 zcmVP)W$LQv#I8j8T_{yf~=m$~;IXzu5?eh%l+bI*O5LnIQ3L?S-g zNEKIT<0XBJGshx}%rQL6n2^)65BytPpur(aAq3mzkx5L*!vp z0a@Ola>x)hq%a~$J)clM5drmH23z#q<|xU<0`*qKPGo7Si~n z%wqBU&0hSlj{%E?RDuuU7MJcXB=Jj%b`&x_e(Xp;ExUAT@Y|(jm(qjWZ(B;_Uor&Y z6!R#Nv*chaGsx+GPf(5^TbQOC&z>U}Plh0!MlPf-JUW9CsUc{WQ6klNkmN0L=W$Hb zI`=E``6_{H*O2>uGL!}iknh%)aH)U^vHJHyC=I|j;!5~HKCWcN1R5Z;2B2BgU%-W! zczBp#L#PcDi)Yo>;Taa!Y@Ptv;<}7l4r)8NeQGlwNF& zYb9ky8`z|cGKQ@=tt4)=frR*F&DNq;5;NLBOdDlk)i+CZzQKZh$R zK8n3)UuX^N7uDk=aj8xWGC(Sn1_~Jx)mdCiFf4{?52b-lQTv8C9#o@5E)leAD3OzR z)Fn^Gaf%@QAdedG1kbj}b8XCXgrFSb3rcL@n*sbhFEP*Qfd2Kr_;5}_cz_aF;&K3M ze+ebhM9$XHgOZ`06n-hB6D318YwImEMS(?`<%O>vfHEvXL&vNpLe#!|zDLp9b&_k9T z*x5;~c-Pf0-68_APCn*}yr+}vWZ1(d62yp+WD|SHaD&H;+SWI+mO!0l8Wm6`sU`&F zbfE&s6E+i?YKBohW{8u7EWu?ypnS+US>hOx&jq=;y2>EuNMckT2YAG1l*`QUkZ)PT z3X$L_jr@gjkUknXOq>;|goD)5%rkl!W0nOLm}QJ!o^qco2Ph^Ii9{k1-~0zqnGDmx SqDLYC0000 literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/values/arrays.xml b/android/java/MapboxGLAndroidSDK/src/main/res/values/arrays.xml new file mode 100644 index 000000000..3e937722c --- /dev/null +++ b/android/java/MapboxGLAndroidSDK/src/main/res/values/arrays.xml @@ -0,0 +1,13 @@ + + + + © Mapbox + © OpenStreetMap + Improve this map + + + https://www.mapbox.com/about/maps/ + http://www.openstreetmap.org/about/ + https://www.mapbox.com/map-feedback + + \ No newline at end of file diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/values/attrs.xml b/android/java/MapboxGLAndroidSDK/src/main/res/values/attrs.xml index 7148429db..901044375 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/res/values/attrs.xml +++ b/android/java/MapboxGLAndroidSDK/src/main/res/values/attrs.xml @@ -11,7 +11,67 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml b/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml index ff91a160d..455fdb026 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml +++ b/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml @@ -4,4 +4,7 @@ Title Description Address + Attribution icon. Click to show attribution dialog. + Mapbox for Android + Mapbox logo.