最近项目里需要绘制图标,在网上查到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