レイヤカラーの変更
<?xml version="1.0" encoding="utf-8"?><FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:mapbox="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".examples.styles.ColorSwitcherActivity"> <com.mapbox.mapboxsdk.maps.MapViewandroid:id="@+id/mapView"android:layout_width="match_parent"android:layout_height="match_parent"mapbox:mapbox_cameraTargetLat="45.4385"mapbox:mapbox_cameraTargetLng="12.338"mapbox:mapbox_cameraZoom="17.4"/> <LinearLayoutandroid:id="@+id/color_picker_content"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom"android:background="#ffffff"android:orientation="vertical"android:paddingBottom="10dp"android:paddingEnd="24dp"android:paddingLeft="24dp"android:paddingRight="24dp"android:paddingStart="24dp"android:paddingTop="24dp"> <Spinnerandroid:id="@+id/spinner_layer_picker"android:layout_width="match_parent"android:layout_height="wrap_content"android:entries="@array/layer_spinner_array"/> <LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"> <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Red"/> <SeekBarandroid:id="@+id/red_seek_bar"android:layout_width="match_parent"android:layout_height="wrap_content"android:max="255"android:progress="202"/> </LinearLayout> <LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"> <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Green"/> <SeekBarandroid:id="@+id/green_seek_bar"android:layout_width="match_parent"android:layout_height="wrap_content"android:max="255"android:progress="210"/> </LinearLayout> <LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"> <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Blue"/> <SeekBarandroid:id="@+id/blue_seek_bar"android:layout_width="match_parent"android:layout_height="wrap_content"android:max="255"android:progress="211"/> </LinearLayout></LinearLayout> </FrameLayout>
ColorSwitcherActivity.java
package com.mapbox.mapboxandroiddemo.examples.styles; import android.graphics.Color;import android.os.Bundle;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import android.view.View;import android.widget.AdapterView;import android.widget.SeekBar;import android.widget.Spinner; import com.mapbox.mapboxandroiddemo.R;import com.mapbox.mapboxsdk.Mapbox;import com.mapbox.mapboxsdk.maps.MapView;import com.mapbox.mapboxsdk.maps.MapboxMap;import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;import com.mapbox.mapboxsdk.maps.Style;import com.mapbox.mapboxsdk.style.layers.FillLayer; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillColor; /*** Using setPaintProperty to change a layer's fill color.*/public class ColorSwitcherActivity extends AppCompatActivity { private MapView mapView;FillLayer water;FillLayer building; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); // Mapbox access token is configured here. This needs to be called either in your application// object or in the same activity which contains the mapview.Mapbox.getInstance(this, getString(R.string.access_token)); // This contains the MapView in XML and needs to be called after the access token is configured.setContentView(R.layout.activity_style_color_switcher); final SeekBar redSeekBar = findViewById(R.id.red_seek_bar);final SeekBar greenSeekBar = findViewById(R.id.green_seek_bar);final SeekBar blueSeekBar = findViewById(R.id.blue_seek_bar); final Spinner layerPicker = findViewById(R.id.spinner_layer_picker); layerPicker.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {if (layerPicker.getSelectedItem().toString().equals("Building")) { if (building != null) {redSeekBar.setProgress(Color.red(building.getFillColorAsInt()));greenSeekBar.setProgress(Color.green(building.getFillColorAsInt()));blueSeekBar.setProgress(Color.blue(building.getFillColorAsInt())); } } else if (layerPicker.getSelectedItem().toString().equals("Water")) { if (water != null) {redSeekBar.setProgress(Color.red(water.getFillColorAsInt()));greenSeekBar.setProgress(Color.green(water.getFillColorAsInt()));blueSeekBar.setProgress(Color.blue(water.getFillColorAsInt()));}}} @Overridepublic void onNothingSelected(AdapterView<?> adapterView) { }}); redSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {if (water != null && layerPicker.getSelectedItem().equals("Water") && fromUser) {water.setProperties(fillColor(Color.rgb(progress, greenSeekBar.getProgress(), blueSeekBar.getProgress())));} else if (building != null && layerPicker.getSelectedItem().equals("Building") && fromUser) {building.setProperties(fillColor(Color.rgb(progress, greenSeekBar.getProgress(), blueSeekBar.getProgress())));}} @Overridepublic void onStartTrackingTouch(SeekBar seekBar) { } @Overridepublic void onStopTrackingTouch(SeekBar seekBar) { }}); greenSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {if (water != null && layerPicker.getSelectedItem().equals("Water") && fromUser) {water.setProperties(fillColor(Color.rgb(redSeekBar.getProgress(), progress, blueSeekBar.getProgress())));} else if (building != null && layerPicker.getSelectedItem().equals("Building") && fromUser) {building.setProperties(fillColor(Color.rgb(progress, greenSeekBar.getProgress(), blueSeekBar.getProgress())));}} @Overridepublic void onStartTrackingTouch(SeekBar seekBar) { } @Overridepublic void onStopTrackingTouch(SeekBar seekBar) { }}); blueSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {if (water != null && layerPicker.getSelectedItem().equals("Water") && fromUser) {water.setProperties(fillColor(Color.rgb(redSeekBar.getProgress(), greenSeekBar.getProgress(), progress)));} else if (building != null && layerPicker.getSelectedItem().equals("Building") && fromUser) {building.setProperties(fillColor(Color.rgb(progress, greenSeekBar.getProgress(), blueSeekBar.getProgress())));}} @Overridepublic void onStartTrackingTouch(SeekBar seekBar) { } @Overridepublic void onStopTrackingTouch(SeekBar seekBar) { }}); mapView = findViewById(R.id.mapView);mapView.onCreate(savedInstanceState);mapView.getMapAsync(new OnMapReadyCallback() {@Overridepublic void onMapReady(@NonNull MapboxMap mapboxMap) {mapboxMap.setStyle(Style.LIGHT, new Style.OnStyleLoaded() {@Overridepublic void onStyleLoaded(@NonNull Style style) {water = (FillLayer) style.getLayer("water");building = (FillLayer) style.getLayer("building");}});}});} @Overridepublic void onResume() {super.onResume();mapView.onResume();} @Overrideprotected void onStart() {super.onStart();mapView.onStart();} @Overrideprotected void onStop() {super.onStop();mapView.onStop();} @Overridepublic void onPause() {super.onPause();mapView.onPause();} @Overridepublic void onLowMemory() {super.onLowMemory();mapView.onLowMemory();} @Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();} @Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}}