이 페이지에서는 외부화할 수 있는 다음 유형의 리소스를 정의합니다.
- 부울
- 불리언 값을 전달하는 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>
- 요소:
- 예:
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>
- 요소:
- 예:
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>
- 요소:
- 예:
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>
- 요소:
- 예:
-
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>
- 요소:
- 예:
-
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>
- 요소:
- 예:
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>
- 요소:
- 예:
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);