安卓:我正在使用 AChartEngine 图形库,但无法将 achartengine 的图形视图与 android xml 集成?

StackOverflow https://stackoverflow.com/questions/4062161

  •  27-09-2019
  •  | 
  •  

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

是否可以为 achartengine 的图形 API 提供 xml 资源文件以及如何做到这一点?

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

有帮助吗?

解决方案

这是一个AChartEngine FAQ。 该AChartEngine演示应用程序可供下载在这里: AChartEngine演示

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

基本上,在活动描述符.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近147行

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

其他提示

有两组ChartFactory的API。对于如。 getLineChartView()getLineChartIntent()。因此,前者用于获取可添加到自定义布局,后来被用来获取意图的图形视图。在上面的例子中丹已经用getLineChartView() API返回一个GraphicalView

您可以写你这样的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. 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 部分
  • 现在右键单击文件并将其添加到构建路径,如图所示

    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 并通过点击打开 索引.html

    • achartengine-1.1.0-demo-source.zip 在进一步的深度开发中将很有帮助,您可以参考所有图表

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top