您的位置:首页 > 其它

LeafChart-实现自己的小型图表库(1)

2016-07-17 11:55 459 查看
比较优秀的开源图表库有很多,比如MPAndroidChart,HelloCharts… 但是在实际工作中很少能直接使用这些库就能实现项目需求。当然,直接改源码是可以满足的,不过有时候自己写一个可能一劳永逸,随着产品的更新,需求难免会改动,自己写的东西总会好改一点。

最近项目中就有一个统计表,为了省事,直接用了HelloCharts,刚开始主要是为了把功能实现,到后来功能是实现了,UI就难改成需要的了。然后想着直接改改源码吧,打开源码看了看,需要改的地方有点多。后来索性自己写一个吧,以后UI再改的话,自己写的改的还快点。

我的这个小型图表库叫leafchart,当前实现的功能有折线图、曲线图,后面会慢慢扩展功能、慢慢完善。

GitHub:LeafChart

相关设置:

坐标轴颜色、宽度

坐标轴刻度字体大小、颜色

折线或曲线宽度、颜色

点的大小、颜色

是否有标签

标签背景色、弧度

是否填充

预览图1:



预览图2:



使用

导入library到项目中

代码中使用

<com.beiing.leafchart.LeafLineChart
android:id="@+id/leaf_chart"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#ffffff"/>


初始化X轴数据:

private List<AxisValue> getAxisValuesX(){
List<AxisValue> axisValues = new ArrayList<>();
for (int i = 1; i <= 12; i++) {
AxisValue value = new AxisValue();
value.setLabel(i + "月");
axisValues.add(value);
}
return axisValues;
}


初始化Y轴数据:

private List<AxisValue> getAxisValuesY(){
List<AxisValue> axisValues = new ArrayList<>();
for (int i = 0; i < 11; i++) {
AxisValue value = new AxisValue();
value.setLabel(String.valueOf(i * 10));
axisValues.add(value);
}
return axisValues;
}


初始化点数据和相关设置:

private Line getFoldLine(){
List<PointValue> pointValues = new ArrayList<>();
for (int i = 1; i <= 12; i++) {
PointValue pointValue = new PointValue();
pointValue.setX( (i - 1) / 11f);
float var = (float) (Math.random() * 100);
pointValue.setLabel(String.valueOf(var));
pointValue.setY(var / 100);
pointValues.add(pointValue);
}

Line line = new Line(pointValues);
line.setLineColor(Color.parseColor("#33B5E5")).setPointColor(Color.YELLOW).
setCubic(false).setPointRadius(3).setHasLabels(true)
.setFill(false);
return line;
}


Axis axisX = new Axis(getAxisValuesX());
axisX.setAxisColor(Color.parseColor("#7cb342")).setTextColor(Color.DKGRAY).setHasLines(true);
Axis axisY = new Axis(getAxisValuesY());
axisY.setAxisColor(Color.parseColor("#7cb342")).setTextColor(Color.DKGRAY).setHasLines(true).setShowText(true);
fuckLineChart.setAxisX(axisX);
fuckLineChart.setAxisY(axisY);
fuckLineChart.setLine(getFoldLine());


这里只做一个简单的介绍,后面会详细介绍实现步骤。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: