From c8ec80fcb90ffaf16bb223820e26e455fbf8af8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Paczos?= Date: Tue, 13 Mar 2018 19:40:02 +0100 Subject: [android] gestures detector's test app - optimized recycler and map, added animations toggle --- .../activity/camera/GestureDetectorActivity.java | 72 +++++++++++++++++++++- .../src/main/res/menu/menu_gestures.xml | 3 + 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/GestureDetectorActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/GestureDetectorActivity.java index 38c59f4124..c1d806945f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/GestureDetectorActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/GestureDetectorActivity.java @@ -2,6 +2,7 @@ package com.mapbox.mapboxsdk.testapp.activity.camera; import android.graphics.Typeface; import android.os.Bundle; +import android.os.Handler; import android.support.annotation.ColorInt; import android.support.annotation.IntDef; import android.support.v4.content.ContextCompat; @@ -40,7 +41,7 @@ import static java.lang.annotation.RetentionPolicy.SOURCE; public class GestureDetectorActivity extends AppCompatActivity { - private static final int MAX_NUMBER_OF_ALERTS = 100; + private static final int MAX_NUMBER_OF_ALERTS = 30; private MapView mapView; private MapboxMap mapboxMap; @@ -51,6 +52,7 @@ public class GestureDetectorActivity extends AppCompatActivity { private Marker marker = null; private LatLng focalPointLatLng = null; + private boolean animationsEnabled = true; @Override protected void onCreate(Bundle savedInstanceState) { @@ -58,6 +60,7 @@ public class GestureDetectorActivity extends AppCompatActivity { setContentView(R.layout.activity_gesture_detector); mapView = (MapView) findViewById(R.id.mapView); + mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @Override public void onMapReady(MapboxMap mapboxMap) { @@ -73,11 +76,55 @@ public class GestureDetectorActivity extends AppCompatActivity { recyclerView.setAdapter(gestureAlertsAdapter); } + @Override + protected void onResume() { + super.onResume(); + mapView.onResume(); + } + + @Override + protected void onPause() { + super.onPause(); + gestureAlertsAdapter.cancelUpdates(); + mapView.onPause(); + } + + @Override + protected void onStart() { + super.onStart(); + mapView.onStart(); + } + + @Override + protected void onStop() { + super.onStop(); + mapView.onStop(); + } + + @Override + public void onLowMemory() { + super.onLowMemory(); + mapView.onLowMemory(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.onDestroy(); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + mapView.onSaveInstanceState(outState); + } + private void initializeMap() { gesturesManager = mapboxMap.getGesturesManager(); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) recyclerView.getLayoutParams(); layoutParams.height = (int) (mapView.getHeight() / 1.75); + layoutParams.width = (mapView.getWidth() / 3); recyclerView.setLayoutParams(layoutParams); attachListeners(); @@ -93,7 +140,6 @@ public class GestureDetectorActivity extends AppCompatActivity { @Override public void onMove(MoveGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_PROGRESS, "MOVE PROGRESS")); - recalculateFocalPoint(); } @Override @@ -189,6 +235,9 @@ public class GestureDetectorActivity extends AppCompatActivity { mapboxMap.easeCamera(CameraUpdateFactory.newLatLngZoom(focalPointLatLng, 16)); mapboxMap.getUiSettings().setFocalPoint(mapboxMap.getProjection().toScreenLocation(focalPointLatLng)); return true; + case R.id.menu_gesture_animation: + animationsEnabled = !animationsEnabled; + mapboxMap.getUiSettings().setAllVelocityAnimationsEnabled(animationsEnabled); } return super.onOptionsItemSelected(item); } @@ -217,6 +266,8 @@ public class GestureDetectorActivity extends AppCompatActivity { private static class GestureAlertsAdapter extends RecyclerView.Adapter { + private boolean isUpdating; + private final Handler updateHandler = new Handler(); private final List alerts = new ArrayList<>(); public static class ViewHolder extends RecyclerView.ViewHolder { @@ -234,6 +285,7 @@ public class GestureDetectorActivity extends AppCompatActivity { } } + @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_gesture_alert, parent, false); @@ -269,8 +321,22 @@ public class GestureDetectorActivity extends AppCompatActivity { } alerts.add(0, alert); + if (!isUpdating) { + isUpdating = true; + updateHandler.postDelayed(updateRunnable, 250); + } + } + + private Runnable updateRunnable = new Runnable() { + @Override + public void run() { + notifyDataSetChanged(); + isUpdating = false; + } + }; - notifyDataSetChanged(); + void cancelUpdates() { + updateHandler.removeCallbacksAndMessages(null); } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_gestures.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_gestures.xml index 17ebe7090e..3f96188da4 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_gestures.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_gestures.xml @@ -6,4 +6,7 @@ + \ No newline at end of file -- cgit v1.2.1