My Record/이론 및 공부

[Android] 해상도에 대한 이해 (feat. dpi) - [펌]

썸머워즈 2019. 11. 2. 21:44
반응형

dpi별로 아이콘을 집어넣길래 저게 뭔가해서 찾아보다가
정말 괜찮은 정리글을 발견하여 기록해둔다.


안드로이드 해상도를 이해하기 위해서는 크기의 단위(Dipmension)인 DP의 개념을 먼저 잡고 출발해야 합니다.
그래서 DP에 대한 설명을 먼저 드리고 이어서 DPI, px에 대해서도 알아보겠습니다.

DIP (Device Independent Pixels) or DP
안드로이드에서 사용하는 독립적 단위 수치입니다. 어떠한 해상도에서도 같은 크기를 보여주는 것이 목적이라고 볼 수 있습니다.

DPI(Dots Per Inch)
1인치(2.54 센티미터)에 들어있는 픽셀의 수입니다. 안드로이드에서는 160을 기본으로 합니다.

px(pixel)
스크린의 실제 픽셀 단위를 사용합니다. 실제 크기나 밀도와 상관 없습니다.

그리고 위에서 설명한 용어와 함께 아래 변환식 하나만 잘 외워주시면 안드로이드 해상도 공부의 반이상을 한거라고 볼 수 있습니다.
px = dp x (dpi/160)   

무슨 말이냐 하면..
160 density(dpi)인 해상도에서 1dp = 1px
이라는 말입니다.  이따 설명드리겠지만 160dpi를 mdpi라고 하고 더 자주 사용합니다. 숫자보다는 글자가 외우기 더 편하니 그렇구나 하고 넘어갑시다.


자, 이어서 설명하겠습니다.
그럼 160dpi의 두배인 320dpi에서는 1dp는 몇 px일까요?네 맞습니다  2px 입니다.
그럼 세배인 480dpi에서는 어떻게 될까요?

네, 맞습니다. 1dp  = 3px이 되겠습니다.
참 쉽죠? 😁😃😄

1dp = 1px이 되는 160dpi를 mdpi(m은 medium입니다)라하고, 이것을 기준으로 해서 더 작은 120dpi를 ldpi(low), 큰 값인 240dpi를 hdpi(high)라고 합니다.
그런데 해상도가 좋아지면서
320dpi, 480dpi, 640dpi도 나왔는데요.

각각 
320dpi = xhdpi(extra-high)
480dpi = xxhdpi(extra-extra-high)
640dpi = xxxhdpi(extra-extra-extra-high)

라고 한답니다.

좀 더 시각적으로 볼까요?

그림을 보면 mdpi가 딱 160에만 칠해진게 아니죠? 그렇습니다. 해당 dpi를 기점으로 +, - 된 영역을 포함해서 mdpi로 잡히고 있습니다. 이점 유의해주세요. 나중에 adb command를 통해 직접 dpi값을 받아볼 수 있는데 "내 디바이스는 480이 아니잖아? 어디에 포함되는거야?"라고 댓글쓰시면 안되요!!

또한 구글은 해상도 및 화면크기가 다른 디바이스들을 범용으로 지원하기 위해 밀도(Density)와 함께 화면크기(Screen size)로 분류하여 기준을 제시하고 있습니다. 기준이 없으면 개발자가 힘들겠죠? apk 하나로 끝내야지 해상도별로 apk를 따로 배포할 순 없겠죠? 그래서 이 기준을 따라 리소스들을 잘 제공해줘야 합니다.

- 스크린 사이즈로 분류 -
small (least 426dp x 320dp)
normal (least 470dp x 320dp)
large (least 640dp x 480dp)
xlarge (least 960dp x 720dp)


- 밀도(dpi) 분류 -
ldpi (120dpi)
mdpi (160dpi)
hdpi (240dpi)
xhdpi (320dpi)
xxdpi (480dpi)
xxxhdpi (640dpi) 



이론 설명은 여기까지만해도 충분할 것 같습니다. 이제 실전이죠? 그럼 이제 주요 해상도별 대표 디바이스를 알아보겠습니다.

- 주요 해상도별 대표 디바이스 -
ldpi(120dpi /기타 소형단말기) : 240 x 320
mdpi(160dpi/G1, 옵티머스원) : 320 x 480
mdpi(160dpi/G1, 갤럭시 탭7.0) :600 x 1024
mdpi(160dpi/G1, 모토롤라 Xoom 10,갤럭시탭 7.7 & 10.1) :1280 x 800
hdpi(240dpi / 갤럭시 S/S2) : 480 x 800
hdpi(240dpi / 모토로라 드로이드, XPERIA X10) : 480 x 854
xhdpi(320dpi / 갤럭 시S3/노트II ) : 720 x 1280
xhdpi(320dpi / 삼성 갤럭시 넥서스 ) : 720 x 1194 or 1280 
xhdpi(320dpi / 삼성 갤럭시 노트I : 800 x 1280
xhdpi(320dpi / LG 옵티머스G, 넥서스4) : 768 x 1280
xxhdpi(480dpi / 갤럭시 S4 & 옵티머스G프로) : 1080 x 1920
xxxhdpi(640dpi / LG G3) : 1440 x 2560


자,, 여기에 여러분이 가지고 있는 디바이스가 없나요? 그래도 너무 걱정하지마세요. 아래 커맨드를 통해 직접 확인할 수 있습니다.

* density
- adb shell wm density
* resolution
- adb shell wm size

이것으로 길었던 해상도에 대한 설명을 마치겠습니다.
궁금한점이나 잘못된 내용이 있으면 댓글 주세요.
감사합니다.



출처 : https://tadomstudio.tistory.com/4

반응형