From 0d899df9ddc9a7a9a8bfbac2c4b077ce26da64e9 Mon Sep 17 00:00:00 2001 From: "Justin R. Miller" Date: Tue, 8 Sep 2015 18:03:10 -0700 Subject: [PATCH 1/9] fixes #1675: abstract annotation tile refresh check/render; trigger post-sprite/sprite store load --- src/mbgl/map/annotation.hpp | 1 + src/mbgl/map/map_context.cpp | 10 ++++++++-- src/mbgl/map/map_context.hpp | 2 ++ src/mbgl/style/style.cpp | 4 ++++ src/mbgl/style/style.hpp | 1 + test/style/resource_loading.cpp | 4 ++++ 6 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/mbgl/map/annotation.hpp b/src/mbgl/map/annotation.hpp index 745fc779c..5adec162f 100644 --- a/src/mbgl/map/annotation.hpp +++ b/src/mbgl/map/annotation.hpp @@ -52,6 +52,7 @@ public: ~AnnotationManager(); void markStaleTiles(std::unordered_set); + size_t getStaleTileCount() const { return staleTiles.size(); } std::unordered_set resetStaleTiles(); void setDefaultPointAnnotationSymbol(const std::string& symbol); diff --git a/src/mbgl/map/map_context.cpp b/src/mbgl/map/map_context.cpp index 94aedb46d..0ebcd73f8 100644 --- a/src/mbgl/map/map_context.cpp +++ b/src/mbgl/map/map_context.cpp @@ -142,9 +142,11 @@ void MapContext::loadStyleJSON(const std::string& json, const std::string& base) updateFlags |= Update::DefaultTransition | Update::Classes | Update::Zoom; asyncUpdate->send(); +} - auto staleTiles = data.getAnnotationManager()->resetStaleTiles(); - if (!staleTiles.empty()) { +void MapContext::updateAnnotationTilesIfNeeded() { + if (data.getAnnotationManager()->getStaleTileCount()) { + auto staleTiles = data.getAnnotationManager()->resetStaleTiles(); updateAnnotationTiles(staleTiles); } } @@ -417,4 +419,8 @@ void MapContext::onResourceLoadingFailed(std::exception_ptr error) { } } +void MapContext::onSpriteStoreLoaded() { + updateAnnotationTilesIfNeeded(); +} + } diff --git a/src/mbgl/map/map_context.hpp b/src/mbgl/map/map_context.hpp index f1bfb01e4..449a0f1d1 100644 --- a/src/mbgl/map/map_context.hpp +++ b/src/mbgl/map/map_context.hpp @@ -54,6 +54,7 @@ public: bool isLoaded() const; double getTopOffsetPixelsForAnnotationSymbol(const std::string& symbol); + void updateAnnotationTilesIfNeeded(); void updateAnnotationTiles(const std::unordered_set&); void setSourceTileCacheSize(size_t size); @@ -66,6 +67,7 @@ public: // Style::Observer implementation. void onTileDataChanged() override; void onResourceLoadingFailed(std::exception_ptr error) override; + void onSpriteStoreLoaded() override; private: // Update the state indicated by the accumulated Update flags, then render. diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp index 768621530..d4c9bd4e5 100644 --- a/src/mbgl/style/style.cpp +++ b/src/mbgl/style/style.cpp @@ -190,6 +190,10 @@ void Style::onSpriteLoaded(const Sprites& sprites) { // Add all sprite images to the SpriteStore object spriteStore->setSprites(sprites); + if (observer) { + observer->onSpriteStoreLoaded(); + } + shouldReparsePartialTiles = true; emitTileDataChanged(); } diff --git a/src/mbgl/style/style.hpp b/src/mbgl/style/style.hpp index cbc0ee2db..3f9696ffb 100644 --- a/src/mbgl/style/style.hpp +++ b/src/mbgl/style/style.hpp @@ -39,6 +39,7 @@ public: virtual ~Observer() = default; virtual void onTileDataChanged() = 0; + virtual void onSpriteStoreLoaded() = 0; virtual void onResourceLoadingFailed(std::exception_ptr error) = 0; }; diff --git a/test/style/resource_loading.cpp b/test/style/resource_loading.cpp index 056243458..5ed09065a 100644 --- a/test/style/resource_loading.cpp +++ b/test/style/resource_loading.cpp @@ -63,6 +63,10 @@ public: callback_(error); } + void onSpriteStoreLoaded() override { + // no-op + } + private: MapData data_; Transform transform_; From ea0992b72f3d70eb474a8c120e776032bfc57d01 Mon Sep 17 00:00:00 2001 From: tobrunvannuland Date: Tue, 1 Sep 2015 08:36:53 +0200 Subject: [PATCH 2/9] 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. From 75aefb7f9d98beb5c9d59587d4e47e377fda9b2d Mon Sep 17 00:00:00 2001 From: tobrunvannuland Date: Wed, 2 Sep 2015 20:49:54 +0200 Subject: [PATCH 3/9] Added save/restore state for CompassView, LogoView and AttributionView --- .../com/mapbox/mapboxgl/views/MapView.java | 66 ++++++++++++++++++- 1 file changed, 63 insertions(+), 3 deletions(-) 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 7bb9f4327..1dee4e217 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 @@ -100,9 +100,24 @@ public class MapView extends FrameLayout implements LocationListener { private static final String STATE_ACCESS_TOKEN = "accessToken"; private static final String STATE_STYLE_CLASSES = "styleClasses"; private static final String STATE_DEFAULT_TRANSITION_DURATION = "defaultTransitionDuration"; - private static final String STATE_COMPASS_ENABLED = "compassEnabled"; private static final String STATE_MY_LOCATION_ENABLED = "myLocationEnabled"; private static final String STATE_USER_LOCATION_TRACKING_MODE = "userLocationTrackingMode"; + private static final String STATE_COMPASS_ENABLED = "compassEnabled"; + private static final String STATE_COMPASS_GRAVITY = "compassGravity"; + private static final String STATE_COMPASS_MARGIN_LEFT = "compassMarginLeft"; + private static final String STATE_COMPASS_MARGIN_TOP = "compassMarginTop"; + private static final String STATE_COMPASS_MARGIN_RIGHT = "compassMarginRight"; + private static final String STATE_COMPASS_MARGIN_BOTTOM = "compassMarginBottom"; + private static final String STATE_LOGO_GRAVITY = "logoGravity"; + private static final String STATE_LOGO_MARGIN_LEFT = "logoMarginLeft"; + private static final String STATE_LOGO_MARGIN_TOP = "logoMarginTop"; + private static final String STATE_LOGO_MARGIN_RIGHT = "logoMarginRight"; + private static final String STATE_LOGO_MARGIN_BOTTOM = "logoMarginBottom"; + private static final String STATE_ATTRIBUTION_GRAVITY = "attrGravity"; + private static final String STATE_ATTRIBUTION_MARGIN_LEFT = "attrMarginLeft"; + private static final String STATE_ATTRIBUTION_MARGIN_TOP = "attrMarginTop"; + private static final String STATE_ATTRIBUTION_MARGIN_RIGHT = "attrMarginRight"; + private static final String STATE_ATTRIBUTION_MARGIN_BOTTOM = "atrrMarginBottom"; // Used for positioning views private static final float DIMENSION_SIXTEEN_DP = 16f; @@ -834,9 +849,30 @@ public class MapView extends FrameLayout implements LocationListener { setStyleClasses(appliedStyleClasses); } mNativeMapView.setDefaultTransitionDuration(savedInstanceState.getLong(STATE_DEFAULT_TRANSITION_DURATION)); - setCompassEnabled(savedInstanceState.getBoolean(STATE_COMPASS_ENABLED)); setMyLocationEnabled(savedInstanceState.getBoolean(STATE_MY_LOCATION_ENABLED)); setUserLocationTrackingMode((UserLocationTrackingMode) savedInstanceState.getSerializable(STATE_USER_LOCATION_TRACKING_MODE)); + + // Compass + setCompassEnabled(savedInstanceState.getBoolean(STATE_COMPASS_ENABLED)); + setCompassGravity(savedInstanceState.getInt(STATE_COMPASS_GRAVITY)); + setCompassMargins(savedInstanceState.getInt(STATE_COMPASS_MARGIN_LEFT) + , savedInstanceState.getInt(STATE_COMPASS_MARGIN_TOP) + , savedInstanceState.getInt(STATE_COMPASS_MARGIN_RIGHT) + , savedInstanceState.getInt(STATE_COMPASS_MARGIN_BOTTOM)); + + // Logo + setLogoGravity(savedInstanceState.getInt(STATE_LOGO_GRAVITY)); + setLogoMargins(savedInstanceState.getInt(STATE_LOGO_MARGIN_LEFT) + , savedInstanceState.getInt(STATE_LOGO_MARGIN_TOP) + , savedInstanceState.getInt(STATE_LOGO_MARGIN_RIGHT) + , savedInstanceState.getInt(STATE_LOGO_MARGIN_BOTTOM)); + + // Attribution + setAttributionGravity(savedInstanceState.getInt(STATE_ATTRIBUTION_GRAVITY)); + setAttributionMargins(savedInstanceState.getInt(STATE_ATTRIBUTION_MARGIN_LEFT) + , savedInstanceState.getInt(STATE_ATTRIBUTION_MARGIN_TOP) + , savedInstanceState.getInt(STATE_ATTRIBUTION_MARGIN_RIGHT) + , savedInstanceState.getInt(STATE_ATTRIBUTION_MARGIN_BOTTOM)); } // Force a check for an access token @@ -867,9 +903,33 @@ public class MapView extends FrameLayout implements LocationListener { outState.putString(STATE_ACCESS_TOKEN, getAccessToken()); outState.putStringArrayList(STATE_STYLE_CLASSES, new ArrayList<>(getStyleClasses())); outState.putLong(STATE_DEFAULT_TRANSITION_DURATION, mNativeMapView.getDefaultTransitionDuration()); - outState.putBoolean(STATE_COMPASS_ENABLED, isCompassEnabled()); outState.putBoolean(STATE_MY_LOCATION_ENABLED, isMyLocationEnabled()); outState.putSerializable(STATE_USER_LOCATION_TRACKING_MODE, getUserLocationTrackingMode()); + + // Compass + LayoutParams compassParams = (LayoutParams) mCompassView.getLayoutParams(); + outState.putBoolean(STATE_COMPASS_ENABLED, isCompassEnabled()); + outState.putInt(STATE_COMPASS_GRAVITY, compassParams.gravity ); + outState.putInt(STATE_COMPASS_MARGIN_LEFT, compassParams.leftMargin); + outState.putInt(STATE_COMPASS_MARGIN_TOP, compassParams.topMargin); + outState.putInt(STATE_COMPASS_MARGIN_BOTTOM, compassParams.bottomMargin); + outState.putInt(STATE_COMPASS_MARGIN_RIGHT, compassParams.rightMargin); + + // Logo + LayoutParams logoParams = (LayoutParams) mLogoView.getLayoutParams(); + outState.putInt(STATE_LOGO_GRAVITY, logoParams.gravity); + outState.putInt(STATE_LOGO_MARGIN_LEFT, logoParams.leftMargin); + outState.putInt(STATE_LOGO_MARGIN_TOP, logoParams.topMargin); + outState.putInt(STATE_LOGO_MARGIN_RIGHT, logoParams.rightMargin); + outState.putInt(STATE_LOGO_MARGIN_BOTTOM, logoParams.bottomMargin); + + // Attribution + LayoutParams attrParams = (LayoutParams) mAttributionsView.getLayoutParams(); + outState.putInt(STATE_ATTRIBUTION_GRAVITY, attrParams.gravity); + outState.putInt(STATE_ATTRIBUTION_MARGIN_LEFT, attrParams.leftMargin); + outState.putInt(STATE_ATTRIBUTION_MARGIN_TOP, attrParams.topMargin); + outState.putInt(STATE_ATTRIBUTION_MARGIN_RIGHT, attrParams.rightMargin); + outState.putInt(STATE_ATTRIBUTION_MARGIN_BOTTOM, attrParams.bottomMargin); } // Called when we need to clean up From f8b8ca72735237e91a2d215366a662fe0def6d89 Mon Sep 17 00:00:00 2001 From: tobrun Date: Sun, 6 Sep 2015 15:16:56 +0200 Subject: [PATCH 4/9] Refactored ColorStateList of attribution control to a Drawable selector, added images responding to different states. --- .../java/com/mapbox/mapboxgl/views/MapView.java | 8 +------- .../res/drawable-hdpi/ic_info_blue_normal.png | Bin 0 -> 2194 bytes .../res/drawable-hdpi/ic_info_blue_pressed.png | Bin 0 -> 2133 bytes .../drawable-hdpi/ic_info_outline_black_24dp.png | Bin 487 -> 0 bytes .../res/drawable-mdpi/ic_info_blue_normal.png | Bin 0 -> 1354 bytes .../res/drawable-mdpi/ic_info_blue_pressed.png | Bin 0 -> 1391 bytes .../drawable-mdpi/ic_info_outline_black_24dp.png | Bin 323 -> 0 bytes .../res/drawable-xhdpi/ic_info_blue_normal.png | Bin 0 -> 2710 bytes .../res/drawable-xhdpi/ic_info_blue_pressed.png | Bin 0 -> 2738 bytes .../ic_info_outline_black_24dp.png | Bin 640 -> 0 bytes .../res/drawable-xxhdpi/ic_info_blue_normal.png | Bin 0 -> 4256 bytes .../res/drawable-xxhdpi/ic_info_blue_pressed.png | Bin 0 -> 4240 bytes .../ic_info_outline_black_24dp.png | Bin 940 -> 0 bytes .../res/drawable-xxxhdpi/ic_info_blue_normal.png | Bin 0 -> 730 bytes .../drawable-xxxhdpi/ic_info_blue_pressed.png | Bin 0 -> 836 bytes .../ic_info_outline_black_24dp.png | Bin 1256 -> 0 bytes .../src/main/res/drawable/ic_info_selector.xml | 5 +++++ 17 files changed, 6 insertions(+), 7 deletions(-) create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_info_blue_normal.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_info_blue_pressed.png delete 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_blue_normal.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_info_blue_pressed.png delete 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_blue_normal.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_info_blue_pressed.png delete 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_blue_normal.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/ic_info_blue_pressed.png delete 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-xxxhdpi/ic_info_blue_normal.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/ic_info_blue_pressed.png delete 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/drawable/ic_info_selector.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 1dee4e217..dda11c8f5 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 @@ -9,9 +9,7 @@ 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; @@ -30,7 +28,6 @@ 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; @@ -423,10 +420,7 @@ public class MapView extends FrameLayout implements LocationListener { // 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.setBackgroundResource(R.drawable.ic_info_selector); mAttributionsView.setContentDescription(getResources().getString(R.string.attributionsIconContentDescription)); LayoutParams attrParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mAttributionsView.setLayoutParams(attrParams); diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_info_blue_normal.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_info_blue_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..de44e3ddc08a6ec2733d5f9a9aef169c0cf97805 GIT binary patch literal 2194 zcmY*b3pf*A8y_mn{g&MCwY31ypUcm1HvAEGXd(b0AhBy)fa@g(H~@4o%7f&AbbaimV{A`4GRq?!eSAsKM^pFzZ(XtD*uF#@Ca28q_eUmAquN( zq<2J5U)2<-tgLJj6^MhmTG{+g=j;%wXGo+77#K_@ll91l^$1ZxU;`)=3f4CS8ybQ* z2oNzYoP>!5g%j0&k^G0p3QG)#3XUKJ6T+2uc`^QkXc9tIbyw)m_*Ew<824YLaN_T_ zI1Pe#PrwFx`rtp@oK%zDDC|U3FqWgd%WrC6@)P-gvEMo-;9c?mDdtzFKck#hO@Suh zKi6gobm}~W1_1UA*jt&SJovjkkfErPlI_#&MKL(a&HcJ5X&DASDMpbzI>^n8f2<_- z3?t;wfS0+I^~)N1p;aofepIRSBgQvl#0Oi1m`i()i~skp zr^L2K`{jF9Sr`zcrSlCZWDpW%6gKbqLm&*Kf{!)pHf?-`nuXF{e;cAqXSN05%}=7? zz*FAmt7Vsw+y~!HeTlu1=OiD^vY;i{Xg7wThov}&2uuXTU{gFQ90BP zL?^haObHE}gOKdL6nNFPFxOf|GWKgx6#Gm=@{&$iuhNGKn^&EdG$y!Qex||m(c}KA z)oZ-A>pPM;=E5C1aV#`|*6Gv|pu3Dp*IjWsLv~!#n9YB1eJ)E9;hi^Z8YE$yA;Yld z797x6?%`_^N>m=E`p%kC9}X!tGrvxnN?lsgzraO<3{j;NaHYDPkhkswkaf7(%a{&p zk(ss(x8jBj9uNPEg-_!yPTvo&T?3a1DBR78cDNa}nOtjB+U8}AN&OdBrjzJYQ_EK6 za>;NB((t~RfkgblD<>JY)V#)1eJkHpcJd64^+p`opY<{1+90*Fo2{cI7YRBX5^o`l zm+$5#(`DNA9m3K;CgXan@A}XOKM$ho5z9698;WvjV4)r>c@_h2+ z{ZBq}tK8Sz87Yx>GG2_)AEiV?qx{R0Q z>pdb^+1!3Ta$-Y*qgnWk)Qz!6UTxWfX(sNp(=PbYE`{6psv0WX=!>F!a3|t0f}v8N zby~$sGH-P-(w4b`jWHsnh}l^}9v>VjuoXQDN|it11fR(CvY>mg?u@Cb%VE_9s_|(_ zlMo*k?kqP?XjT|R6D-VIqSa*HlfjgA5=po@H`!cAT=2U=;%c{0H$;+hrAl9bLdEZj z&y!`QExGEehDL|CqQwGl@bCw@ zr~SKUboD2(6!I1&v7_%6`p`4BgU5|y5}Q4c@mqx{Iod}T{OX{V)t4<9{IJ>HJ@Xg| z^AT~SpjhbDzL`nN1onK8y!7lIbDb5awgBCy7@F0#T%Q@r1ah8gKk^Jr|H&m_jJjs1 zZ^c)_*eyN9vZJlj(qvETwsYcXtM->qP`Cg!^?c(7ME zQ^+|{*pXu5ueL-uk!| J-NNtuzX40N*J=O& literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_info_blue_pressed.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_info_blue_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..fa26786242c07a74e6de23c0e89703a50ad9b84f GIT binary patch literal 2133 zcmY*adpr~B8y_+EILtN8Z0Rg!bICPhTyn1nzo~xxe&_vsp7(v8=lwq4@AJI>yyx8yI>||ENCN->Ijpli zUU=@>GD)Ct9|IH?3J(z~-pLNY?$-P$45VV52~+?;Mrq4L09T9EgaAUgmk-Sc=V}>D zi9!a3P=ZKEdQ^-M4FFitEro6ri53WAzR|@9emfbC=l&>yI|d0an+fcgA9r$|B({p-sIJF>vHg2u-l)rF#>W zSblwYb*#lZ*LQDS>$clI`pS7CFOn7(l@r*g8=Xs?w_i2%hZ+&7bmOVN3erU8UB)X@ z(}33I^;p&$G4(0?q3RFDka>1%h0Sxf45R*=Bg2VZ1bEG?X#R}sIU*x@V|*m?1%Dbd zz;c?V!CawwHQ4n*vi*5o1{=`(vfA4$^QG!B7%Jd6ZO;{g^=2Q~-C!~OvMM)1UTaz` zS-adz3bNr?r^4zvdNrV=S2oCz;3>h89L+xxu>)ZKV&w7kx2(i{-~$q>6VjRLKpU(2 zr)npav>$Fy_#`o$=pL(D%4I)ztVtN=nHOS<7`nNv@aVMnrlQ|;=Q@E6{=91f-)^sw zLA3IeWCZpzoJqtpsvK9KcBQGL*(RJGtA@&dbwM!>=OsTIQv4t)#pzjPo?W73{_E_! z&r{5=o+F#SZd|DV?4VK$jStbvP=hfrixA@OeGabhZ}7+9_Uwe6?NJ_S3q7H(YU4p|Mro6MkBEnYG=|Ia zRx{+=vJos2fgwBXu2qERB@}#NUCS{_|6)G2t*v{eMKyB2Lh#uRx0jd3+!XoWY@3UG zyNg`(FUW$mk~-k)2qnD@Bu;A}&PV|QgQRihnePV0JWZ>1fG(FFQQI+IfWXOca*_Tg zi1a1QtzMiQ51(l=FQ{qVy&&=E+<~^xQM$>kNylUhiR{v$NRyiT_U10jq3Yn>OYbnmMPZe)B96#5ha&Vl0!0VCud&2+N4r-cMYGtTTBY# zolw}iFNQ}FC;7#?!uQF+buJ0cKd;o`eBI-0cxlF^&P24=;~_^W4-BntkD_GRNuBXV zIIaV@~YK5afQ1N*56|VR)|-|WxUzjS*wuE$yLWL->VBk!<04I;qGHFFVFSN z%CEWdZ3pQ-)Zm4=m^9hL6;gMcQsKFy5Gzz(?9QpbNuq(d#|)%w->Zc6doW8*mSJFx z_oEMFT%#IpGehHiH+(o3GD?7G2G98Gy6lN2N|_=^!fISa%%U_4#)XwU*vTu8EcSGi^SOSA9zP z8hhb1=&-Z9&4C*m`f~cd9w0x^;>C=drTn?;g~?YhZfwBDkHldcB{xyCy83m)(5CC7 z+;Hf_(TtP)uH&Ap?8JtS9uSBZ)hS3mTK7R~NA5#$!$!o+MLBh%HM_@i^Vu`QaIsF$ zu@j>UE(v$zTst_eeNjg#iw*ZWUKs?f+I+=+(pt@`T&^@FJlgu}u?`3A*>*(6e*pH= BzA^v+ literal 0 HcmV?d00001 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 deleted file mode 100644 index 4b5ab06e19d61515cf3a7395db43a81bb30a8203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_info_blue_normal.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_info_blue_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..dd50478ac143d77b36c6a74c5fdcf6183f8a3b89 GIT binary patch literal 1354 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&a=a>mHakcg59UmvUF{9L`nl>DSry^7odplSvNn+hu+GdHy)QK2F?C$HG5 z!d3~a!V1U+3F|8Y3;nDA{o-C@9zzrKDK}xwt{K19`Se z86_nJR{Hwo<>h+i#(Mch>H3D2mX`VkM*2oZx=P7{9O-#x!EwNQn0$BtH5O0c3d|4@L;p!@;Rg)$-uze<>}%W;=#K$ z^sK*dpuqf_x*Q^1xnv=J`8}9#k_O`h^|AQsZCa?wvhcdLd zC+<-Nk4a<8t5{Jkap>3j9fZpUtLB-_Sa{ugIqnRTF0 zr$9zEORD;=W6Dy2mt2o;ORo8SMrnDR+96h#`l{Lo&%&QtFOdG^ytDCL53jMOC8x@< z^!5o4CSEPL#&(B9c~{D{r5Su?66GKl5ht*C571JuOipnq7OJNc=Rl(rR#b)d%pNjwr}|dB_;$; zoqa6LKFQ>o=WW(|AJtc8{Z9OLZ|$CW?=Gkte$;BK-m2UXCV%bP=81nE{c^beRAAYh z#>NAlc}XS5HolT>|8b?p;Z@}8{U2iv3h8P;*A)9LIJwmB{+#w}?>YAFt=?p3{_h!| z;#+q!S3gMFeDwa~x$I)s zjaNSRzgiXXPm)&nUMpyEYtnAt$D7Y@ShlbK|D0Nn=~q6U$#u-WH7!^mO0!UdIqYdv z3jc#{?wNVLGO>&9*p^=oIVO>}NO{+(gE3s3JDODkzTWNS!%ZdJVJ*Szxrj z#k|N=VQcGwXC;ZL7Aq?jwk-{`v*}v*P{42E=XL{~nA5ZVWfZp+oqj5^;Io%}b875U zh8RAJqbGwi|8o0HVO^i5~@s2rKmsj1}_K5Y|uhT&n z1LkIn96fvY$1!>Dqt})#o@)BUbP0l+XkKQZzk) literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_info_blue_pressed.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_info_blue_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..d377f3cb8c2fc5a059efd69f58ba5908ed76066c GIT binary patch literal 1391 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&a=a>mHakcg59UmvUF{9L`nl>DSry^7odplSvNn+hu+GdHy)QK2F?C$HG5 z!d3~a!V1U+3F|8Y3;nDA{o-C@9zzrKDK}xwt{K19`Se z86_nJR{Hwo<>h+i#(Mch>H3D2mX`VkM*2oZx=P7{9O-#x!EwNQn0$BtH5O0c3d|4@L;p!@;Rg)$-uz8-qXb~#DjNk zm~W0xporafzfAAt8Ox;XyVX=C-MYE5wX9u(GtErMGrUYm(@ZE%SI5Qm&6-`CW;!~% zs*0s9l+O0$NL+j+B-4HC)tS{b&-aw4Kl|GMMXmf^?f07R*7o1$d~VCwdN4<0t}jE< zw8mDWgKLb!#Mp8)4bIKKTUTDtJa=YlWx4e0vo~(8yC3J)z2RxC&NMB7?w-I!Yq!g9 zog&ut_Smf0Gk18lynB2-;mOU9?MHUanwbB*zh67^YUFyAbqlyI+$sOxkzCAi;OvIO zk1XHwyPl6y663FrI(+_O|Z3go{)-PKcd%v?)9L4 z&TZ!S+m08NY>w?T7vBGqk9DT~lbs4HK32$23lVz4Qslll=WIc8V%3M>3%23MLdD)k zHUE2l`J`{`u|jqAH}^s=&7G~V>*Y=ssVafkAdzV%Z|0Tye6NeK`swv^(}^V)P4e%5 zTjF=`_&%Ari?_{L=(9}aeRQ6UMFQ_!wrJZ!Q!f{|&e^f;L(o^J?xUv16#lGUl&zVU(b=aY30jX%io=|eDgSuPwBQ*w{I=~<+h&&NA|DLjy)fL zsz&sk)Tt*=n7k+HZeS2UHD6U{@}ZKgi(QrlhdmTXUga)e;Nc}AU@EqZjhpvmEypRo zbfMpj(gJzjJA0m4#oXjov{@q9yR${rC*0R}#sW{dncHl=((0EDW=UAs<4;UCX4rz zW!lv9DTxiQU1y4Jv$!(fRqsaYr5Fj>hOLE)M+1~YyjKLMW@LB!>Gwsn-m7+(Tb;i1 z+NRU}@ixZF9^GYYW<5AiE#vTeVOdDVT(OIbwzLSE8m$h^kX`uTiO&tIghht(qRnqM zP4Ug1|F?9>1QxSretQysL1(Gs2A|aiZER{)es9|NkBs_%D3O^Y?f2KVmE0#NThf_Uq#J=hN%E%(egLDo*80oBC0_>&pLf T$EjPVfl5J7S3j3^P6lN 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 deleted file mode 100644 index e0c9fe0eb8457013fbfa6e2efea61fca70bb9303..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_info_blue_normal.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_info_blue_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..df7d7a88757135f8ae6c25f83f04e8d1340757b3 GIT binary patch literal 2710 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 HsDH{|I2Gyg literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_info_blue_pressed.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_info_blue_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..f5b183364174112edbcd242539676f7ad7e83ffb GIT binary patch literal 2738 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 xhz93Kv=biY(x2LAarfT`)JRx8_w{|6D6+y(#u literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/ic_info_blue_pressed.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/ic_info_blue_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..faaef0625d15ae837e23c270ce22d7d1b6ccdd48 GIT binary patch literal 4240 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 literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/ic_info_outline_black_24dp.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/ic_info_outline_black_24dp.png deleted file mode 100644 index 3847a9fe74774d3593dd694cff48ccca13cdec5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmV;d15^BoP)mdcfcOtJM6uO{+z8D@UxkKMBq1+Buz@6?P#P0jG1VJo zr4$sRhK5k2Z=fXRN~6nW@y^{1KD~XI=}gYdoFjX&pWp3sm>a@9yM-m0@&}6isAEB(Qj;>qRst`p9~=6q zAu7LO=u+TQ_K7Dd@dg8*_ZUX>5!&WBSSti4^<9Bi7`TY2+y<+KU=~psWnX%OzQeO# z$Y%%reeR=-{wJ-1^+Iq9eT6F#>jwG=^_&zcppV__#9BjN7F^M%z)NCy=&SoFTsf2ppC<<**2_ZI5@SJo9Db@pv9Dwel>@Q2Y|A^pR+ zXm)h0I4$&8t(hXy6*cz3S)t(J`aO{jqc{F(SB1>4AMjd@E;uWs|KhZ2{;};ky2AQ2 z)rxDxD$`NJH=PukQuA$!?4zc}-&3$&Xn>Du{t5dULsafqFEod!oWp?rpGSuiRtueB z&+LQNE+8tK3|cF6gtuz;3+FNP08y#Yj|~U-15sJR*io8@$}eQs#}cB_phN-_NT5>I zKj|$a=v*bC1q7WMgQRsN@Unzi63g)%L1&Ybq;ZC~2s(dqkQ990An0_M#V3gY=Ga5f z`5TXvN})=^4!0;^!e^R~NT^Pc418W7q3m*(v-Aa=K4XNz?fnc_RXp{J*(OZ^8ac7(2N>$@cY O0000WFU8GbZ8()Nlj27Z*CxAAWdOomE>Pr0006tNklnlcoicoy71mc7~=byUr8rH2l-DLmA!hR=qH<5hGk%LMzBi9` z_N{(xT)oHVt|OlEeR(flhWNhxQslCu5VIYTbB#~0!=tl8EVOu3>YB;TE7hzVfB}4Mh48b5t}&+ zD!5&m8^AbPj_djK=Gug3%z{!*dE0&uD?v3`Fp~*2Ty9?)X+G*JJ9CKBP;oUgL7Zv6DH0>0Uz;k9*fhg#A?xUb0wPr zirJ8JUd$}chujp5xUY6k;bjcyWrmXIvIZPw2(Q!t00000005Nm4{Jegp7QBMr~m)} M07*qoM6N<$g0ufBqyPW_ literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/ic_info_blue_pressed.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/ic_info_blue_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..781263f760abe2339a8df4f9aba5d04fa5b9eed1 GIT binary patch literal 836 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~CmS!L`er`8KA@0VW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%w#ke{cJsNkEJJoQO@Gy?6j(kYsC~VmFm{(&cgY?_QBh4X7}Ii<9G0M;9zkS0HX?K z9rkjId3HsA=4Z;>%W!Z#7;VH7=kmYjw+Y{RJ>CG3dm*6*c7M3#*6`@{EC#Oi*(@6S z)^RTQu*>bht{>5z(OpZs7%e%bpEB#-cu?qI)M|e3!b41&YkeoQ&RFPqfyW#N1 zFW=qr|DEJg$Y9__#SLsODwh}@bIv=;&@X>W=gFVc&5UyPIVW2`|9;HBO+nxJMzHj$ zlT$@6II%wYXEvk#P5dfJ?FHL=BhH6TIPf;QjCqGlY+t6#yO8#R{?H9mCZG8nu!dFj zU(V;lvwtYI6#V=9W$Nhw)e|=L{(q&Xoa?xj?w+}BgVYT6kE^#X5PRT4o?uX&}O7Mbt9_2-+d9A!l*H`D%_op0Fc6qV(mc(m)0xS>LMy?IH6xz`=@!;fE!9@WosPgTe~ HDWM4f2pMO@ 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 deleted file mode 100644 index c1e2a03a4bc540419ce1165d5dedd8d5345fdec2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable/ic_info_selector.xml b/android/java/MapboxGLAndroidSDK/src/main/res/drawable/ic_info_selector.xml new file mode 100644 index 000000000..fdbabbae1 --- /dev/null +++ b/android/java/MapboxGLAndroidSDK/src/main/res/drawable/ic_info_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From 9a6924435baa3f303311de305ba280a354364bfe Mon Sep 17 00:00:00 2001 From: tobrun Date: Sun, 6 Sep 2015 15:51:11 +0200 Subject: [PATCH 5/9] Added styling to the Attribution AlertDialog --- .../main/java/com/mapbox/mapboxgl/views/MapView.java | 4 ++-- .../src/main/res/layout/attribution_list_item.xml | 11 +++++++++++ .../MapboxGLAndroidSDK/src/main/res/values/colors.xml | 1 + .../MapboxGLAndroidSDK/src/main/res/values/styles.xml | 9 +++++++++ .../src/main/res/values/colors.xml | 2 +- 5 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/layout/attribution_list_item.xml create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/values/styles.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 dda11c8f5..5a07365c4 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 @@ -2045,9 +2045,9 @@ public class MapView extends FrameLayout implements LocationListener { 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); + AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.AttributionAlertDialogStyle); builder.setTitle(R.string.attributionsDialogTitle); - builder.setAdapter(new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, items), this); + builder.setAdapter(new ArrayAdapter<>(context, R.layout.attribution_list_item, items), this); builder.show(); } diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/layout/attribution_list_item.xml b/android/java/MapboxGLAndroidSDK/src/main/res/layout/attribution_list_item.xml new file mode 100644 index 000000000..f0a912158 --- /dev/null +++ b/android/java/MapboxGLAndroidSDK/src/main/res/layout/attribution_list_item.xml @@ -0,0 +1,11 @@ + + diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/values/colors.xml b/android/java/MapboxGLAndroidSDK/src/main/res/values/colors.xml index bf3f48431..bb1c326a8 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/res/values/colors.xml +++ b/android/java/MapboxGLAndroidSDK/src/main/res/values/colors.xml @@ -2,4 +2,5 @@ #FFFFFF #000000 + #1E8CAB diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/values/styles.xml b/android/java/MapboxGLAndroidSDK/src/main/res/values/styles.xml new file mode 100644 index 000000000..a0859a998 --- /dev/null +++ b/android/java/MapboxGLAndroidSDK/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/colors.xml b/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/colors.xml index ac3b4fc30..af798515f 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/colors.xml +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/colors.xml @@ -1,6 +1,6 @@ - #1E8CAB + @color/mapbox_blue #166B83 #E55E5E #FFFFFF From e7398c16c133e74274ffeda4b5b2994816fcf121 Mon Sep 17 00:00:00 2001 From: tobrun Date: Sun, 6 Sep 2015 16:37:34 +0200 Subject: [PATCH 6/9] Added "Improve this map" functionality, current zoom level, center latitude and longitude will be parsed in to the url of improve this map. --- .../com/mapbox/mapboxgl/views/MapView.java | 22 ++++++++++++++----- .../src/main/res/values/arrays.xml | 2 +- 2 files changed, 18 insertions(+), 6 deletions(-) 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 5a07365c4..71121b7aa 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 @@ -120,6 +120,8 @@ public class MapView extends FrameLayout implements LocationListener { private static final float DIMENSION_SIXTEEN_DP = 16f; private static final float DIMENSION_TEN_DP = 10f; + private static final int IMPROVE_THIS_MAP_INDEX = 2; + /** * Every annotation that has been added to the map. */ @@ -425,7 +427,7 @@ public class MapView extends FrameLayout implements LocationListener { LayoutParams attrParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mAttributionsView.setLayoutParams(attrParams); addView(mAttributionsView); - mAttributionsView.setOnClickListener(new AttributionOnClickListener()); + mAttributionsView.setOnClickListener(new AttributionOnClickListener(this)); // Setup Support For Listener Tracking // MapView's internal listener is setup in onCreate() @@ -2040,6 +2042,12 @@ public class MapView extends FrameLayout implements LocationListener { private static class AttributionOnClickListener implements View.OnClickListener, DialogInterface.OnClickListener { + private MapView mMapView; + + public AttributionOnClickListener(MapView mapView) { + mMapView = mapView; + } + // Called when someone presses the attribution icon @Override public void onClick(View v) { @@ -2051,13 +2059,17 @@ public class MapView extends FrameLayout implements LocationListener { builder.show(); } - // Called when someone selects an attribution + // Called when someone selects an attribution, 'Improve this map' adds location data to the url @Override public void onClick(DialogInterface dialog, int which) { - Context context = ((Dialog)dialog).getContext(); - String[]links = context.getResources().getStringArray(R.array.attribution_links); + Context context = ((Dialog) dialog).getContext(); + String url = context.getResources().getStringArray(R.array.attribution_links)[which]; + if (which == IMPROVE_THIS_MAP_INDEX) { + LatLng latLng = mMapView.getCenterCoordinate(); + url = String.format(url, latLng.getLongitude(), latLng.getLatitude(), (int) mMapView.getZoomLevel()); + } Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse(links[which])); + intent.setData(Uri.parse(url)); context.startActivity(intent); } } diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/values/arrays.xml b/android/java/MapboxGLAndroidSDK/src/main/res/values/arrays.xml index 3e937722c..8a8e204b7 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/res/values/arrays.xml +++ b/android/java/MapboxGLAndroidSDK/src/main/res/values/arrays.xml @@ -8,6 +8,6 @@ https://www.mapbox.com/about/maps/ http://www.openstreetmap.org/about/ - https://www.mapbox.com/map-feedback + https://www.mapbox.com/map-feedback/#/%1$f/%2$f/%3$d \ No newline at end of file From 36a754a1fe20afeedd931d2b8dcd68d4ff16191f Mon Sep 17 00:00:00 2001 From: tobrun Date: Sun, 6 Sep 2015 19:20:05 +0200 Subject: [PATCH 7/9] Using AlertDialog from AppCompat instead of SDKs version --- .../src/main/java/com/mapbox/mapboxgl/views/MapView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 71121b7aa..b78db1736 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,7 +1,6 @@ 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; @@ -30,6 +29,7 @@ import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v4.view.GestureDetectorCompat; import android.support.v4.view.ScaleGestureDetectorCompat; +import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.GestureDetector; import android.view.Gravity; From 290a857b511f6500c8d376af78f5492c274c9bef Mon Sep 17 00:00:00 2001 From: tobrun Date: Wed, 9 Sep 2015 18:40:27 +0200 Subject: [PATCH 8/9] Moved icon to the right of Mapbox logo --- .../com/mapbox/mapboxgl/views/MapView.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) 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 b78db1736..d50fac6ee 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 @@ -117,10 +117,12 @@ public class MapView extends FrameLayout implements LocationListener { private static final String STATE_ATTRIBUTION_MARGIN_BOTTOM = "atrrMarginBottom"; // Used for positioning views - private static final float DIMENSION_SIXTEEN_DP = 16f; + private static final float DIMENSION_SEVEN_DP = 7f; private static final float DIMENSION_TEN_DP = 10f; + private static final float DIMENSION_SIXTEEN_DP = 16f; + private static final float DIMENSION_SEVENTYSIX_DP = 76f; - private static final int IMPROVE_THIS_MAP_INDEX = 2; + private static final int ATTRIBUTION_INDEX_IMPROVE_THIS_MAP = 2; /** * Every annotation that has been added to the map. @@ -422,7 +424,11 @@ public class MapView extends FrameLayout implements LocationListener { // Setup Attributions control mAttributionsView = new ImageView(mContext); - mAttributionsView.setBackgroundResource(R.drawable.ic_info_selector); + mAttributionsView.setClickable(true); + mAttributionsView.setImageResource(R.drawable.ic_info_selector); + int attrPadding = (int) (DIMENSION_SEVEN_DP * mScreenDensity); + mAttributionsView.setPadding(attrPadding, attrPadding, attrPadding, attrPadding); + mAttributionsView.setAdjustViewBounds(true); mAttributionsView.setContentDescription(getResources().getString(R.string.attributionsIconContentDescription)); LayoutParams attrParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mAttributionsView.setLayoutParams(attrParams); @@ -478,11 +484,11 @@ public class MapView extends FrameLayout implements LocationListener { , 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)); + setAttributionGravity(typedArray.getInt(R.styleable.MapView_attributionGravity, Gravity.BOTTOM)); + setWidgetMargins(mAttributionsView, typedArray.getDimension(R.styleable.MapView_attributionMarginLeft, DIMENSION_SEVENTYSIX_DP) + , typedArray.getDimension(R.styleable.MapView_attributionMarginTop, DIMENSION_SEVEN_DP) + , typedArray.getDimension(R.styleable.MapView_attributionMarginRight, DIMENSION_SEVEN_DP) + , typedArray.getDimension(R.styleable.MapView_attributionMarginBottom, DIMENSION_SEVEN_DP)); setMyLocationEnabled(typedArray.getBoolean(R.styleable.MapView_myLocationEnabled, false)); } finally { @@ -2064,7 +2070,7 @@ public class MapView extends FrameLayout implements LocationListener { public void onClick(DialogInterface dialog, int which) { Context context = ((Dialog) dialog).getContext(); String url = context.getResources().getStringArray(R.array.attribution_links)[which]; - if (which == IMPROVE_THIS_MAP_INDEX) { + if (which == ATTRIBUTION_INDEX_IMPROVE_THIS_MAP) { LatLng latLng = mMapView.getCenterCoordinate(); url = String.format(url, latLng.getLongitude(), latLng.getLatitude(), (int) mMapView.getZoomLevel()); } From d371dd07cbe7093996ba2bf16dd5c33d4037e9f7 Mon Sep 17 00:00:00 2001 From: tobrun Date: Wed, 9 Sep 2015 18:55:17 +0200 Subject: [PATCH 9/9] Changed title dialog --- .../java/MapboxGLAndroidSDK/src/main/res/values/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml b/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml index 455fdb026..be9a1d38c 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml +++ b/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml @@ -1,10 +1,10 @@ Map compass. Click to reset the map rotation to North. + Attribution icon. Click to show attribution dialog. + Mapbox Android SDK + Mapbox logo. Title Description Address - Attribution icon. Click to show attribution dialog. - Mapbox for Android - Mapbox logo.