На этой странице описаны следующие типы ресурсов, которые можно вынести за пределы кода:
- Логическое значение
- Ресурс XML, который содержит логическое значение.
- Цвет
- Ресурс XML, который содержит значение цвета (шестнадцатеричный код).
- Параметр
- XML-ресурс, содержащий значение размера (с единицей измерения).
- ID
- XML-ресурс, который предоставляет уникальный идентификатор для ресурсов и компонентов приложения.
- Целое число
- Ресурс XML, содержащий целочисленное значение.
- Массив целых чисел
- XML-ресурс, который предоставляет массив целых чисел.
- Типизированный массив
- Ресурс XML, который предоставляет
TypedArray(можно использовать для массива графических объектов).
Логическое значение
Логическое значение, определенное в XML.
Примечание. Логический тип – это простой ресурс, на который ссылаются с помощью значения, указанного в атрибуте name, а не имени XML-файла. Таким образом, вы можете объединить логические ресурсы с другими простыми ресурсами в одном 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>
- elements:
- пример:
- 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>
Следующий код приложения извлекает логическое значение:
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 и альфа-канала. Ресурс цвета можно использовать везде, где принимается шестнадцатеричное значение цвета. Ресурс цвета также можно использовать, когда в XML ожидается прорисовываемый ресурс, например android:drawable="@color/green".
Значение всегда начинается с символа решетки (#), за которым следует информация о прозрачности, красном, зеленом и синем цветах в одном из следующих форматов:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
Примечание. Цвет – это простой ресурс, на который ссылаются с помощью значения, указанного в атрибуте 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>
- elements:
- пример:
- 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>
Следующий код приложения извлекает ресурс цвета:
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, 2in или 5sp. Android поддерживает следующие единицы измерения:
dp- Пиксели, не зависящие от плотности экрана, – это абстрактная единица измерения, основанная на физической плотности экрана. Эти единицы измерения используются для экранов с разрешением 160 точек на дюйм, где 1 dp примерно равен 1 пикселю. На экранах с более высокой плотностью пикселей количество пикселей, используемых для отрисовки 1 dp, увеличивается на коэффициент, соответствующий разрешению экрана.
Аналогично, на экране с меньшей плотностью пикселей количество пикселей, используемых для 1 dp, уменьшается. Соотношение dp и пикселей меняется в зависимости от плотности экрана, но не обязательно прямо пропорционально. Использование единиц dp вместо единиц px – это решение, позволяющее правильно изменять размеры представления в макете для экранов с разной плотностью пикселей. Это позволяет обеспечить единообразие размеров элементов интерфейса на разных устройствах.
sp- Пиксели, независимые от масштаба. Похожи на dp, но также масштабируются в соответствии с размером шрифта, выбранным пользователем. Рекомендуется использовать эту единицу измерения при указании размеров шрифта, чтобы они корректировались как с учетом плотности экрана, так и с учетом предпочтений пользователя.
pt- Пункты: 1/72 дюйма в зависимости от физического размера экрана, если плотность пикселей составляет 72 DPI.
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>
- elements:
- пример:
- 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>
Следующий код приложения извлекает параметр:
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. На основе имени, указанного в элементе <item>, инструменты разработчика Android создают уникальное целое число в классе R.java проекта. Это число можно использовать в качестве идентификатора ресурса приложения, например View в макете пользовательского интерфейса, или уникального целого числа в коде приложения, например идентификатора диалогового окна или кода результата.
Примечание. Идентификатор – это простой ресурс, на который ссылаются с помощью значения, указанного в атрибуте name, а не имени XML-файла. Таким образом, вы можете объединить ресурсы идентификаторов с другими простыми ресурсами в одном XML-файле в одном элементе <resources>. Кроме того, ресурс 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>
- elements:
- пример:
-
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_ok"для виджетаButton:<Button android:id="@id/button_ok" style="@style/button_style" />
В значении
android:idнет знака плюса, потому что идентификатор уже существует, как показано в примереids.xml. Если вы указываете идентификатор для XML-ресурса с помощью знака плюса в форматеandroid:id="@+id/name", это означает, что идентификатор"name"ещё не существует и будет создан.В следующем примере фрагмент кода использует идентификатор
"dialog_exit"как уникальный идентификатор диалогового окна:Kotlin
showDialog(R.id.dialog_exit)Java
showDialog(R.id.dialog_exit);В одном приложении при создании диалога сравнивается идентификатор
"dialog_exit":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.
Примечание. Целое число – это простой ресурс, на который ссылаются с помощью значения, указанного в атрибуте 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>
- elements:
- пример:
-
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>
Следующий код приложения извлекает целое число:
Kotlin
val maxSpeed: Int =
resources.getInteger(R.integer.max_speed)Java
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>
- elements:
- пример:
- 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>
Следующий код приложения извлекает целочисленный массив:
Kotlin
val bits: IntArray =
resources.getIntArray(R.array.bits)Java
Resources res =
getResources(); int[] bits = res.getIntArray(R.array.bits);
Типизированный массив
TypedArray, определенный в XML. С его помощью можно создать массив других ресурсов, например графических объектов. Массив не обязательно должен быть однородным, поэтому вы можете создать массив смешанных типов ресурсов, но помните, какие типы данных находятся в массиве и где они находятся, чтобы вы могли правильно получить каждый элемент с помощью методов get...() класса TypedArray.
Примечание. Типизированный массив – это простой ресурс, на который ссылаются с помощью значения, указанного в атрибуте 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>
- elements:
- пример:
- 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>
В следующем коде приложения извлекается каждый массив, а затем – первая запись в каждом массиве:
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)Java
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);