From 906fc0421aa85308460586023cfe727501c9bbb5 Mon Sep 17 00:00:00 2001 From: Tobrun Van Nuland Date: Tue, 25 Jul 2017 14:10:31 +0200 Subject: [android] - hook into onGlobalLayout to start creating the surface and as a result create the map object --- .../main/java/com/mapbox/mapboxsdk/maps/MapView.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 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 bb8771b5dd..1f31e3b5a3 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 @@ -4,6 +4,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.PointF; import android.graphics.SurfaceTexture; +import android.os.Build; import android.os.Bundle; import android.support.annotation.CallSuper; import android.support.annotation.IntDef; @@ -21,6 +22,7 @@ import android.view.SurfaceView; import android.view.TextureView; import android.view.View; import android.view.ViewGroup; +import android.view.ViewTreeObserver; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ZoomButtonsController; @@ -122,6 +124,18 @@ public class MapView extends FrameLayout { // add accessibility support setContentDescription(context.getString(R.string.mapbox_mapActionDescription)); setWillNotDraw(false); + + getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + getViewTreeObserver().removeOnGlobalLayoutListener(this); + } else { + getViewTreeObserver().removeGlobalOnLayoutListener(this); + } + initialiseDrawingSurface(mapboxMapOptions.getTextureMode()); + } + }); } private void initialiseMap() { @@ -553,9 +567,6 @@ public class MapView extends FrameLayout { if (isInEditMode()) { return; } - if (visibility == View.VISIBLE && nativeMapView == null) { - initialiseDrawingSurface(mapboxMapOptions.getTextureMode()); - } if (mapZoomButtonController != null && nativeMapView != null) { mapZoomButtonController.setVisible(visibility == View.VISIBLE); -- cgit v1.2.1