Android:我使用AChartEngine库来绘制图形,但是无法将achartengine的图形视图与android xml集成?

时间:2010-10-31 07:04:36

标签: android achartengine

我的应用程序需要图库,我正在使用achartengine图库。我的应用程序要求图形仅占屏幕的50%,而其他部分则用于显示其他一些信息。

是否可以为achartengine的图形API提供xml资源文件以及如何操作?

我试图找到一个例子,但没有找到它。是否支持?

4 个答案:

答案 0 :(得分:45)

这是AChartEngine的常见问题解答。 AChartEngine演示应用程序可在此处下载:AChartEngine demo

在演示源代码中,您可以看到有关如何将图表嵌入现有视图的示例。

基本上,在活动描述符.xml文件中,我们将以下内容定义为图表的占位符。当然,其他用户界面组件与此布局一起使用:

第27行附近的

ChartDemo / layout / xy_chart.xml

<LinearLayout
    android:id="@+id/chart"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:orientation="horizontal" />

我们定义一个局部变量:

第68行附近的

ChartDemo / src / org.achartengine.chartdemo.demo.chart / XYChartBuilder.java

private GraphicalView mChartView;

我们在活动的onResume()方法上实例化它:

第163行附近的

ChartDemo / src / org.achartengine.chartdemo.demo.chart / XYChartBuilder.java

protected void onResume() {
  super.onResume();
  if (mChartView == null) {
    LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
    mChartView = ChartFactory.getLineChartView(this, mDataset,
mRenderer);
    layout.addView(mChartView, new LayoutParams
(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    ...
  } else {
    mChartView.repaint();
  }
}

每当添加新数据时(当用户按下“添加”按钮时),当前系列中会添加一个新点,并且:

第147行附近的

ChartDemo / src / org.achartengine.chartdemo.demo.chart / XYChartBuilder.java

if (mChartView != null) {
  mChartView.repaint();
}

答案 1 :(得分:15)

ChartFactory中有两组API。例如。 getLineChartView()getLineChartIntent()。因此,前者用于获取可以添加到自定义布局的图形视图,以后用于获取意图。在上面的示例中,Dan使用getLineChartView() API返回GraphicalView

答案 2 :(得分:8)

你可以像这样写你的xml ......

    

<LinearLayout 
android:layout_below="@+id/btn"
android:id="@+id/chart" android:orientation="horizontal"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_weight="1">

</LinearLayout>

,java代码片段是

   protected void onResume() {
      super.onResume();
      if (mChartView == null) {
        LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
        mChartView = ChartFactory.getBarChartView(this,getBarDemoDataset(values),renderer,Type.DEFAULT);
        layout.addView(mChartView);


      } else {
        mChartView.repaint();
      }
    }

答案 3 :(得分:2)

所以这是一个自给自足的地方,可以找到关于AChartEngine的所有内容。其中包括下载链接,

  
      
  1. achartengine-1.1.0-demo-source.zip AChartEngine 1.1.0演示项目源代码。 5月15日5月15日168 KB 8149
  2.   
  3. achartengine-1.1.0-javadocs.zip AChartEngine 1.1.0 javadoc文档。 5月15日5月15日374 KB 3610
  4.   
  5. achartengine-1.1.0.jar AChartEngine 1.1.0二进制构建库。 5月15日5月15日117 KB 5264
  6.   

现在最新(发布此答案时)。现在,按照以下简单步骤添加新的图表文件:

  • 下载 achartengine-1.1.0.jar 并将其添加到项目的lib部分
  • 现在右键单击文件并将其添加到构建路径,如图像

    Add jar to your project

  • 现在,按照之前的答案中的定义,将以下代码添加到您的班级:

    private GraphicalView mChartView;
    private XYMultipleSeriesDataset dataset;
    private XYMultipleSeriesRenderer renderer;
    private BarChart.Type type;
    
    
     protected void onResume() {
          super.onResume(); 
          if (mChartView == null) {
            LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
            /*getBarChartView(android.content.Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type)
              Creates a bar chart view.*/
            mChartView = ChartFactory.getBarChartView(this, dataset, renderer, type);//tView(this,getBarDemoDataset(values),renderer,Type.DEFAULT);
            layout.addView(mChartView);
          } else {
            mChartView.repaint();
          }
        }
    
    • 要详细了解任何AChartEngineAPI类,请下载 achartengine-1.1.0-javadocs.zip ,然后点击 index.html打开

    • achartengine-1.1.0-demo-source.zip 会在进一步深入开发过程中提供帮助,您可以参考所有图表