2010-10-31 54 views
28

我的应用程序需要图库,我正在使用achartengine图库。我的应用程序要求图形只有屏幕的50%,其他部分用于显示其他信息。Android:我正在使用AChartEngine库进行图形绘制,但无法将achartengine的图形视图与android xml进行整合?

是否有可能用于achartengine的图形API的xml资源文件以及如何操作?

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

+0

为什么它必须在xml中? – Falmarri 2010-10-31 07:33:37

+0

我已经定制了xml资源文件来定义我的布局...所以我已经在xml文件中添加了空线性布局,并且在java代码中我添加了achartengine的图形视图到这个空的线性布局..这解决了我的问题.. – pitnal 2010-10-31 17:18:43

+0

I最近发现了AChartEngine的一个非常不错的教程:http://coffeedrivendevelopment.wordpress.com/2012/01/17/achartengine-xy-date-plot-example/希望它可以帮助别人在未来:) – Ahmed 2012-08-07 19:53:10

回答

45

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

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

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

ChartDemo /布局/线附近xy_chart.xml 27

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

我们定义了一个局部变量:

ChartDemo/src目录/org.achartengine.chartdemo.demo.chart/XYChartBuilder.java号线附近68

private GraphicalView mChartView; 

我们初始化它的活动的onResume()方法:

ChartDemo/src目录/ org.achartengine.chartdemo.demo.chart/XYChartBuilder.java近163线

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

每当新数据(当用户在我们的例子中按下“添加”按钮时,在当前系列中添加新点,并且:

ChartDemo/src/org.achartengine.chartdemo.demo.chart/XYChartBuilder.java near 147行

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

嗨Dan在上面的代码中,mChartView是Graphicalview,但是CharFactory.get ...的结果是Intent那么如何将意图存储到graphicalview中。你会解释一下吗? 好,谢谢pitnal ..我知道了..我得到了解决非常感谢.. – Lakshmanan 2011-02-07 12:55:05

+1

THX,因为这帮助。请注意,将诸如“MultipleTemperatureChart”(例如获得2 Y轴)的演示代码集成到现有项目中需要不要忘记将“添加到清单中。 xml,即使正确定义了java lib路径,否则在第一次调用时会出现一个致命错误:java.lang.NoClassDefFoundError:[Lorg.achartengine.chart。PointStyle;我也添加重新命名为“libs”为“libs”解释(这里)[http://stackoverflow.com/a/9886768/461212] – hornetbzz 2012-09-23 12:46:47

+0

@丹hello如何添加我们自己的布局到chartengin视图.. – NagarjunaReddy 2014-03-04 13:09:49

16

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

+0

谢谢你.. 。它对我非常有用..... – Taruni 2011-05-30 06:15:02

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(); 
     } 
    } 
+1

如何将我自己的布局添加到我们的chartengin视图中。 – NagarjunaReddy 2014-03-04 13:05:09

2

因此,这里是一个自给自足的地方找到所有关于AChartEngine。其中包括链接下载,

  1. achartengine-1.1.0-demo-source.zip The AChartEngine 1.1.0 demo project source code. May 15 May 15 168 KB 8149
  2. achartengine-1.1.0-javadocs.zip The AChartEngine 1.1.0 javadoc documentation. May 15 May 15 374 KB 3610
  3. achartengine-1.1.0.jar The AChartEngine 1.1.0 binary build library. May 15 May 15 117 KB 5264

哪些是最新的(当发布此答案时)。现在,请按照顺序执行这些简单的步骤来添加新的图表文件:

  • 下载并添加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将在进一步的深海发展期间有所帮助,您可以参考所有图表

+0

@嗨如何添加我们自己的布局我们的图表工程.. – NagarjunaReddy 2014-03-04 13:06:37