티스토리 뷰

Android

dp, dip, sp, px

parkho79 2020. 1. 9. 09:09
300x250
300x250



이번 포스팅에서는 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

'Android' 카테고리의 다른 글

Shape Drawable  (0) 2020.01.17
Multidex 적용하기  (0) 2020.01.14
Google Drive REST API v3 for Android (2)  (0) 2019.12.05
Android studio 로 SHA1 key 쉽게 알아내기  (0) 2019.12.02
Google Drive REST API v3 for Android (1)  (0) 2019.11.27
댓글