Android/Kotlin

[Android, Kotlin] drawable, drawable-v24

겨울시인 2022. 4. 19. 15:16

1. Android Studio 에서 Resource Image 폴더

Android Studio 에서 액티비티에 쓰일 Image를 Resource 폴더에 추가하려 하면 2종류의 경로가 보인다

  1. drawable
  2. drawable-v24

 
 

2. drawable, drawable-v24 이 2가지는 무슨 차이가 있는걸까 (1)

drawable

  • API 23 이하의 버전에서의 리소스를 관리하기 위한 폴더라고 나와있고

drawable-v24

  • 반대로 이 폴더는 API 24 이상의 버전에서의 리소스를 관리하기 위한 폴더라 나와있다.

즉, 이렇게 2종류로 나뉘어져 있는 이유가 호환성을 때문에
Android 기기에서 사용되는 API를 기준으로 사용되는 리소스 폴더를 다르게 사용하도록 하는게 목적인듯 싶다.

 
 

3. drawable, drawable-v24 이 2가지는 무슨 차이가 있는걸까 (2)

기기 호환성을 위해서 2가지 리소스 버전으로 구분되어 있다면 같은 이미지를 각각 버전별로 2개를 저장해야 할까?
답은 그렇지 않다!

  • 리소스를 가져올때 만약 API 24 이상의 버전이라면 먼저 drawable-v24 에서 찾고, 없으면 drawable 에서 자동으로 찾게 된다.
  • 만약 API 23 이하 버전이라면 drawable 에서만 리소스를 찾으므로 모르고 v24 에만 리소스를 넣어두면 오류가 발생한다.

뭐야.. 그럼 애초에 그냥 drawable 하나만 쓰면 되는거 아냐? ..라는 생각이 든다.

 
 

4. 결론

일단 지금 처럼 Practice 및 Study 하는 수준에서의 프로젝트에서 drawable-v24 에 리소스를 저장할 필요없이 drawable 하나만 쓰면 충분할 듯 싶다.

더 공부가 필요하겠지만 더 찾아본 내용으로는

  • Android Studio 예전 버전에서는 Image Resouce의 경우 mdpi, hdpi, xhdpi, xxhdpi 등등 세분화 되어 있던 것들이 단 2종류로 단순화 했다는 것에 관리 편의성은 높아졌다는게 장점
  • Classic drawable resources such as images are stored in the drawable folder. In contrast, vector drawables are stored in drawable-v24 .
    (기존의 Image 리소스들은 drawable 에 저장하라고 하는 반면, vector drawable 리소스를 drawable-v24 에 저장하라는 말인데..
    이는 추후에 필요하면 더 알아볼 문제인듯 싶다.)