Latest web development tutorials

Android Ресурсы (Resources) управление

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

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


Организационные ресурсы в затмение

Вам нужно будет поместить в каждый ресурс под конкретного подкаталог вашего проекта Рез / каталога. Например, это простой проект на уровне файлов:

MyProject/
    src/  
        MyActivity.java  
    res/
        drawable/  
            icon.png  
        layout/  
            activity_main.xml
            info.xml
        values/  
            strings.xml 

Рез / содержит все ресурсы в различных подкаталогах. Вот ресурс картина, два ресурса макета и файл ресурс строки. В следующей таблице приведены подробно в проекте RES / ресурсах поддержки каталогов.

каталог Тип ресурса
Anim / XML-файл, который определяет свойство анимации. Они сохраняются в Рез / Anim / папке, по типу R.anim доступа
цвет / XML-файл, который определяет список состояний цвет. Они сохраняются в Рез / цвет / папке, по типу R.color доступа
рисуем / Файлы изображений, таких как PNG, JPG, GIF или XML-файл, скомпилирован как точечный рисунок, государственный список, формы, анимированных изображений. Они сохраняются в Рез / растяжимой / папке, по типу доступа R.drawable
макет / Пользовательский интерфейс XML-файл макета. Они сохраняются в Рез / макет / папку, по типу R.layout доступа
меню / Пользовательские меню приложения XML-файлы, такие как меню опций, контекстных меню, подменю. Они сохраняются в Рез / меню / папки, по типу доступа R.menu
сырой / Любые файлы сохраняются в их первоначальном виде. Нам нужно R.raw.filename с именем идентификатор ресурса, чтобы открыть необработанный файл путем вызова Resource.openRawResource ()
значения / XML-файлы содержат простые значения (например, строки, целые, цвет и т.д.). Вот некоторые ресурсы в рамках конвенций папки именования. arrays.xml от имени массива ресурсов, с помощью типа R.array доступа; integers.xml представляет собой целое число ресурсов доступны через R.integer класс; bools.xml ресурсов от имени логических значений, тип доступа R.bool; colors.xml ресурсы от имени цвета, доступ через класс R.color; dimens.xml представители размерности значений, через типа R.dimen доступа; strings.xml представляет собой строковый ресурс, через типа R.string доступа, представители styles.xml стиль ресурсов, по типу доступа R.style
XML / Называя Resources.getXML () для чтения произвольных файлов XML во время выполнения. Различные конфигурационные файлы могут быть сохранены среды выполнения здесь

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

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

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

  • Создание нового каталога Рез / вниз <resource_name> _ <config_qualifier> называются. Здесь resources_name любые ресурсы, указанные в таблице, такие как расположение и фотографии. классификатор будет определять, какие ресурсы использовать персонализированный конфигурацию. Вы можете увидеть официальную документацию для получения полного списка различных типов классификаторе ресурсов.
  • Сохранение альтернативных ресурсов в ответ на этот каталог. Эти файлы ресурсов должны показать имя файла ресурсов по умолчанию соответствует следующими примерами, однако, эти документы будут определять содержание замещения. Например: В то время как файл Изображенное назвать то же самое, но разрешение экрана разрешение изображения будет выше.

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

MyProject/
   src/
    main/
    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/
   src/
    main/
    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, + по имени подкласса ресурсов или непосредственно использовать идентификатор ресурса для доступа к ресурсам.

примеров

Рез Access / рисуем / myimage.png и установите его на ImageView, вы должны использовать следующий код:

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

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

примеров

Рассмотрим пример, в котором RES / значения / strings.xml определяется следующим образом:

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

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

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

примеров

Рассмотрим следующее определение макета RES / макет / 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>

Код приложения загружает раскладку активности, OnCreate () метод следующим образом:

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

Доступ в XML

Рассмотрим следующий XML-файл ресурсов RES / значения / strings.xml, который содержит цветной ресурс и ресурс строки -

<?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" />

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

<code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;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" /&gt;
</code>

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