1 min read

[Android] View 내부에서 점선(Point Line) 그리는 방법

회사 프로젝트 진행 중 점선을 그려야하는 일이 있었다. Android Studio내 보여지는 Preview와 실제 기기에서 보여지는 View가 다른 현상이 발생했다.
[Android] View 내부에서 점선(Point Line) 그리는 방법
Photo by Guido Coppa / Unsplash

문제 인식

회사 프로젝트 진행 중 점선을 그려야하는 일이 있었다. Android Studio내 보여지는 Preview와 실제 기기에서 보여지는 View가 다른 현상이 발생했다.

문제 해결방안

찾아보니 Android 3.0 부터 하드웨어 가속 옵션으로 2D의 사용여부를 결정할 수 있었고, 이 때문에 다른것 같았다.
디폴트 값으로 None이 되어있다.

  • None
  • Hardware
  • Software

최근에는 hardware 선택해도 되지만 지원하지 않는 API가 있을 수 있기 때문에 속도가 약간 떨어지더라도 software 방식을 선택하는것이 좋은것 같다.

해결방법

layerType을 정해주었다.

<!-- drawable/point_line.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
    <stroke
        android:width="1dp"
        android:color="#a8a8a8"
        android:dashGap="6dp"
        android:dashWidth="6dp" />
</shape>
<!-- view.xml -->
<ImageView
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:layout_marginBottom="14dp"
    android:layout_marginTop="14dp"
    android:layerType="software"
    android:src="@drawable/point_line" />

결과

  • 잘 그려진다 :)