앞선 포스팅에도 언급하였듯이 DPI가 다른 스마트폰은 화면의 밀도가 서로 다르다.
DPI (Dots per Inch)
1인치 면적 안에 표시할 수 있는 점의 수. 다른 말로 픽셀 밀도(Pixel Density)라고도 하며 물리적 공간 안에 얼마나 많은 픽셀이 들어가는지를 나타낸다. 예를 들어 300 dpi의 해상도란 1인치당 300개의 점을 표시할 수 있다는 뜻이며, 숫자가 높을수록 화면이 선명하게 보인다.
예를 들어, 위와 같이 밀도가 다른 여러 안드로이드 기기가 있다. 화면에 보이는 아이콘의 크기는 같다. 하지만 아래 이미지를 보자. 밀도가 다르면 아이콘을 구성하는 픽셀의 수, 즉 실제 물리적인 크기에는 차이가 있음을 확인할 수 있다.
따라서 안드로이드에서는 점을 나타내는 1px라는 단위 대신 1dp로 화면을 표현한다. 이 dp단위를 통해 픽셀 크기가 다르더라도 실제 눈에 보이는 글자/이미지 사이즈는 거의 같도록 디자인한다. 1dp는 기기에 따라 점 1개로도 표현되고, 점 2개 이상으로 표현될 수도 있다.
DP(DIP) Density Indepent Pixel
안드로이드 사이즈 단위. DPI가 다른 디바이스에서 px로 표기하면 밀도가 클수록 작게 보이므로 동일한 비율로 표현하기 위해 dp를 사용한다.
안드로이드의 기본 해상도는 mdpi=160dpi이며, 스크린의 dp가 160인 경우에는 1dp=1px이다. 즉, dpi가 160인 경우, 밀도 독립 단위인 dp와 px이 같은 크기를 갖는다.
안드로이드 해상도
- ldpi : 120dpi
- mdpi : 160 dpi (기본)
- hdpi : 240 dpi
- xhdpi : 320 dpi
- xxhdpi : 480 dpi
- xxxhdpi : 640 dpi
계산 공식은 아래와 같다.
dpi에 따른 px, dp 변환식
px = dp * (dpi/160)
dp = px * (160/dpi)
density = dpi/160
예를 들어, mdpi 지원 단말의 dpi는 160 이므로 1 dp * 160/160 = 1 pixel이다. 240dpi의 경우, 1dp는 1.5 pixel이다. xxhdpi 지원 단말의 3dp는 3dp * 480/160 = 9 pixel 이므로 xxhdpi 단말의 3dp는 9 pixel이 된다.
안드로이드에서 폰트는 SP의 단위를 사용한다.
SP (Scale-independent Pixels)
텍스트 크기를 정의할 때 사용하는 측정 단위 사용자가 선호하는 텍스트 크기에 맞게 조정된다.
안드로이드 시스템에서 폰트에 대한 제어가 가능할 때 sp의 경우 시스템 설정에 맞게 유동적으로 크기가 변한다. 예를 들어, 기기 내 시스템 설정에서 '글자 크기'를 '최대 크기'로 설정하면 sp로 설정한 텍스트는 이 설정에 영향을 받는다. 하지만 이 시스템에 영향을 받지 않고 디자인적인 이유로 폰트를 일관성 있게 표현하고 싶은 경우라면 sp가 아닌 dp를 사용할 수도 있다.
*참고:
네이버 백과사전
https://developer.android.com/guide/practices/screens_support?hl=ko
https://medium.com/@pnowelldesign/pixel-density-demystified-a4db63ba2922
'UX & UI' 카테고리의 다른 글
앱 스토어 등록용 이미지 가이드 (0) | 2020.01.04 |
---|---|
디자이너가 알아야 할 단위들 : #1 iOS 디자인 (0) | 2019.01.07 |
UI 디자이너는 무슨 일을 하나요? (1) | 2016.10.14 |