Какая папка содержит файлы ресурсов приложения

Обновлено: 14.05.2024

приложения Microsoft Windows часто зависят от файлов, содержащих неисполняемые данные, такие как Язык XAML , изображения, видео и звук. Windows Presentation Foundation (WPF) предлагает специальную поддержку для настройки, идентификации и использования этих типов файлов данных, которые называются файлами данных приложения. Эта поддержка относится к определенному набору типов файлов данных приложения, включая следующие:

Файлы ресурсов. файлы данных, компилируемые в исполняемый файл или СБОРКУ библиотеки WPF.

Файлы содержимого: автономные файлы данных с явной связью с исполняемой сборкой WPF.

Файлы исходного узла: автономные файлы данных, не имеющие связи с исполняемой сборкой WPF.

Важным отличием между этими тремя типами файлов является то, что файлы ресурсов и файлы содержимого известны во время построения. Сборка содержит информацию о них. Однако для файлов исходного узла сборка может вообще не иметь сведений о них или неявного набора знаний через универсальный код ресурса (URI) типа pack. в последнем случае нет никакой гарантии, что файл исходного узла, на который указывает ссылка, фактически существует.

для ссылки на файлы данных приложения Windows Presentation Foundation (WPF) использует схему универсального идентификатора ресурса (uri) типа pack, которая подробно описана в разделе uri типа " pack" в WPF.

В этом разделе описывается настройка и использование файлов данных приложения.

Файлы ресурсов

Если файл данных приложения всегда должен быть доступен для приложения, то единственный способ гарантировать доступность — скомпилировать его в главную исполняемую сборку приложения или в одну из его указанных ссылками сборок. Этот тип файла данных приложения называется файлом ресурсов.

Нужно использовать файлы ресурсов, если:

Не нужно обновлять содержимое файла ресурсов после его компиляции в сборку.

Необходимо упростить распространение приложения за счет уменьшения количества зависимостей между файлами.

Файл данных приложения должен быть локализуемой (см. Общие сведения о глобализации и локализации WPF).

Настройка файлов ресурсов

в WPF файл ресурсов — это файл, который включается в проект Microsoft build engine (MSBuild) как Resource элемент.

в Visual Studio файл ресурсов создается путем добавления файла в проект и присвоения ему значения Build Action Resource .

при построении проекта MSBuild компилирует ресурс в сборку.

Использование файлов ресурсов

Чтобы загрузить файл ресурсов, можно вызвать GetResourceStream метод Application класса, передав URI типа Pack, который идентифицирует нужный файл ресурсов. GetResourceStream Возвращает StreamResourceInfo объект, который предоставляет файл ресурсов как Stream и описывает его тип содержимого.

Например, в следующем коде показано, как использовать GetResourceStream для загрузки Page файла ресурсов и его установки в качестве содержимого объекта Frame ( pageFrame ):

Хотя при вызове GetResourceStream предоставляется доступ к Stream , необходимо выполнить дополнительную работу по преобразованию в тип свойства, для которого будет задано значение. Вместо этого можно позволить WPF относиться к открытию и преобразованию, Stream загружая файл ресурсов непосредственно в свойство типа с помощью кода.

В следующем примере показано, как загрузить объект Page непосредственно в Frame ( pageFrame ) с помощью кода.

В следующем примере показан эквивалент разметки предыдущего примера.

Файлы кода приложения как файлы ресурсов

На Специальный набор файлов кода приложения WPF можно ссылаться с помощью URI типа "Pack", включая окна, страницы, документы нефиксированного формата и словари ресурсов. Например, можно задать Application.StartupUri свойство с URI типа Pack, который ссылается на окно или страницу, которые необходимо загрузить при запуске приложения.

это можно сделать, если XAML-файл включен в проект MSBuild в качестве Page элемента.

в Visual Studio добавить в проект новый. Window NavigationWindow или, Page FlowDocument ResourceDictionary Build Action для файла разметки по умолчанию будет Page выбрано значение.

При компиляции проекта с Page элементами XAML элементы преобразуются в двоичный формат и компилируются в связанную сборку. Следовательно, эти файлы можно использовать таким же образом, как и обычные файлы ресурсов.

Если XAML файл настроен в качестве Resource элемента и не имеет файла кода программной части, то необработанный код XAML компилируется в сборку, а не в двоичную версию RAW XAML .

Файлы с содержимым

Файл содержимого распространяется в виде свободного файла вместе с исполняемой сборкой. Несмотря на то, что они не компилируются в сборку, сборки компилируются с метаданными, которые устанавливают связь с каждым файлом содержимого.

Файлы содержимого необходимо использовать, если приложению требуется определенный набор файлов данных приложения, которые нужно обновлять без повторной компиляции использующей их сборки.

Настройка файлов содержимого

Чтобы добавить файл содержимого в проект, в качестве элемента необходимо включить файл данных приложения Content . более того, поскольку файл содержимого не компилируется непосредственно в сборку, необходимо задать CopyToOutputDirectory элемент метаданных MSBuild, чтобы указать, что файл содержимого копируется в расположение относительно сборки. Если требуется, чтобы ресурс копировался в выходную папку сборки при каждом построении проекта, необходимо задать для CopyToOutputDirectory элемента метаданных Always значение. В противном случае можно гарантировать, что только последняя версия ресурса копируется в выходную папку сборки с использованием PreserveNewest значения.

Ниже показан файл, настроенный как файл содержимого, который копируется в папку выходных данных построения только при добавлении новой версии ресурса в проект.

в Visual Studio можно создать файл содержимого, добавив файл в проект и задав для него значение Build Action Content , а для свойства — значение Copy to Output Directory Copy always (то же, что Always Copy if newer PreserveNewest и).

При построении проекта AssemblyAssociatedContentFileAttribute атрибут компилируется в метаданные сборки для каждого файла содержимого.

Значение параметра AssemblyAssociatedContentFileAttribute указывает путь к файлу содержимого относительно его положения в проекте. Например, если файл содержимого находился во вложенной папке проекта, то в это значение будет включен дополнительный путь к данным AssemblyAssociatedContentFileAttribute .

AssemblyAssociatedContentFileAttributeЗначение является также значением пути к файлу содержимого в выходной папке построения.

Использование файлов содержимого

Чтобы загрузить файл содержимого, можно вызвать GetContentStream метод Application класса, передав URI типа Pack, который идентифицирует нужный файл содержимого. GetContentStream Возвращает StreamResourceInfo объект, который предоставляет файл содержимого в виде Stream и описывает его тип содержимого.

Например, в следующем коде показано, как использовать GetContentStream для загрузки Page файла содержимого и его установки в качестве содержимого объекта Frame ( pageFrame ).

Хотя при вызове GetContentStream предоставляется доступ к Stream , необходимо выполнить дополнительную работу по преобразованию в тип свойства, для которого будет задано значение. Вместо этого можно позволить WPF относиться к открытию и преобразованию, Stream загружая файл ресурсов непосредственно в свойство типа с помощью кода.

В следующем примере показано, как загрузить объект Page непосредственно в Frame ( pageFrame ) с помощью кода.

В следующем примере показан эквивалент разметки предыдущего примера.

Файлы исходного узла

Файлы ресурсов имеют явную связь со сборками, которые они распределяют вместе, как определено в AssemblyAssociatedContentFileAttribute . Но иногда необходимо установить неявную либо несуществующую связь между сборкой и файлом данных приложения, например, в следующих случаях:

Файл не существует во время компиляции.

Неизвестно, какие файлы потребуются для сборки до времени выполнения.

Нужна возможность обновлять файлы без повторной компиляции сборки, связанной с ними.

Приложение использует большие файлы данных, такие как аудио и видео, и необходимо, чтобы пользователи могли их загружать только при необходимости.

Файлы исходного узла являются единственным вариантом для приложений с частичным доверием, хотя и не ограничиваются такими приложениями. Приложениям с полным доверием, возможно, все равно придется загружать файлы данных приложений, о которых они не знают во время построения. Хотя приложения с полным доверием могут использовать схему file:///, вероятнее всего, файлы данных приложения будут установлены в одну папку или вложенную папку со сборкой приложения. В этом случае использовать ссылки на исходный узел проще, чем использовать file:///, так как последнее требует разработки полного пути к файлу.

Файлы исходного узла не кэшируются с помощью приложения браузера XAML (XBAP) на клиентском компьютере, а файлы содержимого —. Следовательно, они загружаются только по специальному запросу. Если приложение браузера XAML (XBAP) имеет большие файлы мультимедиа, их настройка в качестве файлов исходного узла означает, что начальный запуск приложения выполняется гораздо быстрее, а файлы загружаются по требованию.

Настройка файлов исходного узла

если файлы исходного сайта не существуют или неизвестны во время компиляции, необходимо использовать традиционные механизмы развертывания для обеспечения доступности необходимых файлов во время выполнения, в том числе с помощью XCopy программы командной строки или Microsoft установщик Windows.

если во время компиляции вы узнаете, какие файлы необходимо найти на исходном узле, но все равно хотите избежать явной зависимости, эти файлы можно добавить в проект MSBuild в качестве None элемента. как и в случае с файлами содержимого, необходимо задать атрибут MSBuild, CopyToOutputDirectory чтобы указать, что файл исходного узла копируется в расположение относительно сборки, указав либо значение, либо Always PreserveNewest значение.

в Visual Studio файл исходного узла создается путем добавления файла в проект и присвоения ему значения Build Action None .

при построении проекта MSBuild копирует указанные файлы в выходную папку сборки.

Использование файлов исходного узла

Чтобы загрузить файл исходного узла, можно вызвать GetRemoteStream метод Application класса, передав URI типа Pack, который идентифицирует нужный файл исходного узла. GetRemoteStream Возвращает StreamResourceInfo объект, который предоставляет файл исходного узла как Stream и описывает его тип содержимого.

В следующем примере кода показано, как использовать GetRemoteStream для загрузки Page файла исходного узла и задать его в качестве содержимого объекта Frame ( pageFrame ).

Хотя при вызове GetRemoteStream предоставляется доступ к Stream , необходимо выполнить дополнительную работу по преобразованию в тип свойства, для которого будет задано значение. Вместо этого можно позволить WPF относиться к открытию и преобразованию, Stream загружая файл ресурсов непосредственно в свойство типа с помощью кода.

В следующем примере показано, как загрузить объект Page непосредственно в Frame ( pageFrame ) с помощью кода.

В следующем примере показан эквивалент разметки предыдущего примера.

Повторное построение после изменения типа построения

После изменения типа построения файла данных приложения необходимо перестроить все приложение, чтобы обеспечить применение этих изменений. Если просто выполнить построение приложения, изменения не применяются.

При использовании приложений под Android иногда появляются вопросы: «А где приложение хранит созданные файлы?», «Можно ли до них достучаться?» и «Удалятся ли файлы при удалении приложения?» Давайте попробуем посмотреть, где же приложение может хранить свои данные и какие последствия это имеет для пользователя.

Внутреннее хранилище данных

Смысл следует непосредственно из названия. Внутреннее хранилище (internal storage) располагается всегда в памяти смартфона вне зависимости от того, есть ли возможность установки карты памяти (и тем более того, вставлена ли она). Эта область памяти является защищенной. Находится в системном разделе /data. По умолчанию все файлы, которые там располагаются, доступны только тому приложению, которое их создало. Разумеется, можно сделать файлы доступными для других приложений, но это надо делать специально. Если приложение не открывает файлы для доступа извне, достучаться к ним можно будет только получив root.

Назначение хранилища понятно: внутренние защищенные данные, к которым не должно быть нерегламентированного доступа. Проблемы (с точки зрения пользователя) могут быть в следующих случаях:

  • Неоправданно большой объем данных. Хочется вынести данные на карту памяти, чтобы сэкономить внутреннее пространство для других нужд, а приложение не дает.
  • По мнению пользователя, регламент доступа к данным должен быть другим, не таким, как предлагает приложение.


Пример: приложение «Лекции по истории России». В приложении хороший контент (и по содержанию, и по качеству звука). Но сохраняется он во внутреннюю память. На бюджетных устройствах, где этой памяти мало, становится затруднительным закачать заранее много лекций, а потом, отключившись от интернета, слушать их. Второй проблемой становится собственно регламент доступа к данным. Даже если ограничиться тематикой истории, у меня есть аудиофайлы, полученные из трех источников: данное приложение, подкасты и аудиоверсии роликов с youtube. Хочется взять и объединить навек в их земной юдоли под владычеством всесильным Властелина Мордора их все в единый плейлист, и слушать его одним аудиоплеером. Но на смартфоне без root это сделать невозможно.


Внешнее хранилище «личных» данных

С точки зрения разработчика, кроме внутреннего хранилища данных, для персональных целей приложения есть еще внешнее хранилище. Оно необязательно размещается на карте памяти. Это может быть и внутренняя память смартфона, но весь раздел с такими данными размещается в общем доступе. В корне раздела есть папка Android/data, а в ней — подпапки с именами пакетов приложений.


Плюсы такого подхода очевидны: данные доступны извне для целей пользователя. А если это карта памяти, то и емкость может быть ограничена только вашими финансами (в продаже уже можно найти карты памяти на 400 гигабайт). Минусы тоже понятны: в любой момент любое приложение (конечно, имеющее разрешение на доступ к «внешним» данным) может взять и стереть чужие файлы. Также файлы будут удалены системой при удалении приложения (или при очистке его данных).

Пример приложения: подкаст-менеджер BeyondPod (более-менее свежей версии, раньше файлы хранились по-другому). Пользователь имеет доступ к скачанным подкастам и может легко удалять их (например, в целях экономии места) или слушать их во внешнем плеере.


Общее внешнее хранилище

Располагается в корне «внешнего» раздела на одном уровне с папкой «Android». Предназначается для хранения данных, разделяемых между разными приложениями. Обычно в документации Google в качестве примера приводят картинки (фото с камеры — папка DCIM). Основная проблема данных файлов: они никогда не удаляются автоматически. Даже если приложение вы удалили.


Пример: мессенджер Telegram. После того, как вы удалили приложение, загруженные файлы никуда не исчезают. Они продолжают спокойно лежать на накопителе данных, занимая драгоценное место.


Как можно удалить файлы, не удаляя приложения

Здесь важно ввести еще одну классификацию файлов приложений. Она справедлива для внутреннего хранилища и для внешнего хранилища личных данных. Все данные делятся на два типа: собственно данные и кэш.

Данные (папка data) — некие файлы, которые, по логике Google, нужны для постоянной работы с ними. Если полностью их удалить, то приложение поведет себя точно так же, как если бы его переустановили (удалили и заново установили). Частичное удаление файлов может не привести ни к каким неприятным последствиям. Но важно понимать, какие конкретно данные вы удаляете (например, очевидно, что скачанные файлы подкастов можно удалять совершенно свободно — это не повлияет на работоспособность подкаст-менеджера).

Кэш — временные данные, которые сформированы в ходе работы приложения и нужны для ускорения этой работы. Например, данные, которые часто нужны в интернете, загружаются и в дальнейшем вместо загрузки открываются локально (разумеется, кэш может обновляться, чтобы не показывать устаревшие данные). Удалять кэш любого приложения можно совершенно спокойно, это штатная операция.


Очистка памяти и кэша вызывается из настроек приложения. Кнопка «Очистить кэш» очищает только кэш, а кнопка «Очистить данные» — и кэш, и данные приложения.

Удаление файлов приложения из общего внешнего хранилища выполняется только вручную. Более того, даже оценка того, от какого приложения эти файлы остались, тоже выполняется вручную.

Смысл и использование каждой структуры папок проекта Android

Сначала я был озадачен этими вещами для Android. Я не знаю, что поставить на первое место. Я интегрирую онлайн-ресурсы и разместу их здесь.

1. Обзор

Мы строим проект Android, структура которого выглядит следующим образом:




Как следует из названия (src, исходный код), эта папка содержит исходный код проекта.

A. android.app.Activity Категории:

Activity Класс ориентирован на создание окон и взаимодействий, он использует методы setContentView(View) Поместите свой собственный интерфейс внутри.

Важные методы: onCreate(Bundle) : Инициализация действия (Activity).

(1) позвонив setContentView(int) Загрузка метода Ресурсы макета (ресурс макета) для достижения пользовательского интерфейса Определения;

(2) С другой стороны, вы можете использовать findViewById(int) В интерфейсе Получить виджеты, которые требуют программного взаимодействия.

Основная идея: setContentView Укажите, какой файл определяет макет (main.xml), вы можете отобразить этот интерфейс, и затем мы выполним соответствующие операции, наши операции будут упакованы в намерение (Intent), а затем это намерение, соответствующее соответствующей операции для обработки.

B. android.os.Bundle Категории:

Отобразить различные типы parcelable (Parcelable) из строковых значений (слово Bundle означает пакет, весь этот класс легко понять и запомнить). Например, этот класс предоставляет публичный метод - public boolean containsKey (String key), если данный ключ включен в карту Bundle, возвращает true, в противном случае возвращает false. Этот класс реализует интерфейсы Parceable и Cloneable, поэтому имеет характеристики обоих.

1.2, папка gen

В этой папке находится файл R.java, который создается автоматически при создании проекта. Этот файл доступен только для чтения и не может быть изменен. Класс определен в файле R.java-R. Класс R содержит много статических классов, а имена статических классов соответствуют имени в рез., То есть класс R определяет индекс всех ресурсов проекта. Посмотрите на наш проект HelloWorld не так, как показано ниже:

Android :HelloWorld

Рисунок 2. R.java соответствует res

Преимущества: (1) С помощью R.java мы можем быстро найти нужные нам ресурсы,

(2) Кроме того, компилятор также проверит, используются ли ресурсы в списке R.java, и неиспользуемые ресурсы не будут скомпилированы в программное обеспечение, что может уменьшить пространство, занимаемое приложением на мобильном телефоне.

1.3, папка Android 2.2

Эта папка содержит файл android.jar, который является архивным файлом Java, который содержит все библиотеки Android SDK (такие как Views, Controls) и API, необходимые для создания приложения. Свяжите свое приложение с Android SDK и эмулятором Android через android.jar, который позволяет вам использовать все библиотеки и пакеты Android, и отладить ваше приложение в соответствующей среде. Например, в исходном файле:

import android.app.Activity;
import android.os.Bundle;

Здесь две строки кода предназначены для импорта пакета из android.jar.

1.4 папка активов и папка res

Файлы в папке ресурсов хранятся в исходном формате, и вам необходимо использовать AssetManager для чтения файлов в виде байтовых потоков. 1. Сначала позвоните в активностьgetAssets()Чтобы получить ссылку на AssetManager. 2. Используйте AssetManager сноваopen(String fileName, int accessMode)Метод определяет файл чтения и режим доступа для получения входного потока InputStream. 3. Затем используйте inputStream открытого файла, чтобы прочитать файл, и не забудьте ввести inputStream после чтения.close()。 4. Вызовите AssetManager.close()Закройте AssetManager.

Следует отметить, что файлы из ресурсов и ресурсов можно только читать, но не записывать.
Из файла Raw читается следующее:
код

public String getFromRaw() <
try <
InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));
BufferedReader bufReader = new BufferedReader(inputReader);
String line="";
String Result="";
while((line = bufReader.readLine()) != null)
Result += line;
return Result;
> catch (Exception e) <
e.printStackTrace();
>
>
Следующее непосредственно читается из активов
код
public String getFromAssets(String fileName) <
try <
InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );
BufferedReader bufReader = new BufferedReader(inputReader);
String line="";
String Result="";
while((line = bufReader.readLine()) != null)
Result += line;
return Result;
> catch (Exception e) <
e.printStackTrace();
>
>
Конечно, если вы хотите получить поток памяти, вы также можете напрямую вернуться к потоку памяти! (2) Файлы ресурсов в основном размещаются в папке res.

каталогDirectory

Тип ресурсаResource Types

XML-файлы, они скомпилированы в покадровую анимацию ( frame by frame animation ) Или анимация движения ( tweened animation ) Объект

Файлы .jpg, .9.jpg, .jpg, которые скомпилированы в следующие подтипы Drawable ресурсов:

Чтобы получить ресурс этого типа, вы можете использовать Resource.getDrawable (id)

Чтобы получить тип ресурса, используйте mContext.getResources (). GetDrawable (R.drawable.imageId)

Файл XML, который компилируется в макет экрана (или часть экрана). Посмотреть объявление макета (Declaring Layout)

XML-файлы, которые могут быть скомпилированы во многие типы ресурсов.

Обратите внимание: В отличие от других папок res /, он может сохранять любое количество файлов, которые содержат описание создаваемого ресурса, а не сам ресурс. Тип элемента XML определяет, где эти ресурсы должны быть размещены в классе R.

Хотя файлы в этой папке могут быть названы произвольно, вот несколько типичных файлов (соглашение об именовании файлов должно включать тип элемента в имени):

Ресурс в приложении Android представляет собой файл, например, файл разметки интерфейса или некоторое значение, например, простую строку. То есть ресурсы представляют собой и файлы разметки, и отдельные строки, и звуковые файлы, файлы изображений и т.д. Все ресурсы находятся в проекте в каталоге res . Для различных типов ресурсов, определенных в проекте, в каталоге res создаются подкаталоги. Поддерживаемые подкаталоги:

animator/ : xml-файлы, определяющие анимацию свойств

anim/ : xml-файлы, определяющие tween-анимацию

color/ : xml-файлы, определяющие список цветов

drawable/ : Графические файлы ( .jpg , .jpg , .jpg )

mipmap/ : Графические файлы, используемые для иконок приложения под различные разрешения экранов

layout/ : xml-файлы, определяющие пользовательский интерфейс приложения

menu/ : xml-файлы, определяющие меню приложения

raw/ : различные файлы, которые сохраняются в исходном виде

values/ : xml-файлы, которые содержат различные используемые в приложении значения, например, ресурсы строк

xml/ : Произвольные xml-файлы

font/ : файлы с определениями шрифтом и расширениями .ttf, .otf или .ttc, либо файлы XML, который содержат элемент <font-family>

В общей сложности мы можем определить следующие типы ресурсов:

элемент в файле

strings.xml или arrays.xml

Логические значения Boolean

Массив целых чисел

Файлы с расширением jpg и png

Файл xml с произвольным названием

Файл xml с произвольным названием

Файл xml с произвольным названием

<set>, <objectAnimator>, <valueAnimator>

Файл xml с произвольным названием

Файл xml с произвольным названием

Бинарные и текстовые ресурсы

Файлы мультимедиа (mp3, mp4), текстовые и другие файлы

Разметка графического интерфейса

Файл xml с произвольным названием

К примеру, если мы возьмем стандартный проект Android Studio, который создается по умолчанию, то там можем заметить наличие уже нескольких папок для различных ресурсов в каталоге res :

Ресурсы в Android Studio

По умолчанию здесь есть каталоги не для всех типов ресурсов, которые использоваться в Android, однако при необходимости мы можем добавить в папку res нужный каталог, а в него затем поместить ресурс.

Когда происходит компиляция проекта сведения обо всех ресурсах добавляются в специальный файл R.jar , который затем используется при работе с ресурсами

Применение ресурсов

Существует два способа доступа к ресурсам: в файле исходного кода и в файле xml.

Ссылка на ресурсы в коде

Тип ресурса в данной записи ссылается на одно из пространств (вложенных классов), определенных в файле R.java, которые имеют соответствующие им типы в xml:

R.drawable (ему соответствует тип в xml drawable )

Например, для установки ресурса activity_main.xml в качестве графического интерфейса в коде MainActivity в методе onCreate() есть такая строка:

Через выражение R.layout.activity_main мы и ссылаемся на ресурс activity_main.xml, где layout - тип ресурса, а activity_main - имя ресурса.

Подобным образом мы можем получать другие ресурсы. Например, в файле res/values/strings.xml определен ресурс app_name:

Этот ресурс ссылается на строку. Чтобы получить ссылку на данный ресурс в коде java, мы можем использовать выражение R.string.app_name .

Доступ в файле xml

Нередко возникает необходимость ссылаться на ресурс в файле xml, например, в файле, который определяет визуальный интерфейс, к примеру, в activity_main.xml. Ссылки на ресурсы в файлах xml имеют следующую формализованную форму: @[имя_пакета:]тип_ресурса/имя_ресурса

имя_пакета представляет имя пакета, в котором ресурс находится (указывать необязательно, если ресурс находится в том же пакете)

тип_ресурса представляет подкласс, определенный в классе R для типа ресурса

имя_ресурса имя файла ресурса без расширения или значение атрибута android:name в XML-элементе (для простых значений).

Например, мы хотим вывести в элемент TextView строку, которая определена в виде ресурса в файле strings.xml:

В данном случае свойство text в качестве значения будет получать значение строкового ресурса app_name.

Метод getResources

Для получения ресурсов в классе Activity мы можем использовать метод getResources() , который возвращает объект android.content.res.Resources . Но чтобы получить сам ресурс, нам надо у полученного объекта Resources вызвать один из методов. Некоторые из его методов:

getString() : возвращает строку из файла strings.xml по числовому идентификатору

getDimension() : возвращает числовое значение - ресурс dimen

getDrawable() : возвращает графический файл в виде объекта Drawable

getBoolean() : возвращает значение boolean

getColor() : возвращает определение цвета

getColorStateList() : возвращает объект ColorStateList - набор цветов

getFont() : возвращает определение шрифта в виде объекта Typeface

getFloat() : возвращает значение float

getLayout() : возвращает объект XmlResourceParser, связанный с файлом layout

Это только некоторые методы. Но все они в качестве параметра принимают идентификатор ресурса, который надо получить. Вкратце рассмотрим их применение. Возьмем тот же файл res/values/strings.xml в качестве источника ресурсов, который в моем случае выглядит так:

И изменим код MainActivity:

Здесь, используя метод getResources() получаем все ресурсы и затем используем их для устаноки значений свойств графических элементов. При запуске приложения мы увидим применение полученных ресурсов:

Использование ресурсов в Android Studio

Подобным образом мы можем программно получать и другие ресурсы и использоват их в приложении. Однако следует отметить, что в данном случае нам не нужно использовать метод getResources() и вообще производить какие-то определенные действия по получению ресурса, поскольку метод setText() класса TextView поддерживает прямую установку текста по идентификатору ресурса:

Читайте также: