简单achartengine

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值