AChartEngine

来源:互联网 发布:php is_string 编辑:程序博客网 时间:2024/06/05 16:15

AChartEngine简单使用

    • AChartEngine简单使用
      • 项目来源
      • 下载 AChartEnginejar
      • 导入jar包
      • 项目思路

项目来源

现在有个需求在一个Activity内绘制一个折线图,要求要用AChartEngine来做,用完之后突然发现,Excel真的好强大。跑远了,是AChartEngine。好了,言归正传,首先,导入JAR包,别问我为什么还不用Android Studio,因为我也不知道。

下载 AChartEngine.jar

这里提供一个下载链接,这里是官方网站。出门右转,不谢

导入jar包

  1. 将jar包复制到libs下,然后在jar包上右键Build Path—>Add to Build path

项目思路

  1. 新建一个Activity,然后在Activity中构建一个AchartEngine图表
  2. 将AchartEngine图表添加到Activity中

    • 获取一个图表渲染(XYMultipleSeriesRenderer)实例
    • 获取一个折现渲染(XYSeriesRenderer )实例
    • 获取一个数据放置实例
  3. 实现AchartEngine图表的动态刷新


获取图表渲染实例,其中包括了折现渲染

    public XYMultipleSeriesRenderer getRefender() {        seriesRenderer = new XYMultipleSeriesRenderer();        seriesRenderer.setChartTitleTextSize(20);        seriesRenderer.setApplyBackgroundColor(true);        seriesRenderer.setLabelsColor(0xFF85848D);        seriesRenderer.setZoomButtonsVisible(false);        seriesRenderer.setZoomEnabled(false);        seriesRenderer.setZoomInLimitX(7);        seriesRenderer.setPanEnabled(true);        seriesRenderer.setLabelsTextSize(14);        seriesRenderer.setXLabelsAlign(Align.CENTER);        seriesRenderer.setYLabelsAlign(Align.LEFT);        seriesRenderer.setAxisTitleTextSize(16);        seriesRenderer.setXTitle("Y");        seriesRenderer.setYTitle("Y");        seriesRenderer.setXLabels(10);        seriesRenderer.setYLabels(10);        seriesRenderer.setXAxisMin(1);        seriesRenderer.setXAxisMax(20);        seriesRenderer.setYAxisMin(0);        seriesRenderer.setYAxisMax(100);        seriesRenderer.setMarginsColor(Color.WHITE);        seriesRenderer.setClickEnabled(false);        seriesRenderer.setChartTitle("Demo");        XYSeriesRenderer xySeriesRenderer1 = new XYSeriesRenderer();        xySeriesRenderer1.setPointStyle(PointStyle.CIRCLE);        xySeriesRenderer1.setPointStrokeWidth(3);        xySeriesRenderer1.setColor(0xFFF46C48);        xySeriesRenderer1.setDisplayChartValues(false);        xySeriesRenderer1.setChartValuesTextSize(12);        seriesRenderer.addSeriesRenderer(xySeriesRenderer1);        return seriesRenderer;    }

获取数据放置实例,产生初始值

    public void geDataSet() {        seriesDataset = new XYMultipleSeriesDataset();        series = new XYSeries("Demo 1");        series.add(1, 36);        series.add(2, 30);        series.add(3, 27);        series.add(4, 29);        series.add(5, 34);        series.add(6, 28);        series.add(7, 33);        series.add(8, 59);        seriesDataset.addSeries(series);    }

生成折现图视图

    public GraphicalView getGraphicalView() {        chartView = ChartFactory.getLineChartView(mContext, seriesDataset,                seriesRenderer);        return chartView;    }

动态画图

    public void updateChart(int x, int y) {        int location=-7;        series.add(x, y);        chartView.invalidate();        chartView.repaint();    }

将以上的这些方法,放在一个单独的类中,然后在MainActivity中对这个类进行实例化操作,并调用其中的方法,以此来获得图表视图(GraphicalView )并将其放置在一个布局中。

MainActivity
1. 通过findViewById获取布局的Id;
2. 自定义类的实例化;
3. 通过实例化对象获取GraphicalView
4. 将 GraphicalView 添加到布局中
5. 通过 Handler 来进行动态刷新 GraphicalView

    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        drawLayout = (RelativeLayout) findViewById(R.id.drawlay);        myChart = new MYChart(this);        myChart.geDataSet();        myChart.getRefender();        chartView = myChart.getGraphicalView();        drawLayout.addView(chartView);        handler.sendEmptyMessage(1);    }

通过Handler 消息发送机制,构成消息循环发送从而进行不断的刷新折线图

    Handler handler = new Handler() {        public void dispatchMessage(android.os.Message msg) {            switch (msg.what) {            case 1:                myChart.updateChart(time, new Random().nextInt(100));                time += 1;                handler.sendEmptyMessage(2);                break;            case 2:                handler.sendEmptyMessageDelayed(1, 2000);                break;            default:                break;            }        };    };

整体项目在这里

0 0
原创粉丝点击