在本实例中,是在同一个活动中显示了两个统计图,一个是饼状图一个是柱形图。对data和坐标分别写成了不同的方法,修改起来也方便。
活动页:
public class NullAcy extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 饼状图
LinearLayout pieLayout = (LinearLayout) findViewById(R.id.pie_show);
GraphicalView pieView = ChartFactory.getDoughnutChartView(this,
getMulDataset(), getMulRenderer());
pieLayout.addView(pieView, new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
// 柱形图
LinearLayout barLayout = (LinearLayout) findViewById(R.id.bar_show);
GraphicalView barView = ChartFactory.getBarChartView(this,
getDataSet(), getRenderer(), Type.DEFAULT);
barLayout.addView(barView, new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
}
/**
* 饼状图的数据
*
* @return
*/
public MultipleCategorySeries getMulDataset() {
MultipleCategorySeries series = new MultipleCategorySeries("title");
// 添加
series.add(new String[] { "支出:" + 1000, "收入:" + 3000 }, new double[] {
1000, 3000 });
return series;
}
public DefaultRenderer getMulRenderer() {
// 颜色
int[] colors = new int[] { Color.BLUE, Color.GREEN };
DefaultRenderer renderer = buildCategoryRenderer(colors);
// 设置是否显示背景颜色
renderer.setApplyBackgroundColor(false);
// 设置背景颜色
renderer.setBackgroundColor(Color.LTGRAY);
// 设置坐标颜色
renderer.setLabelsColor(Color.CYAN);
// 设置移动
renderer.setPanEnabled(false);
// 设置放大
renderer.setZoomEnabled(false);
return renderer;
}
public DefaultRenderer buildCategoryRenderer(int[] colors) {
DefaultRenderer renderer = new DefaultRenderer();
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setChartTitle("本月总收入:" + 4000 + "," + "实际收入:" + 3000);
renderer.setMargins(new int[] { 20, 30, 15, 0 });
for (int color : colors) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
return renderer;
}
/**
* 设置柱形图的数据
*
* @return
*/
public XYMultipleSeriesDataset getDataSet() {
// 构造数据
XYMultipleSeriesDataset barDataset = new XYMultipleSeriesDataset();
CategorySeries barSeries = new CategorySeries("2014年4月");
barSeries.add(49);
barSeries.add(30);
barSeries.add(36);
barDataset.addSeries(barSeries.toXYSeries());
return barDataset;
}
public XYMultipleSeriesRenderer getRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setChartTitle("本月:");
// // 设置标题的字体大小
renderer.setChartTitleTextSize(16);
renderer.setXTitle("本月事件");
renderer.setYTitle("单位(件)");
renderer.setAxesColor(Color.WHITE);
// 设置坐标的颜色
renderer.setLabelsColor(Color.CYAN);
renderer.setMarginsColor(Color.TRANSPARENT);
renderer.setMargins(new int[] { 20, 30, 15, 15 }); // 设置4边留白
renderer.setMarginsColor(Color.argb(0, 0xff, 0, 0));// 设置4边留白透明
// 设置X轴的最小数字和最大数字
renderer.setXAxisMin(0.5);
renderer.setXAxisMax(5.5);
// 设置Y轴的最小数字和最大数字
renderer.setYAxisMin(0);
renderer.setYAxisMax(100);
renderer.addXTextLabel(1, "接受");
renderer.addXTextLabel(2, "发送");
renderer.addXTextLabel(3, "交易");
// 设置缩放控件是否可见
renderer.setZoomButtonsVisible(false);
// 设置渲染器允许放大缩小
renderer.setZoomEnabled(false);
// 消除锯齿
renderer.setAntialiasing(true);
// 设置背景颜色
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.TRANSPARENT);
// 设置每条柱子的颜色
SimpleSeriesRenderer sr = new SimpleSeriesRenderer();
sr.setColor(Color.YELLOW);
renderer.addSeriesRenderer(sr);
// 设置每个柱子上是否显示数值
renderer.getSeriesRendererAt(0).setDisplayChartValues(true);
// X轴的近似坐标数 (这样不显示横坐标)
renderer.setXLabels(0);
// Y轴的近似坐标数
renderer.setYLabels(6);
// 刻度线与X轴坐标文字左侧对齐
renderer.setXLabelsAlign(Align.CENTER);
// Y轴与Y轴坐标文字左对齐
renderer.setYLabelsAlign(Align.CENTER);
// 允许左右拖动,但不允许上下拖动.
renderer.setPanEnabled(false, false);
// 柱子间宽度
renderer.setBarSpacing(0.5f);
// 设置X,Y轴单位的字体大小
renderer.setAxisTitleTextSize(20);
return renderer;
}
}
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="#457896"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/pie_show"
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="horizontal" />
<LinearLayout
android:id="@+id/bar_show"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal" />
</RelativeLayout>
结果:
注意:
1.开始的向在饼状图的中间设置为全透明效果,但改为Color.TRANSPARENT的时候,其背景色是白色。后来找到了个取巧的解决办法,就是在中间设置为跟背景颜色一样的颜色,这样显示出来的效果就跟透明的效果一样了。