diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2018-04-13 10:12:39 +0200 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2018-04-13 12:16:09 +0200 |
commit | 397ab623a2eaf83509681b1ffe8c5777961eab28 (patch) | |
tree | 4fa1f998807c5bf8dbf06a63632cfbbf495a8208 /platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp | |
parent | ff11cb20163caddf5e31ebdaeaafa0e1a9e456ec (diff) | |
download | qtlocation-mapboxgl-upstream/lp-fragment-freeze.tar.gz |
[android] - fragment freeze native setupupstream/lp-fragment-freeze
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp')
4 files changed, 148 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/MainActivity.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/MainActivity.kt new file mode 100644 index 0000000000..03377e2fb4 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/MainActivity.kt @@ -0,0 +1,49 @@ +package com.mapbox.mapboxsdk.testapp.mapboxfreezerepro + +import android.os.Bundle +import android.support.v7.app.AppCompatActivity +import com.mapbox.mapboxsdk.testapp.R +import com.mapbox.mapboxsdk.testapp.mapboxfreezerepro.views.EmptyView +import com.mapbox.mapboxsdk.testapp.mapboxfreezerepro.views.MapView +import kotlinx.android.synthetic.main.activity_main.* +import timber.log.Timber + +class MainActivity : AppCompatActivity() { + + private var empty = true + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + fragmentContainer.addView(EmptyView(this)) + button.setOnClickListener { + Timber.e("removeAllViews") + + if (!empty) { + val fragment = supportFragmentManager.findFragmentByTag(com.mapbox.mapboxsdk.testapp.mapboxfreezerepro.views.TAG) + if (fragment != null) { + supportFragmentManager.beginTransaction() + .remove(fragment) + .commitNowAllowingStateLoss() + } + } + + fragmentContainer.removeAllViews() + if (empty) { + fragmentContainer.addView( + MapView( + this + ) + ) + empty = false + } else { + fragmentContainer.addView( + EmptyView( + this + ) + ) + empty = true + } + } + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/fragment/CustomMapFragment.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/fragment/CustomMapFragment.kt new file mode 100644 index 0000000000..4cf6fd7260 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/fragment/CustomMapFragment.kt @@ -0,0 +1,41 @@ +package com.mapbox.mapboxsdk.testapp.mapboxfreezerepro.fragment + +import android.os.Bundle +import android.view.View +import com.mapbox.mapboxsdk.maps.SupportMapFragment +import timber.log.Timber + +class CustomMapFragment : SupportMapFragment() { + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + getMapAsync { map -> + map.cameraPosition + with(map.uiSettings) { + isAttributionEnabled = false + isCompassEnabled = false + isLogoEnabled = false + isDeselectMarkersOnTap = false + isScrollGesturesEnabled = false + isZoomGesturesEnabled = false + isTiltGesturesEnabled = false + isRotateGesturesEnabled = false + isDoubleTapGesturesEnabled = false + } + } + } + + override fun onDestroy() { + super.onDestroy() + Timber.e("onDestroy") + } + + override fun onDestroyView() { + super.onDestroyView() + Timber.e("onDestroyView") + } + + override fun onStop() { + super.onStop() + Timber.e("onStop") + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/views/EmptyView.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/views/EmptyView.kt new file mode 100644 index 0000000000..d20b5334ea --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/views/EmptyView.kt @@ -0,0 +1,14 @@ +package com.mapbox.mapboxsdk.testapp.mapboxfreezerepro.views + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import android.widget.FrameLayout +import com.mapbox.mapboxsdk.testapp.R + +class EmptyView(context: Context, attributeSet: AttributeSet? = null) : FrameLayout(context, attributeSet) { + + init { + View.inflate(context, R.layout.empty_view, this) + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/views/MapView.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/views/MapView.kt new file mode 100644 index 0000000000..764de0937f --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/mapboxfreezerepro/views/MapView.kt @@ -0,0 +1,44 @@ +package com.mapbox.mapboxsdk.testapp.mapboxfreezerepro.views + +import android.content.Context +import android.support.v4.app.FragmentManager +import android.support.v7.app.AppCompatActivity +import android.util.AttributeSet +import android.widget.FrameLayout +import android.view.View +import com.mapbox.mapboxsdk.testapp.R +import com.mapbox.mapboxsdk.testapp.mapboxfreezerepro.fragment.CustomMapFragment +import timber.log.Timber + +const val TAG = "tag" +class MapView(context: Context, + attrs: AttributeSet? = null) : FrameLayout(context, attrs) { + + private val fragmentManager: FragmentManager + + init { + fragmentManager = (context as AppCompatActivity).supportFragmentManager + View.inflate(context, R.layout.map_view, this) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + Timber.e("onAttachedToWindow") + val fragment = CustomMapFragment() + fragmentManager.beginTransaction() + .add( + R.id.mapContainer, fragment, + TAG + ) + .commit() + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + Timber.e("onDetachedToWindow") +// val fragment = fragmentManager.findFragmentByTag(TAG) +// fragmentManager.beginTransaction() +// .remove(fragment) +// .commitNowAllowingStateLoss() + } +} |