2013-02-27 2 views
0

Goodevening,
나는 안드로이드 응용 프로그램을 개발하고 나는 achartengine을 sqlite 데이터베이스에 quering 후 검색 그래프 값을 사용하고 있습니다. 값이 0에서 1000까지이면 로딩 아이콘이 표시되고 10 초 후에 가장 많이 그래프가 나타납니다. 값이 1000 이상이고 다중 선 그림이있는 경우 절대로로드 아이콘이 표시되지 않습니다. 내가 사용하는 코드는 다음과 같습니다. 내가 뭐 잘못하고 있니? achartengine의 샘플 코드를 사용하여 코드를 만들었습니다.db에서 AchartEngine로드 값을 영원히 가지고 간다

코드 :

public void createGraph(Context ctx){ 
    // x data 
    dateList = DateDataReturn(ctx , table, accessPointList_Filtered); 
    Log.d(TAG,"dateList len:" + String.valueOf(dateList.size())); 
    // y data 
    dataList = yDataReturn(ctx, column, table, accessPointList_Filtered); 
    Log.d(TAG, "dataList len:" + String.valueOf(dataList.size())); 
    // y axis title 
    yaxis = yAxisReturn(column); 
    // lines titles 
    titles = titleReturn(ctx, column, accessPointList_Filtered); 
    Log.d(TAG,"titles length:" + String.valueOf(titles.length)); 
    // line colors 
    colors = retColor(ctx, table, accessPointList_Filtered); 
    Log.d(TAG,"colors length:" + String.valueOf(colors.length)); 
    // line point styles 
    styles = retPointStyle(ctx, table, accessPointList_Filtered); 
    Log.d(TAG,"style length:" + String.valueOf(styles.length)); 
    // x axis min value 
    xmin = dateList.get(0)[0].getTime(); 
    Log.d(TAG, "1"); 
    // x axis max value 
    xmax = dateList.get(0)[dateList.get(0).length - 1].getTime(); 
    Log.d(TAG, "2"); 
    // Create the renderer 
    renderer = buildRenderer(colors, styles); 
    // Create the dataset 
    dataset = buildDateDataset(titles, dateList, dataList); 
    Log.d(TAG, "3"); 
    for (int i = 0; i < renderer.getSeriesRendererCount(); i++) { 
     ((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true); 
    } 

    setChartSettings(renderer, // POINTS 
      "Interface Monitoring", // PLOT LABEL 
      "Time", // X LABEL 
      yAxisTitleReturn(column), // Y LABEL 
      xmin, 
      xmax, 
      yaxis[0], // Y AXIS START VALUE 
      yaxis[1], // Y AXIS FINISH VALUE 
      Color.LTGRAY, // AXIS COLOR 
      Color.LTGRAY); // LABELS COLOR 

    renderer.setXLabels(10); 
    renderer.setYLabels(10); 
    renderer.setBackgroundColor(Color.BLACK); 
    renderer.setApplyBackgroundColor(true); 
    renderer.setXLabelsAlign(Align.CENTER); 
    renderer.setYLabelsAlign(Align.RIGHT); 
    renderer.setShowGrid(true); 
    renderer.setZoomEnabled(true, true); 
    renderer.setPanEnabled(true, true); 
} 


/** 
* 
* @param context 
* @return GraphicalView, returns the view 
*/ 
public GraphicalView getView(Context context) { 
    return (GraphicalView)ChartFactory.getTimeChartView(context, dataset, renderer, "h:mm:ss a"); 
} 

고맙습니다

답변

0

차트에 추가 된 값이 많이있을 것으로 예상, 당신은 세부 사항의 수준을 감소해야합니다. 대부분의 시간 렌더링에 소요되기 때문입니다, 그래서 당신은 물건 향상시킬 수있는 곳이다 :

  • 안 안티 앨리어싱을 renderer.setAntialiasing(false);
  • PointStyle

다른 제안을 사용하지 마십시오

  • 모델에 표시 할 데이터 만 추가하십시오. 너무 많은 점이있는 차트는 어떻게 생겼습니까?

또한 1.1.0 버전에는 성능 향상 세트가 포함되어 있습니다. 이 버전 here을 다운로드 할 수 있습니다.

관련 문제