开源一个Android自定义图表库

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

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

类库接入

build.gradle中添加依赖:

     implementation ‘com.openxu.viewlib:OXViewLib:<new version>‘
  • 1

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

使用示例

1、南丁格尔玫瑰图 NightingaleRoseChart

??????

<com.openxu.cview.chart.rosechart.NightingaleRoseChart
    android:id="@+id/roseChartSmall"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
NightingaleRoseChart roseChartSmall = (NightingaleRoseChart)findViewById(R.id.roseChartSmall);
roseChartSmall.setShowChartLable(true);    //是否在图表上显示指示lable
roseChartSmall.setShowChartNum(false);     //是否在图表上显示指示num
roseChartSmall.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

??????

<com.openxu.cview.chart.piechart.PieChartLayout
   android:id="@+id/pieChart1"
   android:layout_width="match_parent"
   android:layout_height="180dp"
   android:layout_centerVertical="true"
   android:paddingRight="10dp"
   android:background="#ffffff"
   android:orientation="horizontal">
   <com.openxu.cview.chart.piechart.PieChart
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_weight="1" />
   <com.openxu.cview.chart.piechart.PieChartLableView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_weight="2" />
</com.openxu.cview.chart.piechart.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<PieChartBean> datalist = new ArrayList<>();
datalist.add(new PieChartBean(20, "理发屋"));
datalist.add(new PieChartBean(20, "KTV"));
//显示在中间的lable
List<ChartLable> 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

??????

<com.openxu.cview.chart.ProgressPieChart
    android:id="@+id/chart1"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:background="#ffffff"/>
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<ChartLable> 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

??????

<com.openxu.cview.chart.barchart.BarVerticalChart
    android:id="@+id/chart1"
    android:layout_width="match_parent"
    android:layout_height="250dip"
    android:background="#ffffff"
    android:padding="10dp"/>
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<String> strXList = new ArrayList<>();
//柱状图数据
List<List<BarBean>> dataList = new ArrayList<>();
for(int i = 0; i<5; i++){
    //此集合为柱状图上一条数据,集合中包含几个实体就是几个柱子
    List<BarBean> 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

??????

<com.openxu.cview.chart.barchart.BarHorizontalChart
    android:id="@+id/chart1"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:layout_marginTop="20dp"
    android:background="#ffffff"
    android:padding="10dip"/>
 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<String> strXList = new ArrayList<>(www.leyou2.net);
//柱状图数据
List<List<BarBean>> dataList = new ArrayList<>();
for(int i = 0; i<100; i++){
    //此集合为柱状图上一条数据,集合中包含几个实体就是几个柱子
    List<BarBean> 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);

原文地址:https://www.cnblogs.com/qwangxiao/p/9186171.html

时间: 2024-10-08 04:33:47

开源一个Android自定义图表库的相关文章

android 优秀图表库之MPAndroidChart

MPAndroidChart 1.在项目当中很多时候要对数据进行分析就要用到图表,在gitHub上有很多优秀的图表开源库,这里就简单介绍一下MPAndroidChart. 他可以实现图表的拖动,3D,局部查看,数据动态展示等功能 代码下载:下载 2.贴一些效果图出来: linechart 填充式lineChart 单条线的LineChart BarChart2D BarChart3D PieChart   ScatterChart 3.使用方法在giHub上下载这个库:https://githu

ECharts,一个javascript 互动图表库,使用例子。

一,下载echarts-plain.js 二,新建index.html,并与下载的echarts-plain.js放到同一目录. <HTML> <HEAD> <title>系统环境信息</title> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <META NAME="Author" CONTE

(转)如何将一个Android工程作为另一个Android工程的库来使用

http://blog.csdn.net/u014728518/article/details/39377517

android图表库说明

Android图表库的说明: 目前android的图表库众多,选择一个适合自己使用的就显得非常重要,根据功能和需求,可以选择已有的成熟的图表库,也可以自己实现,经过对比各图表库的功能和特点,目前得出: 如果是比较简单的图表曲线,可以自己实现,或者参考graphview图表库来写,代码量比较少,实现简单. 如果是比较复杂的图表曲线,可以采用MPAndroidChart这个库来完成,这个库的功能效果还是蛮好的,而且提供各种动画来展现图表,具体说明见下链接: http://www.tuicool.co

11个很棒的 jQuery 图表库

如果你曾经使用过任何类型的数据,你应该知道阅读一排排数据的痛苦.通过所有这些数据弄清楚他们的意思是非常不容易的.可视化对于解决这个问题起到了重要的作用.可视化降低了数据阅读的难度,帮助决策者获得可操作的见解. “Dataviz”是数据可视化的缩写,其主要目标是: 通过统计图形.图表.信息图像.表格以及选定表格来清晰的.有效的与用户交流信息.—Wikipedia 作为开发人员,我们必须确保我们使用正确的工具来从数据中创建有意义的图表,当我们看图的时候能够获得适当的细节信息. 有很多的 jQuery

android github 知名库

1. React Native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native, 该框架结合了 Web 应用和 Native 应用的优势, 可以使用 JavaScript 来开发 iOS 和 Android 原生应用 2. Universal ImageLoader ImageLoader 是最早开源的 Android 图片缓存库, 强大的缓存机制, 早期被广泛 Android 应用使用, 至今仍然

Android图片剪裁库

最近利用一周左右的业余时间,终于完成了一个Android图片剪裁库,核心功能是根据自己的理解实现的,部分代码参考了Android源码的图片剪裁应用.现在将该代码开源在Github上以供大家学习和使用,地址:https://github.com/Jhuster/ImageCropper,效果如下所示: 我的大致计划是首先介绍一下这个库的用法,然后再写几篇文章介绍一下其中的一些原理和关键技术,希望对Android开发新手有所帮助. [特性] 支持通过手势移动和缩放剪裁窗口 支持固定剪裁窗口大小.固定

iOS运营级B2B服务平台App、自定义图标库、个人中心页面、识别身份证Demo、瀑布流等源码

iOS精选源码 简单的个人中心页面-自定义导航栏并予以渐变动画 一个近乎完整的可识别中国身份证信息的Demo 可自动快速... iOS可自定义图表库 - PNChart 开源一款曾是运营级的B2B服务平台APP<云采> 使用ffmpeg解码最简iOS播放器 注释得非常清楚的瀑布流,和自己的一些想法 iOS日志框架学习分享 在iOS App中录制MP3和AMR:ZWAudioRecordTool 一套应用于swift项目的空白页组件EmptyPage 2.0 扫雷简单实现 iOS优质博客 iOS

JavaScript chart--15款JavaScript制图表库

译文来源:http://www.sitepoint.com/15-best-javascript-charting-libraries/ 我们无法想像一个没有图表的Dashboard会是什么样.图表可以对数据进行直观有效的展示.不仅如此,图表的巧妙应用还可以提升网站的整体视觉效果. 本文将介绍一些非常好用的制作图表的JavaScript库.这些库能够帮助你完成你未来项目中的漂亮的.可定制化的图和表. 文中介绍的库大多是免费的,当然也有一些库会提供功能更加强大的付费版. 1. D3.js —— 数