Папка ресурсов в java

Ресурсы

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

  • animator/ : xml-файлы, определяющие анимацию свойств
  • anim/ : xml-файлы, определяющие tween-анимацию
  • color/ : xml-файлы, определяющие список цветов
  • drawable/ : Графические файлы ( .png , .jpg , .gif )
  • mipmap/ : Графические файлы, используемые для иконок приложения под различные разрешения экранов
  • layout/ : xml-файлы, определяющие пользовательский интерфейс приложения
  • menu/ : xml-файлы, определяющие меню приложения
  • raw/ : различные файлы, которые сохраняются в исходном виде
  • values/ : xml-файлы, которые содержат различные используемые в приложении значения, например, ресурсы строк
  • xml/ : Произвольные xml-файлы
  • font/ : файлы с определениями шрифтом и расширениями .ttf, .otf или .ttc, либо файлы XML, который содержат элемент

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

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

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

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

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

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

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

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

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

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

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

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

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

Ресурсы в Android Studio

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

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

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

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

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

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

  • R.drawable (ему соответствует тип в xml drawable )
  • R.id ( id )
  • R.layout ( layout )
  • R.string ( string )
  • R.attr ( attr )
  • R.plural ( plurals )
  • R.array ( string-array )

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

setContentView(R.layout.activity_main);

Через выражение 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:

package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); // получение ресурсов из файла values/strings.xml String app_name = getResources().getString(R.string.app_name); TextView textView = new TextView(this); textView.setTextSize(30); textView.setText(app_name); setContentView(textView); >>

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

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

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

textView.setText(R.string.app_name);

Источник

Java — чтение файла из папки ресурсов

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

 File file = new File( getClass().getClassLoader().getResource("database.properties").getFile() ); 
 InputStream inputStream = getClass() .getClassLoader().getResourceAsStream("database.properties"); 

Заметка
Вы можете заинтересовать этот getResourceAsStream в статическом методе

1. Каталог проектов

Просмотрите структуру проекта Maven.

2. Считайте файл из папки ресурсов

SRC / основные / ресурсы / database.properties

 datasource.url=jdbc:mysql:// локальный / mkyong? UseSSL = ложь datasource.username=root datasource.password=password datasource.driver-class-name=com.mysql.jdbc.Driver 

Читать database.properties файл и распечатать содержимое.

 package com.mkyong; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.net.URL; public class Application < public static void main(String[] args) throws IOException < Application main = new Application(); File file = main.getFileFromResources("database.properties"); printFile(file); >// получить файл из classpath, папки ресурсов private File getFileFromResources(String fileName) < ClassLoader classLoader = getClass().getClassLoader(); URL resource = classLoader.getResource(fileName); if (resource == null) < throw new IllegalArgumentException("file is not found!"); >else < return new File(resource.getFile()); >> private static void printFile(File file) throws IOException < if (file == null) return; try (FileReader reader = new FileReader(file); BufferedReader br = new BufferedReader(reader)) < String line; while ((line = br.readLine()) != null) < System.out.println(line); >> > > 
 datasource.url=jdbc:mysql:// локальный / mkyong? UseSSL = ложь datasource.username=root datasource.password=password datasource.driver-class-name=com.mysql.jdbc.Driver 

3. Модульный тест

SRC / тест / ресурсы / XML / data.xml

Читать data.xml и распечатать содержимое.

Источник

Читайте также:  Template method in java example
Оцените статью