test: add core particle render layer validation
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
This commit is contained in:
@@ -286,6 +286,18 @@
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".activity.FeatureOverviewActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.particle.ParticleCoreLayerValidationActivity"
|
||||
android:description="@string/description_particle_core_layer_validation"
|
||||
android:exported="true"
|
||||
android:label="@string/activity_particle_core_layer_validation">
|
||||
<meta-data
|
||||
android:name="@string/category"
|
||||
android:value="@string/category_custom_layer" />
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".activity.FeatureOverviewActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.annotation.PolygonActivity"
|
||||
android:description="@string/description_polygon"
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
package org.maplibre.android.testapp.activity.particle
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.widget.Button
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import org.maplibre.android.camera.CameraPosition
|
||||
import org.maplibre.android.geometry.LatLng
|
||||
import org.maplibre.android.maps.MapView
|
||||
import org.maplibre.android.maps.MapLibreMap
|
||||
import org.maplibre.android.maps.Style
|
||||
import org.maplibre.android.testapp.R
|
||||
|
||||
/** VALIDATION ONLY: Android OpenGL host for the 30-01 Core RenderLayer experiment. */
|
||||
class ParticleCoreLayerValidationActivity : AppCompatActivity() {
|
||||
private lateinit var mapView: MapView
|
||||
private lateinit var maplibreMap: MapLibreMap
|
||||
private lateinit var status: TextView
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_particle_core_layer_validation)
|
||||
|
||||
mapView = findViewById(R.id.mapView)
|
||||
status = findViewById(R.id.validationStatus)
|
||||
mapView.onCreate(savedInstanceState)
|
||||
mapView.getMapAsync { map ->
|
||||
maplibreMap = map
|
||||
map.cameraPosition = CameraPosition.Builder()
|
||||
.target(LatLng(0.0, 0.0))
|
||||
.zoom(2.0)
|
||||
.build()
|
||||
loadValidationStyle(active = true)
|
||||
}
|
||||
|
||||
findViewById<Button>(R.id.validationActive).setOnClickListener {
|
||||
if (this::maplibreMap.isInitialized) loadValidationStyle(active = true)
|
||||
}
|
||||
findViewById<Button>(R.id.validationStatic).setOnClickListener {
|
||||
if (this::maplibreMap.isInitialized) loadValidationStyle(active = false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadValidationStyle(active: Boolean) {
|
||||
val state = if (active) "ACTIVE" else "STATIC"
|
||||
Log.i(TAG, "ParticleValidation: Test App switching to $state")
|
||||
maplibreMap.setStyle(Style.Builder().fromJson(validationStyle(active))) {
|
||||
status.text = getString(
|
||||
if (active) R.string.particle_validation_active_status
|
||||
else R.string.particle_validation_static_status
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun validationStyle(active: Boolean) = """
|
||||
{
|
||||
"version": 8,
|
||||
"name": "Particle Core Layer Validation",
|
||||
"sources": {
|
||||
"validation-point": {
|
||||
"type": "geojson",
|
||||
"data": {"type":"Feature","geometry":{"type":"Point","coordinates":[0,0]}}
|
||||
}
|
||||
},
|
||||
"layers": [
|
||||
{"id":"validation-background","type":"background","paint":{"background-color":"#102030"}},
|
||||
{"id":"validation-below","type":"circle","source":"validation-point",
|
||||
"paint":{"circle-radius":46,"circle-color":"#247ba0"}},
|
||||
{"id":"particle-validation-core","type":"particle-validation",
|
||||
"paint":{"particle-validation-active":$active}},
|
||||
{"id":"validation-above","type":"circle","source":"validation-point",
|
||||
"paint":{"circle-radius":16,"circle-color":"#ffe066"}}
|
||||
]
|
||||
}
|
||||
""".trimIndent()
|
||||
|
||||
override fun onStart() { super.onStart(); mapView.onStart() }
|
||||
override fun onResume() { super.onResume(); mapView.onResume() }
|
||||
override fun onPause() { mapView.onPause(); super.onPause() }
|
||||
override fun onStop() { mapView.onStop(); super.onStop() }
|
||||
override fun onDestroy() { mapView.onDestroy(); super.onDestroy() }
|
||||
override fun onLowMemory() { super.onLowMemory(); mapView.onLowMemory() }
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
super.onSaveInstanceState(outState)
|
||||
mapView.onSaveInstanceState(outState)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val TAG = "ParticleValidation"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<org.maplibre.android.maps.MapView
|
||||
android:id="@id/mapView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:background="#DD102030"
|
||||
android:orientation="vertical"
|
||||
android:padding="12dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/validationStatus"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/particle_validation_active_status"
|
||||
android:textColor="@android:color/white" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<Button
|
||||
android:id="@+id/validationActive"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/particle_validation_active" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/validationStatic"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/particle_validation_static" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="description_custom_layer">Overlay a custom native layer on the map</string>
|
||||
<string name="description_particle_core_layer_validation">Validate a source-less Core Style/RenderLayer, frame transform and repaint lifecycle</string>
|
||||
<string name="description_info_window_adapter">Learn how to create a custom InfoWindow</string>
|
||||
<string name="description_cameraposition">CameraPosition capabilities</string>
|
||||
<string name="description_map_fragment">Showcase MapFragment</string>
|
||||
|
||||
@@ -9,4 +9,8 @@
|
||||
<string name="description_world_tour_benchmark">Writes out avg. fps and 1% fps after world tour with .flyTo()</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="category_data">Data Sources</string>
|
||||
<string name="particle_validation_active">ACTIVE</string>
|
||||
<string name="particle_validation_static">STATIC</string>
|
||||
<string name="particle_validation_active_status">ACTIVE: Core Layer requests MapLibre frames. Move, zoom, rotate and pitch the map.</string>
|
||||
<string name="particle_validation_static_status">STATIC: Core Layer stopped requesting frames. Map gestures must still render normally.</string>
|
||||
</resources>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<string name="activity_snapshot">Snapshot Activity</string>
|
||||
<string name="activity_snapshot_within">Snapshot with within expression</string>
|
||||
<string name="activity_custom_layer">Custom Layer</string>
|
||||
<string name="activity_particle_core_layer_validation">Particle Core Layer Validation</string>
|
||||
<string name="activity_map_padding">Map Padding</string>
|
||||
<string name="activity_debug_mode">Debug Mode</string>
|
||||
<string name="activity_offline">Offline Map</string>
|
||||
|
||||
Reference in New Issue
Block a user