package com.yeetou.xinyongkaguanjia.util;
import java.util.Iterator;
import java.util.Map;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.model.CategorySeries;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;
import com.yeetou.xinyongkaguanjia.constants.AppConstant;
import android.content.Context;
import android.graphics.Color;
import android.util.DisplayMetrics;
public class AchartUtil {
// 获取饼状图
public static GraphicalView getPieGraphicalView(Context mContext,Map<String, Float> map) {
CategorySeries mSeries = new CategorySeries("");
DefaultRenderer mRenderer = new DefaultRenderer();
GraphicalView mChartView;
mRenderer.setZoomButtonsVisible(false);
mRenderer.setZoomEnabled(false);
mRenderer.setStartAngle(-90);
mRenderer.setDisplayValues(false);
mRenderer.setShowLegend(false);
mRenderer.setShowLabels(false);
mRenderer.setPanEnabled(false);
mRenderer.setClickEnabled(false);
DisplayMetrics dm = new DisplayMetrics();
dm = mContext.getResources().getDisplayMetrics();
float density = dm.density;
int screenWidth = dm.widthPixels;
mChartView = ChartFactory.getPieChartView(mContext, mSeries, mRenderer);
mChartView.setClickable(false);
double value = 0;
Iterator ite = map.keySet().iterator();
int i = 0;
while (ite.hasNext()) {
value = map.get(ite.next());
mSeries.add("Series " + (mSeries.getItemCount() + 1),
value);
SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
renderer.setColor(mContext.getResources().getColor(AppConstant.cart_color[i]));
mRenderer.addSeriesRenderer(renderer);
i++;
}
mChartView.repaint();
// GraphicalView mChartView = ChartFactory.getPieChartView(mContext,buildCategoryDataset("1", map),buildCategoryRenderer(mContext, map));
return mChartView;
}
// 设置饼状图的Renderer
protected static DefaultRenderer buildCategoryRenderer(Context mContext,Map<String, Float> map) {
DefaultRenderer renderer = new DefaultRenderer();
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setZoomEnabled(false);
renderer.setPanEnabled(false);
// 周围的标注
renderer.setShowLabels(false);
// 设置是否显示下面的各颜色的含义
renderer.setShowLegend(false);
renderer.setMargins(new int[] { 20, 30, 15, 0 });
Iterator iterator = map.keySet().iterator();
int i = 0;
for (String key : map.keySet()) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(mContext.getResources().getColor(AppConstant.cart_color[i]));
renderer.addSeriesRenderer(r);
i++;
}
return renderer;
}
// 设置饼状图的Series
protected static CategorySeries buildCategoryDataset(String title,
Map<String, Float> map) {
CategorySeries series = new CategorySeries("123");
int k = 0;
for (String key : map.keySet()) {
series.add("Project " + ++k,Double.parseDouble(map.get(key).toString()));
}
return series;
}
/*
* // 柱状�? public static GraphicalView getXYMultipleGraphicalView(Context
* mContext) { GraphicalView gview = ChartFactory.getBarChartView(mContext,
* getBarDemoDataset(), getBarDemoRenderer(), Type.DEFAULT); return gview; }
*
*
* //获取首页柱状�? public static GraphicalView getXYMultipleGraphicalView(Context
* mContext, List<MonthPayments> payments){
*
* XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); final
* int nr = 10; Random r = new Random(); for (int i = 0; i < 3; 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()); }
*
*
* XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
* SimpleSeriesRenderer r1 = new SimpleSeriesRenderer();
* r1.setColor(Color.BLUE); renderer.addSeriesRenderer(r1); r1 = new
* SimpleSeriesRenderer(); r1.setColor(Color.GREEN);
* renderer.addSeriesRenderer(r1); r1 = new SimpleSeriesRenderer();
* r1.setColor(Color.WHITE); renderer.addSeriesRenderer(r1);
* setChartSettings(renderer);
*
*
* GraphicalView gview = ChartFactory.getBarChartView(mContext, dataset,
* renderer, Type.DEFAULT); return gview; }
*
*
*
*
*
*
*
*
* // 设置柱状图的Series private static 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("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 static 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 static 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轴最大�?�?10 renderer.setDisplayChartValues(true); // 设置是否在柱体上方显示�?
* renderer.setShowGrid(true);// 设置是否在图表中显示网格 renderer.setXLabels(0);//
* 设置X轴显示的刻度标签的个�? renderer.setMarginsColor(Color.WHITE); // 边框背景颜色
* renderer.setClickEnabled(true);// 设置可监点击 renderer.setPanEnabled(true,
* false);// 设置XY轴是否可惜滑�? for (int i = 1; i < 11; i++) {
* renderer.addTextLabel(i, "" + i); } }
*/
}