codice:
////////////////////////////////////////////////////////////////////////////////////////
// CREAZIONE GRAFICO PER DATA
////////////////////////////////////////////////////////////////////////////////////////
private void creaGrafoData() {
//DATA= DATA IN FORMATO 25-12-2012
String data=pad(mMonth+1)+"-"+pad(mDay)+"-"+mYear;
//Toast.makeText(getApplicationContext(), data, Toast.LENGTH_SHORT).show();
LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);
//PULISCI ZONA GRAFICI
layout.removeAllViewsInLayout();
//LISTA DI ARRAY CON I PUNTI (X,Y) -> È NECESSARIO PERCHÈ CI SONO + GRAFICI
List<GraphViewData[]> tutti = new ArrayList<GraphViewData[]>();
List<GraphViewSeries> serie = new ArrayList<GraphViewSeries>();
//ARRAY CON GLI INT DI 8 COLORI (1 PER OGNI EVENTO). SE EVENTI>8 -> EVENTI%8
int colori[] = {-16776961,-16711681,-65281,-16711936, -3355444, -65536, -1, -256};
GraphView graphView = null;
int contr=0;
int contra=0;
//CONTROLLO SE CI SONO EVENTI CON QUESTA DATA, SE NO ESCO
for (int j=0; j<lista.size();j++){
if(data.equals(lista.get(j).getData())){
contra=1;
break;
}
}
//SE CI SONO EVENTI..
if (contra==1){
//FOR PER OGNI TIPO DI EVENTO IN STRI
for (int x=0;x<stri.size();x++){
//AGGIUNGE ALLA LISTA (IN POSIZIONE X) L'ARRAY CON I PUNTI (X,Y)
tutti.add(x,new GraphViewData[24*60]);
//LO INIZIALIZZA A 0
for (int k=0;k<24*60;k++)
tutti.get(x)[k]=new GraphViewData(k, 0);
//PER OGNI EVENTO, SE DATA=DATAEVENTO E NOME=NOMEVENTO..
for (int j=0; j<lista.size();j++){
if(data.equals(lista.get(j).getData())&&lista.get(j).getNome().equals(stri.get(x))){
//DATA NEL FORMATO MINUTI
contr=1;
int inizio=60*Integer.parseInt( ""+lista.get(j).getInizio().charAt(0)+lista.get(j).getInizio().charAt(1) )+Integer.parseInt( ""+lista.get(j).getInizio().charAt(3)+lista.get(j).getInizio().charAt(4) );
int fine=60*Integer.parseInt( ""+lista.get(j).getFine().charAt(0)+lista.get(j).getFine().charAt(1) )+Integer.parseInt( ""+lista.get(j).getFine().charAt(3)+lista.get(j).getFine().charAt(4) );
//RIEMPIE ARRAY (INC I VALORI DELL'INTERVALLO)
if (inizio < fine){
for (int i=inizio;i<=fine;i++)
tutti.get(x)[i]=new GraphViewData(i, 1);
}
else if (inizio == fine)
tutti.get(x)[inizio]=new GraphViewData(inizio, 1);
//GESTIONE INIZIO>FINE
//ES. EVENTO FIESTA INIZIO 22.30 FIN 05.00
else {
for (int i=inizio;i<(24*60);i++)
tutti.get(x)[i]=new GraphViewData(i, 1);
for (int i=0;i<=fine;i++)
tutti.get(x)[i]=new GraphViewData(i, 1);
}
}
}
//CONTROLLO XKE SENNO DISEGNAVA TUTTI GLI EVENTI MA A 0, PERÒ SI VEDEVANO NELLA LEGENDA
if(contr==1)
serie.add(x,new GraphViewSeries(stri.get(x), new GraphViewStyle(colori[x%8], 3),tutti.get(x)));
contr=0;
//GESTIONE ASSE X CON ORE 08:00 E NON 480
graphView = new LineGraphView(getApplicationContext(),getString(R.string.data2)+data){
@Override
protected String formatLabel(double value, boolean isValueX) {
if (isValueX) {
double numero,decimal, entero;
numero = value/60;
numero = Math.rint(numero*100)/100;
entero = (long) numero;
decimal = ((numero-entero)*100)*0.6;
decimal = Math.rint(decimal*100)/100;
int a = (int) entero;
int b = (int) Math.rint( decimal);
String num = pad(a)+":"+pad(b);
return num;
}
else return super.formatLabel(value, isValueX); // let the y-value be normal-formatted
}
};
}
//ADD LE SERIE AL GRAFICO SERIE
for (int i=0;i<serie.size();i++)
graphView.addSeries(serie.get(i));
//NON VA LO SFONDO, BUG NELLA LIBRERIA: VA SOLO SE VALORI <=145
//((LineGraphView) graphView).setDrawBackground(true);
//PER CANCELLARE LA LINEA DI SOTTO, SOLO CHE AGGIUNGE UN ELEMENTO ALLA LEGENDA!!
/*GraphViewData[] zero = new GraphViewData[24*60];
for (int i=0;i<24*60;i++)
zero[i]=new GraphViewData(i, 0);
graphView.addSeries(new GraphViewSeries(null, new GraphViewStyle(Color.BLACK, 3),zero));
*/
//SENZA ASSE DELLE Y
graphView.setVerticalLabels(new String[] {""});
graphView.setShowLegend(true);
graphView.setLegendAlign(LegendAlign.BOTTOM);
//va lentissimo!!!!!!!!!!
//graphView.setScrollable(true);
//graphView.setViewPort(0, 360);//VALORI SULLE X FISSI (ESSENDO STRING, SONO A DISTANZA FISSA)
//graphView.setHorizontalLabels(new String[] {"00:00","01:00","02:00","03:00","04:00", "05.00", "06:00","07:00","08:00","09:00","10.00","11:00","12:00","13:00","14:00","15.00","16.00","17.00","18.00","19.00","20.00","21.00","22.00","23.00","24.00",});
layout.addView(graphView);
}
//SE IN QUESTA DATA NON CI SONO EVENTI DISEGNA UN GRAFICO VUOTO E STAMPA UN TOAST
else if (contra==0){
graphView = new LineGraphView(getApplicationContext(),getString(R.string.data2)+data);
graphView.setVerticalLabels(new String[] {""});
graphView.setHorizontalLabels(new String[] {"00:00", "12:00", "24:00"});
layout.removeAllViewsInLayout();
layout.addView(graphView);
Toast.makeText(getApplicationContext(), getString(R.string.noevfe)+data, Toast.LENGTH_SHORT).show();
}
//
}
//PER TRASFORMARE 8:00 IN 08:00
private static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
//GESTIONE FORM X IMPOSTARE DATA
private DatePickerDialog.OnDateSetListener mDateSetListener3 =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view3, int year,
int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
creaGrafoData();
}
};