相信图表再很多统计应用都会应用,再这里我想向介绍一个第三方的jar包--j4lChartAndroid.jar,再这里基本上平时用到的图表都有,这里我们就只介绍饼状3d图表
1、xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:id="@+id/course_viewflipper"
android:background="#FFFFFF" android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
</LinearLayout>
2、activity类
public class ShowImage extends Activity {
/** Called when the activity is first created. */
ChartLoader cha = new ChartLoader();
ChartPanel chartPanel;
static List<ddd> list;
static double[] valueList;
static String[] labellist;// 标签值
static boolean[] gapsValueList;
static FillStyle[] fillStyle_color;
static ChartColor[] color = new ChartColor[] {
GraphicsProvider.getColor(ChartColor.CYAN),
GraphicsProvider.getColor(ChartColor.BLUE),
GraphicsProvider.getColor(ChartColor.GREEN),
GraphicsProvider.getColor(ChartColor.YELLOW),
GraphicsProvider.getColor(ChartColor.RED),
GraphicsProvider.getColor(ChartColor.SKYBLUE),
GraphicsProvider.getColor(ChartColor.PINK) };
static int[] labelColor = new int[] { Color.CYAN, Color.BLUE,
Color.GREEN, Color.YELLOW, Color.RED, Color.parseColor("#00CCFF"), Color.parseColor("#ffc0cb") };
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
list = getData();
getValues();
LinearLayout imageview = (LinearLayout) findViewById(R.id.course_viewflipper);
chartPanel = new ChartPanel(this);
chartPanel.setChart(Example4());
imageview.addView(chartPanel);
}
public List<ddd> getData() {
List<ddd> l = new ArrayList<ddd>();
ddd d1 = new ddd();
d1.setDoor("南门");
d1.setTotal(100);
ddd d2 = new ddd();
d2.setDoor("西门");
d2.setTotal(200);
ddd d3 = new ddd();
d3.setDoor("北门");
d3.setTotal(300);
ddd d4 = new ddd();
d4.setDoor("东门");
d4.setTotal(400);
l.add(d1);
l.add(d2);
l.add(d3);
l.add(d4);
return l;
}
class ddd {
String door;
double total;
public String getDoor() {
return door;
}
public void setDoor(String door) {
this.door = door;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
}
public void getValues(){
valueList= new double[list.size()];// 数值组
gapsValueList =new boolean[list.size()];// 饼块之间是否分开组
fillStyle_color= new FillStyle[list.size()];// 颜色组
labellist= new String[list.size()];// // 图解label组
for (int i = 0; i < list.size(); i++) {
labellist[i] = list.get(i).getDoor();
valueList[i] = list.get(i).getTotal();
fillStyle_color[i] = new FillStyle(color[i]);
if(i<list.size()-1){
gapsValueList[i] = true;
}
}
}
// ==============================================
protected void onDestroy() {
if (chartPanel != null)
if (chartPanel.getChart() != null)
chartPanel.getChart().stopUpdater();
super.onDestroy();
}
public static Chart Example4() {
PieDataSerie data1 = new PieDataSerie(valueList, fillStyle_color,
gapsValueList, labellist);
data1.valueFont = GraphicsProvider
.getFont("Arial", ChartFont.PLAIN, 14);
// legend
Legend l = new Legend();
l.background = new FillStyle(
GraphicsProvider.getColor(ChartColor.WHITE));
l.border = new LineStyle(1,
GraphicsProvider.getColor(ChartColor.BLACK),
LineStyle.LINE_NORMAL);
for (int i = 0; i < list.size(); i++) {
l.addItem(labellist[i], new FillStyle(color[i]));
}
// create title
Title title = new Title("");
// plotter
PiePlotter plot = new PiePlotter();
// 3D effect
plot.effect3D = true;
plot.border = new LineStyle(1, GraphicsProvider.getColor(ChartColor.BLACK),LineStyle.LINE_NORMAL);
data1.textDistanceToCenter = 1.3;
plot.labelFormat = "#PERCENTAGE#";
// create chart
Chart chart = new Chart(title, plot, null, null);
// chart background
chart.back = new FillStyle(GraphicsProvider.getColor(ChartColor.WHITE));
// chart.back.gradientType = FillStyle.GRADIENT_VERTICAL;
// add legend
chart.legend = l;
// legend position and layout
chart.layout = Chart.LAYOUT_LEGEND_RIGHT;
chart.topMargin = 0.1;
chart.bottomMargin = 0.4; // 20%
chart.leftMargin =0.1;
l.verticalLayout = true;
// add data
chart.addSerie(data1);
chart.setHeight(250);
chart.setWidth(320);
return chart;
}
}