From 66b6256f7f782cd5ecef7cb2b28ce1d2edbcada7 Mon Sep 17 00:00:00 2001 From: Tobrun Van Nuland Date: Thu, 5 Oct 2017 12:18:13 +0200 Subject: [android] - added code to test issue 10117 --- .../testapp/activity/fragment/BaseMapFragment.java | 96 ++++++++++++++++++++++ .../testapp/activity/fragment/FirstFragment.java | 31 +++++++ .../activity/fragment/IntermediateFragment.java | 27 ++++++ .../activity/fragment/MapFragmentActivity.java | 56 +++---------- .../testapp/activity/fragment/SecondFragment.java | 6 ++ .../fragment/SupportMapFragmentActivity.java | 2 +- .../activity/maplayout/JumpingViewPager.java | 22 +++++ .../src/main/res/layout/activity_map_simple.xml | 15 +++- .../src/main/res/layout/fragment_map.xml | 11 +++ 9 files changed, 218 insertions(+), 48 deletions(-) create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/BaseMapFragment.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/FirstFragment.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/IntermediateFragment.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SecondFragment.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/JumpingViewPager.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_map.xml diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/BaseMapFragment.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/BaseMapFragment.java new file mode 100644 index 0000000000..6d5e45db66 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/BaseMapFragment.java @@ -0,0 +1,96 @@ +package com.mapbox.mapboxsdk.testapp.activity.fragment; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.mapbox.mapboxsdk.maps.MapView; + +import com.mapbox.mapboxsdk.testapp.R; + +public abstract class BaseMapFragment extends Fragment { + + protected MapView map; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_map, container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + map = (MapView) view.findViewById(R.id.mapView); + map.onCreate(savedInstanceState); + } + + /** + * Called when the fragment is visible for the users. + */ + @Override + public void onStart() { + super.onStart(); + map.onStart(); + } + + /** + * Called when the fragment is ready to be interacted with. + */ + @Override + public void onResume() { + super.onResume(); + map.onResume(); + } + + /** + * Called when the fragment is pausing. + */ + @Override + public void onPause() { + super.onPause(); + map.onPause(); + } + + /** + * Called when the fragment state needs to be saved. + * + * @param outState The saved state + */ + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + map.onSaveInstanceState(outState); + } + + /** + * Called when the fragment is no longer visible for the user. + */ + @Override + public void onStop() { + super.onStop(); + map.onStop(); + } + + /** + * Called when the fragment receives onLowMemory call from the hosting Activity. + */ + @Override + public void onLowMemory() { + super.onLowMemory(); + map.onLowMemory(); + } + + /** + * Called when the fragment is view hiearchy is being destroyed. + */ + @Override + public void onDestroyView() { + super.onDestroyView(); + map.onDestroy(); + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/FirstFragment.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/FirstFragment.java new file mode 100644 index 0000000000..41f312ba86 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/FirstFragment.java @@ -0,0 +1,31 @@ +package com.mapbox.mapboxsdk.testapp.activity.fragment; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.view.View; + +import com.mapbox.mapboxsdk.constants.Style; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.maps.MapboxMap; +import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; + +public class FirstFragment extends BaseMapFragment { + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + map.getMapAsync(new OnMapReadyCallback() { + @Override + public void onMapReady(MapboxMap mapboxMap) { + mapboxMap.setStyleUrl(Style.SATELLITE_STREETS); + mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { + @Override + public void onMapClick(@NonNull LatLng point) { + ((MapFragmentActivity)getActivity()).replaceFragment(new IntermediateFragment()); + } + }); + } + }); + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/IntermediateFragment.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/IntermediateFragment.java new file mode 100644 index 0000000000..c88a29a28a --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/IntermediateFragment.java @@ -0,0 +1,27 @@ +package com.mapbox.mapboxsdk.testapp.activity.fragment; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class IntermediateFragment extends Fragment{ + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + TextView textView = new TextView(inflater.getContext()); + textView.setText("Hello World"); + textView.setTextSize(24); + textView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ((MapFragmentActivity)getActivity()).replaceFragment(new SecondFragment()); + } + }); + return textView; + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java index 930626078d..1c65ef2100 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java @@ -1,7 +1,9 @@ package com.mapbox.mapboxsdk.testapp.activity.fragment; -import android.app.FragmentTransaction; import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import com.mapbox.mapboxsdk.camera.CameraPosition; @@ -15,58 +17,26 @@ import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; /** - * Test activity showcasing using the MapFragment API using SDK Fragments. + * Test activity showcasing using the BaseMapFragment API using SDK Fragments. *

* Uses MapboxMapOptions to initialise the Fragment. *

*/ -public class MapFragmentActivity extends AppCompatActivity implements OnMapReadyCallback { - - private MapboxMap mapboxMap; +public class MapFragmentActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map_fragment); - - MapFragment mapFragment; - if (savedInstanceState == null) { - final FragmentTransaction transaction = getFragmentManager().beginTransaction(); - - MapboxMapOptions options = new MapboxMapOptions(); - options.styleUrl(Style.OUTDOORS); - - options.scrollGesturesEnabled(false); - options.zoomGesturesEnabled(false); - options.tiltGesturesEnabled(false); - options.rotateGesturesEnabled(false); - - options.debugActive(false); - - LatLng dc = new LatLng(38.90252, -77.02291); - - options.minZoomPreference(9); - options.maxZoomPreference(11); - options.camera(new CameraPosition.Builder() - .target(dc) - .zoom(11) - .build()); - - mapFragment = MapFragment.newInstance(options); - - transaction.add(R.id.fragment_container, mapFragment, "com.mapbox.map"); - transaction.commit(); - } else { - mapFragment = (MapFragment) getFragmentManager().findFragmentByTag("com.mapbox.map"); - } - - mapFragment.getMapAsync(this); + replaceFragment(new FirstFragment()); } - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - mapboxMap.animateCamera( - CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().tilt(45.0).build()), 10000); + public void replaceFragment(Fragment fragment) { + FragmentManager fm = getSupportFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + ft.replace(R.id.fragment_container, fragment); + ft.addToBackStack(fragment.getClass().getName()); + ft.setTransition(android.app.FragmentTransaction.TRANSIT_FRAGMENT_OPEN); + ft.commitAllowingStateLoss(); } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SecondFragment.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SecondFragment.java new file mode 100644 index 0000000000..c3c6e9d327 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SecondFragment.java @@ -0,0 +1,6 @@ +package com.mapbox.mapboxsdk.testapp.activity.fragment; + +public class SecondFragment extends BaseMapFragment { + + +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SupportMapFragmentActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SupportMapFragmentActivity.java index ee16b251c5..83656db0a8 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SupportMapFragmentActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SupportMapFragmentActivity.java @@ -15,7 +15,7 @@ import com.mapbox.mapboxsdk.maps.SupportMapFragment; import com.mapbox.mapboxsdk.testapp.R; /** - * Test activity showcasing using the MapFragment API using Support Library Fragments. + * Test activity showcasing using the BaseMapFragment API using Support Library Fragments. *

* Uses MapboxMapOptions to initialise the Fragment. *

diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/JumpingViewPager.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/JumpingViewPager.java new file mode 100644 index 0000000000..4bff9e5b42 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/JumpingViewPager.java @@ -0,0 +1,22 @@ +package com.mapbox.mapboxsdk.testapp.activity.maplayout; + +import android.content.Context; +import android.support.v4.view.ViewPager; +import android.util.AttributeSet; + +public class JumpingViewPager extends ViewPager{ + + public JumpingViewPager(Context context) { + super(context); + } + + public JumpingViewPager(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public void setCurrentItem(int item) { + super.setCurrentItem(item); + setCurrentItem(item, false); + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_map_simple.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_map_simple.xml index 96a3f5b046..51e1ff9fc1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_map_simple.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_map_simple.xml @@ -1,5 +1,5 @@ - - - + + + diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_map.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_map.xml new file mode 100644 index 0000000000..7b41bcb978 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_map.xml @@ -0,0 +1,11 @@ + + + + + + -- cgit v1.2.1