Android DIP이란?
dp(or dip)는 Density-independernt Pixels의 줄임말로 같은 면적에 포함되어 있는 물리적인 픽셀의 밀도로부터 독립적인 크기를 가진 픽셀 단위이다.
그렇다면 픽셀은 무엇일까?
화소라고도 하며, 디지털 이미지를 나타내는 데 사용되는 최소 단위이다.
픽셀은 해상도와도 관련이 있는데, 동일한 이미지라 하더라도 픽셀의 수가 많은 것이 해상도가 더 높다.
즉, 아래와 같은 그림이 있을 때 왼쪽보다는 오른쪽이 해상도가 더 높다고 할 수 있다.
위와 같은 단위가 필요한 이유는 비슷한 크기의 스마트폰이더라도 해상도가 다르면 물리적인 픽셀 수도 다르기 때문이다. 자세히 설명하자면, 픽셀 단위로 button/폰트를 구성하면 화면의 픽셀 수가 많은 경우가 그렇지 않은 경우보다 보여지는 크기가 상대적으로 작아진다.
dp는 밀도에 독립적인 픽셀이다. 즉, 해상도에 관계 없이 이미지를 같은 비율로 표현한다는 의미가 된다.
dp는 160dpi를 갖는 화면에서 하나의 픽셀과 대응한다.
160dpi는 보통 320x480 크기의 해상도를 가지는 3.6인치 스크린을 말하는데, 1인치당 160개의 픽셀을 가지고 있다는 뜻이다.
이 160dpi 해상도에서 1dp는 1pixel이다.
그리고 160dpi 해상도를 기준으로, 화면의 해상도에 따라 1dp이 나타내는 픽셀의 수는 달라진다.
160dpi 해상도를 갖는 화면에서 1dp = 1pixel 이다.
240dpi 해상도를 갖는 화면에서는 1dp = 1.5pixel 이다. -> 160dpi : 240dpi = 1pixel : 1.5pixel
320dpi 해상도를 갖는 화면에서는 1dp = 2pixel 이다. -> 160dpi : 320dpi = 1pixel : 2pixel
480dpi 해상도를 갖는 화면에서 1dp = 3pixel이다. -> 160dpi : 480dpi = 1pixel : 3pixel
해상도에 따른 dp와 pixel 관계를 구하는 공식은 다음과 같다.
dp = px * (160dpi / 단말dpi)
px = dp * (단말dpi / 160dpi)
sp란? (축적 독립적 픽셀)
sp는 sacle-indpendent pixels의 줄임말로 dp와 같이 밀도에 독립적인 픽셀이지만 글꼴에 적용하기 위해 만들어진 단위이다. sp를 사용한 글꼴은 안드로이드의 OS의 설정에서 글꼴의 크기를 조정하는 것에 영향을 받는다. 따라서, 텍스트의 접근성이 중요한 앱이라면 글꼴에 sp를 사용하면 좋다.
모바일에서 화면 글꼴을 크게 확장하는 경우, 전체적인 레이아웃이 다 흐트러지는 경우가 발생하기도 한다. 이후에 이를 보안하는 방법에 대해서도 포스팅하겠다.
그 외 in, mm란?
물리적 단위이다. 출력화면을 측정하면 설정한 수치와 일치하게 된다. 즉, 해상도가 달라져도 동일한 크기의 레이아웃이 구성이 가능하다. 하지만 이는 정밀도가 떨어지므로 꼭 필요한 경우에만 사용해야한다. 왜냐하면 화면은 픽셀단위로 출력을 제어하는 경우가 많기 때문이다.
참고
https://sy-programmingstudy.tistory.com/20
https://lotuslee.tistory.com/120
'Android > Study' 카테고리의 다른 글
[Android] RecyclerView LayoutManager에 대해서 공부하자 (0) | 2024.06.10 |
---|---|
[Android] RecyclerView에서 onCreateViewHolder와 onBindViewHolder의 차이 (0) | 2024.06.09 |
[Android] A RecyclerView with multiple item types in Kotlin에 대해서 공부하자 (0) | 2024.06.09 |
[Android] SharedPreferences & 자동 로그인 구현 (0) | 2024.06.01 |
[Android] runOnUiThread()에 대해서 공부해보자 (0) | 2024.06.01 |