폰 크기의 호환성
안드로이드폰 여러 제조업체에서 다양한 크기로 출시합니다. 그러므로 안드로이드앱에서는 다양한 기기와 호완되는 화면을 만드는것이 중요합니다. 폰크기의 호완성은 시스템에서 도와주는 부분과 개발자가 해결해야하는 부분으로 나눌수 있습니다.
안드로이드 시스템에서는 크기를 xxxhdpi, xxhdpi, xhdpi, hdpi, mdpi, ldpi로 나눌수 있습니다. dpi는 dots per inch의 줄임말로 1인치 안에 있는 도트의 개수를 의미 합니다.
화면 밀도 | 배율 | 크기 |
xxxhdpi |
4.0 | 초초초고밀도 화면이며 ~640dpi |
xxhdpi | 3.0 | 초초고밀도 화면이며 ~480dpi |
xhdpi | 2.0 | 초고밀도 화면이며 ~320dpi |
hdpi | 1.5 | 고밀도 화면이며 ~240dpi |
mdpi | 1.0 | 중밀도 화면이며 ~160dpi |
ldpi | 0.75 | 저밀도 화면이며 ~120dpi |
물리적인 단위로 지정하면 시스템의 도움을 받을수 없으므로 지정해주는 단위를 사용하여야 합니다.
크기 지정에 사용할 수 있는 단위 | |
dp(dip: density-independent pixels) | 스크린의 물리적 밀도에 기반을 둔 단위 |
sp(sip: scale-independent pixels) | dp와 유사하며 글꼴 크기에 적용 |
pt(points) | 스크린 크기의 1/72을 1pt로 함 |
px | 픽셀 |
mm | 밀리미터 |
in | 인치 |
mdpi 폰에서 1dp는 1px입니다. xxhdpi 폰은 개발자가 지정한 크기보다 3배 정도 크게 출력되므로 1dp는 3px이 됩니다.
화면 정보 가져오기
시스템에서 해줄때도 있지만 개발자가 직접 코드에서 조정할수도 있습니다. 30 이전 버전에서는 DisplayMetrics로 크기 정보 활용했지만 30 버전부터는 이 방법을 지원하지 않고(deprecation), WindowMetrics를 이용합니다.
https://developer.android.com/reference/android/view/WindowMetrics