2013-02-07 101 views
0

我只是用achartengine創建一個新圖表,我注意到當我移動圖表時,它會遍歷x軸和y軸。感謝丹這個問題通過更新我的achartengine到1.1.0版本解決。 無論如何,我看到這個問題已經在achartengine demoes上解決了,但我無法理解爲什麼它不能解決我圖表中的問題。achartengine可移動折線圖

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