如何在缩放或移动到全屏后缩放图形? Android achartengine

时间:2014-03-16 16:29:54

标签: android graph achartengine linechart

我正在使用achartengine来显示LineChartView。有时需要重新绘制图形,我希望新的grah显示在整个屏幕上。只要图表没有缩放或移动,就不会有问题。只需单击一次也不是问题。

如果图表被缩放或移动,则新图表无法正确显示。新图表显示错误,但与之前不同。

我写了一个例子来证明这个问题:

openChart()初始化图形,在setOnClick()方法中添加onClickListener,并在change()方法中切换两个图形。我从菜单项中调用change()方法,但这没关系。

public class MainActivity extends Activity {

private GraphicalView graphViewe;
private XYSeries series;
private XYSeriesRenderer seriesRenderer;
private XYMultipleSeriesRenderer multiRenderer;
private int[] firstGraph = new int[] { -10, -9, -8, -7, -6, -5, -4, -3, -2,
        -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
private int[] secondGraph = new int[] { 0, 0, 0, 0, 0, 0 };

private boolean isFirst = true;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
    openChart();
}

private void openChart() {
    series = new XYSeries("Series");
    for (int i = 0; i < firstGraph.length; i++) {
        series.add(i, firstGraph[i]);
    }

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    dataset.addSeries(series);

    seriesRenderer = new XYSeriesRenderer();
    seriesRenderer.setLineWidth(10);
    multiRenderer = new XYMultipleSeriesRenderer();
    multiRenderer.addSeriesRenderer(seriesRenderer);
    multiRenderer.setZoomButtonsVisible(true);

    multiRenderer.setClickEnabled(true);
    multiRenderer.setSelectableBuffer(10);

    LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container);

    graphViewe = ChartFactory.getLineChartView(getBaseContext(), dataset,
            multiRenderer);

    setOnClick();
    chartContainer.addView(graphViewe);

}

private void setOnClick() {

    graphViewe.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // Do something on click
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    if (itemId == R.id.action_change) {
        change();
        return true;
    } else {
        return super.onOptionsItemSelected(item);
    }
}

private void change() {
    series.clear();
    if (isFirst) {
        isFirst = false;
        for (int i = 0; i < secondGraph.length; i++) {
            series.add(i, secondGraph[i]);
        }
    } else {
        isFirst = true;
        for (int i = 0; i < firstGraph.length; i++) {
            series.add(i, firstGraph[i]);
        }
    }

    graphViewe.repaint();
}
}

是否可以以相同的方式显示图表?无论他被移动还是放大。

0 个答案:

没有答案