프롤로그
안드로이드는 특유의 파편화 문제로 여러 폰을 지원하다 보면 여러 종류의 레이아웃이나 리소스를 만들어야 하는 경우가 있다.
그런데 여기서 또 문제가, 안드로이드는 OS버젼별로 해당 폴더의 인식 순서가 다르다는데 있다.
덕분에 이걸 모르면 개 삽질을 미친듯이 해야 하고 (경험담ㅋㅋㅋ)
결국 해상도별 픽셀 폴더를 만드는 짓(!)을 해서 훗날 유지보수를 어렵게 만들게 된다.
그리고는 "어쩔 수 없다" 라는 말을 할 수 밖에 없는 상황을 발생시킨다. (이게 무슨 멍멍이 같은 상황인가ㅋㅋㅋ)
안드로이드 OS별 폴더 인식 순서는 간단히 아래와 같다.
OS 4.x 의 Layout 인식 순서
자신의 sw_dp > 낮은 sw_dp > 자신의 w_dp > 낮은 w_dp > 자신의 dpi > 존재하는 dpi 폴더 중 높은 dpi > 낮은 dpi > 자신의 해상도 > 낮은 해상도 > layout
OS 3.x 의 Layout 인식 순서
자신의 sw_dp > 낮은 sw_dp > 자신의 w_dp > 낮은 w_dp > 자신의 dpi > 자신의 해상도 > 낮은 해상도 > layout > 높은 dpi
OS 2.x 의 Layout 인식 순서
자신의 dpi > 높은 dpi > 낮은 dpi > 자신의 해상도 > layout
그래서, 몇가지 폰의 Layout 인식 순서를 예로 들면 다음과 같다.
갤럭시S3 (OS : 4.x, 해상도 : 720 X 1280)
layout-sw360dp
layout-sw320dp
layout-w360dp
layout-w320dp
layout-xhdpi
layout-hdpi
layout-mdpi
layout-1280x720
layout-960x540
layout-800x480
layout-480x320
layout
옵티머스 2X (OS : 4.x, 해상도 : 480 X 800)
layout-sw320dp
layout-w320dp
layout-hdpi
layout-xhdpi
layout-mdpi
layout-800x480
layout-480x320
layout
갤럭시탭 (OS : 3.2, 해상도 : 1280 X 800)
layout-sw400dp
layout-sw384dp
layout-sw360dp
layout-sw320dp
layout-w400dp
layout-w384dp
layout-w360dp
layout-w320dp
layout-mdpi
layout-1024x768
layout-960x540
layout-800x480
layout-480x320
layout
layout-hdpi
layout-xhdpi
옵티머스 빅 (OS : 2.3, 해상도 : 480 X 800)
layout-hdpi
layout-xhdpi
layout-mdpi
layout-800x480
layout
옵티머스 원 (OS : 2.2, 해상도 : 320 X 480)
layout-mdpi
layout-480x320
layout-hdpi
layout-xhdpi
layout
'Developer > Android' 카테고리의 다른 글
안드로이드 리소스 폴더 확장 적용 순서 (0) | 2014.05.30 |
---|---|
getActionBar()의 NullPointerException 발생 (0) | 2012.12.04 |
android의 string.xml에 인자값 지정하기 (0) | 2012.11.07 |