[안드로이드] 가장 일치하는 디렉토리 찾아가기
- 프로그래밍 정보
- 2010. 10. 7.
반응형
이어지는 글
리소스, 그리고 에셋
리소스 사용하기
리소스를 번갈아 사용하기
가장 일치하는 디렉토리를 찾는법 ◀ 현재 위치
리소스 관련 용어 정리
사용가능한 리소스 타입들
문자열과 스타일 텍스트
드로블-비트맵-컬러-나인패치
애니메이션의 엘리먼트와 속성
리소스, 그리고 에셋
리소스 사용하기
리소스를 번갈아 사용하기
가장 일치하는 디렉토리를 찾는법 ◀ 현재 위치
리소스 관련 용어 정리
사용가능한 리소스 타입들
문자열과 스타일 텍스트
드로블-비트맵-컬러-나인패치
애니메이션의 엘리먼트와 속성
읽기전에 손가락 한번 클릭~ >_<
고마워요 ~ Chu ~ ♥
이어지는 글이 굉장히 늘어나 버렸습니다.-_-;
리소스 관련하여 여러가질 종합하다보니 너무나도 많네요...
아무래도 안드로이드에서 가장 중요한 부분이라 쭐이고 쭐여도 이정도 인듯;;;;
가장 일치하는 디렉토리 찾아가기
이 작업은 디바이스의 현재 설정에 의존해서 실행시에 사용되는 리소스 파일 중에서 찾아내는 작업을 뜻합니다.
예를들어 아래와 같은 설정을 가정할 수 있습니다.
Locale =
Screen orientation =
Screen pixel density =
Touchscreen type =
Primary text input method =
en-GB
Screen orientation =
port
Screen pixel density =
hdpi
Touchscreen type =
notouch
Primary text input method =
12key
이러한 설정에서 가장 일치하는 디렉토리는 아래와 같은 순서를 따라 갑니다.
1. 현재 일치하지 않는 리소스는 제거합니다.
drawable/
drawable-en/
drawable-fr-rCA/drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/
스크린 픽셀 설정 ( drawable-port-ldpi ) 는 파일제거에 해당되지 않는 유일한 수식어 입니다. 왜냐하면 스크린 밀도는 이 시점에서는 일치되는 것으로 간주한다고 하네요..
2, 높은 우선순위를 가진 수식어를 찾습니다. ( 우선순위 상위에서부터 아래로 내려가면서 진행됩니다 ) - 우선순위는 바로 이전글 : 리소스를 번걸아 사용하기 를 참조하세요.
3. 남아있는 리소스 디렉토리 중 찾아진 수식어를 가진 가진 곳을 찾습니다. 만약 없다면 다시 2번으로 이동하여 다음 우선 순위의 수식어를 찾습니다. 만약 있다면 4번으로 이동합니다.
4. 이 수식어를 포함하지 않는 디렉토리를 제거합니다. 예제에선 언어 수식어를 가지지 않은 디렉토리를 제거하겠네요.
drawable/drawable-en/ drawable-en-port/ drawable-en-notouch-12key/drawable-port-ldpi/drawable-port-notouch-12key/
5. 오직 하나의 디렉토리만 남을 때까지 2번-> 3번 -> 4번을 반복합니다.
drawable-en/drawable-en-port/drawable-en-notouch-12key/
어플리케이션의 드로블이 호출될 때 이 디렉토리에서 리소스를 로드하게 됩니다.
디바이스와 일치하는 수식어의 개수보다 수식어의 우선순위가 더 중요합니다.
예제의 4번에서 drawable-en 은 한개의 값만 일치하고, drawable-port-notouch-12key 는 세 개의 값이 일치하는데, 우선 순위가 언어가 더 높으므로 후자 디렉토리를 제거한 것입니다.
리소스 로드 디렉토리를 선택하는 플로차트
좀 풀어보자면,
1번 : 디바이스의 설정과 다른 디렉토리는 제거한다.
2번 : 우선순위에 따라 그 다음번 수식어를 식별한다 – MCC, MNC, 언어 등의 순으로.....
3번 : 수식어에 대한 일치하는 디렉토리가 있을 때?
4번 : 각 수식어를 포함하지 않는 디렉토리 제거한다.
5번 : 하나의 디렉토리만 남을 때 까지 반복한다.
* 만약 수식어가 스크린 밀도라면, 안드로이드는 이 시점에서 가장 일치하는 디렉토리를 선택한 다음 과정을 종료한다.
끝~~
리소스에 대한 내용은 게속 이어집니다 ㅎ
관련글
[안드로이드] 리소스를 번걸아 사용하기
[안드로이드] 리소스 사용하기
[안드로이드] 리소스, 그리고 에셋 ( Asset )
[안드로이드] 레이아웃 리소스 ID 선언
[안드로이드] 레이아웃 뷰의 위치
[안드로이드] 레이아웃 선언하기
[안드로이드] UI 레이아웃과 위젯
[안드로이드] 리소스 사용하기
[안드로이드] 리소스, 그리고 에셋 ( Asset )
[안드로이드] 레이아웃 리소스 ID 선언
[안드로이드] 레이아웃 뷰의 위치
[안드로이드] 레이아웃 선언하기
[안드로이드] UI 레이아웃과 위젯
반응형