안드로이드는 다양항 스마트폰의 해상도를 지원하므로 개발할 때 멀티해상도를 신경써야 한다.
스크린의 실제 단위 PX
P는 화면을 구성하는 최소 단위이다. PX는 화면의 전체 화면 크기와 상관없이 지정한 수치만큼 표시되는 절대적 표시 단위이므로 안드로이드에서는 PX보다는 DP단위를 써야한다.
DPI
Dot Per Inch의 줄인말로, 1인치에 들어가는 픽셀을 나타내는 단위이다. 안드로이드의 기본 단위는 mdpi : 160dpi 이다. 잠깐 살펴보자
- ldpi : 120dpi
- mdpi : 160dpi(기본) 픽셀과 dp의 대응이 1:1이다. 즉 1dp는 1px가 된다.
- hdpi : 240dpi
- xhdpi : 320dpi
- xxhdpi : 480dpi
- xxxhdpi : 640dpi
다양한 디바이스 크기에 대응하기 위해 필요한 DP
DP는 픽셀 독립 단위이다.
화면의 크기가 달라도 동일한 비율로 보여주기 때문에, 안드로이드에서 정의한 단위이며 큰 화면, 작은 화면에 상관없이 같은 크기로 나타난다.
이 예시는 같은 px크기의 뷰를 Low Density , Medium Density , High Density 단위로 나타낸것이다. 고밀도로 갈수록 픽셀의 개수가 많아지므로 뷰의 크기가 자연스럽게 작아짐을 알 수 있다.
이 예시는 모두 같은 DP를 가지는 뷰이다. 밀도가 달라져도 똑같은 비율로 화면에 보여짐을 알 수 있다.
이 예시를 통해 왜 안드로이드에서 DP 단위를 써야하는지 알 수 있다.
실제로 디자이너는 디자인 결과물을 해상도별로(mdpi , hdpi , xhdpi ...) 파일을 보내줘야 하고, 개발자도 해상도별로 파일을 관리해야 한다.
DP와 PX 단위의 변환
px = dp * 단말 DPI/기본 160
dp = px * 기본160/ 단말 DPI
따라서 mdpi인 경우 160/160 이므로 1dp 는 1px이 된다. xxhdpi인 경우 5dp를 pixel로 계산하면 5dp * 480/160 이므로 15pixel이 된다.
'프로그래밍 > Android' 카테고리의 다른 글
액티비티 재생성 (0) | 2019.02.16 |
---|---|
안드로이드 액티비티 생명주기 (0) | 2019.02.16 |
안드로이드 Notification (0) | 2018.12.07 |
안드로이드 Firebase Auth / Realtime Databsae (0) | 2018.12.06 |
안드로이드의 구조 - MVC , MVP , MVVM (0) | 2018.12.06 |
안드로이드 방향 전환 (0) | 2018.12.06 |