MPAndroidChart 라이브러리의 Legend(범례) 관련 코드를 개선하여 Y축 위치에 맞게 범례 아이콘을 표시하는 방법
MPAndroidChart 3.1.0 라이브러리의 Legend
MPAndroidChart 3.1.0 라이브러리에서는 차트의 범례 모양을 통해 해당 데이터가 좌측 Y축 데이터인지, 아니면 우측 Y축 데이터인지를 알 수 없기 때문에 Legend 레이블명 설정 시 해당 내용이 포함되도록 주의해서 사용해야 한다. Trindex 앱 역시 위 스샷에서와 같이 레이블 이름에 ◀(좌측 Y축) 표시나 ▶(우측 Y축) 표시를 추가해 주도록 처리했는데, 스마트폰 세로 모드 범례 표시의 경우 문자 한 자의 공간도 아쉽기 때문에 이 부분을 개선해 보기로 했다.
MPAndroidChart를 라이브러리 자체를 수정하는 작업이라 품이 많이 들 것이라 예상했으나 생각보다 간단한 작업으로 끝났다. 참고로 이 부분은 Trindex 앱 0.39 버전부터 반영될 내용이다.
Legend 클래스에 LegendForm 항목 추가
MPAndroidChart 라이브러리의 components 경로를 보면 Legend 클래스가 있다. 여기서 차트의 범례와 관련된 여러 가지 속성들이 결정되는데, 코드의 초반부에서 LegendForm이라는 열거형 상수를 발견할 수 있다.
이곳 마지막 부분에 TRIANGLE_LEFT와 TRIANGLE_RIGHT를 추가해 준다. 각각 좌측 Y축을 가리키는 모양의 범례, 그리고 우측 Y축을 가리키는 모양의 범례이다.
LegendRenderer 클래스 코드 추가
이번에는 renderer 경로에 있는 LegendRenderer 클래스를 열어준다. 클래스 이름에서 알 수 있듯이 범례를 그려주는 역할을 하는 클래스다.
이곳에서 drawForm()이라는 메소드를 찾아간다. 해당 메소드를 조금 살펴보면 form의 값에 따라 범례를 알맞게 그려주는 코드가 작성되어 있는 것을 쉽게 파악할 수 있다.
switch 문 제일 하단에 다음과 같이 TRIANGLE_LEFT, TRIANGLE_RIGHT에 대한 case를 넣어주고, 알맞은 모양의 드로잉 코드를 추가해 주면 라이브러리에 직접 손을 데는 작업은 끝이다.
사용 예시
MPAndroidChart를 화면에 펼치려면 먼저 차트에 대해 이것저것 설정하는 게 먼저다. 그중 차트에 올릴 데이터 셋을 초기화하는 과정이 있을 텐데, 해당 과정에서 다음과 같이 Y축 위치에 맞게 범례 모양을 설정해 주기만 하면 된다.
위 코드는 좌측 Y축에 대한 것으로 우측 Y축에 적용하는 데이터 셋이라면 TRIANGLE_RIGHT를 사용해 주면 그만이다.
적용 결과는 다음과 같다.
군더더기가 없어 한결 보기 좋다.