diff options
author | Tobrun <tobrun@mapbox.com> | 2016-05-10 16:41:34 +0200 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2016-05-20 12:00:03 +0200 |
commit | 8e57b455c5206cc12f6650051a61351f55ee85d1 (patch) | |
tree | 88ed2172c25d63a441e7e05c15d4e2f39f1b43f7 | |
parent | bdff43ba955d9340e0e05fd657ee34aa42e4b9a2 (diff) | |
download | qtlocation-mapboxgl-8e57b455c5206cc12f6650051a61351f55ee85d1.tar.gz |
[android] #3276 - only update thumb Icon when needed, disabled background task for now, added view pool counter
4 files changed, 48 insertions, 23 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 74b850f7dd..da487190ca 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -250,8 +250,6 @@ public class MapView extends FrameLayout { if (!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH)) { mMapboxMap.getUiSettings().setZoomControlsEnabled(true); } - - } private void setInitialState(MapboxMapOptions options) { @@ -479,19 +477,19 @@ public class MapView extends FrameLayout { } mViewMarkerBoundsUpdateTime = currentTime + 300; - new ViewMarkerInBoundsTask().execute(); - } - - public class ViewMarkerInBoundsTask extends AsyncTask<Void, Void, ViewMarkerInBoundsTask.Result> { +// new ViewMarkerInBoundsTask().execute(); +// } - @Override - protected void onPreExecute() { - super.onPreExecute(); +// public class ViewMarkerInBoundsTask extends AsyncTask<Void, Void, ViewMarkerInBoundsTask.Result> { +// +// @Override +// protected void onPreExecute() { +// super.onPreExecute(); mViewMarkersUpdateRunning = true; - } +// } - @Override - protected Result doInBackground(Void... params) { +// @Override +// protected Result doInBackground(Void... params) { List<Marker> inBounds = new ArrayList<>(); Map<Marker, View> outBounds = new HashMap<>(); @@ -544,13 +542,14 @@ public class MapView extends FrameLayout { } } } + Result result = new Result(inBounds, outBounds); - return new Result(inBounds, outBounds); - } +// return new Result(inBounds, outBounds); +// } - @Override - protected void onPostExecute(Result result) { - super.onPostExecute(result); +// @Override +// protected void onPostExecute(Result result) { +// super.onPostExecute(result); mMapboxMap.setViewMarkersBoundsTaskResult(result); mViewMarkersUpdateRunning = false; Log.v(MapboxConstants.TAG, "Amount of child views " + getChildCount()); @@ -573,7 +572,7 @@ public class MapView extends FrameLayout { return outBounds; } } - } +// } /** * You must call this method from the parent's {@link android.app.Activity#onSaveInstanceState(Bundle)} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index f5c5a5702b..8189731ebe 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -638,7 +638,7 @@ public class MapboxMap { // Annotations // - void setViewMarkersBoundsTaskResult(MapView.ViewMarkerInBoundsTask.Result result) { + void setViewMarkersBoundsTaskResult(MapView.Result result) { Map<Marker, View> outBoundsMarker = result.getOutBounds(); View convertView; @@ -660,11 +660,13 @@ public class MapboxMap { if (adaptedView != null) { // hack to hide old marker, todo replace with visibility Icon icon = marker.getIcon(); - if(mViewMarkerBitmap==null){ - Bitmap.Config conf = Bitmap.Config.ARGB_8888; - mViewMarkerBitmap = Bitmap.createBitmap(icon.getBitmap().getWidth(), icon.getBitmap().getHeight(), conf); + if(!icon.getBitmap().equals(mViewMarkerBitmap)) { + if (mViewMarkerBitmap == null) { + Bitmap.Config conf = Bitmap.Config.ARGB_8888; + mViewMarkerBitmap = Bitmap.createBitmap(icon.getBitmap().getWidth(), icon.getBitmap().getHeight(), conf); + } + marker.setIcon(IconFactory.recreate(icon.getId(), mViewMarkerBitmap)); } - marker.setIcon(IconFactory.recreate(icon.getId(), mViewMarkerBitmap)); adaptedView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java index e0ea8d5ed0..34b34f62ce 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java @@ -74,6 +74,7 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView }); final View fab = findViewById(R.id.fab); + final TextView viewCountView = (TextView) findViewById(R.id.countView); if (fab != null) { fab.setOnClickListener(new View.OnClickListener() { @Override @@ -81,6 +82,22 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView if (mMapboxMap != null) { fab.animate().alpha(0).start(); mMapboxMap.setMarkerViewAdapter(new TextAdapter(BulkMarkerActivity.this)); + mMapView.addOnMapChangedListener(new MapView.OnMapChangedListener() { + @Override + public void onMapChanged(@MapView.MapChange int change) { + if (change == MapView.REGION_IS_CHANGING || change == MapView.REGION_DID_CHANGE) { + if (mMapboxMap.getMarkerViewAdapter() != null) { + viewCountView.setText("ViewCache size " + (mMapView.getChildCount()-5)); + } + } + } + }); + mMapboxMap.setOnMarkerViewClickListener(new MapboxMap.OnMarkerViewClickListener() { + @Override + public void onMarkerClick(@NonNull Marker marker, @NonNull View view) { + mMapboxMap.selectMarker(marker); + } + }); } } }); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_marker_bulk.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_marker_bulk.xml index 868aac5f6f..42179aa03d 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_marker_bulk.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_marker_bulk.xml @@ -28,6 +28,13 @@ app:style_url="@string/style_mapbox_streets" app:zoom="10" /> + <TextView + android:id="@+id/countView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/toolbar" + android:padding="16dp" + android:textSize="20sp"/> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" |