Android
[Android] 안드로이드 기기의 크기 정보, DisplayMetrics
haehyun
2022. 1. 4. 17:55
728x90
안드로이드 시스템 기기 크기
크기 | 설명 | 픽셀 | 배율(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
728x90