看我两天时间撸一个Android图表框架

看我两天时间撸一个Android图表框架


最近闲来无事,花了两天时间写了这个小框架SmartChart,一个Android图表框架,现在支持线性图(折线,曲线,散点)柱状图,支持多样化配置。下载地址https://github.com/huangyanbin/SmartChart

视频

缩放功能

柱状图

线性图

功能介绍

支持轴方向,双轴,图示,水平线,十字轴,MarkView自定义,空白,标题,网格等,支持丰富的样式,包括字体样式(字体大小,颜色),图形样式(正方形,长方形,圆形),线(大小,颜色,DashPathEffect),增加了图表移动和缩放功能以及动画。
### 如何使用

  • Step 1. Add the JitPack repository to your build file
allprojects {
        repositories {
            ...
            maven { url 'https://www.jitpack.io' }
        }
    }

*Step 2. Add the dependency

dependencies {
            compile 'com.github.huangyanbin:SmartChart:0.7'
    }
1. 使用图表
```xml
<!--柱状图-->
<com.daivd.chart.core.ColumnChartView
   android:id="@+id/columnChart"
   android:layout_width="match_parent"
   android:background="#f4f4f4"
   android:layout_height="320dp"/>
<!--线型图-->   
<com.daivd.chart.core.LineChartView
   android:id="@+id/lineChart"
   android:layout_width="match_parent"
   android:background="#f4f4f4"
   android:layout_height="320dp"
   android:layout_marginBottom="5dp"/>
```
2.曲线图

java
lineChartView.setLineModel(LineChartView.CURVE_MODEL);

3. 设置轴方向
```java
  BaseAxis verticalAxis =  lineChartView.getLeftVerticalAxis();
    BaseAxis horizontalAxis=  lineChartView.getHorizontalAxis();
    //设置竖轴方向
    verticalAxis.setAxisDirection(AxisDirection.LEFT);
    //设置网格
    verticalAxis.setDrawGrid(true);
    //设置横轴方向
    horizontalAxis.setAxisDirection(AxisDirection.BOTTOM);
    horizontalAxis.setDrawGrid(true);
    //设置线条样式
    verticalAxis.getLineStyle().setWidth(this,1);
```
4. 开启缩放
  ```java
 chartView.setZoom(true);
```
5. 图表内容样式和功能
  ```java
   //开启十字架
    lineChartView.getProvider().setOpenCross(true);
    //开启MarkView
    lineChartView.getProvider().setOpenMark(true);
    //设置MarkView
    lineChartView.getProvider().setMarkView(new MsgMarkView(this));
    //设置显示点
    lineChartView.getProvider().setShowPoint(true);
    //设置显示点的样式
    lineChartView.getProvider().getPointStyle().setShape(PointStyle.CIRCLE);

```
6. 图示
  ```java
    //设置图示方向
   lineChartView.getLegend().setLegendDirection(ILegend.BOTTOM);    //设置图示样式
    lineChartView.getLegend().getLegendStyle().setShape(PointStyle.RECT);
    //设置图示比例
     lineChartView.getLegend().setLegendPercent(0.2f);

```

7.标题

 ```java
  //设置显示标题
    lineChartView.setShowChartName(true);
    //设置标题方向
    lineChartView.getChartTitle().setTitleDirection(IChartTitle.BOTTOM);
    //设置标题比例
    lineChartView.getChartTitle().setTitlePercent(0.2f);
    //设置标题样式
    lineChartView.getChartTitle().getTextStyle().setTextColor(res.getColor(R.color.arc21));

```

8.数据设置

 ```java
 //Y轴数据
List<String> chartYDataList = new ArrayList<>();
    chartYDataList.add("华北");
    chartYDataList.add("华中");
    chartYDataList.add("华东");
    chartYDataList.add("华西");
    //X轴数据
    List<ColumnData> ColumnDatas = new ArrayList<>();
    ArrayList<Double> tempList1 = new ArrayList<>();
    tempList1.add(26d);
    tempList1.add(35d);
    tempList1.add(40d);
    tempList1.add(10d);
    ColumnData columnData1 = new ColumnData("温度","℃",AxisDirection.RIGHT,getResources().getColor(R.color.arc3),tempList1);
    ArrayList<Double> humidityList = new ArrayList<>();
    humidityList.add(60d);
    humidityList.add(50d);
    humidityList.add(30d);
    humidityList.add(65d);
    ColumnData columnData2 = new ColumnData("湿度","RH%",getResources().getColor(R.color.arc2),humidityList);
    ColumnDatas.add(columnData1);
    ColumnDatas.add(columnData2);
    ChartData chartData = new ChartData("线型图",chartYDataList,ColumnDatas);
    //设置数据
    lineChartView.setChartData(chartData);

“`

9.动画

 ```java
 //你可以使用默认动画 也可以设置Interpolator
 //startChartAnim(int duration, Interpolator interpolator)
  lineChartView.startChartAnim(1000);

“`

10.下版本0.8

    1.支持点击基本图表对象的回调;
    2.支持饼图;
    3.修复现有bug.

11.结尾

项目包括还有很多配置项,这里不一一列举,包括设置Padding等。
做到几乎所有图表属性都可以配置,但由于这个框架只开发了2-3天,还有很多待完善的地方。再一次感谢您花费时间阅读。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值