Nuke Olaf - Log Store

[Android] 안드로이드 - res/values 폴더 안의 xml 파일들 본문

Android

[Android] 안드로이드 - res/values 폴더 안의 xml 파일들

NukeOlaf 2019. 11. 24. 14:47

https://developer.android.com/guide/topics/resources/providing-resources

안드로이드 디벨로퍼 사이트에서는 values/ 폴더에 대해 이렇게 정의한다.

values/

XML files that contain simple values, such as strings, integers, and colors.

Whereas XML resource files in other res/ subdirectories define a single resource based on the XML filename, files in the values/ directory describe multiple resources. For a file in this directory, each child of the <resources> element defines a single resource. For example, a <string> element creates an R.string resource and a <color> element creates an R.color resource.

Because each resource is defined with its own XML element, you can name the file whatever you want and place different resource types in one file. However, for clarity, you might want to place unique resource types in different files. For example, here are some filename conventions for resources you can create in this directory:

See String Resources, Style Resource, and More Resource Types.

문자열, 정수 및 색상과 같은 간단한 값을 포함하는 XML 파일

다른 res / 서브 디렉토리의 XML 리소스 파일은 XML 파일의 이름을 기반으로 단일 리소스를 정의하는 반면, values ​​/ 디렉토리의 파일은 여러 리소스를 설명합니다. 이 디렉토리의 파일에 대해 <resources> 요소의 각 하위는 단일 자원을 정의합니다. 예를 들어 <string> 요소는 R.string 리소스를 만들고 <color> 요소는 R.color 리소스를 만듭니다.

각 리소스는 고유 한 XML 요소로 정의되므로 원하는대로 파일 이름을 지정하고 하나의 파일에 다른 리소스 유형을 배치 할 수 있습니다. 그러나 명확하게하기 위해 고유 한 자원 유형을 다른 파일에 배치 할 수 있습니다. 예를 들어 다음은 이 디렉토리에서 만들 수있는 리소스에 대한 파일 이름 규칙입니다.

 

나만의 단어로 정의하기!

그러니까, values 디렉토리는 안드로이드 스튜디오에 있는 res(리소스) 들을 관리할 수 있는 res디렉토리의 하위 디렉토리이다. res디렉토리의 다른 하위 디렉토리는 XML파일의 이름을 기반으로 단일 리소스를 정의하지만, values/ 디렉토리의 파일은 여러 리소스를 가질 수 있다. (arrays, colors, dimens, strings, styles)

 

 

 

// 여기서부터는 참고 블로그 내용 필사 및 정리

안드로이드 스튜디오에 보면 res폴더가 있다.

res는 resource의 줄임말이며, res폴더안에 소스코드 뿐만 아니라 다양한 리소스를 저장해 놓고, 이것들을 활용하여 프로그래밍할 수 있도록 한다. 이를 통해 유연한 어플리케이션 구조를 보유할 수 있다.

- 소스코드 + 다양한 리소스

* res폴더 안에 리소스를 저장해 놓고 활용하면, 소스코드의 가독성을 높일 수 있어 유지보수하기가 쉽다

* 다양한 언어와 지역에 따라 리소스를 분리하여 관리함으로써 안드로이드 어플리케이션의 현지화를 쉽게할 수 있다.

* 모바일 기기의 특성에 따라 리소스를 분리하여 관리할 수 있어, 다양한 모바일 기기의 특성에 따라 안드로이드 어플리케이션의 확장 및 적용을 쉽게 할 수 있다.

< res(리소스) 관리 개요 >

소스코드 : 해당 어플리케이션이 동작해서 처리하고자 하는 기능을 가리킨다

리소스 : 해당 어플리케이션이 동작할 때 사용하는 텍스트 문자열, 아이콘, 오디오, 동영상 등을 가리킨다. 안드로이드 어플리케이션은 리소스를 적극적으로 활용한다. 즉, 레이아웃이나 메뉴, 그래픽 도형까지도 소스코드가 아닌 리소스를 통해 구현할 수 있게 되어있다.

< 안드로이드 어플리케이션의 리소스 관리 >

* 안드로이드 어플리케이션에서 리소스는 /res 디렉토리 안에서 관리된다.

* 안드로이드 어플리케이션이 관리하는 리소스들의 종류

안드로이드 어플리케이션이 관리하는 리소스들의 종류

 

리소스 종류 

설명 

디렉토리 

파일 이름 

문자열 

텍스트 문자열 

/res/values 

- strings.xml <권장>

- <string> 요소를 정의한 어떤 XML 파일도가능 

문자열 배열 

텍스트

문자열들의 리스트 

/res/values 

- array.xml<권장>

- <string-array> 요소를 정의한 어떤 XML 파일도 가능 

색상 

16진수로 색상 값 정의 

/res/values 

- colors.xml<권장>

- <color> 요소를 정의한 어떤 XML 파일도 가능 

크기 

다양한 측정 단위의 크기 

/res/values 

- dimens.xml<권장>

- <dimen> 요소를 정의한 어떤 XML 파일도 가능 

비트맵 그래픽 

각종 이미지 및도형 

/res/drawable 

- png, jpg, gif 등 각종 이미지 파일, 도형을 정의한 XML 파일 

트윈 애니메이션

트윈 애니메이션의 변환 방법을 정의 

/res/anim 

- <set> 루트 요소 밑에 <alpha>, <scale>, <translate>, <rotate> 등을 정의한 어떤 XML 파일도 가능 

메뉴 

메뉴 구성 

/res/menu 

- <menu> 루트 요소 밑에 <item>, <group> 등을 정의한 어떤 XML 파일도 가능 

레이아웃 파일 

각 화면 별 레이아웃 정의 

/res/layout 

- main.xml 이 일반적으로 첫 화면에 대한 레이아웃을 정의한 XML 파일이며, 각 화면 별로 레이아웃을 개별 XML로 정의 가능 

스타일 및 테마 

각 뷰나 위젯에 대한 속성 정보들을 정의 

/res/values 

- styles.xml, themes.xml<권장>, <style> 요소를 정의한 어떤 XML 파일도 가능 

XML 파일 

개발자가 정의한 커스텀 XML 

/res/xml 

- 개발자 임의로 정의하는 모든 XML 파일 

원본 파일 

각종 원본 파일

/res/raw 

- mp3, mpg, txt, exe 등 각종 원본 파일 

 

< 기본 res(리소스) 정의 및 사용법 >

(1) 문자열 res 정의 및 사용 방법

문자열, 문자열 배열, 색상, 크기 같은 단순 리소스 정보들은 모두 /res/values 디렉토리 밑에 XML 파일로 정리한다.

<resource> 루트 요소 밑으로 각각의 리소스를 정의한다.

- 문자열 리소스는 /res/values 디렉토리 밑에 strings.xml을 통해 관리된다.

- 이때, 반드시 strings.xml일 필요는 없으며, <resources>를 루트요소로 정의한 어떤 XML파일이어도 상관없으나, XML리소스 파일은 반드시 /res/values 디렉토리에 있어야 한다.

- 문자열 리소스를 정의하기 위한 XML 요소는 <string>이다.

* 문자열 이름 : <name> 속성 지정 (안드로이드 어플리케이션 내에서 전역 변수(멤버 변수, field라고도 한다.)처럼 사용된다. 즉, 특별히 접근제어자를 붙여서 외부에서 접근할 수 없게 만들지 않는 한, 외부에서 마음대로 접근하여 사용할 수 있다는 뜻이다. 그래서 다른 이름들과 겹치지 않도록, 식별자(identifier) 즉, 어떤 대상을 유일하게 식별 구별 할 수 있는 고유한 이름을 붙여주어야 한다.

* 문자열 값 : <string> 요소의 내용으로 지정

예시)

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Hello Android</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello Android!</string>
</resources>

(2) 문자열 배열 res(리소스)

- 문자열 배열 리소스는 /res/values/ 디렉토리 밑에 arrays.xml을 통해 관리된다.

- 이때도, 문자열 리소스와 마찬가지로 반드시 arrays.xml일 필요는 없으며, <resource>를 루트 요소로 정의한 어떤 XML 파일이어도 상관없으나, XML 리소스 파일은 반드시 /res/values 디렉토리에 있어야한다.

- 문자열 배열 리소스를 정의하기 위한 XML 요소는 <string-array>이다.

* 문자열 배열 이름 : <name> 속성 지정 , 식별자로써 역할을 할 수 있도록 고유해야 한다.

* 문자열 배열의 각 문자열 값 : <string-array> 밑에 <item>들로 지정

예시)

arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="company">
        <item>Samsung</item>
        <item>Hyundai</item>
        <item>LG</item>
        <item>SK</item>
        <item>KIA</item>
    </string-array>
</resources>


(3) 색상 res(리소스)

- 색상 리소스는 /res/values/ 디렉토리 밑에 colors.xml을 통해 관리된다.

- 이때도, 문자열 리소스와 마찬가지로 반드시 colors.xml일 필요는 없으며, <resource>를 루트 요소로 정의한 어떤 XML 파일이어도 상관없으나, XML 리소스 파일은 반드시 /res/values 디렉토리에 있어야한다.

- 문자열 배열 리소스를 정의하기 위한 XML 요소는 <color>이다.

* 색상 이름 : <name> 속성 지정 , 식별자로써 역할을 할 수 있도록 고유해야 한다.

* 색상 값 : <color> 요소의 내용으로 지정, 비트 수와 알파(투명도) 여부에 따라서 다음과 같이 네 가지 형태로 정의

#RGB               ex> #F00, 12비트 빨강

#ARGB             ex> #8F00, 12비트 투명도 50% 빨강

#RRGGBB         ex> #FF0000, 24비트 빨강

#AARRGGBB     ex> #80FF0000, 24비트 투명도 50% 빨강

 

예시)

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="my_red_color">#FF2222</color>
</resources>


(4) 크기 res(리소스)

- 색상 리소스는 /res/values/ 디렉토리 밑에 dimens.xml을 통해 관리된다.

- 이때도, 반드시 dimens.xml일 필요는 없으며, <resource>를 루트 요소로 정의한 어떤 XML 파일이어도 상관없으나, XML 리소스 파일은 반드시 /res/values 디렉토리에 있어야한다.

- 크기 리소스를 정의하기 위한 XML 요소는 <dimen>이다

* 크기 이름 : <name> 속성 지정 , 식별자로써 역할을 할 수 있도록 고유해야 한다.

* 크기 값 : <dimen> 요소의 내용으로 지정, 다양한 크기 단위들에 따라 크게 여섯가지로 정의된다.

 단위

설명 

단위 접미사 

예시 

픽셀 

실제 화면 픽셀 

px 

24px 

인치 

물리적 길이 

in 

4in 

밀리미터 

물리적 길이 

mm 

2mm 

포인트 

글자 크기 단위 

pt 

12pt 

밀도 독립적 픽셀 

160dpi 화면을 기준으로 한 픽셀 

db 

1db 

축척 독립적 픽셀 

가변 글꼴 표시에 최적인 픽셀 

sp 

12sp 


예시)

dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="my_wide_size">20px</dimen>
</resources>


(5) 이미지 res(리소스)

- 이미지 파일들은 /res/drawable 디렉토리 밑에서 관리된다.

- 이미지 파일을 안드로이드 어플리케이션의 리소스에 등록하려면, 단순히 /res/drawable 디렉토리에 추가하기만 하면된다.

(6) XML 파일 res(리소스)

개발자가 정의한 임의의 커스텀 XML 파일을 안드로이드 어플리케이션의 리소스로 포함시킬 수 있다.

/res/xml 디렉토리 밑에서 관리

(7) 기타 원본파일 res(리소스)

안드로이드 어플리케이션의 리소스 : mp3, txt 등 각종 원본 파일

/res/raw 디렉토리 밑에서 관리된다

(8) 멀티 리소스

동일한 리소스를 다양한 언어, 지역, 모바일 기기의 특성에 따라 분리하여 관리

 

 

참고 사이트 >>

https://pumdaf.tistory.com/entry/Android-resvalues-%ED%8F%B4%EB%8D%94%EC%9D%98-xml%ED%8C%8C%EC%9D%BC-%EB%82%B4%EC%9A%A9

https://hyeonstorage.tistory.com/152

 

Comments