From 11062cc487dce8aadbf845e6210cab18ec56528f Mon Sep 17 00:00:00 2001 From: Tobrun Date: Thu, 6 Dec 2018 19:11:16 +0200 Subject: [android] - update sanity test to Style.java --- .../java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 4 ++ .../com/mapbox/mapboxsdk/maps/NativeMapView.java | 4 ++ .../style/AnimatedImageSourceActivity.java | 55 +++++++++------------- .../activity/style/HeatmapLayerActivity.java | 32 ++++++------- platform/android/scripts/exclude-activity-gen.json | 5 +- 5 files changed, 51 insertions(+), 49 deletions(-) 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 186ad447d6..bcc7037657 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 @@ -817,6 +817,10 @@ public final class MapboxMap { } void notifyStyleLoaded() { + if (nativeMapView.isDestroyed()) { + return; + } + if (style != null) { style.onDidFinishLoadingStyle(); locationComponent.onFinishLoadingStyle(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index 02d3117b8a..8c929fee63 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -1336,6 +1336,10 @@ final class NativeMapView { }); } + boolean isDestroyed() { + return destroyed; + } + // // Image conversion // diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/AnimatedImageSourceActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/AnimatedImageSourceActivity.java index 82c582b039..96e329d3c0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/AnimatedImageSourceActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/AnimatedImageSourceActivity.java @@ -34,43 +34,36 @@ public class AnimatedImageSourceActivity extends AppCompatActivity implements On private static final String ID_IMAGE_LAYER = "animated_image_layer"; private MapView mapView; - private MapboxMap mapboxMap; - - private Handler handler; + private final Handler handler = new Handler(); private Runnable runnable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animated_image_source); - - mapView = (MapView) findViewById(R.id.mapView); + mapView = findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); } @Override public void onMapReady(@NonNull final MapboxMap map) { - mapboxMap = map; - - map.setStyle(Style.MAPBOX_STREETS, style -> { - // add source - LatLngQuad quad = new LatLngQuad( - new LatLng(46.437, -80.425), - new LatLng(46.437, -71.516), - new LatLng(37.936, -71.516), - new LatLng(37.936, -80.425)); - mapboxMap.getStyle().addSource(new ImageSource(ID_IMAGE_SOURCE, quad, R.drawable.southeast_radar_0)); - - // add layer - RasterLayer layer = new RasterLayer(ID_IMAGE_LAYER, ID_IMAGE_SOURCE); - mapboxMap.getStyle().addLayer(layer); - - // loop refresh geojson - handler = new Handler(); - runnable = new RefreshImageRunnable(mapboxMap, handler); - handler.postDelayed(runnable, 100); - }); + LatLngQuad quad = new LatLngQuad( + new LatLng(46.437, -80.425), + new LatLng(46.437, -71.516), + new LatLng(37.936, -71.516), + new LatLng(37.936, -80.425)); + + final ImageSource imageSource = new ImageSource(ID_IMAGE_SOURCE, quad, R.drawable.southeast_radar_0); + final RasterLayer layer = new RasterLayer(ID_IMAGE_LAYER, ID_IMAGE_SOURCE); + map.setStyle(new Style.Builder() + .fromUrl(Style.MAPBOX_STREETS) + .withSource(imageSource) + .withLayer(layer), style -> { + runnable = new RefreshImageRunnable(imageSource, handler); + handler.postDelayed(runnable, 100); + } + ); } @Override @@ -95,9 +88,7 @@ public class AnimatedImageSourceActivity extends AppCompatActivity implements On protected void onStop() { super.onStop(); mapView.onStop(); - if (handler != null) { - handler.removeCallbacks(runnable); - } + handler.removeCallbacks(runnable); } @Override @@ -114,7 +105,7 @@ public class AnimatedImageSourceActivity extends AppCompatActivity implements On private static class RefreshImageRunnable implements Runnable { - private MapboxMap mapboxMap; + private ImageSource imageSource; private Handler handler; private Bitmap[] drawables; private int drawableIndex; @@ -129,8 +120,8 @@ public class AnimatedImageSourceActivity extends AppCompatActivity implements On return null; } - RefreshImageRunnable(MapboxMap mapboxMap, Handler handler) { - this.mapboxMap = mapboxMap; + RefreshImageRunnable(ImageSource imageSource, Handler handler) { + this.imageSource = imageSource; this.handler = handler; drawables = new Bitmap[4]; drawables[0] = getBitmap(R.drawable.southeast_radar_0); @@ -142,7 +133,7 @@ public class AnimatedImageSourceActivity extends AppCompatActivity implements On @Override public void run() { - ((ImageSource) mapboxMap.getStyle().getSource(ID_IMAGE_SOURCE)).setImage(drawables[drawableIndex++]); + imageSource.setImage(drawables[drawableIndex++]); if (drawableIndex > 3) { drawableIndex = 0; } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/HeatmapLayerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/HeatmapLayerActivity.java index 900a959666..7977daf48e 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/HeatmapLayerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/HeatmapLayerActivity.java @@ -59,23 +59,24 @@ public class HeatmapLayerActivity extends AppCompatActivity { mapView.getMapAsync(map -> { mapboxMap = map; - mapboxMap.setStyle(Style.DARK, style -> { - addEarthquakeSource(); - addHeatmapLayer(); - addCircleLayer(); - }); + try { + mapboxMap.setStyle(new Style.Builder() + .fromUrl(Style.DARK) + .withSource(createEarthquakeSource()) + .withLayerAbove(createHeatmapLayer(), "waterway-label") + .withLayerBelow(createCircleLayer(), HEATMAP_LAYER_ID) + ); + } catch (MalformedURLException exception) { + Timber.e(exception); + } }); } - private void addEarthquakeSource() { - try { - mapboxMap.getStyle().addSource(new GeoJsonSource(EARTHQUAKE_SOURCE_ID, new URL(EARTHQUAKE_SOURCE_URL))); - } catch (MalformedURLException malformedUrlException) { - Timber.e(malformedUrlException, "That's not an url... "); - } + private GeoJsonSource createEarthquakeSource() throws MalformedURLException { + return new GeoJsonSource(EARTHQUAKE_SOURCE_ID, new URL(EARTHQUAKE_SOURCE_URL)); } - private void addHeatmapLayer() { + private HeatmapLayer createHeatmapLayer() { HeatmapLayer layer = new HeatmapLayer(HEATMAP_LAYER_ID, EARTHQUAKE_SOURCE_ID); layer.setMaxZoom(9); layer.setSourceLayer(HEATMAP_LAYER_SOURCE); @@ -133,11 +134,10 @@ public class HeatmapLayerActivity extends AppCompatActivity { ) ) ); - - mapboxMap.getStyle().addLayerAbove(layer, "waterway-label"); + return layer; } - private void addCircleLayer() { + private CircleLayer createCircleLayer() { CircleLayer circleLayer = new CircleLayer(CIRCLE_LAYER_ID, EARTHQUAKE_SOURCE_ID); circleLayer.setProperties( @@ -183,7 +183,7 @@ public class HeatmapLayerActivity extends AppCompatActivity { circleStrokeWidth(1.0f) ); - mapboxMap.getStyle().addLayerBelow(circleLayer, HEATMAP_LAYER_ID); + return circleLayer; } @Override diff --git a/platform/android/scripts/exclude-activity-gen.json b/platform/android/scripts/exclude-activity-gen.json index 425d652188..7dfe68d965 100644 --- a/platform/android/scripts/exclude-activity-gen.json +++ b/platform/android/scripts/exclude-activity-gen.json @@ -41,5 +41,8 @@ "MergeOfflineRegionsActivity", "NestedViewPagerActivity", "DebugModeActivity", - "TextureViewDebugModeActivity" + "TextureViewDebugModeActivity", + "RuntimeStyleActivity", + "GridSourceActivity", + "AnimatedImageSourceActivity" ] -- cgit v1.2.1