2013-02-27 102 views
0

Goodevening,
我正在开发一个android应用程序,我正在使用achartengine来绘制值,我查询后,查询到sqlite数据库。如果值是从0到1000,那么我会得到一个加载图标,在10秒后,最多,我得到我需要的图形。如果这些值超过1000,如果我有多线图,那么我会得到一个永不离开的加载图标。我使用的代码列在下面。我做错了什么?我使用achartengine的示例代码来创建自己的代码。AchartEngine从db加载值需要永久

代码:

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