AndroidDefinire il valore del passo (incremento) per RangeSeekBar personalizzato

introduzione

Una personalizzazione di Android RangeSeekBar proposta da Alex Florescu su https://github.com/anothem/android-range-seek-bar

Permette di definire un valore di passo (incremento), quando si sposta la barra di ricerca

Osservazioni

1- Aggiungi l'attributo increment in attrs.xml

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

2- Definire un valore predefinito in RangeSeekBar.java e creare anche l'attributo

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

3- Inizia il valore di incremento in privato void init (Contesto contesto, AttributeSet attrs)

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

4- Definire il valore dell'incremento nel vuoto sincronizzato protetto onDraw (@NonNull Canvas canvas)

Dovrai sostituire il valore minText e maxText. Quindi, invece di:

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

Avrai: 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 - Ora devi solo usarlo. Spero che sia d'aiuto

Definire il valore del passo (incremento) per RangeSeekBar personalizzato Esempi correlati