안드로이드는 기기의 화면 크기나 해상도, 가로세로 비율, 입력 장치 종류등 더불어 사용 언어와 지역까지 다양한 환경을 지원할 수 있는데, 여러 환경을 감안하여 최적의 UI를 제공한다면 사용자의 만족도는 더욱 향상될 것이다. 아래의 그림은 샘플 프로그램중에 있는 Apidemo리소스 부분으로 res/anim(Tween 애니메이션 저장, R.anim), res/drawable(Frame 애니메이션 및 그래픽 저장, R.drawable), res/color(색정보, R.color), res/layout(화면 구조 정의, R.layout), res/menu(메뉴 정보, R.menu), res/values(각종 스트링 및 스타일과 기타 값 정의, R.string, R.array, and R.plurals, R.style, R.bool, R.integer, R.dimen) 등의 리소스 타입별로 "-타입종류" 폴더명을 추가하여 필요한 자원들을 지정하는 방식으로 이루어진다.
res/drawable이 기본 폴더이지만, 화면 밀도에 따라 hdpi를 지원하는 기기에서는 drawable-hdpi에 있는 자원을 참조하는 방식이다. (화면밀도 종류 : ldpi, mdpi, hdpi, xhdpi, nodpi)
res/layout-land는 기본은 세로 방향으로 화면 구조를 설계했지만 화면을 가로로 했을때 보여질 화면 구조를 지정한 것이다(port, land, square)
다국어버전 어플을 만들게 되면 다루어질 대부분의 영역은 res/values폴더로 기본은 영어이지만 한국어를 추가하고 싶을때는 res/values-ko폴더를 추가하고 각 스트링을 한국어로 추가하면 된다. 반대로 기본은 한국어이고, 영어 환경에서 보여질 스트링은 res/values-en에 추가하면 된다.
예제에서 large, long등의 타입종류는 화면 크기(small, normal, large, xlarge)와 화면 가로세로비율(long, notlong)을 나타낸것이다.
매우 유익한 내용이었습니다...