Как предотвратить появление черного экрана перед загрузкой Карты с помощью MapBox? - PullRequest
0 голосов
/ 30 апреля 2018

Я загружаю Mapbox в свой фрагмент, который должен быть запущен при нажатии на DrawerLayout.

  @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.map_fragment, container, false);


    }

  @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        bindUI(getView());        mapView = view.findViewById(R.id.mapView);

        mapView.onCreate(savedInstanceState);
        mapView.getMapAsync(map -> {
            mapboxMap = map;

            setUpMap();
        });

    }

 @Override
    public void onStart() {
        super.onStart();
        mapView.onStart();

    }

    @Override
    public void onStop() {
        super.onStop();
        mapView.onStop();

    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
    }

    @Override
    public void onResume() {
        super.onResume();
        mapView.onResume();
    }

    @Override
    public void onPause() {
        super.onPause();
        mapView.onPause();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        mapView.onLowMemory();
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        mapView.onDestroy();

    }

    @Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        mapView.onSaveInstanceState(outState);
    }

Это код, который я использую для загрузки карты, используя Mapbox в моем фрагменте. Всякий раз, когда я меняю фрагмент из Layer Layout, мигает черный экран, а затем загружается карта.

Если я загружаю какой-то другой фрагмент вместо фрагмента карты, он отлично работает.

Заранее спасибо

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете поместить TextView с надписью «Карта загружается ...» поверх Карты Mapbox и скрыть его после onMapReady, например ::

.
@Override
public void onMapReady(MapboxMap mapboxMap) {
    mapLoadingOverview.postDelayed(new Runnable() {
        public void run() {
            mapLoadingOverview.setVisibility(View.GONE);
        }
    }, 1000); 
}

XML

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">

    <com.mapbox.mapboxsdk.maps.MapView
        android:id="@+id/mapboxMapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        mapbox:mapbox_cameraTargetLat="53.873900"
        mapbox:mapbox_cameraTargetLng="10.683876"
        mapbox:mapbox_cameraZoom="15"
        mapbox:mapbox_styleUrl="@string/mapbox_style_light" />

    <TextView
        android:id="@+id/mapLoadingOverview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/subwhite"
        android:text="@string/mapOverlayText"
        android:gravity="center"
        android:textColor="@color/maincolor"
        android:textSize="@dimen/mapOverlayTextSize"
        android:visibility="visible" />
</FrameLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...