居然是MPAndroidChart
这是一个比较方便的创建图表的库(因为没用过别的
如何搓一张图
Section titled “如何搓一张图”implementation("com.github.PhilJay:MPAndroidChart:v3.1.0")BarChart是柱状图,LineChart是折线图
每个图都要有一个数据集,BarChart要BarDataSet,LineChart要LineDataSet,数据集还要变成数据……一些属性要在图表中设置,还有一些要在数据集中设置
首先要有一个条目(entry) 的列表,之后再变成DataSet
比如
val entries = ArrayList<BarEntry>()val timeEntries = ArrayList<Entry>()然后就可以往里面add想要的Entry对象了,无论是BarEntry还是Entry,格式都是Entry(Float, Float)
塞完数据就可以像下面这样变成数据集然后变成数据了
val dataSet = BarDataSet(entries, "") // 那个字符串很显然是介绍val data = BarData(dataSet)然后就能让图表的data = data了
[!NOTE]
即使已经给图表设置了数据集,修改数据集的属性也是可以影响图表显示效果的
数据集已经设置好了,其实没什么可以搓的了
只需要调用图的invalidate()方法刷新即可
搓ValueFormatter
Section titled “搓ValueFormatter”这玩意中文应该叫啥,数值整形器吗(
很容易发现这默认的数据显示格式十分丑陋,自带小数点
这对强迫症来说肯定是无法忍受的,所以他们贴心地准备了个ValueFormatter,顾名思义就是把数据格式化的东西
这便是一个把小数点去掉变成整数的ValueFormatter
val valueFormatter = object : ValueFormatter() { // 小数变成整数 override fun getFormattedValue(value: Float): String? { return String.format("%.0f", value) }}只要返回的是字符串便好,但为什么不能直接放字符串进去呢
超多属性供您微操,打造属于自己的图表!
dataSet.valueFormatter = valueFormatter // 数据集的值按什么格式来显示dataSet.setDrawValues(true) // 在柱子顶部显示它的的值dataSet.valueTextSize = 10f // 柱子顶部字体大小barChart.setScaleEnabled(false) // 缩放barChart.barData.barWidth = 0.5f // 宽度barChart.legend.isEnabled = false // 图例barChart.description.isEnabled = false // 介绍
barChart.xAxis.setDrawGridLines(false) // 网格线barChart.xAxis.setDrawAxisLine(false)barChart.axisLeft.isEnabled = false // 左边的Y轴barChart.axisRight.isEnabled = false // 右边的Y轴
barChart.xAxis.valueFormatter = valueFormatter // 图表底部值的显示格式barChart.xAxis.position = XAxis.XAxisPosition.BOTTOM // X轴显示在底部barChart.xAxis.setDrawLabels(true) // 柱子底下的标签barChart.xAxis.granularity = 1f // 柱子间距barChart.axisLeft.axisMinimum = 0f // Y轴的最小值
barChart.setTouchEnabled(false) // 触摸
barChart.animateY(1000) // 一秒钟的Y轴动画还有更多!但是我觉得这么多也差不多够用了