리소스 유형 더보기

이 페이지에서는 외부화할 수 있는 다음 유형의 리소스를 정의합니다.

부울
불리언 값을 전달하는 XML 리소스입니다.
색상
색상 값(16진수 색상)을 전달하는 XML 리소스입니다.
크기
크기 값(측정 단위 사용)을 전달하는 XML 리소스입니다.
ID
애플리케이션 리소스 및 구성요소의 고유 식별자를 제공하는 XML 리소스입니다.
정수
정수 값을 전달하는 XML 리소스입니다.
정수 배열
정수 배열을 제공하는 XML 리소스입니다.
유형이 있는 배열
TypedArray(드로어블 배열에 사용할 수 있음)를 제공하는 XML 리소스입니다.

부울

XML로 정의된 불리언 값입니다.

참고: 부울은 XML 파일 이름이 아니라 name 속성이 제공하는 값을 사용하여 참조되는 단순한 리소스입니다. 따라서 하나의 XML 파일에서 하나의 <resources> 요소 아래 부울 리소스를 다른 단순 리소스와 결합할 수 있습니다.

파일 위치:
res/values/filename.xml
파일 이름은 임의로 지정됩니다. <bool> 요소의 name이 리소스 ID로 사용됩니다.
리소스 참조:
Java의 경우: R.bool.bool_name
XML의 경우: @[package:]bool/bool_name
문법:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool
        name="bool_name"
        >[true | false]</bool>
</resources>
요소:
<resources>
필수사항. 루트 노드입니다.

속성 없음

<bool>
불리언 값: true 또는 false

속성:

name
문자열. 부울 값의 이름. 이 이름이 리소스 ID로 사용됩니다.
예:
res/values-small/bools.xml에 저장된 XML 파일:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="screen_small">true</bool>
    <bool name="adjust_view_bounds">true</bool>
</resources>

다음 애플리케이션 코드는 다음과 같이 불리언을 가져옵니다.

Kotlin

val screenIsSmall: Boolean = resources.getBoolean(R.bool.screen_small)

Java

Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.screen_small);

다음 레이아웃 XML은 속성에 불리언을 사용합니다.

<ImageView
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:src="@drawable/logo"
    android:adjustViewBounds="@bool/adjust_view_bounds" />

색상

XML로 정의된 색상 값입니다. 색상은 RGB 값 및 알파 채널을 사용하여 지정됩니다. 색상 리소스는 16진수 색상 값을 허용하는 모든 위치에서 사용할 수 있습니다. XML에서 드로어블 리소스가 예상되는 경우에도 색상 리소스를 사용할 수 있습니다(예: android:drawable="@color/green").

RGB 값은 항상 파운드(#) 문자로 시작하고 알파-빨간색-녹색-파란색 정보가 이어지는 다음 형식 중 하나로 지정됩니다.

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB

참고: 색상은 XML 파일 이름이 아니라 name 속성에서 제공되는 값을 사용하여 참조되는 단순한 리소스입니다. 따라서 하나의 XML 파일에서 하나의 <resources> 요소 아래 색상 리소스를 다른 단순 리소스와 결합할 수 있습니다.

파일 위치:
res/values/colors.xml
파일 이름은 임의로 지정됩니다. <color> 요소의 name이 리소스 ID로 사용됩니다.
리소스 참조:
Java의 경우: R.color.color_name
XML의 경우: @[package:]color/color_name
문법:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color
        name="color_name"
        >hex_color</color>
</resources>
요소:
<resources>
필수사항. 루트 노드입니다.

속성 없음

<color>
16진수로 표현된 색상입니다.

속성:

name
문자열. 색상의 이름. 이 이름이 리소스 ID로 사용됩니다.
예:
res/values/colors.xml에 저장된 XML 파일:
<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

다음 애플리케이션 코드는 색상 리소스를 가져옵니다.

Kotlin

val color: Int = resources.getColor(R.color.opaque_red)

Java

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

다음 레이아웃 XML은 속성에 색상을 적용합니다.

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>

크기

XML로 정의된 크기 값입니다. 크기는 숫자로 지정되며 그 뒤에 측정 단위(예: 10px, 2인치, 5sp)가 옵니다. 다음은 Android에서 지원하는 측정 단위입니다.

dp
밀도 독립형 픽셀: 화면의 물리적인 밀도에 기반한 추상적인 단위입니다. 이 단위는 160dpi(인치당 도트 수) 화면에 상대적이며 화면에서 1dp는 대략 1px와 같습니다. 더 높은 밀도의 화면에서 실행한다면 1dp를 그리는 데 사용되는 픽셀의 수는 화면의 dpi에 적절한 배율로 확장됩니다.

마찬가지로 더 낮은 밀도 화면에서 실행한다면 1dp에 사용되는 픽셀 수는 축소됩니다. dp 대 픽셀 비율은 화면 밀도에 따라 달라지지만, 반드시 정비례하는 것은 아닙니다. px 단위 대신 dp 단위를 사용하는 것은 레이아웃에서 뷰 크기를 다양한 화면 밀도에 따라 적절하게 조절하는 해결 방법입니다. 이는 다양한 기기에서 실제 UI 요소의 크기를 일관되게 제공합니다.

sp
배율 독립형 픽셀: dp 단위와 같지만, 사용자의 글꼴 크기 환경설정에 의해 확장되기도 합니다. 글꼴 크기를 지정할 때 화면 밀도와 사용자의 환경설정 모두에 따라 조정되도록 이 단위를 사용하는 것이 좋습니다.
pt
포인트: 화면의 물리적 크기에 따라 72dpi 밀도 화면을 기준으로 1/72인치입니다.
px
픽셀: 화면의 실제 픽셀에 대응됩니다. 실제 표현은 기기마다 다를 수 있으므로 이 단위는 사용하지 않는 것이 좋습니다. 기기마다 인치당 픽셀 수가 다를 수 있으며 화면에서 사용할 수 있는 총 픽셀 수가 더 많거나 적을 수 있습니다.
mm
밀리미터: 화면의 실제 크기를 기반으로 합니다.
in
인치: 화면의 실제 크기를 기반으로 합니다.

참고: 크기는 XML 파일 이름이 아니라 name 속성에서 제공되는 값을 사용하여 참조되는 단순한 리소스입니다. 따라서 하나의 XML 파일에서 하나의 <resources> 요소 아래 크기 리소스를 다른 단순 리소스와 결합할 수 있습니다.

파일 위치:
res/values/filename.xml
파일 이름은 임의로 지정됩니다. <dimen> 요소의 name이 리소스 ID로 사용됩니다.
리소스 참조:
Java의 경우: R.dimen.dimension_name
XML의 경우: @[package:]dimen/dimension_name
문법:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen
        name="dimension_name"
        >dimension</dimen>
</resources>
요소:
<resources>
필수사항. 루트 노드입니다.

속성 없음

<dimen>
부동 소수점 수로 표현된 크기이며 그 뒤에 측정 단위(dp, sp, pt, px, mm, in)가 표시됩니다.

속성:

name
문자열. 크기의 이름. 이 이름이 리소스 ID로 사용됩니다.
예:
res/values/dimens.xml에 저장된 XML 파일:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="textview_height">25dp</dimen>
    <dimen name="textview_width">150dp</dimen>
    <dimen name="ball_radius">30dp</dimen>
    <dimen name="font_size">16sp</dimen>
</resources>

다음 애플리케이션 코드는 크기를 가져옵니다.

Kotlin

val fontSize: Float = resources.getDimension(R.dimen.font_size)

Java

Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);

다음 레이아웃 XML은 속성에 크기를 적용합니다.

<TextView
    android:layout_height="@dimen/textview_height"
    android:layout_width="@dimen/textview_width"
    android:textSize="@dimen/font_size"/>

ID

XML로 정의된 고유 리소스 ID입니다. Android 개발자 도구는 <item> 요소에 제공한 이름을 사용하여 프로젝트의 R.java 클래스에 고유 정수를 만들며 이를 애플리케이션 리소스(예: UI 레이아웃의 View)의 식별자 또는 애플리케이션 코드(예: 대화상자의 ID 또는 결과 코드)에서 사용할 고유 정수로 사용할 수 있습니다.

참고: ID는 XML 파일 이름이 아니라 name 속성에 제공되는 값을 사용하여 참조되는 단순한 리소스입니다. 따라서 하나의 XML 파일에서 하나의 <resources> 요소 아래 ID 리소스를 다른 단순 리소스와 결합할 수 있습니다. 또한 ID 리소스는 실제 리소스 항목을 참조하지 않습니다. 다른 리소스에 연결하거나 애플리케이션에서 고유한 정수로 사용할 수 있는 고유 ID입니다.

파일 위치:
res/values/filename.xml
파일 이름은 임의로 지정됩니다.
리소스 참조:
Java의 경우: R.id.name
XML의 경우: @[package:]id/name
문법:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="id_name" />
</resources>
요소:
<resources>
필수사항. 루트 노드입니다.

속성 없음

<item>
고유 ID를 정의합니다. 값은 사용하지 않고 속성만 사용합니다.

속성:

type
"id"여야 합니다.
name
문자열. ID의 고유 이름
예:

res/values/ids.xml에 저장된 XML 파일:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="button_ok" />
    <item type="id" name="dialog_exit" />
</resources>

다음 레이아웃 스니펫은 Button 위젯에 "button_ok" ID를 사용합니다.

<Button android:id="@id/button_ok"
    style="@style/button_style" />

앞의 ids.xml 예에 정의된 대로 ID가 이미 존재하므로 여기서 android:id 값에는 ID 참조에 더하기 기호를 포함하지 않습니다. android:id="@+id/name" 형식으로 더하기 기호를 사용하여 XML 리소스에 ID를 지정하면 이는 "name" ID가 아직 존재하지 않아 만들었음을 의미합니다.

또 다른 예로, 다음 코드 스니펫은 "dialog_exit" ID를 대화상자의 고유 식별자로 사용합니다.

Kotlin

showDialog(R.id.dialog_exit)

Java

showDialog(R.id.dialog_exit);

동일한 애플리케이션에서 대화상자를 만들 때 "dialog_exit" ID를 비교합니다.

Kotlin

override fun onCreateDialog(id: Int): Dialog? {
    return when(id) {
        R.id.dialog_exit -> {
            ...
        }
        else -> {
            null
        }
    }
}

Java

protected Dialog onCreateDialog(int id) {
    Dialog dialog;
    switch(id) {
    case R.id.dialog_exit:
        ...
        break;
    default:
        dialog = null;
    }
    return dialog;
}

정수

XML로 정의된 정수입니다.

참고: 정수는 XML 파일 이름이 아니라 name 속성에 제공되는 값을 사용하여 참조되는 단순한 리소스입니다. 따라서 하나의 XML 파일에서 하나의 <resources> 요소 아래 정수 리소스를 다른 단순 리소스와 결합할 수 있습니다.

파일 위치:
res/values/filename.xml
파일 이름은 임의로 지정됩니다. <integer> 요소의 name이 리소스 ID로 사용됩니다.
리소스 참조:
Java의 경우: R.integer.integer_name
XML의 경우: @[package:]integer/integer_name
문법:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer
        name="integer_name"
        >integer</integer>
</resources>
요소:
<resources>
필수사항. 루트 노드입니다.

속성 없음

<integer>
정수.

속성:

name
문자열. 정수의 이름. 이 이름이 리소스 ID로 사용됩니다.
예:

res/values/integers.xml에 저장된 XML 파일:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="max_speed">75</integer>
    <integer name="min_speed">5</integer>
</resources>

다음 애플리케이션 코드는 정수를 가져옵니다.

Kotlin

val maxSpeed: Int = resources.getInteger(R.integer.max_speed)

Java

Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);

정수 배열

XML로 정의된 정수 배열입니다.

참고: 정수 배열은 XML 파일 이름이 아니라 name 속성에 제공되는 값을 사용하여 참조되는 단순한 리소스입니다. 따라서 하나의 XML 파일에서 하나의 <resources> 요소 아래 정수 배열 리소스를 다른 단순 리소스와 결합할 수 있습니다.

파일 위치:
res/values/filename.xml
파일 이름은 임의로 지정됩니다. <integer-array> 요소의 name이 리소스 ID로 사용됩니다.
컴파일된 리소스 데이터 유형:
정수 배열을 가리키는 리소스 포인터
리소스 참조:
Java의 경우: R.array.integer_array_name
XML의 경우: @[package:]array/integer_array_name
문법:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array
        name="integer_array_name">
        <item
            >integer</item>
    </integer-array>
</resources>
요소:
<resources>
필수사항. 루트 노드입니다.

속성 없음

<integer-array>
정수 배열을 정의합니다. 하나 이상의 하위 <item> 요소를 포함합니다.

속성:

android:name
문자열. 배열의 이름. 이 이름이 배열을 참조하기 위한 리소스 ID로 사용됩니다.
<item>
정수. 이 값은 다른 정수 리소스의 참조가 될 수 있습니다. <integer-array> 요소의 하위 요소여야 합니다.

속성 없음

예:
res/values/integers.xml에 저장된 XML 파일:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array name="bits">
        <item>4</item>
        <item>8</item>
        <item>16</item>
        <item>32</item>
    </integer-array>
</resources>

다음 애플리케이션 코드는 정수 배열을 가져옵니다.

Kotlin

val bits: IntArray = resources.getIntArray(R.array.bits)

Java

Resources res = getResources();
int[] bits = res.getIntArray(R.array.bits);

유형이 있는 배열

XML로 정의된 TypedArray입니다. 이를 사용하여 드로어블과 같은 다른 리소스의 배열을 만들 수 있습니다. 배열이 같은 종류일 필요는 없으므로 혼합된 리소스 유형의 배열을 만들 수 있지만, TypedArray 클래스의 get...() 메서드를 사용하여 각 항목을 적절하게 가져올 수 있도록 배열에 있는 데이터 유형의 종류와 위치를 알아야 합니다.

참고: 유형이 있는 배열은 XML 파일 이름이 아니라 name 속성에 제공된 값을 사용하여 참조되는 단순한 리소스입니다. 따라서 하나의 XML 파일에서 하나의 <resources> 요소 아래 유형이 있는 배열 리소스를 다른 단순 리소스와 결합할 수 있습니다.

파일 위치:
res/values/filename.xml
파일 이름은 임의로 지정됩니다. <array> 요소의 name이 리소스 ID로 사용됩니다.
컴파일된 리소스 데이터 유형:
TypedArray을 가리키는 리소스 포인터입니다.
리소스 참조:
Java의 경우: R.array.array_name
XML의 경우: @[package:]array/array_name
문법:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array
        name="integer_array_name">
        <item>resource</item>
    </array>
</resources>
요소:
<resources>
필수사항. 루트 노드입니다.

속성 없음

<array>
배열을 정의합니다. 하나 이상의 하위 <item> 요소를 포함합니다.

속성:

android:name
문자열. 배열의 이름. 이 이름이 배열을 참조하기 위한 리소스 ID로 사용됩니다.
<item>
일반 리소스. 이 값은 리소스 또는 단순 데이터 유형의 참조가 될 수 있습니다. <array> 요소의 하위 요소여야 합니다.

속성 없음

예:
res/values/arrays.xml에 저장된 XML 파일:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="icons">
        <item>@drawable/home</item>
        <item>@drawable/settings</item>
        <item>@drawable/logout</item>
    </array>
    <array name="colors">
        <item>#FFFF0000</item>
        <item>#FF00FF00</item>
        <item>#FF0000FF</item>
    </array>
</resources>

다음 애플리케이션 코드는 각 배열을 가져온 다음 각 배열의 첫 번째 항목을 가져옵니다.

Kotlin

val icons: TypedArray = resources.obtainTypedArray(R.array.icons)
val drawable: Drawable = icons.getDrawable(0)

val colors: TypedArray = resources.obtainTypedArray(R.array.colors)
val color: Int = colors.getColor(0,0)

자바

Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);

TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);