На этой странице определены следующие типы ресурсов, которые можно экстернализировать:
- Бул
- 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&qu<ot;?> resources bool na>me="bool_<name&qu<ot; [true | false]/bool> /resources>
- элементы:
- пример:
- XML-файл, сохраненный в
res/values-small/bools.xml:<?xml version="1.0" encoding=<"utf>-8&qu<ot;?> resources bool n<ame="s<creen_small">true/bool> < boo<l 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&quo<t;?> resources> color >name=&quo<t;color_<name" hex_color/color> /resources>
- элементы:
- пример:
- XML-файл, сохраненный в
res/values/colors.xml:<?xml version="1.0" encoding=<"utf-8&qu<ot;?> resources> co<lor name=&q<uot;opaque_red">#f00/color>< colo<r 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&quo<t;?> resources> dimen name>="di<mensio>n<_name">; dimension/dimen /resources
- элементы:
- пример:
- XML-файл, сохраненный в
res/values/dimens.xml:<?xml version="1.0" encoding=<"utf-8&quo<t;?> resources> dimen n<ame="te<xtview_height">25dp/dimen<> dim<en name="textview_width&<quot;>150<dp/dimen> dimen name<="b<all_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&qu<ot;?> resources item type=">i<d" > name="id_name" / /resources
- элементы:
- пример:
XML-файл, сохраненный в
res/values/ids.xml:<?xml version="1.0" encoding=<"utf-8&quo<t;?> resources> item ty>pe=&q<uot;id" name="button_ok&q>u<ot; / 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&quo<t;?> resources> integer na>me=&quo<t;intege>r<_name">; integer/integer /resources
- элементы:
- пример:
XML-файл, сохраненный в
res/values/integers.xml:<?xml version="1.0" encoding=<"utf-8&quo<t;?> resources> i<nteger name=&q<uot;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&quo<t;?> resources> integer-array name=&quo<t;integer_array_n>ame&quo<t;>>; < item < integer/item /integer-array> /resources>
- элементы:
- пример:
- XML-файл, сохраненный в
res/values/integers.xml:<?xml version="1.0" encoding=<"utf-8&quo<t;?> resources> integer-a<rray n<ame="bits&<quot;&<gt; ite<m>4/<item> < item&<gt;8/item&g<t; item&<gt;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&quo<t;?> resources> array name=&quo<t;in>teger_ar<ray_n>ame&q<uot;>< itemresource/item /array> /resources>
- элементы:
- пример:
- XML-файл, сохраненный в
res/values/arrays.xml:<?xml version="1.0" encoding=<"utf-8&quo<t;?> resources> ar<ray name="icon<s"> < item>@drawable/<home/item> < item>@drawa<ble/setting<s/item> < item>@drawable/logo<ut/item> < /array> < array name=&<quot;colors&quo<t;> < item>#F<FFF0000/<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);