博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开源一个Android自定义图表库
阅读量:6608 次
发布时间:2019-06-24

本文共 4474 字,大约阅读时间需要 14 分钟。

    • 类库接入
    • 使用示例
      • 1、南丁格尔玫瑰图 NightingaleRoseChart
      • 2、占比饼状图表 PieChartLayout
      • 3、进度环形图 ProgressPieChart
      • 4、纵向柱状图 BarVerticalChart
      • 5、横向柱状图 BarHorizontalChart
    • 源码下载

 

  项目中有一些图表需求,一开始尝试使用一些开源的图表库,这些图表库功能很强大,图表种类应有尽有,是不错的选择。但是这些类库使用起来通常需要大量的设置,对于项目风格不能很好的贴合。于是自己尝试写了一个图表库,使用起来非常方便,注释清晰,后期扩展性强。

类库接入

build.gradle中添加依赖:

implementation 'com.openxu.viewlib:OXViewLib:
'
  • 1

其中<new version>替换为最新版本,版本查看OXChart

使用示例

1、南丁格尔玫瑰图 NightingaleRoseChart

      南丁格尔玫瑰图

NightingaleRoseChart roseChartSmall = (NightingaleRoseChart)findViewById(R.id.roseChartSmall);roseChartSmall.setShowChartLable(true);    //是否在图表上显示指示lableroseChartSmall.setShowChartNum(false);     //是否在图表上显示指示numroseChartSmall.setShowNumTouched(false); //点击显示数量 roseChartSmall.setShowRightNum(true); //右侧显示数量 roseList.add(new RoseBean(10, "数据1")); roseList.add(new RoseBean(13, "数据2")); roseList.add(new RoseBean(31, "数据3")); roseList.add(new RoseBean(8, "数据4")); roseList.add(new RoseBean(21, "数据5")); //参数1:数据对象class, 参数2:数量属性字段名称, 参数3:名称属性字段名称, 参数4:数据集合 roseChartSmall.setData(RoseBean.class, "count", "ClassName", roseList); roseChartSmall.setLoading(false);//是否正在加载,数据加载完毕后置为false

2、占比饼状图表 PieChartLayout

      占比饼状图表

PieChartLayout pieChart1 = (PieChartLayout)findViewById(R.id.pieChart1);/* * 圆环宽度 * ringWidth > 0 :空心圆环,内环为白色,可以在内环中绘制字 * ringWidth <=0 :实心 */pieChart1.setRingWidth(DensityUtil.dip2px(this, 15)); pieChart1.setLineLenth(DensityUtil.dip2px(this, 8)); // //指示线长度 pieChart1.setTagModul(PieChartLayout.TAG_MODUL.MODUL_CHART); //在扇形图上显示tag pieChart1.setDebug(false); pieChart1.setLoading(true); //请求数据 List
datalist = new ArrayList<>(); datalist.add(new PieChartBean(20, "理发屋")); datalist.add(new PieChartBean(20, "KTV")); //显示在中间的lable List
tableList = new ArrayList<>(); tableList.add(new ChartLable("建筑", DensityUtil.sp2px(this, 12), getResources().getColor(R.color.text_color_light_gray))); tableList.add(new ChartLable("性质", DensityUtil.sp2px(this, 12), getResources().getColor(R.color.text_color_light_gray))); pieChart1.setLoading(false); //参数1:数据类型 参数2:数量字段名称 参数3:名称字段 参数4:数据集合 参数5:lable集合 pieChart1.setChartData(PieChartBean.class, "Numner", "Name",datalist ,tableList);

 

3、进度环形图 ProgressPieChart

      进度环形图

ProgressPieChart chart1 = (ProgressPieChart)findViewById(R.id.chart1);chart1.setProSize(DensityUtil.dip2px(this, 5)); //圆环宽度 chart1.setDebug(false); chart1.setLoading(false); chart1.setProColor(Color.parseColor("#ff0000")); //进度颜色 //环形中间显示的lable List
lables = new ArrayList<>(); lables.add(new ChartLable("60.0%", DensityUtil.sp2px(this, 12), Color.parseColor("#ff0000"))); lables.add(new ChartLable("完成率", DensityUtil.sp2px(this, 8), getResources().getColor(R.color.text_color_light_gray))); chart1.setData(100, 60, lables);

4、纵向柱状图 BarVerticalChart

      纵向柱状图

 

BarVerticalChart chart1 = (BarVerticalChart)findViewById(R.id.chart1);chart1.setBarSpace(DensityUtil.dip2px(this, 1));  //双柱间距chart1.setBarItemSpace(DensityUtil.dip2px(this, 20));  //柱间距chart1.setDebug(false); chart1.setBarNum(2); //一组柱子数量 chart1.setBarColor(new int[]{Color.parseColor("#5F93E7"),Color.parseColor("#F28D02")}); //X轴 List
strXList = new ArrayList<>(); //柱状图数据 List
> dataList = new ArrayList<>(); for(int i = 0; i<5; i++){ //此集合为柱状图上一条数据,集合中包含几个实体就是几个柱子 List
list = new ArrayList<>(www.078881.cn ); list.add(new BarBean(random.nextInt(30), "接入系统")); list.add(new BarBean(random.nextInt(20), "审核信息")); dataList.add(list); strXList.add((i+1)+"月"); } chart1.setLoading(false); chart1.setData(dataList, strXList);

 

5、横向柱状图 BarHorizontalChart

      横向柱状图

BarHorizontalChart chart1 = (BarHorizontalChart)findViewById(R.id.chart1);chart1.setBarSpace(DensityUtil.dip2px(this, www.mcyllpt.com/ 1));  //双柱间距chart1.setBarItemSpace(DensityUtil.dip2px(this, 20));  //柱间距chart1.setDebug(false); chart1.setBarNum(3); chart1.setBarColor(new int[]{Color.parseColor("#5F93E7"),Color.parseColor("#F28D02")}); //X轴 List
strXList = new ArrayList<>(www.leyou2.net); //柱状图数据 List
> dataList = new ArrayList<>(); for(int i = 0; i<100; i++){ //此集合为柱状图上一条数据,集合中包含几个实体就是几个柱子 List
list = new ArrayList<>(www.leyouzaixian2.com); list.add(new BarBean(random.nextInt(30), "lable1")); list.add(new BarBean(random.nextInt(www.yongshiyule178.com 0), "lable2")); dataList.add(list); strXList.add((i+1)+"月"); } chart1.setLoading(false); chart1.setData(dataList, www.hjha178.com/ strXList);
你可能感兴趣的文章
网卡绑定(服务器&&交换机),缓存服务器Squid架构配置
查看>>
web网站加速之CDN(Content Delivery Network)技术原理
查看>>
sed的基本用法
查看>>
一个不错的shell 脚本入门教程
查看>>
Ansible之playbook的使用
查看>>
ansible模块批量管理
查看>>
redis命令 - GET
查看>>
httpd.conf的基本设置
查看>>
RHEL/Centos7新功能
查看>>
DBA日常工作职责
查看>>
Redis的持久化
查看>>
linux安装NFS服务器学习
查看>>
Planner .NET日历日程控件能给你的应用程序提供多种日历日程功能
查看>>
我的友情链接
查看>>
Linux压力测试
查看>>
JAVA中的线程机制(二)
查看>>
nginx安装与配置2(转载)
查看>>
沈阳一饭店凌晨爆燃,燃气报警器时刻预防
查看>>
Redis 与 数据库处理数据的两种模式
查看>>
VUE2中axios的使用方法
查看>>