Per comodità io ho creato direttamente un'altra classe che estende SeekBar ma c'è la possibilità di fare il tutto anche senza creare una nuova classe, anche se non ci ho ancora provato. Il codice che posterò di seguito è molto semplice e non richiede delle particolari conoscenze per essere appreso se non la logica.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | public class SeekBarMod extends SeekBar { int valoreMinimo; public SeekBarMod(Context context) { super(context); // TODO Auto-generated constructor stub } public SeekBarMod(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public SeekBarMod(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public void setMin(int valoreMinimo) { this.valoreMinimo = valoreMinimo; setMax(getMax()); } @Override public void setMax(int valoreMassimo) { super.setMax(valoreMassimo-valoreMinimo); } @Override public void setProgress(int progresso) { super.setProgress(progresso-valoreMinimo); } public int progresso() { return super.getProgress()+valoreMinimo; } } |
Per prima cosa abbiamo ereditato i tre costruttori della classe SeekBar del pacchetto Android. In secondo luogo abbiamo creato il metodo setMin che accetta come parametro una variabile intera che sarà il valore minimo della SeekBar stessa e, successivamente, otteniamo il valore massimo che passiamo poi al metodo setMax che passerà al metodo setMax della classe madre un numero intero ottenuto dalla sottrazione tra il valore massimo e quello minimo. Infine, per poter ottenere il riferimento del progresso corrente dovete usare il metodo progresso che ritornerà, semplicemente, un numero intero ottenuto dall'addizione tra il progresso corrente e il valore minimo. Questo è tutto. Ringrazio il mio amico Andrea Demattè per avermi aiutato a realizzare la classe in questione.
Nessun commento:
Posta un commento