[Android] View 내부에서 점선(Point Line) 그리는 방법
문제 인식
회사 프로젝트 진행 중 점선을 그려야하는 일이 있었다. 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" />
결과
- 잘 그려진다 :)