[안드로이드] 가장 일치하는 디렉토리 찾아가기

반응형




읽기전에 손가락 한번 클릭~ >_<

고마워요 ~ Chu ~ ♥


이어지는 글이 굉장히 늘어나 버렸습니다.-_-;

리소스 관련하여 여러가질 종합하다보니 너무나도 많네요...
아무래도 안드로이드에서 가장 중요한 부분이라 쭐이고 쭐여도 이정도 인듯;;;;


가장 일치하는 디렉토리 찾아가기

이 작업은 디바이스의 현재 설정에 의존해서 실행시에 사용되는 리소스 파일 중에서 찾아내는 작업을 뜻합니다.

예를들어 아래와 같은 설정을 가정할 수 있습니다.
Locale = 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-fr-rCA 는 로케일 설정과 일치하지 않기 때문에 제거됩니다.

스크린 픽셀 설정 ( 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번 : 하나의 디렉토리만 남을 때 까지 반복한다.

* 만약 수식어가 스크린 밀도라면, 안드로이드는 이 시점에서 가장 일치하는 디렉토리를 선택한 다음 과정을 종료한다.




끝~~








리소스에 대한 내용은 게속 이어집니다 ㅎ



관련글


반응형

댓글

Designed by JB FACTORY