导入依赖库
//数学图表
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
xml使用
<com.github.mikephil.charting.charts.LineChart
android:id="@+id/lineChart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
代码
fun initLineChart(){
binding.lineChart.description.isEnabled = false //关闭描述
binding.lineChart.legend.isEnabled = false //关闭图例
binding.lineChart.getAxisRight().setEnabled(false) //关闭右侧Y轴
binding.lineChart.getAxisLeft().setEnabled(false) //关闭左侧Y轴
// 禁用双指缩放
binding.lineChart.setPinchZoom(false)
//禁用缩放按钮
binding.lineChart.setScaleEnabled(false)
// 禁止双击放大
binding.lineChart.setDoubleTapToZoomEnabled(false)
//每个方向的内边距
binding.lineChart.setExtraOffsets(0f,0f,0f,10f);
val dataList = thisMonthEveryDayFlowList //其实就是一个float列表,存储的是每个节点的值
// 在 MPAndroidChart 一般都是通过 List<Entry> 对象来装数据的
val entries = ArrayList<Entry>()
val colorList = ArrayList<Int>()
// 循环取出数据
for (i in dataList.indices) {
entries.add(Entry(i.toFloat(), dataList[i]))
if (i == dataList.size-1){
colorList.add(ContextCompat.getColor(requireContext(), R.color.color_FF5C00))
}else{
colorList.add(Color.TRANSPARENT)
}
}
//X轴
val xAxis = binding.lineChart.xAxis
xAxis.axisLineColor = resources.getColor(R.color.color_4E4E4E)
xAxis.axisLineWidth = 4f
xAxis.textSize = 14f // 设置字体大小
xAxis.textColor = resources.getColor(R.color.white) // 设置字体颜色
xAxis.position = XAxis.XAxisPosition.BOTTOM // 将 x 轴位于底部
xAxis.setDrawGridLines(false) // 不绘制网格线
xAxis.axisMaximum = dataList.size.toFloat()
xAxis.setGranularity(1f)
xAxis.axisMinimum = 1f
// 一个 LineDataSet 对象就是一条曲线
val lineDataSet = LineDataSet(entries, "第一条数据")
lineDataSet.lineWidth = 2f
lineDataSet.setColor(Color.WHITE);//设置折线的颜色,有三个构造方法
lineDataSet.setDrawFilled(false)//是否绘制折线下方的填充
lineDataSet.valueFormatter = object : ValueFormatter() {
override fun getPointLabel(entry: Entry): String {
// 只对最后一个点显示标签
if (entry.x == (dataList.size - 1).toFloat()) {
return "${entry.y}MB"
}
return ""
}
}
lineDataSet.setValueTextSize(14f) // 设置文本大小为12
lineDataSet.setValueTextColor(ContextCompat.getColor(requireContext(),R.color.color_FF5C00)) // 设置文本颜色
// 设置数据集的画圆形样式
lineDataSet.setDrawCircles(true) //绘制折线节点出的圆点
lineDataSet.setDrawCircleHole(false) //关闭节点圆点中心的空洞
lineDataSet.circleRadius = 6f
// 设置数据集的圆形颜色
lineDataSet.circleColors = colorList
// LineData 才是真正给 LineChart 的数据
val lineData = LineData(lineDataSet)
binding.lineChart.data = lineData
binding.lineChart.invalidate()
}
详细学习: