코틀린으로 작성한 안드로이드 차트 만들기에 대하여 알아보기

오늘은 안드로이드에서 차트 그래프를 만드는 라이브러리인 MPAndroidChart를 코틀린으로 작성해보았습니다.

설정

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

dependencies {
    implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
}

jitpack.io 저장소를 활성화해주고, 해당 주소를 implementation로 dependencies에 추가해줍니다.

레이아웃

<com.github.mikephil.charting.charts.BarChart
    android:id="@+id/pie"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
/>

위 xml 코드는 BarChart를 예시로 추가한 모습입니다.

엑티비티

class CountActivity : BaseActivity(){
    private val listData = = ArrayList<BarEntry>()
    listData.add(BarEntry("0f", "100f"))
    listData.add(BarEntry("1f", "200f"))
    }

그래프에 넣을 수치를 BarEntry 타입의 listData 리스트에 add로 넣어줍니다.

BarEntry 클래스에는 첫번째 인자로 간격, 두번째 인자로 값이 들어갑니다.

    private fun initLineChart() {
        val xAxis = chart.xAxis
        xAxis.setDrawLabels(false)
        xAxis.position = XAxis.XAxisPosition.BOTTOM
        xAxis.granularity = 1f

        val rightYAxis = chart.axisRight
        rightYAxis.setDrawLabels(false)
    }

x축과 y축을 설정합니다.

    private fun setChart(listData: ArrayList<BarEntry>) {
        val dataSet = BarDataSet(listData, getString(R.string.app_name))
        dataSet.color = ContextCompat.getColor(this@CountActivity, R.color.colorPrimaryDark)
        dataSet.valueTextColor = ContextCompat.getColor(this@CountActivity, android.R.color.black)

        val lineData = BarData(dataSet)
        chart.setFitBars(true)
        chart.data = lineData
        chart.invalidate()
    }
}

만든 listData를 BarDataSet 메소드에 넣어주어 데이터를 구성합니다.

그리고 해당 차트에 색을 넣을 수도 있습니다.

마지막으로 dataSet을 chart.data에 넣어주고, invalidate() 메소드를 호출하여 새로 고쳐줍니다.

제 개인적인 생각이지만, invalidate() 메소드는 새로 고침이라는 느낌보다는 기존의 세션을 무력화하고 다시 만들어 준다는 느낌이 강한 메소드인 것 같습니다.

이렇게 코딩하고 안드로이드 스튜디오로 빌드하면 정상적으로 들어간 데이터에 대해서는 차트 그래프가 출력되게 됩니다.

Written on July 18, 2018