본문 바로가기
안드로이드/Android

[Android] px(pixel), dp(dip), sp

by jinwo_o 2024. 10. 1.

픽셀(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