使用AFreeChart将图表实现到视图中

时间:2011-11-20 10:40:29

标签: android view charts jfreechart

以下是我的问题:我正在使用AFreeChart在我的活动中显示图表。我使用AFreeChart的原因是因为我首先使用JFreeChart完成了此图表,之后意识到它与Android不兼容。

因此,使用AFreeChart,我可以使用完全相同的代码创建相同的图表,但我不知道如何在View上显示它。

我在这里创建图表:

private void creerGraphique(){

    //Here I have the creation of the DateSet

    AFreeChart chart = ChartFactory.createXYLineChart(
                "Mois", // Title
                "Jours", // x-axis Label
                "Repetitions", // y-axis Label
                graph, // Dataset
                PlotOrientation.VERTICAL, // Plot Orientation
                true, // Show Legend
                true, // Use tooltips
                false // Configure chart to generate URLs?
            );
}

我想在这里使用它:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.graphique);

    this.stockTableau();
    this.creerGraphique();

            //HERE: How can I display it since it's already created
}

我下载了AFreeChart演示代码,但是使用了不在包装上的功能,因此我也无法使用它。

我感谢你的帮助。

PS:我不是英国人,所以我希望我的问题很清楚,不要犹豫,问我更多细节。

2 个答案:

答案 0 :(得分:3)

您是否看过AFreeChart中的样本?这很简单,看看他们为这张图表所做的事情:

http://code.google.com/p/afreechart/source/browse/trunk/afreechart_sample/src/org/afree/chart/demo/view/PieChartDemo01View.java

他们扩展了一个DemoView,它基本上是一个带有setChart方法的Android视图,并将图表传递给视图。
因此,要么扩展DemoView,要么创建自己的等效项,如果你不需要其中的所有内容并按照示例进行操作!

祝你好运。

答案 1 :(得分:0)

同样值得注意的是,使用上面粘贴的代码,当你想要绘制时,调用图表的draw()方法会很有帮助。

举个简单的例子,如果你使用的是SurfaceView,你可以创建一个如下所示的方法:

private void drawChart(AFreeChart chart, ChartRenderingInfo info) {
    getHolder.lockCanvas();
    chart.draw(canvas, area, info);
    getHolder().unlockCanvasAndPost(canvas);
}

已设置'画布'和'区域'。

如果你想要一个非常简单的实现,你不想使用上面讨论的DemoView,这很有用。