Search in sources :

Example 1 with RangeSlider

use of com.google.android.material.slider.RangeSlider in project ods-android by Orange-OpenSource.

the class SliderMainDemoFragment method onCreateDemoView.

@Override
public View onCreateDemoView(LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) {
    View view = layoutInflater.inflate(R.layout.cat_slider_fragment, viewGroup, false);
    Slider slider = view.findViewById(R.id.slider);
    slider.addOnSliderTouchListener(touchListener);
    RangeSlider rangeSlider = view.findViewById(R.id.range_slider);
    rangeSlider.addOnSliderTouchListener(rangeSliderTouchListener);
    Button button = view.findViewById(R.id.button);
    button.setOnClickListener(v -> slider.setValue(slider.getValueTo()));
    return view;
}
Also used : Slider(com.google.android.material.slider.Slider) RangeSlider(com.google.android.material.slider.RangeSlider) Button(android.widget.Button) View(android.view.View) RangeSlider(com.google.android.material.slider.RangeSlider)

Example 2 with RangeSlider

use of com.google.android.material.slider.RangeSlider in project Osmand by osmandapp.

the class DownloadTilesFragment method setupSlider.

private void setupSlider(@NonNull View view, @NonNull ITileSource tileSource) {
    int currentZoom = mapView.getZoom();
    int maxZoom = tileSource.getMaximumZoomSupported();
    int minZoom = Math.min(currentZoom, maxZoom);
    RangeSlider slider = view.findViewById(R.id.zooms_range_slider);
    UiUtilities.setupSlider(slider, nightMode, ColorUtilities.getActiveColor(app, nightMode), true);
    slider.clearOnChangeListeners();
    boolean multipleZoomsSupported = minZoom < maxZoom;
    slider.setEnabled(multipleZoomsSupported);
    if (multipleZoomsSupported) {
        slider.setValueFrom(minZoom);
        slider.setValueTo(maxZoom);
        slider.setValues(((float) selectedMinZoom), ((float) selectedMaxZoom));
        slider.addOnChangeListener((slider1, value, fromUser) -> {
            List<Float> minMax = slider.getValues();
            selectedMinZoom = minMax.get(0).intValue();
            selectedMaxZoom = minMax.get(1).intValue();
            setupTilesPreview();
            setupMinMaxZoom();
            setupTilesDownloadInfo(view, tileSource);
        });
    }
}
Also used : SuppressLint(android.annotation.SuppressLint) RangeSlider(com.google.android.material.slider.RangeSlider)

Example 3 with RangeSlider

use of com.google.android.material.slider.RangeSlider in project Osmand by osmandapp.

the class GpsFiltersCard method setupSlider.

private void setupSlider(@NonNull final View container, @NonNull final GpsFilter filter) {
    boolean range = filter.isRangeSupported();
    boolean enabled = filter.getMinValue() != filter.getMaxValue();
    Slider slider = container.findViewById(R.id.filter_slider);
    RangeSlider rangeSlider = container.findViewById(R.id.filter_range_slider);
    AndroidUiHelper.updateVisibility(slider, !range);
    AndroidUiHelper.updateVisibility(rangeSlider, range);
    if (range) {
        rangeSlider.setEnabled(enabled);
        rangeSlider.clearOnChangeListeners();
        if (enabled) {
            rangeSlider.setValueFrom((float) filter.getMinValue());
            rangeSlider.setValueTo((float) filter.getMaxValue());
            rangeSlider.setValues(((float) filter.getSelectedMinValue()), ((float) filter.getSelectedMaxValue()));
            rangeSlider.addOnChangeListener((slider1, value, fromUser) -> {
                List<Float> values = rangeSlider.getValues();
                if (fromUser && values.size() == 2) {
                    filter.updateValues((values.get(0)), values.get(1));
                    updateDisplayedFilterNumbers(container, filter);
                    if (gpxDataItem != null) {
                        boolean updated = gpxDbHelper.updateGpsFilters(gpxDataItem, filteredSelectedGpxFile);
                        if (updated) {
                            gpsFilterHelper.filterGpxFile(filteredSelectedGpxFile, true);
                        }
                    }
                }
            });
        }
        UiUtilities.setupSlider(rangeSlider, nightMode, ColorUtilities.getActiveColor(app, nightMode), false);
    } else {
        slider.setEnabled(enabled);
        slider.clearOnChangeListeners();
        if (enabled) {
            slider.setValueFrom((float) filter.getMinValue());
            slider.setValueTo((float) filter.getMaxValue());
            slider.setValue((float) filter.getSelectedMaxValue());
            slider.addOnChangeListener((slider1, value, fromUser) -> {
                if (fromUser) {
                    filter.updateValue((slider.getValue()));
                    updateDisplayedFilterNumbers(container, filter);
                    if (gpxDataItem != null) {
                        boolean updated = gpxDbHelper.updateGpsFilters(gpxDataItem, filteredSelectedGpxFile);
                        if (updated) {
                            gpsFilterHelper.filterGpxFile(filteredSelectedGpxFile, true);
                        }
                    }
                }
            });
        }
        UiUtilities.setupSlider(slider, nightMode, ColorUtilities.getActiveColor(app, nightMode));
    }
}
Also used : Slider(com.google.android.material.slider.Slider) RangeSlider(com.google.android.material.slider.RangeSlider) RangeSlider(com.google.android.material.slider.RangeSlider)

Example 4 with RangeSlider

use of com.google.android.material.slider.RangeSlider in project Osmand by osmandapp.

the class InputZoomLevelsBottomSheet method createMenuItems.

@Override
public void createMenuItems(Bundle savedInstanceState) {
    OsmandApplication app = requiredMyApplication();
    if (savedInstanceState != null) {
        minZoom = savedInstanceState.getInt(MIN_ZOOM_KEY);
        maxZoom = savedInstanceState.getInt(MAX_ZOOM_KEY);
        dialogDescrRes = savedInstanceState.getInt(DIALOG_DESCR_RES_KEY);
        sliderDescrRes = savedInstanceState.getInt(SLIDER_DESCR_RES_KEY);
        newMapSource = savedInstanceState.getBoolean(NEW_MAP_SOURCE);
    }
    LayoutInflater inflater = UiUtilities.getInflater(app, nightMode);
    TitleItem titleItem = new TitleItem(getString(R.string.shared_string_zoom_levels));
    items.add(titleItem);
    final View sliderView = inflater.inflate(R.layout.zoom_levels_with_descr, null);
    ((TextView) sliderView.findViewById(R.id.slider_descr)).setText(sliderDescrRes);
    TextView dialogDescrTv = sliderView.findViewById(R.id.dialog_descr);
    if (dialogDescrRes == R.string.map_source_zoom_levels_descr) {
        String mapSource = getString(R.string.map_source);
        String overlayUnderlay = getString(R.string.pref_overlay);
        String dialogDesr = getString(dialogDescrRes, mapSource, overlayUnderlay);
        dialogDescrTv.setText(UiUtilities.createCustomFontSpannable(FontCache.getRobotoMedium(app), dialogDesr, mapSource, overlayUnderlay));
    } else {
        dialogDescrTv.setText(getString(dialogDescrRes));
    }
    final TextView minZoomValue = sliderView.findViewById(R.id.zoom_value_min);
    minZoomValue.setText(String.valueOf(minZoom));
    final TextView maxZoomValue = sliderView.findViewById(R.id.zoom_value_max);
    maxZoomValue.setText(String.valueOf(maxZoom));
    RangeSlider slider = sliderView.findViewById(R.id.zoom_slider);
    int colorProfile = app.getSettings().getApplicationMode().getProfileColor(nightMode);
    UiUtilities.setupSlider(slider, nightMode, colorProfile, true);
    slider.setValueFrom(SLIDER_FROM);
    slider.setValueTo(SLIDER_TO);
    slider.setValues((float) minZoom, (float) maxZoom);
    slider.addOnChangeListener(new RangeSlider.OnChangeListener() {

        @Override
        public void onValueChange(@NonNull RangeSlider slider, float value, boolean fromUser) {
            List<Float> values = slider.getValues();
            if (values.size() > 0) {
                minZoomValue.setText(String.valueOf(values.get(0).intValue()));
                maxZoomValue.setText(String.valueOf(values.get(1).intValue()));
            }
        }
    });
    slider.addOnSliderTouchListener(new RangeSlider.OnSliderTouchListener() {

        @Override
        public void onStartTrackingTouch(@NonNull RangeSlider slider) {
        }

        @Override
        public void onStopTrackingTouch(@NonNull RangeSlider slider) {
            List<Float> values = slider.getValues();
            if (values.size() > 0) {
                minZoom = values.get(0).intValue();
                maxZoom = values.get(1).intValue();
            }
        }
    });
    final SimpleBottomSheetItem sliderItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder().setCustomView(sliderView).create();
    items.add(sliderItem);
}
Also used : SimpleBottomSheetItem(net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem) OsmandApplication(net.osmand.plus.OsmandApplication) TitleItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem) TextView(android.widget.TextView) View(android.view.View) RangeSlider(com.google.android.material.slider.RangeSlider) LayoutInflater(android.view.LayoutInflater) TextView(android.widget.TextView) List(java.util.List)

Example 5 with RangeSlider

use of com.google.android.material.slider.RangeSlider in project OsmAnd by osmandapp.

the class InputZoomLevelsBottomSheet method createMenuItems.

@Override
public void createMenuItems(Bundle savedInstanceState) {
    OsmandApplication app = requiredMyApplication();
    if (savedInstanceState != null) {
        minZoom = savedInstanceState.getInt(MIN_ZOOM_KEY);
        maxZoom = savedInstanceState.getInt(MAX_ZOOM_KEY);
        dialogDescrRes = savedInstanceState.getInt(DIALOG_DESCR_RES_KEY);
        sliderDescrRes = savedInstanceState.getInt(SLIDER_DESCR_RES_KEY);
        newMapSource = savedInstanceState.getBoolean(NEW_MAP_SOURCE);
    }
    LayoutInflater inflater = UiUtilities.getInflater(app, nightMode);
    TitleItem titleItem = new TitleItem(getString(R.string.shared_string_zoom_levels));
    items.add(titleItem);
    final View sliderView = inflater.inflate(R.layout.zoom_levels_with_descr, null);
    ((TextView) sliderView.findViewById(R.id.slider_descr)).setText(sliderDescrRes);
    TextView dialogDescrTv = sliderView.findViewById(R.id.dialog_descr);
    if (dialogDescrRes == R.string.map_source_zoom_levels_descr) {
        String mapSource = getString(R.string.map_source);
        String overlayUnderlay = getString(R.string.pref_overlay);
        String dialogDesr = getString(dialogDescrRes, mapSource, overlayUnderlay);
        dialogDescrTv.setText(UiUtilities.createCustomFontSpannable(FontCache.getRobotoMedium(app), dialogDesr, mapSource, overlayUnderlay));
    } else {
        dialogDescrTv.setText(getString(dialogDescrRes));
    }
    final TextView minZoomValue = sliderView.findViewById(R.id.zoom_value_min);
    minZoomValue.setText(String.valueOf(minZoom));
    final TextView maxZoomValue = sliderView.findViewById(R.id.zoom_value_max);
    maxZoomValue.setText(String.valueOf(maxZoom));
    RangeSlider slider = sliderView.findViewById(R.id.zoom_slider);
    int colorProfile = app.getSettings().getApplicationMode().getProfileColor(nightMode);
    UiUtilities.setupSlider(slider, nightMode, colorProfile, true);
    slider.setValueFrom(SLIDER_FROM);
    slider.setValueTo(SLIDER_TO);
    slider.setValues((float) minZoom, (float) maxZoom);
    slider.addOnChangeListener(new RangeSlider.OnChangeListener() {

        @Override
        public void onValueChange(@NonNull RangeSlider slider, float value, boolean fromUser) {
            List<Float> values = slider.getValues();
            if (values.size() > 0) {
                minZoomValue.setText(String.valueOf(values.get(0).intValue()));
                maxZoomValue.setText(String.valueOf(values.get(1).intValue()));
            }
        }
    });
    slider.addOnSliderTouchListener(new RangeSlider.OnSliderTouchListener() {

        @Override
        public void onStartTrackingTouch(@NonNull RangeSlider slider) {
        }

        @Override
        public void onStopTrackingTouch(@NonNull RangeSlider slider) {
            List<Float> values = slider.getValues();
            if (values.size() > 0) {
                minZoom = values.get(0).intValue();
                maxZoom = values.get(1).intValue();
            }
        }
    });
    final SimpleBottomSheetItem sliderItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder().setCustomView(sliderView).create();
    items.add(sliderItem);
}
Also used : SimpleBottomSheetItem(net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem) OsmandApplication(net.osmand.plus.OsmandApplication) TitleItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem) TextView(android.widget.TextView) View(android.view.View) RangeSlider(com.google.android.material.slider.RangeSlider) LayoutInflater(android.view.LayoutInflater) TextView(android.widget.TextView) List(java.util.List)

Aggregations

RangeSlider (com.google.android.material.slider.RangeSlider)6 View (android.view.View)3 Slider (com.google.android.material.slider.Slider)3 LayoutInflater (android.view.LayoutInflater)2 TextView (android.widget.TextView)2 List (java.util.List)2 OsmandApplication (net.osmand.plus.OsmandApplication)2 SimpleBottomSheetItem (net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem)2 TitleItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem)2 SuppressLint (android.annotation.SuppressLint)1 Button (android.widget.Button)1