效果如此
首先,在build.gradle(project)里添加如下两行
然后在build.gradle(module)里添加如下一行,
然后在activity_main.xml 里添加
<com.github.mikephil.charting.charts.BarChart
android:id="@+id/bar_chart"
android:layout_width="1200dp"
android:layout_height="400dp" />
然后在mianactivity里
import android.annotation.SuppressLint
import android.graphics.Color
import android.os.Bundle
import android.view.View.OnTouchListener
import androidx.appcompat.app.AppCompatActivity
import com.github.mikephil.charting.charts.BarChart
import com.github.mikephil.charting.components.AxisBase
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.data.BarData
import com.github.mikephil.charting.data.BarDataSet
import com.github.mikephil.charting.data.BarEntry
import com.github.mikephil.charting.formatter.IAxisValueFormatter
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private var mBarChart: BarChart? = null
private var mBarData: BarData? = null
private var xValues: ArrayList<String>? = null
var mMap = mutableMapOf<String,String>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mBarChart = findViewById<BarChart>(R.id.bar_chart)
addData()
initData()
setLegend()
setXAxis()
setMRAxis()
}
fun addData(){//制作假数据
for (x in 0..20) {
val y = (Math.random() * 30).toFloat()
mMap.put("08-" + (x + 1).toString(),y.toString())
}
}
private fun initData() {//初始化数据
val yValues = java.util.ArrayList<BarEntry>()
xValues = ArrayList()
var count=0
for (en in mMap){
yValues.add(BarEntry(count.toFloat(), en.value.toFloat()))
xValues!!.add(en.key)
count+=1
}
val barDataSet = BarDataSet(yValues, "条形图")
barDataSet.color = Color.parseColor("#99D9BE")//设置条形图的颜色值
barDataSet.highLightColor = Color.rgb(39, 211, 138)//设置被选中的颜色值
barDataSet.setDrawValues(false)//不设置条形图上的数字显示
mBarData = BarData(barDataSet)
}
fun setLegend() {//设置legend相关内容
mBarChart!!.description.isEnabled = false//不设置描述
mBarChart!!.data = mBarData
mBarChart!!.setDrawMarkers(true)
mBarChart!!.setScaleEnabled(false)
mBarChart!!.minOffset = 1f
mBarData!!.barWidth = 0.2f
mBarChart!!.legend.isEnabled = false//设置legend
}
fun setXAxis(){//x轴相关设置
val xAxis: XAxis = mBarChart!!.xAxis
xAxis.position = XAxis.XAxisPosition.BOTTOM
xAxis.setDrawGridLines(false)
xAxis.textSize = 10f
xAxis.axisLineColor = Color.parseColor("#E5E5E5")//设置x轴的颜色
xAxis.labelCount = xValues!!.count()
xAxis.position = XAxis.XAxisPosition.BOTTOM // 位于底部
xAxis.setDrawGridLines(false) // 不绘制X轴网格线
xAxis.textSize = 14f // 文本大小14
xAxis.valueFormatter = object : IAxisValueFormatter {
override fun getFormattedValue(value: Float, axis: AxisBase): String {
return java.lang.String.valueOf(xValues!![value.toInt()])
}
override fun getDecimalDigits(): Int {
return 0
}
}
}
private fun setMRAxis() {//y轴相关设置
val mRAxis = mBarChart!!.axisRight
mRAxis.isEnabled = false
val mLAxis = mBarChart!!.axisLeft
mLAxis.setDrawAxisLine(false)
mLAxis.setDrawGridLines(false)
mBarChart!!.requestLayout()
}
}