Expose RENDERMODE_CONTINUOUSLY and RENDERMODE_WHEN_DIRTY (#2801)

This commit is contained in:
alasram
2024-09-17 12:59:58 -07:00
committed by GitHub
parent 0e0c8da72a
commit 77a464d335
11 changed files with 157 additions and 59 deletions

View File

@@ -19,6 +19,7 @@ import org.maplibre.android.annotations.PolylineOptions
import org.maplibre.android.exceptions.InvalidMarkerPositionException
import org.maplibre.android.geometry.LatLng
import org.maplibre.android.maps.MapLibreMap.InfoWindowAdapter
import org.maplibre.android.maps.renderer.MapRenderer.RenderingRefreshMode
import org.maplibre.android.testapp.R
import org.maplibre.android.testapp.activity.EspressoTest
@@ -480,6 +481,19 @@ class MapLibreMapTest : EspressoTest() {
}
}
@Test
fun testRenderingRefreshMode() {
validateTestSetup()
rule.runOnUiThread {
mapView = rule.getActivity().findViewById(R.id.mapView)
// Default RenderingRefreshMode is WHEN_DIRTY
assertTrue(mapView.getRenderingRefreshMode() == RenderingRefreshMode.WHEN_DIRTY)
// Switch to CONTINUOUS rendering
mapView.setRenderingRefreshMode(RenderingRefreshMode.CONTINUOUS)
assertTrue(mapView.getRenderingRefreshMode() == RenderingRefreshMode.CONTINUOUS)
}
}
@Deprecated("remove this class when removing deprecated annotations")
inner class MapLibreMapAction internal constructor(private val invokeViewAction: InvokeViewAction) : ViewAction {
override fun getConstraints(): Matcher<View> {

View File

@@ -437,6 +437,8 @@ class NativeMapViewTest : AppCenter() {
class DummyRenderer(context: Context) : MapRenderer(context, null) {
private var renderingRefreshMode: RenderingRefreshMode = RenderingRefreshMode.WHEN_DIRTY
override fun requestRender() {
// no-op
}
@@ -452,5 +454,13 @@ class NativeMapViewTest : AppCenter() {
override fun getView(): View? {
return null;
}
override fun setRenderingRefreshMode(mode : RenderingRefreshMode) {
renderingRefreshMode = mode
}
override fun getRenderingRefreshMode() : RenderingRefreshMode{
return renderingRefreshMode
}
}
}

View File

@@ -50,7 +50,7 @@ public abstract class BaseTest extends AppCenter {
@Before
@CallSuper
public void beforeTest() {
initialiseMap();
initializeMap();
holdTestRunnerForStyleLoad();
}
@@ -71,15 +71,15 @@ public abstract class BaseTest extends AppCenter {
if (!MapLibre.isConnected()) {
Timber.e("Not connected to the internet while running test");
}
assertNotNull("MapView isn't initialised", mapView);
assertNotNull("MapLibreMap isn't initialised", maplibreMap);
assertNotNull("Style isn't initialised", maplibreMap.getStyle());
assertNotNull("MapView isn't initialized", mapView);
assertNotNull("MapLibreMap isn't initialized", maplibreMap);
assertNotNull("Style isn't initialized", maplibreMap.getStyle());
assertTrue("Style isn't fully loaded", maplibreMap.getStyle().isFullyLoaded());
}
protected abstract Class getActivityClass();
private void initialiseMap() {
private void initializeMap() {
try {
rule.runOnUiThread(() -> {
mapView = rule.getActivity().findViewById(R.id.mapView);

View File

@@ -11,6 +11,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
import org.maplibre.android.maps.*
import org.maplibre.android.maps.MapLibreMap.OnCameraMoveListener
import org.maplibre.android.maps.MapLibreMap.OnFpsChangedListener
import org.maplibre.android.maps.renderer.MapRenderer
import org.maplibre.android.style.layers.Layer
import org.maplibre.android.style.layers.Property
import org.maplibre.android.style.layers.PropertyFactory
@@ -29,6 +30,7 @@ open class DebugModeActivity : AppCompatActivity(), OnMapReadyCallback, OnFpsCha
private var actionBarDrawerToggle: ActionBarDrawerToggle? = null
private var currentStyleIndex = 0
private var isReportFps = true
private var isContinuousRendering = false
private var fpsView: TextView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -167,6 +169,13 @@ open class DebugModeActivity : AppCompatActivity(), OnMapReadyCallback, OnFpsCha
mapView.setMaximumFps(30)
} else if (itemId == R.id.menu_action_limit_to_60_fps) {
mapView.setMaximumFps(60)
} else if (itemId == R.id.menu_action_toggle_continuous_rendering) {
isContinuousRendering = !isContinuousRendering
if (isContinuousRendering) {
mapView.setRenderingRefreshMode(MapRenderer.RenderingRefreshMode.CONTINUOUS)
} else {
mapView.setRenderingRefreshMode(MapRenderer.RenderingRefreshMode.WHEN_DIRTY)
}
}
return actionBarDrawerToggle!!.onOptionsItemSelected(item) || super.onOptionsItemSelected(
item

View File

@@ -13,5 +13,9 @@
android:id="@+id/menu_action_limit_to_60_fps"
android:title="Limit FPS to 60"
app:showAsAction="never" />
<item
android:id="@+id/menu_action_toggle_continuous_rendering"
android:title="Toggle continuous rendering"
app:showAsAction="never" />
</menu>