2013-02-07 5 views
0

Je viens de créer un nouveau graphique avec achartengine et je remarque que lorsque je déplace le graphique, il va sur les axes x et y. Merci à Dan ce problème résoudre en mettant à jour mon achartengine à 1.1.0 ver. de toute façon j'ai vu que ce problème a été résolu aux démos achartengine mais je ne peux pas comprendre pourquoi il ne résout pas le problème à mon tableau.achartengine graphique à courbes mobiles

enter image description here

Je suppose que quelque chose que je fais mal, mon code xml est:

<RelativeLayout 
android:id="@+id/rlMyChartsGridDown" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_below="@+id/rlMyChartsTopGrid" 
android:background="@drawable/weeks_grid_down" > 

<LinearLayout 
    android:id="@+id/chart" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    /> 

mon code java est:

public GraphicalView weightView(Context context) { 

     manageData = new ManageData(context); 
     TimeSeries series = new TimeSeries("The day"); 
     TimeSeries maxSeries = new TimeSeries("Max Weight"); 
     TimeSeries minSeries = new TimeSeries("Min Weight"); 

     int count = 0; 
     float sum = 0; 
     float max = 0; 
     int preWeek = 0; 

      manageData.open(); 
      cursor = manageData.getProfile(); 
      manageData.close(); 

      if ((cursor.moveToFirst()) && (cursor.getCount() != 0)) { 
      weightUnit = cursor.getString(C_PROFILE_WEIGHT_UNIT); 
      weight = cursor.getFloat(C_PROFILE_WEIGHT); 
      bmi = cursor.getFloat(C_PROFILE_BMI); 
      weightGain(); 
      cursor.close(); 
      minSeries.add(0,weight); 
      maxSeries.add(0,weight); 

      minSeries.add(12,weight+1); 
      maxSeries.add(12,weight+2); 
      minSeries.add(42,weight+minWeight); 
      maxSeries.add(42,weight+maxWeight); 
      } 


     manageData.open(); 
     Cursor cursor = manageData.getDiaryInfo(); 
     manageData.close(); 
     cursor.moveToFirst(); 

     if (cursor.getCount() > 0) { 
      preWeek = cursor.getInt(DIARY_WEEK); 
     } 

     while (!cursor.isAfterLast()) { 

      if ((cursor.getInt(DIARY_WEEK) == preWeek) 
        && (cursor.getFloat(WEIGHT) != 0)) { 
       count++; 
       sum = sum + cursor.getFloat(WEIGHT); 

       cursor.moveToNext(); 
      } else { 
       if (count != 0) { 
        series.add(preWeek, sum/count); 

        if (max < sum/count) { 
         max = sum/count; 
        } 
       } 
       sum = 0; 
       count = 0; 
       preWeek = cursor.getInt(DIARY_WEEK); 

       if (cursor.getFloat(WEIGHT) != 0) { 
        count++; 
        sum = sum + cursor.getFloat(WEIGHT); 
       } 

       cursor.moveToNext(); 
      } 
     } 

     if (max < sum/count) { 
      max = sum/count; 
     } 
     series.add(preWeek, sum/count); 
     cursor.close(); 

     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
     dataset.addSeries(series); 
     dataset.addSeries(minSeries); 
     dataset.addSeries(maxSeries); 

     XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); 

     // Customization Weight line 
     XYSeriesRenderer renderer = new XYSeriesRenderer(); 
     renderer.setColor(0xff154916); 
     renderer.setLineWidth(3); 
     renderer.setPointStyle(PointStyle.CIRCLE); 
     renderer.setFillPoints(true); 

     // Customization maxWeight line 
     XYSeriesRenderer rendererMax = new XYSeriesRenderer(); 
     rendererMax.setColor(0xff8EC239); 
     rendererMax.setLineWidth(2); 

     // Customization minWeight line 
     XYSeriesRenderer rendererMin = new XYSeriesRenderer(); 
     rendererMin.setColor(0xffF7931E); 
     rendererMin.setLineWidth(2); 


     mRenderer.setMargins(new int[] {20, 35, 20, 20 }); 
     mRenderer.setApplyBackgroundColor(true); 
     mRenderer.setBackgroundColor(Color.TRANSPARENT); 
     mRenderer.setMarginsColor(color); 

     mRenderer.addSeriesRenderer(renderer); 
     mRenderer.addSeriesRenderer(rendererMax); 
     mRenderer.addSeriesRenderer(rendererMin); 

     mRenderer.setYLabelsColor(0, Color.BLACK); 
     mRenderer.setXLabelsColor(Color.BLACK); 
     mRenderer.setLabelsTextSize(18); 
     mRenderer.setAxesColor(Color.BLACK); 
     mRenderer.setLabelsColor(Color.BLACK); 

     mRenderer.setYLabelsAlign(Align.RIGHT); 
//  mRenderer.setYAxisAlign(Align.LEFT, 0); 

     mRenderer.setXTitle("Week"); 
     if(weightUnit.equals("kg")){ 
     mRenderer.setYTitle("Weight (kg)"); 
     } else { 
      mRenderer.setYTitle("Weight (lb)"); 
     } 
     mRenderer.setZoomButtonsVisible(true); 
     mRenderer.setLabelsColor(0xff418614); 

     mRenderer.setLegendTextSize(15); 
     mRenderer.setPointSize(5); 
//  mRenderer.setZoomEnabled(false, false); 
//  mRenderer.setPanEnabled(true, false); 
     mRenderer.setXAxisMax(43); 
     mRenderer.setXAxisMin(0); 
     if(max>maxWeight + weight){ 
     mRenderer.setYAxisMax(max + 10); 
     } else { 
      mRenderer.setYAxisMax(maxWeight + weight + 10); 
     } 
     mRenderer.setYAxisMin(0); 

     return ChartFactory.getLineChartView(context, dataset, mRenderer); 

    } 

mon principal code java est:

public void onClick(View v) { 
switch (v.getId()) { 
case R.id.tbMyChartsWeight: 
    tbMyChartsWeight.setChecked(true); 
    tbMyChartsWaist.setChecked(false); 
    tbMyChartsMood.setChecked(false); 

    line = new LineGraph(); 
    gView = line.weightView(this); 
    layout = (LinearLayout) findViewById(R.id.chart); 
    layout.removeAllViews(); 
    layout.addView(gView); 
    return; 
case R.id.tbMyChartsWaist: 
    tbMyChartsWeight.setChecked(false); 
    tbMyChartsWaist.setChecked(true); 
    tbMyChartsMood.setChecked(false); 

    line = new LineGraph(); 
    gView = line.waistView(this); 
    layout = (LinearLayout) findViewById(R.id.chart); 
    layout.removeAllViews(); 
    layout.addView(gView); 
    return; 
case R.id.tbMyChartsMood: 
    tbMyChartsWeight.setChecked(false); 
    tbMyChartsWaist.setChecked(false); 
    tbMyChartsMood.setChecked(true); 

    line = new LineGraph(); 
    gView = line.mentalView(this); 

    layout = (LinearLayout) findViewById(R.id.chart); 
    layout.removeAllViews(); 
    layout.addView(gView); 
    return; 
default: 
    break; 
} 

}

J'espère que quelqu'un peut me aider et je suis désolé pour mon mauvais anglais merci pour vous tous:]

Répondre

1

Vous utilisez un fond transparent. Vous pouvez résoudre ce problème en utilisant un autre type d'arrière-plan ou ne définir aucun arrière-plan.

+0

salut encore Dan et merci pour votre aide. il fonctionne vraiment comme un charme pour moi mais j'utilise un fond transparent seulement parce que j'ai mon propre fond personnalisé que je voudrais importer. y at-il un moyen d'avoir mon fond personnalisé et ne pas avoir le problème que j'ai? Merci encore. – Blackstar

+0

Une chose que vous pourriez faire serait de mettre toutes les marges à 0 et ne pas utiliser l'axe et les étiquettes. –

+0

ok, merci beaucoup pour l'aide et votre grand soutien. – Blackstar

Questions connexes