Android中实现环状图的两种方式
2015-07-14 15:20
495 查看
在最近得一个项目里,要做一个数据统计,将数据在环状图上进行展示,并在环图的中间展示用户比较感兴趣的那部分所占的比例。下面简单介绍两种方法实现环状图,当然如果你有更好的实现我们可以互相交流学习。
1.使用achartengine.jar来实现(环图中间没有文字说明)
这个jar包的功能相当强大,可实现许多图表。但据我观察,关于环状图的实现介绍在网络上还是有点儿少。由于自己也很少使用这个jar包,最后只好看源码以及官方的demo,根据源官方的demo简单实现了环状图。对于该jar包的使用,本人是个新手,有代码冗余的地方希望大家给予提醒并及时更正。
AChartEngine是一个免费图表开发库,目前已经发布了4个版本。支持散点图、折线图、饼图、气泡图、柱状图、短棒图等多种图表。Android开发者可以很方便的试用AChartEngine Chart库画出各种图表。
1.使用achartengine.jar来实现(环图中间没有文字说明)
这个jar包的功能相当强大,可实现许多图表。但据我观察,关于环状图的实现介绍在网络上还是有点儿少。由于自己也很少使用这个jar包,最后只好看源码以及官方的demo,根据源官方的demo简单实现了环状图。对于该jar包的使用,本人是个新手,有代码冗余的地方希望大家给予提醒并及时更正。
AChartEngine是一个免费图表开发库,目前已经发布了4个版本。支持散点图、折线图、饼图、气泡图、柱状图、短棒图等多种图表。Android开发者可以很方便的试用AChartEngine Chart库画出各种图表。
public class CyclicGraphView { private Context context; private ArrayList values; private ArrayList descriptions; private int[] colors = new int[] { 0xffa9d86e, 0xff50b8d8, 0xfff9a415, 0xfffa9c9c, Color.GREEN }; public CyclicGraphView(Context context, ArrayList values, ArrayList descriptions) { this.context = context; this.values = values; this.descriptions = descriptions; } public View excute() { MultipleCategorySeries dataset = buildMultipleCategorySeries(""); DefaultRenderer renderer = buildCategoryRenderer(); return ChartFactory.getDoughnutChartView(context, dataset, renderer); } protected MultipleCategorySeries buildMultipleCategorySeries(String title) { MultipleCategorySeries multipleCategorySeries=new MultipleCategorySeries(title); Integer total = 0; int count=0; ArrayList des=new ArrayList(); ArrayList val=new ArrayList(); String []precent=new String[values.get(0).length]; for (int i = 0; i < values.get(0).length; i++) { total += (int)values.get(0)[i]; } NumberFormat nft=NumberFormat.getPercentInstance(); nft.setMaximumFractionDigits(0); for (int i = 0; i < values.ge 4000 t(0).length; i++) { precent[i]=nft.format(values.get(0)[i]/total)+""; } String []newprecent=new String[values.get(0).length]; double []newval=new double[values.get(0).length]; for(int i=0;i 2.使用MPChart.jar来实现(环图中间带有文字说明) MPAndroidChart 是 Android 系统上一款开源的图表库。目前提供线图和饼图,支持选择、缩放和拖放
public class PieChartView { private static int[] colors = new int[] { 0xffa9d86e, 0xff50b8d8, 0xfff9a415, 0xfffa9c9c, Color.GREEN }; //private static Typeface tf; public static View excute(PieChart pieChart, ArrayList values, String text) { pieChart.setUsePercentValues(true);//显示成百分比 pieChart.setDescription(""); pieChart.setHoleColorTransparent(true); pieChart.setHoleRadius(70f); //半径比例 pieChart.setTransparentCircleColor(Color.WHITE); pieChart.setDrawCenterText(true);//饼状图中间添加文字 pieChart.setCenterTextSize(16); /*tf = Typeface.createFromAsset(context.getAssets(), "OpenSans-Regular.ttf"); pieChart.setCenterTextTypeface(tf);*/ pieChart.getLegend().setEnabled(false);//不显示说明 pieChart.setRotationEnabled(false);// 不允许手动旋转 pieChart.setCenterText(text); pieChart.setCenterTextWordWrapEnabled(true); setData(values, pieChart); pieChart.setOnTouchListener(new ChartTouchListener(pieChart) { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub return false; } }); return pieChart; } private static void setData(ArrayList datas, PieChart pieChart) { // TODO Auto-generated method stub ArrayList yVals1 = new ArrayList(); for (int i = 0; i < datas.size(); i++) { yVals1.add(new Entry((float) (datas.get(i)), i)); } ArrayList xVals = new ArrayList(); for (int i = 0; i < datas.size(); i++) { xVals.add(""); } PieDataSet dataSet = new PieDataSet(yVals1, "Election Results"); dataSet.setSliceSpace(0f);//设置饼状图之间的距离 dataSet.setSelectionShift(0f);//选中态多出的长度 // add a lot of colors // dataSet.setValueTextSize(0); dataSet.setDrawValues(false); dataSet.setColors(colors); PieData data = new PieData(xVals, dataSet); data.setValueFormatter(new PercentFormatter()); // data.setValueTextSize(11f); data.setDrawValues(false);//饼图上不显示文字 // data.setValueTextColor(Color.WHITE); pieChart.setData(data); // undo all highlights pieChart.highlightValues(null); pieChart.invalidate(); } }
相关文章推荐
- php结合安卓客户端实现查询交互实例
- Android安卓中循环录像并检测内存卡容量
- Almp 安卓系统上搭建本地php服务器环境的步骤
- 谷歌被屏蔽后如何搭建安卓环境
- 安卓APP测试之使用Burp Suite实现HTTPS抓包方法
- 分享一个安卓的内置多种工具类的Activity
- 安卓(Android)中如何实现滑动导航
- 六款值得推荐的android(安卓)开源框架简介
- 浅谈Android虚拟机的动态加载技术
- 安卓系统手机无法连接***
- android intent和intent action大全
- OGEngine介绍
- OGEngine_修改器
- OGEngine 弹出软件盘手动输入文字处理
- OGEngine 弹出软件盘手动输入文字处理
- 【游戏推荐】癞子斗地主--OGEngine精品游戏推荐系列【一】
- 场景精灵间的坐标转换
- Mac下的OGEngine游戏开发环境的搭建
- <交流贴>四种方案解决ScrollView嵌套ListView问题