Android中使用achartengine生成图表的具体方法
今天在做项目的时候用到了图表功能,记录下来
achartengine是google的一个开源项目,可以在https://code.google.com/p/achartengine/下载技术文档,jar包以及项目源代码
一、饼状图
新建工程,添加achartengine jar包
PieChart.java
packagecom.meritit.footlottery.view;
importorg.achartengine.ChartFactory;
importorg.achartengine.model.CategorySeries;
importorg.achartengine.renderer.DefaultRenderer;
importorg.achartengine.renderer.SimpleSeriesRenderer;
importandroid.content.Context;
importandroid.graphics.Color;
importandroid.view.View;
publicclassPieChart{
publicViewexecute(Contextcontext){
int[]colors=newint[]{Color.RED,Color.YELLOW,Color.BLUE};
DefaultRendererrenderer=buildCategoryRenderer(colors);
CategorySeriescategorySeries=newCategorySeries("VehiclesChart");
categorySeries.add("胜",30);
categorySeries.add("负",20);
categorySeries.add("平",60);
returnChartFactory
.getPieChartView(context,categorySeries,renderer);
}
protectedDefaultRendererbuildCategoryRenderer(int[]colors){
DefaultRendererrenderer=newDefaultRenderer();
for(intcolor:colors){
SimpleSeriesRendererr=newSimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
//显示标签
renderer.setShowLabels(true);
//不显示底部说明
renderer.setShowLegend(false);
//设置标签字体大小
renderer.setLabelsTextSize(15);
renderer.setLabelsColor(Color.BLACK);
renderer.setZoomEnabled(false);
renderer.setPanEnabled(false);
returnrenderer;
}
}
使用方法
//ViewpieChart=newPieChart().execute(this);
//chartArea.addView(pieChart);
获得一个View对象,在需要添加的布局下面直接addView
二、柱状图
importjava.util.Random; importorg.achartengine.ChartFactory; importcom.meritit.footlottery.R; importandroid.content.Context; publicclassBarChart{ 上面代码部分解释: renderer.setBackgroundColor(Color.TRANSPARENT); //设置背景 renderer.setMarginsColor()//设置周围区域颜色 renderer.setZoomEnabled(false,false); //设置是否能放大 renderer.setPanEnabled(false,false); //设置是否可以移动 renderer.setLabelsTextSize(15); //设置标签文字大小
packagecom.meritit.footlottery.view;
importorg.achartengine.chart.BarChart.Type;
importorg.achartengine.model.CategorySeries;
importorg.achartengine.model.XYMultipleSeriesDataset;
importorg.achartengine.renderer.DefaultRenderer;
importorg.achartengine.renderer.SimpleSeriesRenderer;
importorg.achartengine.renderer.XYMultipleSeriesRenderer;
importandroid.graphics.Color;
importandroid.view.View;
privateContextcontext;
publicViewexecute(Contextcontext){
this.context=context;
returnChartFactory
.getBarChartView(context,getBarDemoDataset(),getBarDemoRenderer(),Type.DEFAULT);
}
/**
*XYMultipleSeriesDataset类型的对象,用于提供图表需要表示的数据集,
*这里我们用getBarDemoDataset来得到它。
*/
privateXYMultipleSeriesDatasetgetBarDemoDataset(){
XYMultipleSeriesDatasetdataset=newXYMultipleSeriesDataset();
finalintnr=10;
Randomr=newRandom();
for(inti=0;i<3;i++){
CategorySeriesseries=newCategorySeries("球队"+(i+1));
for(intk=0;k<nr;k++){
series.add(100+r.nextInt()%100);
}
dataset.addSeries(series.toXYSeries());
}
returndataset;
}
/**
*XYMultipleSeriesRenderer类型的对象,用于提供图表展现时的一些样式,
*这里我们用getBarDemoRenderer方法来得到它。
*getBarDemoRenderer方法构建了一个XYMultipleSeriesRenderer用来设置2个系列各自的颜色
*/
publicXYMultipleSeriesRenderergetBarDemoRenderer(){
XYMultipleSeriesRendererrenderer=newXYMultipleSeriesRenderer();
SimpleSeriesRendererr=newSimpleSeriesRenderer();
r.setColor(Color.BLUE);
renderer.addSeriesRenderer(r);
r=newSimpleSeriesRenderer();
r.setColor(Color.GREEN);
renderer.addSeriesRenderer(r);
r=newSimpleSeriesRenderer();
r.setColor(Color.RED);
renderer.addSeriesRenderer(r);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.TRANSPARENT);
renderer.setMarginsColor(context.getResources().getColor(R.color.main_background_color));
renderer.setZoomEnabled(false,false);
renderer.setPanEnabled(false,false);
renderer.setLabelsTextSize(15);
renderer.setLabelsColor(Color.BLACK);
setChartSettings(renderer);
returnrenderer;
}
/**
*setChartSettings方法设置了下坐标轴样式。
*/
privatevoidsetChartSettings(XYMultipleSeriesRendererrenderer){
renderer.setChartTitle("战绩分析");
renderer.setXTitle("横坐标");
renderer.setYTitle("纵坐标");
renderer.setXAxisMin(0.5);
renderer.setXAxisMax(10.5);
renderer.setYAxisMin(0);
renderer.setYAxisMax(210);
}
}
renderer.setApplyBackgroundColor(true); //设置背景使能,为true下面的设置背景才有效
renderer.setLabelsColor(Color.BLACK);相关文章