Screen Density: Android에서 픽셀 밀도 이해하기

저자: IT Sectr 게시일: 2026-02-25 읽는 시간: 6 분

Android에서 Screen Density(Density Buckets)의 핵심을 설명합니다 — 픽셀 밀도에 따른 화면 분류: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. Screen Density는 화면 1인치에 몇 개의 물리적 픽셀이 들어가는지 결정하며, 다양한 기기에서 이미지와 인터페이스가 표시되는 방식에 직접적인 영향을 미칩니다. Google Android Compatibility Definition(2025)에 따르면, Android는 6개의 주요 Density Buckets와 폴더블 기기를 위한 최대 8개의 추가 Buckets를 지원합니다.

핵심 요점

  • Screen Density — 인치당 물리적 픽셀 수(PPI). Android는 화면을 Density Buckets으로 그룹화합니다: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi.
  • 기본 버킷은 mdpi(160 dpi)입니다. 다른 모든 버킷은 이를 기준으로 계산됩니다: hdpi = 1.5×, xhdpi = 2×, xxhdpi = 3×, xxxhdpi = 4×.
  • 다른 밀도의 리소스는 한정자가 있는 폴더 res/drawable-{density}에 저장됩니다.
  • Android Studio(2025)에 따르면, 최신 기기에서 가장 일반적인 밀도는 xxhdpi(420+ dpi, 3×)입니다.
  • Screen Density는 화면 해상도에 의존하지 않습니다 — 동일한 해상도의 두 기기라도 밀도가 다를 수 있습니다.

Screen Density란?

Screen Density는 화면 1인치당 물리적 픽셀 수입니다(ppi — 인치당 픽셀, 또는 dpi — 인치당 도트). Android는 Density Buckets 개념을 사용합니다 — 유사한 밀도를 가진 화면을 그룹화하여 동일한 스케일링 계수를 적용합니다. 해상도(너비와 높이의 픽셀 수)와 달리, 밀도는 화면에서 픽셀의 물리적 크기를 결정합니다. Google Pixel Team(2025)에 따르면, 최신 플래그십의 밀도는 450-550 ppi이며, 이는 xxhdpi-xxxhdpi 버킷에 해당합니다.

Density Buckets의 역사와 진화

Density Buckets 시스템은 Android 1.6 Donut(2009)에서 160 dpi(mdpi)의 첫 번째 기기와 함께 등장했습니다. 화면 해상도가 증가함에 따라 새로운 버킷이 추가되었습니다: hdpi(Android 1.6), xhdpi(Android 2.3), xxhdpi(Android 4.1), xxxhdpi(Android 4.4). 각각의 새 버킷은 이전 버킷보다 1.5배 또는 2배의 밀도 증가를 반영합니다. Android Open Source Project(2025)에 따르면, 현재 활성 Android 기기의 96%가 hdpi에서 xxxhdpi 범위의 밀도를 가지고 있습니다.

Density Buckets: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi

Density Buckets은 Google이 Android 화면을 그룹화하기 위해 정의한 밀도 범위입니다. 기본 버킷은 mdpi(160 dpi)입니다. 스케일 계수는 특정 버킷의 리소스가 mdpi보다 몇 배 더 큰지를 나타냅니다. 예를 들어, xhdpi(2×)는 이미지의 너비와 높이가 mdpi 버전보다 2배 커야 함을 의미합니다. Android Studio Resource Manager(2025)에 따르면, xxhdpi는 활성 기기 중 가장 일반적인 버킷입니다(시장 점유율 38%), 그 다음이 xhdpi(28%)입니다.

버킷DPI 범위스케일기기 예시시장 점유율(2025)
ldpi120 dpi0.75×오래된 저가 기기1% 미만
mdpi120-160 dpiHTC Dream(G1), 7인치 태블릿3%
hdpi160-240 dpi1.5×Samsung Galaxy S2, Nexus 412%
xhdpi240-320 dpiGoogle Nexus 5, Moto G28%
xxhdpi320-480 dpiSamsung Galaxy S8, Pixel 338%
xxxhdpi480-640 dpiSamsung Galaxy S24 Ultra, Pixel 9 Pro18%

픽셀 밀도 vs 화면 해상도: 차이점은?

화면 해상도는 너비와 높이의 총 픽셀 수입니다(예: 1080×2400). 화면 밀도는 인치당 픽셀 수입니다. 동일한 해상도의 두 기기라도 물리적 화면 크기가 다르면 밀도가 다를 수 있습니다. 예를 들어, 1080×2400 해상도의 6인치 폰은 약 440 dpi(xxhdpi)의 밀도를 가지지만, 동일한 해상도의 5인치 폰은 약 530 dpi(xxxhdpi)입니다. 이것이 핵심 차이점입니다: 인터페이스는 해상도가 아닌 밀도에 적응해야 하며, 그렇지 않으면 고밀도 기기에서 요소가 너무 작아집니다.

Android의 밀도 리소스 한정자

Android는 특정 화면 밀도의 리소스를 로드하기 위해 res 폴더 이름에 한정자를 사용합니다: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi. 애플리케이션이 시작되면 Android는 기기 밀도에 가장 잘 맞는 폴더에서 리소스를 선택합니다. 정확히 일치하는 것이 없으면 시스템은 가장 가까운 버킷을 사용하거나 더 낮은 밀도의 리소스를 스케일링합니다. Android Docs(2025)에 따르면, 벡터(VectorDrawable)에는 밀도 한정자가 필요하지 않습니다 — 자동으로 스케일링됩니다.

XML

/res/
    drawable-mdpi/
        icon_app.png  (48x48 px)
    drawable-hdpi/
        icon_app.png  (72x72 px)
    drawable-xhdpi/
        icon_app.png  (96x96 px)
    drawable-xxhdpi/
        icon_app.png  (144x144 px)
    drawable-xxxhdpi/
        icon_app.png  (192x192 px)

이 구조에서 각 폴더는 동일한 아이콘을 포함하지만 물리적 픽셀 크기가 다릅니다. mdpi의 기본 크기 48×48픽셀은 각 버킷의 스케일 계수로 곱해집니다. Android는 기기의 DisplayMetrics.density에 따라 자동으로 올바른 파일을 선택합니다. VectorDrawable(XML 형식)의 경우 drawable/에 단일 파일이면 충분합니다 — 시스템이 품질 손실 없이 스케일링합니다.

각 밀도에 대한 픽셀 계산

크기 계산은 각 밀도의 이미지에 대해 간단한 공식을 기반으로 합니다: mdpi 크기 × 스케일 계수. mdpi의 아이콘이 48×48 px인 경우, hdpi의 경우 72×72 px(48 × 1.5), xhdpi의 경우 96×96 px(48 × 2), xxhdpi의 경우 144×144 px(48 × 3), xxxhdpi의 경우 192×192 px(48 × 4)입니다. Material Design Guidelines(2025)에 따르면, 이 공식은 모든 래스터 리소스(아이콘, 배경, 이미지, 9-patch)에 적용됩니다.

버킷스케일mdpi 크기(px)버킷 크기(px)
mdpi48×4848×48
hdpi1.5×48×4872×72
xhdpi48×4896×96
xxhdpi48×48144×144
xxxhdpi48×48192×192

모든 밀도를 위한 리소스 준비 모범 사례

올바른 준비 Density Buckets를 위한 리소스는 다섯 가지 핵심 규칙을 포함합니다. 첫째, 간단한 아이콘에는 VectorDrawable을 사용하세요 — 5개의 복사본이 필요 없습니다. 둘째, 래스터 이미지의 경우 디자인 도구에서 모든 밀도를 내보내세요(Android Studio Asset Studio가 자동 생성합니다). 셋째, 한정자 없이 drawable/에 이미지를 배치하지 마세요 — 시스템이 품질 손실과 함께 스케일링합니다. 넷째, 기본 기기와 다른 밀도의 기기에서 테스트하세요 — 에뮬레이터에서 밀도를 변경할 수 있습니다. 다섯째, PNG 대신 WebP를 사용하세요 — Google(2025)에 따르면 WebP는 동일한 품질에서 25-35% 더 작은 크기를 제공합니다.

  • VectorDrawable — 아이콘과 간단한 일러스트레이션에 선호되는 형식. 하나의 XML 파일이 5개의 PNG를 대체합니다.
  • Android Studio Asset Studio — SVG 또는 PNG에서 모든 밀도의 리소스를 자동 생성.
  • WebP 무손실 — 사진에 최적의 형식. 품질 손실 없이 PNG보다 30% 작은 크기.
  • 9-patch — 확장 가능한 배경용. 적절한 늘림 영역 구성으로 하나의 파일이 모든 밀도에서 작동.
  • Adaptive Icons — API 26+용 아이콘 형식. 다른 밀도에 대해 전경과 배경을 별도로 설정 가능.

자주 묻는 질문

Android에서 mdpi는 무엇을 의미하나요?

mdpi(medium-density pixel-independent) — Android에서 160 dpi 밀도의 기본 Density Bucket입니다. 다른 모든 버킷은 mdpi를 기준으로 계산됩니다: hdpi — 1.5×, xhdpi — 2× 등. mdpi는 밀도 독립 픽셀(dp)당 하나의 물리적 픽셀에 해당합니다. 디자이너는 레이아웃을 만들 때 mdpi를 기준으로 사용합니다.

Android 기기의 화면 밀도를 확인하는 방법은?

DisplayMetrics를 사용하세요: getResources().getDisplayMetrics().density는 스케일 계수를 반환합니다(mdpi의 경우 1.0, xxhdpi의 경우 3.0). 프로그래밍 방식으로 버킷을 확인하려면 getResources().getConfiguration().densityDpi를 호출하세요. Android Studio에는 연결된 기기의 densityDpi를 보여주는 Device Explorer도 있습니다.

모든 밀도의 리소스를 준비하지 않아도 되나요?

기술적으로는 — 가능하지만 품질 손실이 있습니다. 리소스가 drawable-xxhdpi에만 있는 경우, mdpi 기기에서 3배 축소되어 이미지가 흐려집니다. 리소스가 mdpi에만 있는 경우, xxhdpi에서 확대되어 픽셀화됩니다. 권장사항은 최소한 xhdpi, xxhdpi 및 xxxhdpi용으로 준비하는 것입니다 — 이는 활성 기기의 84%(2025년)를 커버합니다. VectorDrawable의 경우 한정자 없는 단일 파일로 충분합니다.

요약

  • Screen Density — 인치당 물리적 픽셀 수(dpi/ppi). Android는 화면을 Density Buckets으로 그룹화: mdpi(1×), hdpi(1.5×), xhdpi(2×), xxhdpi(3×), xxxhdpi(4×).
  • 기본 버킷 mdpi = 160 dpi. 다른 모든 버킷은 mdpi × 스케일 계수로 계산됩니다.
  • 다른 밀도의 리소스는 한정자가 있는 폴더 res/drawable-{bucket}에 저장됩니다.
  • xxhdpi — 가장 일반적인 버킷(38%), 다음 xhdpi(28%), xxxhdpi(18%).
  • VectorDrawable은 5개의 래스터 파일을 대체하고 품질 손실 없이 스케일링됩니다.
  • 트래픽과 저장 공간을 30% 절약하려면 PNG 대신 WebP를 사용하세요.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기