별칭 리소스 생성
어떤 리소스를 하나 이상의 기기 구성에서 사용하고자 하는 경우(그렇지만 이를 기본 리소스를 제공하는 것은 원치 않는 경우) 같은 리소스를 하나 이상의 대체 리소스 디렉토리에 넣지 않아도 됩니다.
대신 기본 리소스 디렉토리에 저장된 리소스에 대해 별칭 역할을 하는 대체 리소스를 만들면 됩니다.(경우에 따라)
참고: 모든 리소스가 다른 리소스에 대한 별칭을 생성할 수 있는 메커니즘을 제공하는 것은 아닙니다. 특히 xml/ 디렉토리의 애니메이션, 메뉴, 원시 및 기타 지정되지 않은 리소스는 이 기능을 제공하지 않습니다.
예를 들어 앱 아이콘 icon.png이 있고 서로 다른 로케일에서 이 아이콘의 고유 버전이 필요한 경우가 있습니다.
그러나 English-Canadian과French-Canadian의 두 로케일은 같은 버전을 사용해야 합니다.English-Canadian과 French-Canadian양쪽 모두에 대한 리소스 디렉토리에 같은 이미지를 복사해야 한다고 생각할 수 있지만 실은 그렇지 않습니다.
대신 두 로케일에서 사용하는 이미지를 icon.png(icon.png 이외에 어떤 이름이든 가능)로 저장하고 이를 기본res/drawable/ 디렉토리에 넣으면 됩니다. 그런 다음 res/drawable-fr-rCA/에서icon.xml 파일을 생성합니다. 이렇게 하면 PNG 파일 버전 하나와 그것을 가리키는 작은 XML 파일 두 개만 저장할 수 있습니다. (XML 파일 예시는 아래와 같습니다.)
드로어블
기존 드로어블에 별칭을 생성하려면 <drawable> 요소를 사용합니다. 예를 들면 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<drawable name="icon">@drawable/icon_ca</drawable>
</resources>
파일 res/values-en-rCA/ 와 같은 대체 리소스 디렉토리에 drawables.xml로 저장하면 R.drawable.icon으로 참조할 수 있는 리소스로 컴파일됩니다. 그러나 이것은 실제로는 R.drawable.icon_ca 리소스(res/drawable/에 저장됨)의 별칭입니다.
레이아웃
기존 레이아웃에 별칭을 생성하려면 <merge> 안에 싸여있는 <include> 요소를 사용합니다. 예를 들면 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<merge>
<include layout="@layout/main_ltr"/>
</merge>
파일을 main.xml로 저장하면 R.layout.main으로 참조할 수 있는 리소스로 컴파일됩니다. 그러나 이것은 실제로 R.layout.main_ltr 리소스의 별칭입니다.
문자열 및 기타 단순 값
기존 문자열에 별칭을 생성하려면 원하는 문자열의 리소스 ID를 새 문자열의 값으로 사용하면 됩니다. 예를 들면 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello</string>
<string name="hi">@string/hello</string>
</resources>
이제 R.string.hi 리소스는 R.string.hello의 별칭입니다. 기타 단순 값도 같은 방식으로 동작합니다. 예를 들면 색상은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="red">#f00</color>
<color name="highlight">@color/red</color>
</resources>
다른 리소스에 대한 별칭 리소스를 생성하면 같은 리소스를 여러 대체 리소스 디렉토리에 넣지 않아도 된다.
'X' 카테고리의 다른 글
앱 개발 방법 - 앱 리소스 (코드 내 리소스 액세스 [코드로 리소스를 참조하는 데 쓰는 구문, 사용사례]) (0) | 2022.01.07 |
---|---|
앱 개발 방법 - 앱 리소스 (액세스) (0) | 2022.01.06 |
앱 개발 방법 - 앱 리소스 (대체 리소스 [한정자 이름 규칙]) (0) | 2022.01.06 |
앱 개발 방법 - 앱 리소스 (대체 리소스 [구성 한정자 이름]) (0) | 2022.01.05 |
앱 개발 방법 - 앱 리소스 (대체 리소스 제공) (0) | 2022.01.05 |