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