Add SurfaceViewResizeAcitivty to MapLibreAndroidTestApp (#4014)

This commit is contained in:
Bart Louwers
2026-01-20 10:30:43 +01:00
committed by GitHub
parent 10dbd5d68d
commit 0de907f91a
6 changed files with 133 additions and 0 deletions

View File

@@ -976,6 +976,18 @@
android:name="android.support.PARENT_ACTIVITY"
android:value=".activity.FeatureOverviewActivity" />
</activity>
<activity
android:name=".activity.surfaceview.SurfaceViewResizeActivity"
android:description="@string/description_surfaceview_resize"
android:exported="true"
android:label="@string/activity_surfaceview_resize">
<meta-data
android:name="@string/category"
android:value="@string/category_surfaceview" />
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activity.FeatureOverviewActivity" />
</activity>
<activity
android:name=".activity.maplayout.OverlayMapActivity"
android:description="@string/description_overlay"

View File

@@ -0,0 +1,90 @@
package org.maplibre.android.testapp.activity.surfaceview
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.coordinatorlayout.widget.CoordinatorLayout
import com.google.android.material.floatingactionbutton.FloatingActionButton
import org.maplibre.android.maps.*
import org.maplibre.android.testapp.R
import org.maplibre.android.testapp.styles.TestStyles
/**
* Test resizing a [android.view.SurfaceView] backed map on the fly.
*/
class SurfaceViewResizeActivity : AppCompatActivity() {
private lateinit var mapView: MapView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_surfaceview_resize)
setupToolbar()
setupMapView(savedInstanceState)
setupFab()
}
private fun setupToolbar() {
val actionBar = supportActionBar
if (actionBar != null) {
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
supportActionBar!!.setHomeButtonEnabled(true)
}
}
private fun setupMapView(savedInstanceState: Bundle?) {
mapView = findViewById(R.id.mapView)
mapView.onCreate(savedInstanceState)
mapView.getMapAsync { setupMap(it) }
}
private fun setupMap(maplibreMap: MapLibreMap) {
maplibreMap.setStyle(TestStyles.AWS_OPEN_DATA_STANDARD_LIGHT)
}
private fun setupFab() {
val fabDebug = findViewById<FloatingActionButton>(R.id.fabResize)
fabDebug.setOnClickListener { view: View? ->
if (this::mapView.isInitialized) {
val parent = findViewById<View>(R.id.coordinator_layout)
val width = if (parent.width == mapView.width) parent.width / 2 else parent.width
val height =
if (parent.height == mapView.height) parent.height / 2 else parent.height
mapView.layoutParams = CoordinatorLayout.LayoutParams(width, height)
}
}
}
override fun onStart() {
super.onStart()
mapView.onStart()
}
override fun onResume() {
super.onResume()
mapView.onResume()
}
override fun onPause() {
super.onPause()
mapView.onPause()
}
override fun onStop() {
super.onStop()
mapView.onStop()
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
mapView.onSaveInstanceState(outState)
}
override fun onDestroy() {
super.onDestroy()
mapView.onDestroy()
}
override fun onLowMemory() {
super.onLowMemory()
mapView.onLowMemory()
}
}

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<org.maplibre.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:maplibre_renderTextureMode="false"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabResize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginBottom="@dimen/fab_margin"
android:layout_marginRight="@dimen/fab_margin"
android:src="@drawable/ic_refresh"
app:backgroundTint="@color/accent"
app:layout_anchorGravity="bottom"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -15,6 +15,7 @@
<string name="category_storage">Storage</string>
<string name="category_events">Events</string>
<string name="category_textureview">Texture View</string>
<string name="category_surfaceview">Surface View</string>
<string name="category_location">Location</string>
<string name="category_integration">_Integration</string>
<string name="category_turf">Turf</string>

View File

@@ -78,6 +78,7 @@
<string name="description_textureview_resize">Resize a map rendered on a TextureView</string>
<string name="description_textureview_animate">Animate a map rendered on a TextureView</string>
<string name="description_textureview_transparent">Enable a transparent surface on TextureView</string>
<string name="description_surfaceview_resize">Resize a map rendered on a SurfaceView</string>
<string name="description_overlay">Blend an overlay on a map</string>
<string name="description_grid_source">Example Custom Geometry Source</string>
<string name="description_no_style">Load a map without providing a style URI or JSON</string>

View File

@@ -74,6 +74,7 @@
<string name="activity_textureview_resize">TextureView resize</string>
<string name="activity_textureview_animate">TextureView animation</string>
<string name="activity_textureview_transparent">TextureView transparent background</string>
<string name="activity_surfaceview_resize">SurfaceView resize</string>
<string name="activity_overlay">Map overlay</string>
<string name="activity_grid_source">Grid Source</string>
<string name="activity_no_style">No Style URI/JSON</string>