今天在做项目的时候用到了图表功能,记录下来
achartengine是google的一个开源项目,可以在https://code.google.com/p/achartengine/ 下载技术文档,jar包以及项目源代码
demo下载:https://code.google.com/p/achartengine/downloads/list
一、饼状图
新建工程,添加achartengine jar包
piechart.java
package com.meritit.footlottery.view;
import org.achartengine.chartfactory;
import org.achartengine.model.categoryseries;
import org.achartengine.renderer.defaultrenderer;
import org.achartengine.renderer.simpleseriesrenderer;
import android.content.context;
import android.graphics.color;
import android.view.view;
public class piechart {
public view execute(context context) {
int[] colors = new int[] { color.red, color.yellow, color.blue };
defaultrenderer renderer = buildcategoryrenderer(colors);
categoryseries categoryseries = new categoryseries("vehicles chart");
categoryseries.add("胜 ", 30);
categoryseries.add("负", 20);
categoryseries.add("平", 60);
return chartfactory
.getpiechartview(context, categoryseries, renderer);
}
protected defaultrenderer buildcategoryrenderer(int[] colors) {
defaultrenderer renderer = new defaultrenderer();
for (int color : colors) {
simpleseriesrenderer r = new simpleseriesrenderer();
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);
return renderer;
}
}
使用方法
//view piechart = new piechart().execute(this);
//chartarea.addview(piechart);
获得一个view对象,在需要添加的布局下面直接addview
二、柱状图
package com.meritit.footlottery.view;
import java.util.random;
import org.achartengine.chartfactory;
import org.achartengine.chart.barchart.type;
import org.achartengine.model.categoryseries;
import org.achartengine.model.xymultipleseriesdataset;
import org.achartengine.renderer.defaultrenderer;
import org.achartengine.renderer.simpleseriesrenderer;
import org.achartengine.renderer.xymultipleseriesrenderer;
import com.meritit.footlottery.r;
import android.content.context;
import android.graphics.color;
import android.view.view;
public class barchart {
private context context;
public view execute(context context) {
this.context = context;
return chartfactory
.getbarchartview(context, getbardemodataset(), getbardemorenderer(), type.default);
}
/**
* xymultipleseriesdataset 类型的对象,用于提供图表需要表示的数据集,
* 这里我们用 getbardemodataset 来得到它。
*/
private xymultipleseriesdataset getbardemodataset() {
xymultipleseriesdataset dataset = new xymultipleseriesdataset();
final int nr = 10;
random r = new random();
for (int i = 0; i < 3; i++) {
categoryseries series = new categoryseries("球队 " + (i + 1));
for (int k = 0; k < nr; k++) {
series.add(100 + r.nextint() % 100);
}
dataset.addseries(series.toxyseries());
}
return dataset;
}
/**
* xymultipleseriesrenderer 类型的对象,用于提供图表展现时的一些样式,
* 这里我们用 getbardemorenderer 方法来得到它。
* getbardemorenderer 方法构建了一个 xymultipleseriesrenderer 用来设置2个系列各自的颜色
*/
public xymultipleseriesrenderer getbardemorenderer() {
xymultipleseriesrenderer renderer = new xymultipleseriesrenderer();
simpleseriesrenderer r = new simpleseriesrenderer();
r.setcolor(color.blue);
renderer.addseriesrenderer(r);
r = new simpleseriesrenderer();
r.setcolor(color.green);
renderer.addseriesrenderer(r);
r = new simpleseriesrenderer();
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);
return renderer;
}
/**
* setchartsettings 方法设置了下坐标轴样式。
*/
private void setchartsettings(xymultipleseriesrenderer renderer) {
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.setbackgroundcolor(color.transparent); //设置背景
renderer.setmarginscolor() //设置周围区域颜色
renderer.setzoomenabled(false, false); //设置是否能放大
renderer.setpanenabled(false, false); //设置是否可以移动
renderer.setlabelstextsize(15); //设置标签文字大小
renderer.setlabelscolor(color.black);