28

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

是否有可能有用于 achartengine 的图形 API 的 xml 资源文件以及如何做到这一点?

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

4

4 回答 4

45

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

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

基本上,在活动描述符 .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" />

我们定义一个局部变量:

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 147 号线附近

if (mChartView != null) {
  mChartView.repaint();
}
于 2010-11-02T16:15:25.990 回答
15

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

于 2010-11-19T16:19:26.690 回答
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();
      }
    }
于 2011-05-30T06:29:25.723 回答
2

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

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

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

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

    将 jar 添加到您的项目中

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

    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将有助于进一步深入开发,您可以参考所有图表

于 2013-07-30T15:54:38.607 回答