본문

SVG, VectorDrawable 개념 및 실습

도입

이번 포스팅에서는 안드로이드에 SVG 파일! 즉, vectorDrawable을 적용하는 방법을 정리할 예정이다. 


기존 문제점

SVG 파일 적용 배경은 안드로이드 개발을 하면서 같은 이미지이지만 사용 용도에 따라 다른 크기를 갖는 경우가 발생했다.

기존 png의 경우 이미지 크기를 조절하면 해상도가 깨지는 문제가 발생한다.

 


SVG 개념

https://en.wikipedia.org/wiki/Scalable_Vector_Graphics

SVG는 Scalable Vector Graphics의 약자이고 위의 설명처럼 크기를 조절해도 이미지가 보존되는 장점을 갖고 있다.

그렇기 때문에 이미지라도 크기에 따라 각각 파일을 관리해야하는 문제점을 해결할 수 있다.

 

 


실습

Step1. Gradle 설정

1
2
3
defaultConfig {
    vectorDrawables.useSupportLibrary = true
}
cs

 

Step2. srcCompat으로 데이터 설정

1
2
3
4
5
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    app:srcCompat="@drawable/ic_android_white_24dp" />
cs

주의 할 점

21 버전 이하 버전에서는 제대로 동작하지 않을 수 있다. 아래 표와 같이 21이하 버전에서는 svg 파일을 imageResource로만 설정 가능

  21 이하 버전 21 이상 버전
setImageResource O O
setBackgroundResource X (ResourceNotFoundException) O

위의 문제를 아래 코드를 설정하므로 해결할 수도 있다.

1
2
3
4
5
6
class CustomApp: Application() {
    override fun onCreate() {
        super.onCreate()
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
    }
}
cs

그러나, 공식 문서를 읽어보면 아래와 같이 문제 발생의 가능성이 있다.

결론적으로 내 생각은 minSDK가 21이상일 때 SVG를 적용하자.

 

 


스크린 샷

 

 

#SVG #VectorDrawable #Android

공유

댓글