На этой странице определены следующие типы ресурсов, которые можно экстернализировать:
- Бул
- XML-ресурс, который несет логическое значение.
- Цвет
- Ресурс XML, содержащий значение цвета (шестнадцатеричный цвет).
- Измерение
- Ресурс XML, содержащий значение измерения (с единицей измерения).
- ИДЕНТИФИКАТОР
- Ресурс XML, предоставляющий уникальный идентификатор ресурсов и компонентов приложения.
- Целое число
- Ресурс XML, который содержит целочисленное значение.
- Целочисленный массив
- XML-ресурс, предоставляющий массив целых чисел.
- Типизированный массив
- Ресурс XML, предоставляющий
TypedArray
(который можно использовать для массива объектов рисования).
Бул
Логическое значение, определенное в XML.
Примечание. Логическое значение — это простой ресурс, ссылка на который осуществляется с использованием значения, указанного в атрибуте name
, а не имени XML-файла. Таким образом, вы можете комбинировать ресурсы bool с другими простыми ресурсами в одном XML-файле в одном элементе <resources>
.
- расположение файла:
-
res/values/ filename .xml
Имя файла произвольное.name
элемента<bool>
используется в качестве идентификатора ресурса. - ссылка на ресурс:
- На 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>
- элементы:
- пример:
- XML-файл, сохраненный в
res/values-small/bools.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="screen_small">true</bool> <bool name="adjust_view_bounds">true</bool> </resources>
Следующий код приложения извлекает логическое значение:
Котлин
val screenIsSmall: Boolean =
resources
.getBoolean
(R.bool.screen_small)Ява
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 и альфа-канала. Вы можете использовать ресурс цвета в любом месте, где принимается шестнадцатеричное значение цвета. Вы также можете использовать ресурс цвета, если в XML ожидается рисуемый ресурс, например android:drawable="@color/green"
.
Значение всегда начинается с символа решетки (#), за которым следует информация Alpha-Red-Green-Blue в одном из следующих форматов:
- # RGB
- # АРГБ
- # РРГГББ
- # ААРРГГББ
Примечание. Цвет — это простой ресурс, ссылка на который осуществляется с использованием значения, указанного в атрибуте name
, а не имени XML-файла. Таким образом, вы можете комбинировать ресурсы цвета с другими простыми ресурсами в одном XML-файле в одном элементе <resources>
.
- расположение файла:
-
res/values/colors.xml
Имя файла произвольное.name
элемента<color>
используется в качестве идентификатора ресурса. - ссылка на ресурс:
- На 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>
- элементы:
- пример:
- XML-файл, сохраненный в
res/values/colors.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <color name="translucent_red">#80ff0000</color> </resources>
Следующий код приложения извлекает ресурс цвета:
Котлин
val color: Int =
resources
.getColor
(R.color.opaque_red)Ява
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. Размер указывается числом, за которым следует единица измерения, например 10 пикселей, 2 дюйма или 5 сп. Android поддерживает следующие единицы измерения:
-
dp
- Независимые от плотности пиксели: абстрактная единица, основанная на физической плотности экрана. Эти единицы относятся к экрану с разрешением 160 точек на дюйм (точек на дюйм), на котором 1 dp примерно равен 1 пикселю. При работе на экране с более высокой плотностью количество пикселей, используемых для рисования 1 dpi, увеличивается на коэффициент, соответствующий разрешению экрана.
Аналогично, на экране с меньшей плотностью количество пикселей, используемых для 1 dp, уменьшается. Соотношение dps к пикселям меняется в зависимости от плотности экрана, но не обязательно прямо пропорционально. Использование единиц dp вместо единиц px — это решение, позволяющее правильно изменять размеры представления в макете для различной плотности экрана. Он обеспечивает согласованность реальных размеров элементов пользовательского интерфейса на разных устройствах.
-
sp
- Независимые от масштаба пиксели. Это похоже на единицу измерения dp, но она также масштабируется в соответствии с предпочтениями пользователя по размеру шрифта. Рекомендуется использовать эту единицу измерения при указании размеров шрифта, чтобы они были скорректированы как с учетом плотности экрана, так и с учетом предпочтений пользователя.
-
pt
- Баллы: 1/72 дюйма в зависимости от физического размера экрана при разрешении экрана 72 точки на дюйм.
-
px
- Пиксели: соответствует реальным пикселям на экране. Мы не рекомендуем использовать это устройство, поскольку фактическое представление может различаться на разных устройствах. Различные устройства могут иметь разное количество пикселей на дюйм и могут иметь больше или меньше общего количества пикселей на экране.
-
mm
- Миллиметры: в зависимости от физического размера экрана.
-
in
- Дюймы: в зависимости от физического размера экрана.
Примечание. Измерение — это простой ресурс, ссылка на который осуществляется с использованием значения, указанного в атрибуте name
, а не имени XML-файла. Таким образом, вы можете комбинировать ресурсы измерений с другими простыми ресурсами в одном XML-файле в одном элементе <resources>
.
- расположение файла:
-
res/values/ filename .xml
Имя файла произвольное.name
элемента<dimen>
используется в качестве идентификатора ресурса. - ссылка на ресурс:
- На 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>
- элементы:
- пример:
- XML-файл, сохраненный в
res/values/dimens.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>
Следующий код приложения извлекает измерение:
Котлин
val fontSize: Float =
resources
.getDimension
(R.dimen.font_size)Ява
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"/>
ИДЕНТИФИКАТОР
Уникальный идентификатор ресурса, определенный в XML. Используя имя, указанное вами в элементе <item>
, инструменты разработчика Android создают уникальное целое число в классе R.java
вашего проекта, которое вы можете использовать в качестве идентификатора ресурсов приложения, например View
в макете пользовательского интерфейса или уникальное целое число для использования в коде вашего приложения, например идентификатор диалога или код результата.
Примечание. Идентификатор — это простой ресурс, ссылка на который осуществляется с использованием значения, указанного в атрибуте name
, а не имени XML-файла. Таким образом, вы можете комбинировать ресурсы идентификаторов с другими простыми ресурсами в одном XML-файле в одном элементе <resources>
. Кроме того, идентификатор ресурса не ссылается на реальный элемент ресурса: это уникальный идентификатор, который вы можете прикрепить к другим ресурсам или использовать в качестве уникального целого числа в своем приложении.
- расположение файла:
-
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>
- элементы:
- пример:
XML-файл, сохраненный в
res/values/ids.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"
:<Button android:id="@id/button_ok" style="@style/button_style" />
Значение
android:id
здесь не включает знак плюса в ссылке на идентификатор, поскольку идентификатор уже существует, как определено в предыдущем примереids.xml
. Когда вы указываете идентификатор XML-ресурса с помощью знака плюс в форматеandroid:id="@+id/name"
, это означает, что идентификатор"name"
еще не существует и он создается.В качестве другого примера, следующий фрагмент кода использует идентификатор
"dialog_exit"
в качестве уникального идентификатора диалога:Котлин
showDialog
(R.id.dialog_exit)Ява
showDialog
(R.id.dialog_exit);В этом же приложении при создании диалога сравнивается идентификатор
"dialog_exit"
:Котлин
override fun
onCreateDialog
(id: Int): Dialog? { return when(id) { R.id.dialog_exit -> { ... } else -> { null } } }Ява
protected Dialog
onCreateDialog
(int id) { Dialog dialog; switch(id) { case R.id.dialog_exit: ... break; default: dialog = null; } return dialog; }
Целое число
Целое число, определенное в XML.
Примечание. Целое число — это простой ресурс, ссылка на который осуществляется с использованием значения, указанного в атрибуте name
, а не имени XML-файла. Таким образом, вы можете комбинировать целочисленные ресурсы с другими простыми ресурсами в одном XML-файле в одном элементе <resources>
.
- расположение файла:
-
res/values/ filename.xml
Имя файла произвольное.name
элемента<integer>
используется в качестве идентификатора ресурса. - ссылка на ресурс:
- В 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>
- элементы:
- пример:
XML-файл, сохраненный в
res/values/integers.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="max_speed">75</integer> <integer name="min_speed">5</integer> </resources>
Следующий код приложения извлекает целое число:
Котлин
val maxSpeed: Int =
resources
.getInteger
(R.integer.max_speed)Ява
Resources res =
getResources()
; int maxSpeed = res.getInteger
(R.integer.max_speed);
Целочисленный массив
Массив целых чисел, определенный в XML.
Примечание. Целочисленный массив — это простой ресурс, ссылка на который осуществляется с использованием значения, указанного в атрибуте name
, а не имени XML-файла. Таким образом, вы можете комбинировать ресурсы целочисленного массива с другими простыми ресурсами в одном XML-файле в одном элементе <resources>
.
- расположение файла:
-
res/values/ filename .xml
Имя файла произвольное.name
элемента<integer-array>
используется в качестве идентификатора ресурса. - тип данных скомпилированного ресурса:
- Указатель ресурса на массив целых чисел.
- ссылка на ресурс:
- В 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>
- элементы:
- пример:
- XML-файл, сохраненный в
res/values/integers.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>
Следующий код приложения извлекает целочисленный массив:
Котлин
val bits: IntArray =
resources
.getIntArray
(R.array.bits)Ява
Resources res =
getResources()
; int[] bits = res.getIntArray
(R.array.bits);
Типизированный массив
TypedArray
определенный в XML. Вы можете использовать это для создания массива других ресурсов, таких как drawables. Массив не обязательно должен быть однородным, поэтому вы можете создать массив из смешанных типов ресурсов, но помните, какие и где типы данных находятся в массиве, чтобы вы могли правильно получить каждый элемент с помощью get.. класса TypedArray
get...()
методы.
Примечание. Типизированный массив — это простой ресурс, ссылка на который осуществляется с использованием значения, указанного в атрибуте name
, а не имени XML-файла. Таким образом, вы можете комбинировать ресурсы типизированного массива с другими простыми ресурсами в одном XML-файле в одном элементе <resources>
.
- расположение файла:
-
res/values/ filename .xml
Имя файла произвольное.name
элемента<array>
используется в качестве идентификатора ресурса. - тип данных скомпилированного ресурса:
- Указатель ресурса на
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>
- элементы:
- пример:
- XML-файл, сохраненный в
res/values/arrays.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>
Следующий код приложения извлекает каждый массив, а затем получает первую запись в каждом массиве:
Котлин
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);