Add class picker to Android UI
This commit is contained in:
@@ -22,6 +22,9 @@ import com.mapzen.android.lost.LocationClient;
|
||||
import com.mapzen.android.lost.LocationListener;
|
||||
import com.mapzen.android.lost.LocationRequest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class MainActivity extends ActionBarActivity {
|
||||
|
||||
//
|
||||
@@ -50,6 +53,11 @@ public class MainActivity extends ActionBarActivity {
|
||||
private LocationListener mLocationListener;
|
||||
private LocationRequest mLocationRequest;
|
||||
|
||||
// Used for the class spinner
|
||||
Spinner mClassSpinner;
|
||||
ArrayAdapter mOutdoorsClassAdapter;
|
||||
ArrayAdapter mSatelliteClassAdapter;
|
||||
|
||||
//
|
||||
// Lifecycle events
|
||||
//
|
||||
@@ -84,6 +92,13 @@ public class MainActivity extends ActionBarActivity {
|
||||
styleSpinner.setAdapter(styleAdapter);
|
||||
styleSpinner.setOnItemSelectedListener(new StyleSpinnerListener());
|
||||
|
||||
// Add the spinner to select class styles
|
||||
mClassSpinner = (Spinner)findViewById(R.id.spinner_class);
|
||||
mOutdoorsClassAdapter = ArrayAdapter.createFromResource(getSupportActionBar().getThemedContext(),
|
||||
R.array.outdoors_class_list, android.R.layout.simple_spinner_dropdown_item);
|
||||
mSatelliteClassAdapter = ArrayAdapter.createFromResource(getSupportActionBar().getThemedContext(),
|
||||
R.array.satellite_class_list, android.R.layout.simple_spinner_dropdown_item);
|
||||
|
||||
// Prepare for GPS
|
||||
mLocationRequest = LocationRequest.create();
|
||||
mLocationRequest.setInterval(0);
|
||||
@@ -202,31 +217,55 @@ public class MainActivity extends ActionBarActivity {
|
||||
// Bright
|
||||
case 0:
|
||||
mMapFragment.getMap().setStyleUrl("asset://styles/styles/bright-v7.json");
|
||||
mMapFragment.getMap().removeAllClasses();
|
||||
mClassSpinner.setVisibility(View.INVISIBLE);
|
||||
mClassSpinner.setAdapter(null);
|
||||
mClassSpinner.setOnItemSelectedListener(null);
|
||||
break;
|
||||
|
||||
// Basic
|
||||
case 1:
|
||||
mMapFragment.getMap().setStyleUrl("asset://styles/styles/basic-v7.json");
|
||||
mMapFragment.getMap().removeAllClasses();
|
||||
mClassSpinner.setVisibility(View.INVISIBLE);
|
||||
mClassSpinner.setAdapter(null);
|
||||
mClassSpinner.setOnItemSelectedListener(null);
|
||||
break;
|
||||
|
||||
// Outdoors
|
||||
case 2:
|
||||
mMapFragment.getMap().setStyleUrl("asset://styles/styles/outdoors-v7.json");
|
||||
mMapFragment.getMap().removeAllClasses();
|
||||
mClassSpinner.setVisibility(View.VISIBLE);
|
||||
mClassSpinner.setAdapter(mOutdoorsClassAdapter);
|
||||
mClassSpinner.setOnItemSelectedListener(new OutdoorClassSpinnerListener());
|
||||
break;
|
||||
|
||||
// Satellite
|
||||
case 3:
|
||||
mMapFragment.getMap().setStyleUrl("asset://styles/styles/satellite-v7.json");
|
||||
mMapFragment.getMap().removeAllClasses();
|
||||
mClassSpinner.setVisibility(View.VISIBLE);
|
||||
mClassSpinner.setAdapter(mSatelliteClassAdapter);
|
||||
mClassSpinner.setOnItemSelectedListener(new SatelliteClassSpinnerListener());
|
||||
break;
|
||||
|
||||
// Pencil
|
||||
case 4:
|
||||
mMapFragment.getMap().setStyleUrl("asset://styles/styles/pencil-v7.json");
|
||||
mMapFragment.getMap().removeAllClasses();
|
||||
mClassSpinner.setVisibility(View.INVISIBLE);
|
||||
mClassSpinner.setAdapter(null);
|
||||
mClassSpinner.setOnItemSelectedListener(null);
|
||||
break;
|
||||
|
||||
// Empty
|
||||
case 5:
|
||||
mMapFragment.getMap().setStyleUrl("asset://styles/styles/empty-v7.json");
|
||||
mMapFragment.getMap().removeAllClasses();
|
||||
mClassSpinner.setVisibility(View.INVISIBLE);
|
||||
mClassSpinner.setAdapter(null);
|
||||
mClassSpinner.setOnItemSelectedListener(null);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -241,6 +280,76 @@ public class MainActivity extends ActionBarActivity {
|
||||
}
|
||||
}
|
||||
|
||||
// This class handles outdoor class change events
|
||||
private class OutdoorClassSpinnerListener implements AdapterView.OnItemSelectedListener {
|
||||
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
ArrayList<String> classes = new ArrayList<String>(1);
|
||||
|
||||
switch(position) {
|
||||
// Day
|
||||
case 0:
|
||||
classes.add("day");
|
||||
mMapFragment.getMap().setClasses(classes);
|
||||
break;
|
||||
|
||||
// Night
|
||||
case 1:
|
||||
classes.add("night");
|
||||
mMapFragment.getMap().setClasses(classes);
|
||||
break;
|
||||
|
||||
default:
|
||||
onNothingSelected(parent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
mMapFragment.getMap().removeAllClasses();
|
||||
}
|
||||
}
|
||||
|
||||
// This class handles satellite class change events
|
||||
private class SatelliteClassSpinnerListener implements AdapterView.OnItemSelectedListener {
|
||||
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
ArrayList<String> classes = new ArrayList<String>(2);
|
||||
|
||||
switch(position) {
|
||||
// Labels + Contours
|
||||
case 0:
|
||||
classes.add("labels");
|
||||
classes.add("contours");
|
||||
mMapFragment.getMap().setClasses(classes);
|
||||
break;
|
||||
|
||||
// Labels Only
|
||||
case 1:
|
||||
classes.add("labels");
|
||||
mMapFragment.getMap().setClasses(classes);
|
||||
break;
|
||||
|
||||
// No Labels
|
||||
case 2:
|
||||
mMapFragment.getMap().setClasses(classes);
|
||||
break;
|
||||
|
||||
default:
|
||||
onNothingSelected(parent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
mMapFragment.getMap().removeAllClasses();
|
||||
}
|
||||
}
|
||||
|
||||
// Called when FPS changes
|
||||
public class MyOnFpsChangedListener implements MapView.OnFpsChangedListener {
|
||||
|
||||
|
||||
@@ -15,6 +15,12 @@
|
||||
android:id="@+id/spinner_style"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spinner_class"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</android.support.v7.widget.Toolbar>
|
||||
|
||||
<FrameLayout
|
||||
|
||||
@@ -16,8 +16,19 @@
|
||||
<item>Basic</item>
|
||||
<item>Outdoors</item>
|
||||
<item>Satellite</item>
|
||||
<!--<item>Pencil</item>-->
|
||||
<!--<item>Empty</item>-->
|
||||
<item>Pencil</item>
|
||||
<item>Empty</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="outdoors_class_list">
|
||||
<item>Day</item>
|
||||
<item>Night</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="satellite_class_list">
|
||||
<item>Labels + Contours</item>
|
||||
<item>Labels Only</item>
|
||||
<item>No Labels</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ZoomButtonsController;
|
||||
|
||||
import com.almeros.android.multitouch.gesturedetectors.RotateGestureDetector;
|
||||
@@ -358,6 +359,28 @@ public class MapView extends SurfaceView {
|
||||
mNativeMapView.setClasses(classes);
|
||||
}
|
||||
|
||||
public void addClass(String clazz) {
|
||||
mNativeMapView.addClass(clazz);
|
||||
}
|
||||
|
||||
public void removeClass(String clazz) {
|
||||
mNativeMapView.removeClass(clazz);
|
||||
}
|
||||
|
||||
public boolean hasClass(String clazz) {
|
||||
return mNativeMapView.hasClass(clazz);
|
||||
}
|
||||
|
||||
public void removeAllClasses() {
|
||||
removeAllClasses(0);
|
||||
}
|
||||
|
||||
public void removeAllClasses(long transitionDuration) {
|
||||
mNativeMapView.setDefaultTransitionDuration(transitionDuration);
|
||||
ArrayList<String> classes = new ArrayList<String>(0);
|
||||
setClasses(classes);
|
||||
}
|
||||
|
||||
//
|
||||
// Lifecycle events
|
||||
//
|
||||
@@ -1145,7 +1168,6 @@ public class MapView extends SurfaceView {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Called when our Internet connectivity has changed
|
||||
private void onConnectivityChanged(boolean isConnected) {
|
||||
Log.v(TAG, "onConnectivityChanged: " + isConnected);
|
||||
|
||||
Reference in New Issue
Block a user