Dato che le shapes sono già nella cartella drawables vengono recepite anche qui, e così le due bars mi vengono già ben formattate da un punto di vista estetico.
Ho impostato il massimo a 240 minuti (4 ore)
Ora, per rendere la scala graduata a 10 minuti, devo fare, come già fatto prima nell'altra mia prova, la divisione intera del valore della barra per 10, e poi moltiplicare per 10.
Ecco:
public class TimeSettings extends Activity { SeekBar seekBarMin, seekBarMax; TextView textViewMin,textViewMax; int intero; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_time_settings); seekBarMin=(SeekBar)findViewById(R.id.seekBar1); seekBarMax=(SeekBar)findViewById(R.id.seekBar2); textViewMin=(TextView)findViewById(R.id.textView1); textViewMax=(TextView)findViewById(R.id.textView2); seekBarMin.setMax(240); //4 ore * 60 minuti seekBarMin.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { intero=10*(progress/10); textViewMin.setText(""+intero); } }); } }E funziona: sulla TextBarMin appaiono i minuti, in cambiamenti discreti di 10 minuti per volta.
Ora devo commutare in ore e minuti, tremite un altro calcolo matematico: divisione intera per 60 e modulo 60.
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { intero=10*(progress/10); int ore=intero/60; int minuti=intero%60; textViewMin.setText(ore+" ORE : "+minuti+" MINUTI");E verifichiamo...
Funziona.
Una finezza: se si tratta di 1 ora, appare scritto "ORA" e non "ORE". Più "umano" e attraente:
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { intero=10*(progress/10); int ore=intero/60; int minuti=intero%60; String strOra="ORE"; if(ore==1)strOra="ORA"; textViewMin.setText(ore+" "+strOra+" E "+minuti+" MINUTI"); }Okay.
Ho sistemato le due SeekBars, con una serie di finezze che rendono il testo molto "human friendly":
seekBarMin.setMax(240); //4 ore * 60 minuti seekBarMin.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int intero=10*(progress/10); int ore=intero/60; int minuti=intero%60; String stringaDelleOre; String stringaDeiMinuti; String stringaEt=""; if(ore==0){ stringaDelleOre=""; } else if(ore==1){ stringaDelleOre=ore+" ORA "; } else{ stringaDelleOre=ore+" ORE "; } if(minuti==0){ stringaDeiMinuti=""; } else if(minuti==1){ stringaDeiMinuti=minuti+" MINUTO "; } else{ stringaDeiMinuti=minuti+" MINUTI "; } if(ore!=0 && minuti!=0) stringaEt=" E "; if(ore==0 && minuti==0) { stringaDelleOre=ore+" ORE"; stringaEt= " E "; stringaDeiMinuti=minuti+" MINUTI"; } textViewMin.setText(stringaDelleOre+stringaEt+stringaDeiMinuti); if(progress>seekBarMax.getProgress())seekBarMax.setProgress(progress); } }); seekBarMax.setMax(240); seekBarMax.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int intero=10*(progress/10); int ore=intero/60; int minuti=intero%60; String stringaDelleOre; String stringaDeiMinuti; String stringaEt=""; if(ore==0){ stringaDelleOre=""; } else if(ore==1){ stringaDelleOre=ore+" ORA "; } else{ stringaDelleOre=ore+" ORE "; } if(minuti==0){ stringaDeiMinuti=""; } else if(minuti==1){ stringaDeiMinuti=minuti+" MINUTO "; } else{ stringaDeiMinuti=minuti+" MINUTI "; } if(ore!=0 && minuti!=0) stringaEt=" E "; if(ore==0 && minuti==0) { stringaDelleOre=ore+" ORE"; stringaEt= " E "; stringaDeiMinuti=minuti+" MINUTI"; } textViewMax.setText(stringaDelleOre+stringaEt+stringaDeiMinuti); if(progress<seekBarMin.getProgress())seekBarMin.setProgress(progress); } }); }
Nessun commento:
Posta un commento