Resources

똘이주인·2021년 8월 9일
0

소스코드 뿐만 아니라 다양한 리소스를 활용하여 프로그래밍할 수 있도록, 상당히 유연한 어플리케이션 구조 보유

소스코드 + 다양한 리소스

  • 소스코드의 가독성을 높여 유지보수하기가 쉬움.
  • 다양한 언어와 지역에 따라 리소스를 분리하여 관리함으로써 안드로이드 어플리케이션의 현지화(Localization)를 쉽게함.
  • 모바일 기기의 특성에 따라 리소스를 분리하여 관리함으로써 다양한 모바일 기기의 특성에 따라 안드로이드 어플리케이션의 확장 및 적용을 쉽게 함.

1. Resource 개요


소스코드

  • 해당 어플리케이션이 동작해서 처리하고자 하는 기능을 가리킨다.

리소스

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

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

  • 안드로이드 어플리케이션에서 리소스는 /res 디렉토리 안에서 관리된다.
  • 각 리소스 종류에 따라 /res 디렉토리 밑에 다양한 하위 디렉토리를 정의하여 관리된다.

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

2. 기본 Resource 정의 및 사용법

문자열 Resource 정의 및 사용방법

문자열, 문자열 배열, 색상, 크기 같은 단순 리소스 정보들은 모두 /res/values 디렉토리 밑에 XML 파일로 정의 루트 요소 밑으로 각각의 리소스를 정의

  • 문자열 리소스튼 /res/values 디렉토리 밑에 strings.xml을 통해 관리된다.
  • 이 때 반드시 strings.xml일 필요는 없으며, 를 루트 요소로 정의한 어떤 XML 파일이어도 상관없으나 XML 리소스 파일은 반드시 /res/values 디렉토리에 있어야 한다.
  • 문자열 리소스를 정의하기 위한 XML 요소는 이다.

문자열 이름

  • name 속성 지정
  • 어플리케이션 내에서 전역 변수처럼 사용되므로, 식별자로써 역할을 할 수 있게 고유해야 한다.

문자열 값

  • 요소의 내용으로 지정
// 예제
<?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>

문자열 배열 Resource

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

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

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

문자열 배열 이름

  • name 속성 지정
  • 어플리케이션 내에서 전역 변수처럼 사용되므로, 식별자로써 역할을 할 수 있게 고유해야 한다.

문자열 배열의 각 문자열 값

  • 밑에 들로 지정
// 예시
<?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>

색상 Resource

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

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

색상 리소스를 정의하기 위한 XML 요소는  이다.

색상 이름

  • name 속성 지정
  • 어플리케이션 내에서 전역 변수처럼 사용되므로, 식별자로써 역할을 할 수 있게 고유해야 한다.

색상 값

  • 요소의 내용으로 지정

  • 비트 수 와 알파(투명도) 여부에 따라서 다음과 같이 네 가지 형태로 정의된다. (각각의 색상을 결정하는 인자 값은 16진수로 정의된다.)

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

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

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

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

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

크기 resource

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

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

크기 리소스를 정의하기 위한 XML 요소는  이다.

크기 이름

  • name 속성 지정
  • 어플리케이션 내에서 전역 변수처럼 사용되므로, 식별자로써 역할을 할 수 있게 고유해야 한다.

크기 값

  • 요소의 내용으로 지정
  • 다양한 크기 단위들에 따라 크게 여섯 가지 형태로 정의된다.

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

이미지 Resource

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

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

9-patch PNG

  • 이미지를 아홉 조각으로 나눠서 해당 이미지를 확대, 축소할 때 각 조각 별로 비례 여부와 방향이 다르도록 설정된 이미지임.
  • 이는 안드로이드 고유의 이미지 형식으로, draw9patch 라는 툴(안드로이드 SDK 내/tools 디렉토리에 존재)을 사용하여 PNG 파일을 9-patch PNG로 변환할 수 있다.

파일 Resource

  1. XML 파일 Resource

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

    이와 같은 XML 파일들은 /res/xml 디렉토리 밑에서 관리된다.

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

  2. 기타 원본 파일 Resource

    안드로이드 어플리케이션의 리소스 : mp3, txt 등 각종 원본 파일 /res/raw 디렉토리 밑에서 관리된다.

    원본파일을 해당 안드로이드 어플리케이션의 리소스에 등록하려면 /res/raw/ 디렉토리에 추가하기만 하면 된다.

    기타 원본파일 리소스의 용도 : 안드로이드 어플리케이션의 사운드나 배경음악 등을 위한 오디오 파일들을 저장하는 리소스로 사용된다.

0개의 댓글