안드로이드/Layout

안드로이드 크기 단위(dp, px, dpi, sp)

block_626 2022. 4. 10. 01:16

안드로이드를 처음 접하게 되면서 DP라는 말을 많이 듣게되었다.

안드로이드는 다야한 스마트폰 화면 크기와 해상도를 지원하고 있기 때문에 필요한 개념이다.

dp가 무엇인지, 안드로이드에서는 왜 dp 개념을 사용하는지 알아보자.

 

1. 픽셀(pixel, px)

화소라고도 하며, 디지털 이미지를 나타내는 데 사용되는 최소 단위이다.

픽셀은 해상도와도 관련이 있는데, 동일한 이미지라 하더라도 픽셀의 수가 많은 것이 해상도가 더 높다.

PX 단위는 화면의 전체 화면 크기와 상관없이 지정한 수치만큼 표시되는 절대적 표시 단위이므로 안드로이드에서는 PX보다는 DP 단위를 사용하는 것이 더 좋다.

 

1. dp(Density-independent Pixel), dpi(dots per inch)

우리말로 밀도, 독립화소라고 번역할 수 있다.

더 쉽게 말하면 디스플레이의 해상도(밀도)와 상관없이 다룰 수 있는 단위라는 뜻이다.

현실 세계에서 우리가 자주 쓰는 단위인 mm,cm 처럼 물리적인 단위와 비슷한데 다만 픽셀단위는 스크린 안에서만 정확하지 현실 세계에서는 기기마다 표현되는 길이가 다르다.

이런 문제점은 스마트폰처럼 터치스크린을 디자인해야 하는 상황에서는 골치가 아픈데 dp단위를 사용하면

기기마다의 차이를 고민하지 않고도 인터페이스를 디자인할 수 있어서 안드로이드에서 주로 사용되는 단위이다.

dpi는 dots per inch라는 뜻으로 1인치(2.54 센티미터)에 들어 있는 픽셀의 수를 말합니다.

안드로이드에서는 mdapi = 160을 기본으로 합니다.

 

안드로이드 주요 dpi와 제조사들의대표 기기는 다음과 같습니다.

 

mdpi  _ 갤럭시 에이스, 옵티머스 원

hdpi   _ 갤럭시 s2,옵티머스 2x,넥서스 원

xhdpi _ 갤럭시 s3, 옵티머스 g, 베가레이서 2

xxhdpi _ 갤럭시 s5 LG G3 넥서스 5x

xxxhdpi _ 갤럭시 s9 LG G6 넥서스 6

ldpi --> 1인치에 120 픽셀
mdpi --> 1인치에 160 픽셀(기준)
hdpi --> 1인치에 240 픽셀
xhdpi --> 1인치에 320 픽셀
xxhdpi --> 1인치에 480픽셀
xxxhdpi --> 1인치에 640픽셀

 

dp와 픽셀의 관계는 다음 식으로 정의할 수 있습니다.

px = dp * ( 단말 DPI / 기본 160)
dp = px * ( 기본 160 / 단말 DPI)
ex) 100픽셀로 선을 그리면 dp단위는 얼마가 되는가?? (xhdpi)
--> dp = px * ( 기본 160 / 단말 DPI)
100픽셀 * ( 160 / 320 ) = 100픽셀 * 1/2 = dp의 값은 50dp이다.

ex) 100픽셀로 선을 그리면 dp단위는 얼마가 되는가?? (xxhdpi)
--> dp = px * ( 기본 160 / 단말 DPI)
100픽셀 * ( 160 / 480 ) = 100픽셀 * 1/3 = 33dp
결론 : 안드로이드에서 dp 단위를 사용하면 핸드폰 해상도에 따라서
픽셀 값이 자동으로 계산을 해주고 화면에 그려주게 된다.

 

'안드로이드 > Layout' 카테고리의 다른 글

FrameLayout  (0) 2022.05.31
Constraint Layout에 대해서  (0) 2022.04.24
RelativeLayout  (0) 2022.04.05
LinearLayout  (0) 2022.04.05