在Android上用AChartEngine绘制图表并嵌入Activity

本文介绍了如何在Android应用中使用AChartEngine库来绘制图表,并将其嵌入到Activity中。首先,需要从官方网站下载AChartEngine的.jar文件并添加到项目的libs目录。接着,创建数据并设置图表属性,通过代码展示如何构造图表。最后,展示了程序运行后的截图,以及提供了工程文件的下载链接供读者参考。
摘要由CSDN通过智能技术生成

最近项目里需要绘制图标,在网上查到AChartEngine比较好用,所以选择用它来绘制。网上关于AChartEngine的教程很多,用Intent弹出一个Activity来显示图表实在是简单,但是我想在Activity里面显示一个表格,对与我这个刚刚接触Android才1个月的菜鸟来说有些难,网上的资料的不全,没有完整的代码,所以自己解决之后就来发篇博文,为后来者铺路,废话不多说,进入正题。
首先,想用ACharEngine,你得先去网站上把他下载下来,下载地址:https://code.google.com/p/achartengine/downloads/list,选择最新版的 .jar包下载即可。
下载下来之后,请把 .jar加入到工程文件的libs文件夹,如图:
这里写图片描述
这时你的工程已经可以使用AChartEngine。因为只是演示教程,所以这里我虚构了一串数据

String data = "04/11/2015 15:44,25," +
              "04/11/2015 15:46,23," +
              "04/11/2015 15:48,26," +
              "04/11/2015 15:50,25," +
              "04/11/2015 15:52,25," +
              "04/11/2015 15:54,23," +
              "04/11/2015 15:56,25";
String[] datas = data.split(",");
   之后就需要两个比较重要的函数,一个是构造表格属性的,用的XYMultipleSeriesRenderer类,一个是构造数据的,用的XYMultipleSeriesDataset类。
   下面是构造表格属性的函数:
protected XYMultipleSeriesRenderer buildRenderer(){
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
        renderer.setMargins(new int[] { 0, 35, 20, 30 });//设置图表的外边框(上/左/下/右)  
        renderer.setZoomButtonsVisible(true);//是否显示放大缩小按钮
        renderer.setApplyBackgroundColor(true);//设置是否显示背景色  
        renderer.setBackgroundColor(Color.rgb(38, 38, 38));//设置背景色 
        renderer.setMarginsColor(Color.rgb(38, 38, 38));//设置边缘色
        renderer.setXLabelsColor(Color.GRAY);//设置X轴刻度颜色
        renderer.setYLabelsColor(0, Color.GRAY);//设置Y轴刻度颜色
        renderer.setAxesColor(Color.GRAY);//设置数轴的颜色
        renderer.setLabelsColor(Color.GRAY);//设置标签颜色
        renderer.setXTitle("时间(月/日/年  时: 分)");//设置X轴标题
        renderer.setYTitle("室内温度‘C");//设置Y轴标题
        renderer.setYAxisMin(20d); //设置Y轴最小值
        renderer.setYAxisMax(30d); // 设置Y轴最大值
        renderer.setXLabels(7);//设置x轴标签数
        renderer.setYLabelsAlign(Align.RIGHT, 0);//设置标签居Y轴的方向
        XYSeriesRenderer xyRenderer = new XYSeriesRenderer();
        xyRenderer.setColor(Color.LTGRAY);
        renderer.addSeriesRenderer(xyRenderer);
        return renderer;
}

之后是构造数据的函数,还记得上面我虚构的数据么,我用String.split将一个长的String分成一个String[]数组,奇数位数据是时间,存入xValue[],偶数位数据为温度值,存入yValue[]。

protected XYMultipleSeriesDataset buildDateDataset(String[] Values){
        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
        int seriesLength = Values.length;
        int j=0,k=0;
        Double yValue[] = new Double[seriesLength];  
        Date xValue[] = new Date[seriesLength];
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm");
        TimeSeries series = new TimeSeries("室内温度");
        for(int i=0;i<seriesLength;i=i+2){
            try {
                xValue[j]=sdf.parse(Values[i]);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            yValue[k]=Double.parseDouble(Values[i+1]); 
            series.add(xValue[j++], yValue[k++]);
        }
        j=0;k=0;
        dataset.addSeries(series);
        return dataset;
}

设置好数据和表格属性之后,就可以画图了。下面是画图代码,

private LinearLayout layoutchart;
private GraphicalView mChartView;
layoutchart = (LinearLayout) findViewById(R.id.chart); 
mChartView =          ChartFactory.getTimeChartView(this,dataset,renderer,"MM/dd/yyyy HH:mm");
layoutchart.removeAllViews();
layoutchart.addView(mChartView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT));

以上就是主要代码,程序运行后的截图如下:
需要横屏显示的话,可以在AndroidManifest.xml的加入一句话

android:screenOrientation ="landscape"> 

这里写图片描述

工程文件下载地址:
http://download.csdn.net/download/sasada123/8588339

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值