AChartEngine应用之PieChart(动态饼图)
接着上一次写的内容,构建动态饼图,并产生与用户交互,官方的API并没有提供可以借鉴的动态更新饼图的方法,考虑到数据都是活动的,不可能总是用静态数据,所以我下面的demo就是模拟动态数据用饼图显示,过程看起来笨拙一点,但是肯定可以使用的,具体是通过定时器+Handler实现定时任务,通过Handler更新主线程UI,在更新之前要把之前的数据清除掉,否则那些数据都会被加载,最后重新绘制饼图,
构建动态饼图的步骤主要分为以下四步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加:<activityandroid:name="org.achartengine.GraphicalActivity" />
1. 设置DefaultRenderer
DefaultRenderer mRenderer = new DefaultRenderer();// PieChart的主要描绘器 mRenderer = new DefaultRenderer();// 创建一个描绘器的实例,将被用来创建图表 mRenderer.setZoomButtonsVisible(true);// 显示放大缩小功能按钮 mRenderer.setStartAngle(180);// 设置为水平开始 mRenderer.setDisplayValues(true);// 显示数据 // mRenderer.setFitLegend(false);// 设置是否显示图例 // mRenderer.setLegendTextSize(10);// 设置图例字体大小 // mRenderer.setLegendHeight(10);// 设置图例高度 mRenderer.setShowLegend(false);// 默认是显示的需要关闭,因为动态更新数据的时候,图例更新慢 mRenderer.setChartTitle("饼图示例");// 设置饼图标题 mRenderer.setChartTitleTextSize(14);// 设置饼图标题大小 |
2. 构建数据源CategorySeries
for (int i = 0; i < data.length; i++) VALUE += data[i]; for (int i = 0; i < data.length; i++) { mSeries.add("示例 " + (i + 1), data[i] / VALUE);// 设置种类名称和对应的数值,前面是(key,value)键值对 SimpleSeriesRenderer renderer = new SimpleSeriesRenderer(); if (i < COLORS.length) { renderer.setColor(COLORS[i]);// 设置描绘器的颜色 } else { renderer.setColor(getRandomColor());// 设置描绘器的颜色 } renderer.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比 mRenderer.setChartTitleTextSize(14);// 设置饼图标题大小 mRenderer.addSeriesRenderer(renderer);// 将最新的描绘器添加到DefaultRenderer中 } |
3. 通过ChartFactory获取饼图
mChartView = ChartFactory.getPieChartView(getApplicationContext(),
|