will come true

[Android] 안드로이드 기기의 크기 정보, DisplayMetrics 본문

Android

[Android] 안드로이드 기기의 크기 정보, DisplayMetrics

haehyun 2022. 1. 4. 17:55

안드로이드 시스템 기기 크기

크기 설명 픽셀 배율(x)
ldpi 저밀도 화면, ~120dpi  240 x 320px 0.75x
mdpi 중밀도 화면, ~160dpi 360 x 480px 1x (=baseline)
hdpi 고밀도 화면, ~240dpi 480 x 800px 1.5x
xhdpi 초고밀도 화면, ~320dpi 720 x 1280px 2.0x
xxhdpi 초초고밀도 화면, ~480dpi 1080 x 1920px 3.0x
xxxhdpi 초초초고밀도 화면, ~640dpi 1440 x 2560px 4.0x

*dpi(dots per inch) : 1인치 안에 있는 도트의 개수

안드로이드는 mdpi 폰을 기준으로 크기를 조정하며, mdpi 폰에서 1dp는 1px이다.
화면을 구성하는 화소 수가 많은 만큼 1dp가 x배로 많은 픽셀을 차지해야만, 육안으로 봤을 때 화면 크기(dpi)에 적합한 이미지가 출력된다. 예를 들어 mdpi에서 1픽셀을 차지하던 1dp 검은 점 하나를 → 2배의 화소 수를 가지는 xhdpi에서도 똑같이 1픽셀을 차지하도록 출력하면 화면에 안맞게 굉장히 작은 점 하나가 출력되어 디스플레이 크기에 맞지 않다. 전체 화소 수가 2배인 만큼 점 하나가 차지하는 화소 수도 2배로 늘려줘야 화면 비율에 맞는 셈.

 

안드로이드 개발 크기 단위

  • dp(dip : density-independent pixels) : 스크린의 물리적 밀도에 기반을 둔 단위
  • sp(sip : scale-independent pixels) : dp와 유사, 글꼴 크기에 적용
  • pt(points) : 스크린 크기의 1/72을 1pt로 함
  • px(pixel) : 픽셀
  • mm : 밀리미터
  • in : 인치

 

DisplayMetrics 클래스

기기의 다양한 크기 정보를 제공한다. 

  • widthPixels : 가로 화소 수
  • heightPixels : 세로 화소 수
  • densityDpi : 화면 밀도
  • density : mdpi를 기준으로 한 배율. 스케일링할 때 곱하는 값
  • scaleDensity : 문자열 스케일링할 때 곱하는 값
  • xdpi : 정확한 가로 밀도
  • ydpi : 정화한 세로 밀도

 

※ 화면 정보를 가져오는 getRealMetrics() 메서드는 현재 버전(API 31)에서는 @Deprecated 되었다.

 


참고자료

  • Do it! 깡쌤의 안드로이드 프로그래밍 with Kotlin

 

Comments