Android

dp, dip, sp, px

parkho79 2020. 1. 9. 09:09
728x90



이번 포스팅에서는 Android display 단위에 대해 알아보자.



px (pixel)

화면에 표시되는 점 하나의 단위

 

◼ 안드로이드 내부적으로는 모든 단위를 px 로 변환하여 사용한다.

하지만, 다양한 디바이스의 해상도를 고려하지 않고 pixel 을 사용한다면 각 화면에 맞춰 다르게 나올 것이다.

따라서, 개발자들은 pixel 사용을 배제해야 한다.

(가급적 하단에서 설명할 dp 를 사용하자)

 

  각 다른 해상도의 단말에 px 단위를 사용한 경우

 

◼ dip = pixel / (density/160)



Density or dpi (Dots Per Inch)

1 인치당 pixel 의 수

 

◼ Android 에서는 160 dpi(mdpi) 를 기본으로 한다.



dp or dip (density-independent pixels)

상대적인 밀도 독립 픽셀

 

◼ 같은 dip 를 사용하면 디바이스의 해상도가 달라도 동일한 크기로 보여진다.

따라서, 개발 시 px 보다는 dip 를 사용하는 것이 유리하다.

하지만, dip 단위가 모든 디바이스의 해상도를 만족시키지는 않는다.

(너무 다양한 해상도의 단말기가 출시되고 있기 때문)

 

  각 다른 해상도의 단말에 px 단위를 사용한 경우

 

  각 다른 해상도의 단말에 dp 단위를 사용한 경우

 

◼ 1 dip 는 density 수치에 따라 대응하는 pixel 의 수치가 달라진다.

 

◼ pixel = (dip * (density/160)) + 0.5

하단 method 를 이용하면 위의 계산식을 사용하지 않고 pixel 값을 구할 수 있다.

TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DIP 값, getResources().getDisplayMetrics());



sp (scale-independent pixels)

본 치수는 font 의 크기 설정에 사용된다.

 

◼ pixel = (FontScale * (Density / 160)) * sp



pt (point)

화면의 1/72 인치를 1 point 로 하는 길이 단위로 인쇄 관련 단위

 

◼ pixel = pt * density * (1.0f / 72)



in (inch)

화면에서 인치의 길이

 

◼ pixel = in * density



mm (millimeter)

화면에서 밀리미터 단위의 길이

 

◼ pixel = mm * density * (1.0f / 25.4f)



728x90