package com.activity.main;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
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 android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends ListActivity {
private static final int SERIES_NR = 3;
/** Called when the activity is first created. */
private ArrayList<Map<String, String>> maps = new ArrayList<Map<String, String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
// 加入 ListItem “ 调度查询 ”
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", " 柱状图 ");
map.put("desc", " 显示柱状图 ");
maps.add(map);
map = new HashMap<String, String>();
map.put("name", " 饼状图 ");
map.put("desc", " 显示饼状图 ");
maps.add(map);
// 构建 listView 的适配器
// SDK 库中提供的一个包含两个 TextView 的 layout new String[]{ "name" , "desc" },
// maps 中的两个 key
SimpleAdapter adapter = new SimpleAdapter(this, maps,
android.R.layout.simple_list_item_2, new String[] { "name",
"desc" }, new int[] { android.R.id.text1,
android.R.id.text2 });
// 两个 TextView 的 id );
this.setListAdapter(adapter);
}
// ListItem 监听器方法
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if(position == 0){
XYMultipleSeriesRenderer renderer = getBarDemoRenderer();
Intent intent = ChartFactory.getBarChartIntent(this,
getBarDemoDataset(), renderer, Type.DEFAULT);
startActivity(intent);
}else if(position == 1)
{
Intent intent = execute(MainActivity.this);
startActivity(intent);
}
}
//设置饼状图
public Intent execute(Context context) {
double[] values = new double[] { 12, 14, 11, 10, 19 };
int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA,
Color.YELLOW, Color.CYAN };
DefaultRenderer renderer = buildCategoryRenderer(colors);
renderer.setZoomButtonsVisible(true);
renderer.setZoomEnabled(true);
renderer.setChartTitleTextSize(20);
renderer.setChartTitle("这是一个饼状图");
return ChartFactory.getPieChartIntent(context,
buildCategoryDataset("Project budget", values), renderer,
"Budget");
}
//设置饼状图的Renderer
protected DefaultRenderer buildCategoryRenderer(int[] colors) {
DefaultRenderer renderer = new DefaultRenderer();
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setMargins(new int[] { 20, 30, 15, 0 });
for (int color : colors) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
return renderer;
}
//设置饼状图的Series
protected CategorySeries buildCategoryDataset(String title, double[] values) {
CategorySeries series = new CategorySeries(title);
int k = 0;
for (double value : values) {
series.add("Project " + ++k, value);
}
return series;
}
//设置柱状图的Series
private XYMultipleSeriesDataset getBarDemoDataset() {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
final int nr = 10;
Random r = new Random();
for (int i = 0; i < SERIES_NR; i++) {
CategorySeries series = new CategorySeries("Demo series " + (i + 1));
for (int k = 0; k < nr; k++) {
series.add(100 + r.nextInt() % 100);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
}
//设置柱状图的Renderer
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.WHITE);
renderer.addSeriesRenderer(r);
setChartSettings(renderer);
return renderer;
}
//设置柱状图Renderer的属性
private void setChartSettings(XYMultipleSeriesRenderer renderer) {
renderer.setChartTitle("Chart demo");
renderer.setXTitle("x values");
renderer.setYTitle("y values");
renderer.setXAxisMin(0.5);// 设置X轴的最小值为0.5
renderer.setXAxisMax(10.5);// 设置X轴的最大值为10.5
renderer.setYAxisMin(0);// 设置Y轴的最小值为0
renderer.setYAxisMax(210);// 设置Y轴最大值为210
renderer.setDisplayChartValues(true); // 设置是否在柱体上方显示值
renderer.setShowGrid(true);// 设置是否在图表中显示网格
renderer.setXLabels(0);// 设置X轴显示的刻度标签的个数
for (int i = 1; i < 11; i++) {
renderer.addTextLabel(i, "" + i);
}
}
}