픽셀(pixel, px)
- 화소라고도 하며, 디지털 이미지를 나타내는 데 사용되는 최소 단위이다.
- 해상도와도 관련이 있는데, 동일한 이미지라 하더라도 픽셀의 수가 많은 것이 해상도가 더 높다.
- 오른쪽 그림이 왼쪽 그림보다 1인치당 픽셀 수가 더 많으므로 해상도가 높다고 볼 수 있다.
- ppi(pixel per inch) = dpi(dot per inch) : 1인치당 픽셀 수 (즉, dot 이 곧 pixel 이다)
- 안드로이드에서 애플리케이션에 이미지를 넣을 때, 픽셀 단위로 이미지를 넣으면 화면에 보이는 이미지 크기에 일관성이 없다는 문제점이 있다.
- 사용자 스마트폰의 화면 크기가 다양하기 때문에 같은 이미지라도 화면에 따라 크기가 다르게 보일 수 있다.
- 이러한 문제를 해결하기 위해 안드로이드에서는 픽셀 대신 dp 를 단위로 하여 이미지를 지정한다.
dp(density-independent pixels, dip)
- 밀도 독립적 픽셀
- 픽셀이 촘촘한 경우와 그렇지 않은 경우에 따라 이미지의 크기가 다르게 표시되기 때문에, 픽셀은 밀도에 독립적이지 않다고 볼 수 있다.
- dp 가 밀도에 독립적이라는 것은 해상도에 관계 없이 이미지를 같은 비율로 표현한다는 의미가 된다.
- 같은 면적에 포함되어 있는 물리적인 픽셀의 밀도로부터 독립적인 크기를 가진 픽셀 단위
- UI 레이아웃을 정의할 때 레이아웃 치수나 위치를 지정하기 위해 사용하는 단위
- 160 dpi 를 갖는 화면에서 하나의 픽셀과 대응한다.
- 160 dpi 는 보통 320x480 크기의 해상도를 가지는 3.6인치 스크린을 말하는데, 1인치당 160개의 픽셀을 가지고 있다는 뜻이다.
- 160 dpi 해상도를 갖는 화면에서 1 dp = 1 pixel 이다 / 240 dpi 해상도를 갖는 화면에서는 1 dp = 1.5 pixel 이다
- 해상도에 따른 dp와 pixel 관계를 구하는 공식은 다음과 같다.
- dp = px * (160 dpi / 단말 dpi)
- px = dp * (단말 dpi / 160 dpi)
- 예시: 640 dpi 에서의 1 dp 와 픽셀의 관계를 구하면, px = 1 * (640 / 160) = 1 * 4 = 4
- 예시: 이미지를 px 단위가 아닌 dp 단위로 표현하여 layout_width = "3dp", layout_height="3dp" 로 지정했다고 하자.
- A : 160 dpi (1 dp = 1 pixel) → 이미지 : 가로 3픽셀, 세로 3픽셀
- B : 640 dpi (1 dp = 4 pixel) → 이미지 : 가로 6픽셀, 세로 6픽셀
- 결과 : 둘 다 가로, 세로 3 dp 로 지정했기 때문에 이미지의 비율은 A 와 B 에서 동일하다.
- 정리하면, 안드로이드에서는 화면의 크기에 관계없이 이미지의 비율을 동일하게 만들기 위해 픽셀 대신 dp 단위를 사용한다. dp 는 해상도에 독립적인 단위로, 160 dpi 를 기준 해상도로 정한다. 화면의 해상도에 따라 1 dp 가 차지하는 실제 픽셀의 개수가 달라지지만, dp 단위를 사용하면 해상도가 달라져도 이미지의 비율을 일정하게 유지할 수 있다.
- 안드로이드에서는 dpi 별로 나누어서 기준을 제공하므로, 이미지를 저장할 때는 이 기준대로 동일 이미지를 해상도별로 여러개 저장하는 것이 좋다.
- ldpi(low density) : 120 dpi
- mdpi(medium density) : 160 dpi (기준)
- hdpi(high density) : 240 dpi
- xhdpi(extra high density) : 320 dpi
- xxhdpi(extra extra high density) : 640 dpi
sp (scale-independent pixels)
- 축적 독립적 픽셀
- dp 와 같이 밀도에 독립적인 픽셀이지만, 글꼴에 적용하기 위해 만들어진 단위
- UI 레이아웃을 정의할 때 텍스트의 크기를 지정하기 위해 사용하는 단위
- sp 를 사용한 글꼴은 안드로이드의 OS 의 설정에서 글꼴의 크기를 조정하는 것에 영향을 받는다. 따라서, 텍스트의 접근성이 중요한 앱이라면 글꼴에 sp 를 사용하면 좋다.
[안드로이드] dp(dip)란 무엇인가?
안드로이드 개발을 하다보면 어플리케이션에 이미지를 넣을 때 dp개념이 등장한다. 주로 안드로이드 디자인 측면에서 많이 사용되지만, 개발자가 알아두어도 도움이 될 것 같아서 글을 작성하
lotuslee.tistory.com
[Android] DIP에 대해서 공부하자
Android DIP이란?dp(or dip)는 Density-independernt Pixels의 줄임말로 같은 면적에 포함되어 있는 물리적인 픽셀의 밀도로부터 독립적인 크기를 가진 픽셀 단위이다.그렇다면 픽셀은 무엇일까?화소라고도
superohinsung.tistory.com
[안드로이드] SP와 DP의 차이
DP(Density-Independent Pixels)는 UI 레이아웃을 정의할 때 레이아웃 치수나 위치를 지정하기 위해 사용하는 단위이다.
medium.com
'안드로이드 > Android' 카테고리의 다른 글
[Android] ConstraintLayout (0) | 2024.10.02 |
---|---|
[Android] 메모리 누수 (0) | 2024.09.03 |
[Android] Activity (0) | 2024.08.09 |