在本实例中,是在同一个活动中显示了两个统计图,一个是饼状图一个是柱形图。对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的时候,其背景色是白色。后来找到了个取巧的解决办法,就是在中间设置为跟背景颜色一样的颜色,这样显示出来的效果就跟透明的效果一样了。