LISTORY

안드로이드 해상도, 화면밀도(dpi), 화면크기, dp? 본문

IT/안드로이드

안드로이드 해상도, 화면밀도(dpi), 화면크기, dp?

LiStoryTeller 2017. 6. 13. 12:22


안드로이드는 다양한 화면 크기와 다른 해상도를 가진 기기들에서 실행이 되며,


이를 위해 안드로이드 시스템은 다양한 기기에서 일관된 개발 환경을 제공합니다.


하지만 개발자 역시 다른 화면크기와 해상도에 어플리케이션을 적용시키기 위해 몇가지 작업을 해줘야 할 때가 있습니다.


다른 화면 크기에는 대체 레이아웃을 제공해야 하고, 다른 화면 밀도에는 대체 비트맵을 제공해야 합니다.


이렇게 리소스를 제공하면 시스템이 현재 기기화면의 일반화된 크기나 밀도에 따라 적합한 리소를 사용합니다.


하지만 화면 크기와 밀도의 모든 조합에 대해 모든 리소스를 제공할 필요는 없습니다.



이러한 처리를 위해 전에 알아야 하는 몇가지 개념에 대한 정리를 해볼까 합니다.



1. 해상도



화면에 보이는 물리적 픽셀의 개수입니다.


1인치당 몇 개의 픽셀, 또는 몇개의 점(dot)로 이루어졌냐에 따라 고해상도의 이미지를 표현할 수 있습니다.


해상도는 한 화면에 몇개의 픽셀이 포함되어 있는지 말해주는데,


예를 들어 1920x1080일 경우 가로 1920개, 세로 1080개의 픽셀로 나타난다는 의미입니다.




2. 화면 밀도



물리적 화면 공간 안에 있는 픽셀의 개수이며, 일반적으로 dpi(dots per inch)라고 부릅니다.


dot per inch는 말 그대로 1인치 안에 있는 dot의 개수입니다.


개수가 많을 수록 고밀도이고, 안드로이드는 모든 실제 화면의 밀도를 6가지의 그룹으로 분류합니다.


(ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi)




3. 화면 크기



화면의 물리적 크기이며, 대각선 크기로 측정됩니다.


안드로이드에서는 모든 실제 화면 크기를 4개의 그룹으로 분류합니다.


(소형, 보통, 대형, 초대형)




4. dp



안드로이드 UI 레이아웃을 정의할 때 사용해야 하는 가상 픽셀 단위입니다.


dp란 밀도 독립적 픽셀로, 이는 160dpi 화면의 물리적 픽셀 하나, 즉 mdpi 화면에 해당하는 기준 밀도를 말합니다.


안드로이드 시스템은 사용중인 화면의 실제 밀도에 따라 dp 단위의 모든 확대/축소를 처리합니다.


dp 단위를 픽셀로 변환하는 공식은 다음과 같습니다.


px = dp * (dpi / 160)


다른 밀도의 화면에 UI가 적절히 표시되게 하려면 어플리케이션 UI를 정의할 때 항상 dp 단위를 사용해야 합니다.












Comments