AChartEngine

AChartEngine简单使用

项目来源

现在有个需求在一个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;
            }
        };
    };

整体项目在这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值