Define step value (increment) for custom RangeSeekBar

Download android eBook

Introduction

A customization of the Android RangeSeekBar proposed by Alex Florescu at https://github.com/anothem/android-range-seek-bar

It allows to define a step value (increment), when moving the seek bar

Remarks

1- Add the increment attribute in attrs.xml

<attr name="increment" format="integer|float"/>

2- Define a default value in RangeSeekBar.java and create the attribute also

private static final int DEFAULT_INCREMENT = 1;
private int increment;

3- Init the increment value in private void init(Context context, AttributeSet attrs)

if (attrs == null) 
    increment = DEFAULT_INCREMENT;
else 
    increment = a.getInt(R.styleable.RangeSeekBar_increment, DEFAULT_INCREMENT);

4- Define the increment value in protected synchronized void onDraw(@NonNull Canvas canvas)

You'll have to replace the minText and maxText value. So instead of :

  • minText = valueToString(getSelectedMinValue());
  • maxText = valueToString(getSelectedMaxValue());

You'll have : int x;

        x = (int) ((getSelectedMinValue().intValue()+increment)/increment);
        x = x*increment;
        if (x<absoluteMaxValue.intValue()) 
            minText = ""+x;
        else
            minText=""+(absoluteMaxValue.intValue()-increment);
        
        
        x = (int) ((getSelectedMaxValue().intValue()+increment)/increment);
        x = x*increment;
        maxText = ""+x;

5 - Now you just have to use it. Hope it helps

Related Examples

Stats

33 Contributors: 1
Tuesday, December 27, 2016
Licensed under: CC-BY-SA

Not affiliated with Stack Overflow
Rip Tutorial: info@zzzprojects.com

Download eBook