两个图表使用AChartEngine在同一屏幕上显示

时间:2014-02-28 22:35:25

标签: android achartengine

我正在尝试将两个(或更多)图形添加到一个屏幕(其中包含按钮和其他元素)。

我一直尝试使用this回答相关主题作为指南,但我无法使用AChartEngine将这两个图表显示在一个屏幕上。

我知道我需要使用GrapihicalView来做这件事,但我还没能做到。

2 个答案:

答案 0 :(得分:0)

我试试这个:

LayoutParams paramsLinear = new LinearLayout.LayoutParams(800, 800);
LinearLayout newLinear = new LinearLayout(getActivity());
newLinear.setOrientation(LinearLayout.HORIZONTAL);
newLinear.setLayoutParams(paramsLinear);

此LinearLayout是我的单个图表的容器。

答案 1 :(得分:0)

我已经弄清楚了这个:

protected void onResume()
    {   
        super.onResume();

        if (chart1 == null)
        {
            LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
            chart1 = ChartFactory.getTimeChartView(this, dataset1, multiRenderer1, "HH:mm");
            multiRenderer1.setClickEnabled(true);
            multiRenderer1.setSelectableBuffer(10);

            /**ZOOM on the graph*/
            chart1.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                    /**handle the click event on the chart*/
                    SeriesSelection seriesSelection = chart1.getCurrentSeriesAndPoint();
                    if (seriesSelection == null)
                    {
                        Toast.makeText(myActivity.this, "No chart element", Toast.LENGTH_SHORT).show();
                    }
                    else
                    {
                        /**display information of the clicked point*/
                        Toast.makeText(
                            myActivity.this,
                            "Closest point value X=" + convertLongToString((long)seriesSelection.getXValue(), "HH:mm") + ", Y=" + seriesSelection.getValue(), Toast.LENGTH_SHORT).show();
                    }
                }
            });

            layout.addView(chart1, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            boolean enabled = dataset1.getSeriesCount() > 0;
        }
        else
        {
            chart1.repaint();
        }

        if (chart2 == null)
        { 
            LinearLayout layout2 = (LinearLayout) findViewById(R.id.chart2); 
            chart2 = ChartFactory.getTimeChartView(getBaseContext(), dataset2, multiRenderer2, "HH:mm");
            multiRenderer2.setClickEnabled(true);
            multiRenderer2.setSelectableBuffer(10);

            /**ZOOM on the graph*/
            chart2.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                    /**handle the click event on the chart*/
                    SeriesSelection seriesSelection = chart2.getCurrentSeriesAndPoint();
                    if (seriesSelection == null)
                    {
                        Toast.makeText(myActivity.this, "No chart element", Toast.LENGTH_SHORT).show();
                    }
                    else
                    {
                        /**display information of the clicked point*/
                        Toast.makeText(
                            myActivity.this,
                            "Closest point value X=" + convertLongToString((long)seriesSelection.getXValue(), "HH:mm") + ", Y=" + seriesSelection.getValue(), Toast.LENGTH_SHORT).show();
                    }
                }
            });

            layout2.addView(chart2, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            boolean enabled = dataset2.getSeriesCount() > 0;
        }
        else
        {
            chart2.repaint();
        }
    }