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

pit*_*nal 28 android achartengine

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

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

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

Dan*_* D. 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" />
Run Code Online (Sandbox Code Playgroud)

我们定义一个局部变量:

第68行附近的ChartDemo/src/org.achartengine.chartdemo.demo.chart/XYChartBuilder.java

private GraphicalView mChartView;
Run Code Online (Sandbox Code Playgroud)

我们在活动的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();
  }
}
Run Code Online (Sandbox Code Playgroud)

每当添加新数据时(当用户在我们的情况下按下"添加"按钮时,在当前系列中添加一个新点并且:

第147行附近的ChartDemo/src/org.achartengine.chartdemo.demo.chart/XYChartBuilder.java

if (mChartView != null) {
  mChartView.repaint();
}
Run Code Online (Sandbox Code Playgroud)


pit*_*nal 15

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


Tar*_*uni 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>
Run Code Online (Sandbox Code Playgroud)

和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();
      }
    }
Run Code Online (Sandbox Code Playgroud)