Учебники

Android-ресурсы Организация и доступ

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

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

Организовать ресурс в Android Studio

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java  
      res/
         drawable/  
            icon.png  
         layout/  
            activity_main.xml
            info.xml
         values/  
            strings.xml 
				 

Sr.No. Каталог и тип ресурса
1

аним /

XML-файлы, которые определяют анимацию свойств. Они сохраняются в папке res / anim / и доступны из класса R.anim .

2

цвет/

XML-файлы, которые определяют список состояний цветов. Они сохраняются в res / color / и доступны из класса R.color .

3

рисуем /

Файлы изображений, такие как .png, .jpg, .gif или XML-файлы, которые скомпилированы в растровые изображения, списки состояний, фигуры и анимацию. Они сохраняются в res / drawable / и доступны из класса R.drawable .

4

макет /

XML-файлы, которые определяют макет пользовательского интерфейса. Они сохраняются в res / layout / и доступны из класса R.layout .

5

меню/

XML-файлы, которые определяют меню приложений, такие как меню параметров, контекстное меню или подменю. Они сохраняются в res / menu / и доступны из класса R.menu .

6

сырье /

Произвольные файлы для сохранения в необработанном виде. Вам нужно вызвать Resources.openRawResource () с идентификатором ресурса, который является R.raw.filename для открытия таких необработанных файлов.

7

ценности/

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

  • arrays.xml для массивов ресурсов, доступ к которым осуществляется из класса R.array .

  • Integers.xml для целых чисел ресурса, доступ к которому осуществляется из класса R.integer .

  • bools.xml для логического ресурса, доступ к которому осуществляется из класса R.bool .

  • colors.xml для значений цвета, доступ к которым осуществляется из класса R.color .

  • dimensions.xml для значений измерений, доступ к которым осуществляется из класса R.dimen .

  • strings.xml для строковых значений и доступ из класса R.string .

  • styles.xml для стилей и доступ из класса R.style .

8

XML /

Произвольные файлы XML, которые можно прочитать во время выполнения, вызвав Resources.getXML () . Здесь вы можете сохранить различные файлы конфигурации, которые будут использоваться во время выполнения.

аним /

XML-файлы, которые определяют анимацию свойств. Они сохраняются в папке res / anim / и доступны из класса R.anim .

цвет/

XML-файлы, которые определяют список состояний цветов. Они сохраняются в res / color / и доступны из класса R.color .

рисуем /

Файлы изображений, такие как .png, .jpg, .gif или XML-файлы, которые скомпилированы в растровые изображения, списки состояний, фигуры и анимацию. Они сохраняются в res / drawable / и доступны из класса R.drawable .

макет /

XML-файлы, которые определяют макет пользовательского интерфейса. Они сохраняются в res / layout / и доступны из класса R.layout .

меню/

XML-файлы, которые определяют меню приложений, такие как меню параметров, контекстное меню или подменю. Они сохраняются в res / menu / и доступны из класса R.menu .

сырье /

Произвольные файлы для сохранения в необработанном виде. Вам нужно вызвать Resources.openRawResource () с идентификатором ресурса, который является R.raw.filename для открытия таких необработанных файлов.

ценности/

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

arrays.xml для массивов ресурсов, доступ к которым осуществляется из класса R.array .

Integers.xml для целых чисел ресурса, доступ к которому осуществляется из класса R.integer .

bools.xml для логического ресурса, доступ к которому осуществляется из класса R.bool .

colors.xml для значений цвета, доступ к которым осуществляется из класса R.color .

dimensions.xml для значений измерений, доступ к которым осуществляется из класса R.dimen .

strings.xml для строковых значений и доступ из класса R.string .

styles.xml для стилей и доступ из класса R.style .

XML /

Произвольные файлы XML, которые можно прочитать во время выполнения, вызвав Resources.getXML () . Здесь вы можете сохранить различные файлы конфигурации, которые будут использоваться во время выполнения.

Альтернативные Ресурсы

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

Чтобы указать специфичные для конфигурации альтернативы для набора ресурсов, выполните следующие действия:

  • Создайте новый каталог в res / named в форме <имя_ресурса> — <config_qualifier> . Здесь имя_ресурса будет любым из ресурсов, упомянутых в приведенной выше таблице, например, макет, рисование и т. Д. Спецификатор будет указывать индивидуальную конфигурацию, для которой эти ресурсы должны использоваться. Вы можете проверить официальную документацию для получения полного списка классификаторов для различных типов ресурсов.

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

Создайте новый каталог в res / named в форме <имя_ресурса> — <config_qualifier> . Здесь имя_ресурса будет любым из ресурсов, упомянутых в приведенной выше таблице, например, макет, рисование и т. Д. Спецификатор будет указывать индивидуальную конфигурацию, для которой эти ресурсы должны использоваться. Вы можете проверить официальную документацию для получения полного списка классификаторов для различных типов ресурсов.

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

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

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java   
      res/
         drawable/  
            icon.png
            background.png
         drawable-hdpi/  
            icon.png
            background.png  
         layout/  
            activity_main.xml
            info.xml
         values/  
            strings.xml 

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

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java   
      res/
         drawable/  
            icon.png
            background.png
         drawable-hdpi/  
            icon.png
            background.png  
         layout/  
            activity_main.xml
            info.xml
         layout-ar/
            main.xml
         values/  
            strings.xml 

Доступ к ресурсам

Во время разработки приложения вам потребуется доступ к определенным ресурсам либо в вашем коде, либо в файлах XML макета. В следующем разделе объясняется, как получить доступ к вашим ресурсам в обоих сценариях —

Доступ к ресурсам в коде

Когда ваше приложение Android скомпилировано, генерируется класс R , который содержит идентификаторы ресурсов для всех ресурсов, доступных в вашем каталоге res / . Вы можете использовать класс R для доступа к этому ресурсу, используя подкаталог и имя ресурса или непосредственно идентификатор ресурса.

пример

Чтобы получить доступ к res / drawable / myimage.png и установить ImageView, вы будете использовать следующий код —

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

Здесь в первой строке кода используется R.id.myimageview для определения ImageView с идентификатором myimageview в файле макета. Вторая строка кода использует R.drawable.myimage для получения изображения с именем myimage, доступного в подкаталоге drawable в каталоге / res .

пример

Рассмотрим следующий пример, где res / values ​​/ strings.xml имеет следующее определение —

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string  name="hello">Hello, World!</string>
</resources>

Теперь вы можете установить текст для объекта TextView с идентификатором msg, используя идентификатор ресурса следующим образом:

TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);

пример

Рассмотрим макет res / layout / activity_main.xml со следующим определением —

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   android:orientation="vertical" >
   
   <TextView android:id="@+id/text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a TextView" />

   <Button android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a Button" />
      
</LinearLayout>

Этот код приложения загрузит этот макет для Activity в методе onCreate () следующим образом:

public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
}

Доступ к ресурсам в XML

Рассмотрим файл XML res / values ​​/ strings.xml следующего ресурса, который включает в себя ресурс цвета и ресурс строки:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <string name="hello">Hello!</string>
</resources>

Теперь вы можете использовать эти ресурсы в следующем файле макета, чтобы установить цвет текста и текстовую строку следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:textColor= "@color/opaque_red"
   android:text= "@string/hello" />

Теперь, если вы еще раз пройдете предыдущую главу, где я объяснил Hello World! Например, и я уверен, что вы будете лучше понимать все концепции, описанные в этой главе. Поэтому я настоятельно рекомендую проверить предыдущую главу для рабочего примера и проверить, как я использовал различные ресурсы на самом базовом уровне.