IT이야기/Android

[Android] 안드로이드 다중화면 지원

FelixShin 2017. 8. 7. 06:30
반응형



1. 시작하는 글


Android는 다양한 기기에 실행되며 화면 크기와 밀도가 다양


2. 용어와 개념

화면크기 : 실제 물리적 크기

화면 밀도 : 물리적 화면 공간에 있는 픽셀 개수(dp), 일반적으로 dpi(dots per inch)라 부름

ex) 같은 물리적 공간 안 픽셀 수 : 고밀도 > 중밀도 > 저밀도

Android는 6가지 밀도그룹으로 분류 - 저밀도, 중간밀도, 고밀도, 초고밀도, 초초고밀도, 초초초고밀도


방향: 사용자 시점에서 바라본 화면 방향. 가로모드 혹은 세로 모드

해상도 : 화면에 있는 물리적 픽셀의 총개수


밀도 독립적 픽셀(dp, density-independant pixel)

: UI레이아웃을 정의할 때 레이아웃 치수나 위치를 독립적 방식으로 표현하기 위한 가상 픽셀 단위

px = dp * (dpi / 160)

ex) 240 dpi화면에서 1dp는 1.5 물리적 픽셀과 같음

# 다른 밀도의 화면에 UI가 적절히 표시되려면 애플리케이션 UI를 정의할 때 항상 dp 단위를 사용해야 함


크기 독립적 픽셀 (sp, scalable-independent pixel)

안드로이드에서 글자크기를 지정할 때 많이씀, dp와 비슷한 크기지만, 선택한 글꼴 크기에 따라 글자 크기가 커짐



3. 지원되는 화면 범위

Android 1.6(API레벨 4)부터 다중 화면 크기와 밀도 지원


6가지 일반화된 밀도

- ldpi(저밀도) : ~120dpi

- mdpi(중간 밀도) : ~160dpi

- hdpi(고밀도) : ~240dpi

- xhdpi(초고밀도) : ~320dpi

- xxhdpi(초초고밀도) : ~480dpi

- xxxhdpi(초초초고밀도) : ~640dpi



4. 요약

UI레이아웃 등 화면에서는 dp사용 (px 사용은 지양함)

글자크기는 sp 사용 


예를 들어 mdpi에서 만든 ui가 xdpi 같이 큰 해상도로 늘어났을 때,

px을 사용하여 object의 사이즈를 지정하면 왼쪽처럼 되지만, dp를 사용하면 오른쪽처럼 개발,디자이너 의도에 맞게 sizing이 된다.



참고 : 

https://developer.android.com/guide/practices/screens_support.html