2013-02-07 4 views
0

Я просто создаю новую диаграмму с ахартангином, и я замечаю, что когда я перемещаю диаграмму, она проходит по оси х и у. спасибо Dan, эта проблема решается путем обновления моего achartengine до версии 1.1.0 ver. в любом случае я видел, что эта проблема была решена на ахартенгинских демонах, но я не могу понять, почему она не устраняет проблему на моем графике.Агартангин подвижной линейной диаграммы

enter image description here

я предполагаю, что это то, что я делаю неправильно, мой XML-код:

<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" 
    /> 

мой Java-код:

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); 

    } 

мой основной код Java это:

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; 
} 

}

я надеюсь, что кто-то может помочь мне с этим и я прошу прощения за мой плохой английский спасибо за всех вас:]

ответ

1

Вы используете прозрачный фон. Вы можете исправить это, используя другой тип фона или не устанавливая фон.

+0

привет Дэн и спасибо за помощь. он действительно работает как шарм для меня, но я использую прозрачный фон только потому, что у меня есть собственный собственный фон, который я бы хотел импортировать. есть ли способ иметь свой собственный фон, а также не иметь проблемы, которые я получил? еще раз спасибо. – Blackstar

+0

Единственное, что вы могли бы сделать, это установить все поля на 0 и не использовать оси и метки. –

+0

хорошо, спасибо за помощь и вашу большую поддержку. – Blackstar

Смежные вопросы