背景
安卓开发一个图表显示数据,内容就是对直方图进行分组显示,大概示例如下:
开发环境
win10,as4+,jdk8+
开发
这里直接说重点。乱七八糟的就掠过了,最后会放出所有相关源码以及封装好的类。
如果对单组的直方图,只需要设置
chart.xAxis.granularity = 1f
即可坐标对齐,放大缩小都可以完美适应。
但是,如果对于分组的直方图,那就要做一下的适配了
chart.xAxis.axisMinimum = 0f
chart.xAxis.granularity = 1f
chart.xAxis.axisMaximum =
(chart.barData.getGroupWidth(groupSpace, barSpace) * dataSize)
chart.xAxis.setCenterAxisLabels(true)
chart.groupBars(0f, groupSpace, barSpace)
其中:barSpace 是直方图之间的距离,groupSpace是分组的距离,这有个公式,就是(barwidth+barSpace) * groupSize + groupSpace = 1
这个公式,必定要记住,不然会出现,分组以后的数据,放大后坐标乱七八糟,这种坑,百度一搜一个没有,最后是看别人的demo发现的。
这个坑足足浪费了两个小时!!!!
第二,如果所直方图要做成单组和分组共用,那么就要进行特殊的适配,核心代码如下:
if (singleData) {
chart.xAxis.setCenterAxisLabels(false)
chart.xAxis.resetAxisMaximum()
chart.xAxis.resetAxisMinimum()
chart.xAxis.granularity = 1f
} else {
chart.xAxis.axisMinimum = 0f
chart.xAxis.granularity = 1f
chart.xAxis.axisMaximum =
(chart.barData.getGroupWidth(groupSpace, barSpace) * dataSize)
chart.xAxis.setCenterAxisLabels(true)
chart.groupBars(0f, groupSpace, barSpace)
}
可以看到,如果是单组数据,是需要重置某些变量的。
上述就是全部相关的数据,最后放出完整的demo链接:
链接:https://pan.baidu.com/s/1Snyjo-kr_VoLMnXx4E5RRw
提取码:i8q9
that’s all----------------------------------------------------------------------------