Главная » Разработка для Android » УПРАВЛЕНИЕ РЕСУРСАМИ ПРИЛОЖЕНИЯ

0

Вопросы, рассматриваемые в этом часе:

•             использование ресурсов приложения и системные ресурсы;

•             работа с простыми ресурсами;

•             работа с рисунками;

•             работа с макетами;

•             работа с файлами;

•             работа с другими типами ресурсов.

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

РЕСУРСЫ ПРИЛОЖЕНИЯ И СИСТЕМНЫЕ РЕСУРСЫ

Ресурсы бывают двух типов: ресурсы приложения и системные ресурсы. Ресурсы приложения определяются разработчиками в файлах проектов Android отдельно для каждого приложения. Системные ресурсы — это общие ресурсы, определенные платформой Android, они доступны для всех приложений через Android SDK.

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

Ресурсы приложения

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

ХРАНЕНИЕ РЕСУРСОВ ПРИЛОЖЕНИЯ

В процессе программирования данные, используемые приложением, обычно представлены и качестве ресурсов. Объединение ресурсом и компиляция в единый пакет приложения имеет рад преимуществ:

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

•            Ресурсы сортируются по типу и поэтому не повторяются.

•            Ресурсы расположены удобно для обеспечения гибкости настройки телефона.

•            Процесс локализации и интернационализации приложения очень прост.

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

В приложении Android может использоваться множество различных видов ресурсов. Ниже приведен список некоторых из наиболее распространенных типов:

•             строки, цвета и размерности;

•             графические файлы рисунков;

•             файлы макета;

•             подключаемые файлы всех типов.

Все ресурсы распределяются по специальным папкам проекта, а тип ресурса определяется XML-тегами. Некоторые папки, такие как /res/drawable, /res/layout и /res/values, создаются автоматически для каждого нового проекта Android, кроме них разработчик может также добавить свои папки.

К файлам ресурсов, хранящимся в папке /res, применяются следующие требования:

•             Символы имени файла ресурса должны быть в нижнем регистре.

•             Имя файла ресурса может содержать только латинские буквы, числа, символ подчеркивания и точки.

•            Имена файлов ресурса (и XML-атрибуты name) должны быть уникальными.

ЗНАЕТЕ ЛИ ВЫ, ЧТО… ___________________________________________________

При компилировании ресурсов, имена соответствующих им переменных берутся из имени файла. Например, графическому файлу mypic.jpg, сохраненному в папке /drawable, соответствует ресурс @drawable/mypic. Поэтому будьте внимательны во время присвоения имен файлам ресурсов.

Рис. 4.1. В приложениях Android могут использоваться различные типы ресурсов

Более подробную информацию об именовании папок и файлов проекта вы можете найти в документации по Android.

ОБРАЩЕНИЕ К РЕСУРСАМ ПРИЛОЖЕНИЯ

Все ресурсы приложения сохраняются в папке /res проекта и компилируются в проект во время сборки. Ресурсы приложения могут использоваться программно, и к ним может происходить обращение из других ресурсов приложения.

ВНИМАНИЕ! ___________________________________________________________

Каждый раз, когда вы сохраняете файл ресурса (те. копируйте файл ресурса, например мафический файл, в соответствующую папку) в Eclipse, файл класса R. java пере­компилируется для учета изменений. Если имя какого-либо файла не соответствует принятым соглашениям, компилятор сообщит об ошибке на панели Problems (Про­блемы) в Eclipse.

К ресурсам приложения можно получить доступ программно через сгенерированный класс R.iava. Чтобы обратиться к ресурсу, вы должны получить доступ к объекту приложения Resources с помощью метода getResources () и затем сделать вызов этого метода, основанный на типе ресурса, который вы хотите получить.

Например, чтобы получить строковый ресурс hello, определенный в файле strings.xml, используется следующий вызов метода:

String greeting=getResources {) .getString (R. string.hello) ;

Более подробно о получении доступа к различным типам ресурсов мы поговорим чуть позже.

Для обращения к ресурсу приложения из другого скомпилированного ресурса, такого как файл макета, используется следующий синтаксис:

@тип_ресурса/имя_ресурса

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

@string/hello

Более подробно об обращении к ресурсам мы поговорим в этом часе далее, когда речь пойдет о файлах макета.

Работа с системными ресурсами

Кроме ресурсов приложения, разработчики могут получать доступ к системным ресурсам Android. У вас есть доступ к большинству системных ресурсов, распределяемых между несколькими приложениями, что поможет создать общий стиль и восприятие. Например, класс системных строковых ресурсов Android (android.R.string) содержит стандартные слова, такие как OK, Cancel (Отмена), Yes (Да), No (Нет). Cut (Вырезать), Copy (Копировать), Paste (Вставить).

КСТАТИ ________________________________________________________________

Дли поддержания малого объема вашего приложения и эффективного использования ресурсов перед добавлением новых ресурсов в проект проверяйте системные ресурсы — возможно, нужный вам ресурс, уже существует.

Все системные ресурсы находятся в пакете android. В нем содержатся классы для каждого из основных типов ресурсов.

Например, класс android.R.string содержит строковые системные ресурсы. Чтобы получить системный строковый ресурс со значением ok, например, сначала вы должны воспользоваться статичным методом getSystem() класса Resources, обеспечивающим доступ к глобальному системному объекту Resource, а затем методом getString(), указав полное имя строкового ресурса, например:

String confirm = Resources.getSystem(). getString(android.R.string.ok);

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

@android:[TMn_pecypca]/[MMH_pecypca]

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

@android:string/ok

РАБОТА С ПРОСТЫМИ РЕСУРСАМИ

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

КСТАТИ ________________________________________________________________

Управление ресурсами строк, цвета и размерностей производится в редакторе ресурсов Eclipse, но вы можете отредактировать XMl-файл в любом текстовом редакторе.

Работа со строками

Строковые ресурсы обычно используются тогда, когда в вашем приложении требуется произвести вывод какого-либо текста на экран. Строковые ресурсы обозначаются тегом <string> и хранятся в файле ресурсов /res/values/ strings.xml.

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

<?xml version=”1.0″ encoding=”utf-8″?> <resources>

<string name=”app_name”>Name this App</string> <string name=”hello”>Hello</string> </resources>

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

КСТАТИ _____________________________________________________________

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

Таблица 4.1

Примеры форматирования строковых ресурсов

<tr >

Значение строкового ресурса

Результат

<tr >

Привет, мир

Привет, мир

<tr >

«Привет, мир»

Привет, мир

<tr >

\’Привет, мир\’

‘Привет, мир’

<tr >

Он сказал \»Нет\»

Он сказал «Нет»

Существует несколько способов доступа к строковому ресурсу на программном уровне. Самый простой заключается в использовании метода getstring();

String greeting = getResources().getString(R.string.hello);

Работа с цветами

Вы можете применять цветовые ресурсы к различным элементам пользовательского интерфейса. Цветовые ресурсы обозначаются тегом <color> в файле /res/values/co(ors.xml. Этот XML-файл ресурса не создается автоматически, поэтому при необходимости должен быть создан вручную.

КСТАТИ

Вы можете добавить новый XML-файл, такой как этот, в специальном диалоговом окне, которое открывается командой File => New => Android XML File (Файл => Новый => XML-файл Android/ Таким образом, предполагаемая папка и тип файла ресурса для проекта Android, будут заданы автоматически.

Ниже приведен пример цветового файла ресурса:

<?xml version=”1.0″ encoding=”utf-8″?> <resources>

<color name=”backgrounc_color”>#006400</color> <color name=”app_text_color”>#FFE4C4</color> </resources>

Система Android поддерживает 12-разрядные и 24-разрядные цвета в цветовой модели RGB. В табл. 4.2 представлен список форматов, поддерживаемых платформой Android.

Таблица 4.2

Цветовые форматы, поддерживаемые платформой Android

<tr >

Формат

Описание

Пример

<tr >

#RGB

12-разрядный цвет

#00F (синий)

<tr >

#ARGB

12-разрядный цвет с поддержкой

#800F (синий, прозрачность

<tr >

 

прозрачности

50%)

<td > <tr >

#RRGGBB

24-разрядный цвет

#FF00FF (пурпурный)

<td > <tr >

#AARRGGBB

24-разрядный цвет с поддержкой

#80FF00FF (пурпурный,

<td > <tr >

прозрачности

прозрачность 50%)

<td >

В следующем фрагменте кода происходит получение цветового ресурса

app_text_color методом getColor () :

int textColor = getResources().getColor(R.color.app text color);

ЗНАЕТЕ ЛИ ВЫ, ЧТО… __________________________________________________

Единицы измерения размерностей, поддерживаемые Android

Существует множество способов подбора цвета. Например, на сайте html-color- codes.info вы найдете простую таблицу цветов, щелкая по ячейкам которой вы можете выбрать подходящий цвет.

Работа с размерностями

Размер элементов пользовательского интерфейса, таких как кнопки или элемент Textview, определяется различными видами размерностей. Ресурсы размерности обозначаются тегом <dimen> в файле ресурса /res/values/ dimens.xml. Этот XML-файл не создается автоматически и должен быть создан вручную.

Пример файла ресурса размерности:

<?xml version=”1.0″ encoding=”utf-8″?> <resources>

<dimen name=”thumbDim”>10 0px</dimen> </resources>

Для каждого значения ресурса размерности должна быть указана единица измерения. В табл. 4.3 перечислены единицы измерения, поддерживаемые платформой Android.

Таблица 4.3

<tr >

Единица измерения

Описание

Условное обозначение

<tr >

Пиксели

Экранные пиксели

px

<tr >

Дюймы

Физическая величина

in

<tr >

Миллиметры

Физическая величина

mm

<tr >

Точки

Применяется в основном для измерения шрифтов

pt

<tr >

Пиксели (независимо от плотности)

Пиксели относительно плотности 160 dpi

dp

<tr >

Пиксели (независимо от масштаба)

Применяются для масшта­бирования шрифтов

sp

В следующем фрагменте кода происходит получение ресурса размерности методом getDimension():

Графические форматы изображения, поддерживаемые платформой Android

float thumbnailDim = getResources().getDimension(R.dimen.thumbDim);

РАБОТА С РЕСУРСАМИ РИСУНКОВ

Ресурсы рисунков, такие как файлы изображений, хранятся в папке /res/ drawable проекта. Во время сборки эти ресурсы будут скомпилированы в пакет приложения, чтобы быть доступными приложению.

КСТАТИ

Вы можете перетаскивать файлы изображений непосредственно в папку /res/ drawable через панель Project Explorer (Проводник проектов) в Eclipse. Не забывайте, что имена файлов должны быть в нижнем регистре и должны содержать только латинские буквы, числа и символы подчеркивания.

Работа с изображениями

Наиболее распространенные графические ресурсы, используемые в приложениях, это рас­тровые изображения, такие как PNG и JPG-файлы. Эти файлы часто используются в качестве значков приложений и кнопок, а также элементов пользовательского интерфейса.

Как вы можете видеть в табл. 4.4, Android поддерживает несколько распространенных форматов изображения.

Таблица 4.4

<tr >

Формат изображения

Описание

Расширение файла

<tr >

PNG

Рекомендуемый формат

png

<tr >

-LIN VJ

(без потерь)

 

<tr >

PNG с поддержкой растя­

Рекомендуемый формат

.9.png

<tr >

гивания NinePatch

(без потерь)

 

<tr >

JPEG

Допустимый формат (с по-

jpg

<tr >

терями)

 

<tr >

GIF

Не рекомендуется к ис-

gif

<tr >

пользованию

 

ИСПОЛЬЗОВАНИЕ РЕСУРСОВ ИЗОБРАЖЕНИЯ В ПРОГРАММНОМ КОДЕ

Ресурсы изображений содержатся в классе BitmapDrawable. Чтобы получить доступ к графическому файлу ресурса, например /res/drawable/logo.png, используйте метод

getDrawable ():

BitmapDrawable logoBitmap =

(BitmapDrawable)getResources().getDrawable(R.drawable.logo);

Однако в большинстве случаев нет необходимости загружать графику напрямую. Вместо этого вы можете использовать идентификатор ресурса в качестве атрибута элемента пользовательского интерфейса, например ImageView. В следующем фрагменте кода файл logo.png устанавливается и загружается в элемент интерфейса ImageView с именем LogolmageView, который должен быть определен в макете:

ImageView logoView = (ImageView)findViewByld(R.id.LogolmageView); logoView.setImageResource(R.drawable.logo);

Работа с другими типами рисунков

В дополнение к графическим файлам вы можете также создать специальные XML-файлы для описания других подклассов Drawable, таких как ShapeDrawable. Вы можете использовать класс ShapeDrawable для описания различных геометрических фигур, таких как прямоугольники и овалы. Более подробную информацию вы можете найти в документации Android, пакет android. graphics . drawable.

РАБОТА С МАКЕТАМИ

Большинство элементов пользовательского интерфейса приложений Android описывается специальными XML-файлами, называемыми файлами макета. Файлы ресурсов макетов находятся в папке /res/layout.

Также, как и другие ресурсы, файлы макета компилируются вместе с приложением.

ЗНАЕТЕ ЛИ ВЫ, ЧТО. ___________________________________________________

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

Далее приведен пример фала ресурса макета:

<?xml version=”1.0″ encoding=”utf-8″?> <LinearLayout

xmlns:android=http://schemas.android.com/apk/res/android

android:orientation=”vertical”

android:layout width=”fill parent”

android:layout height=”fill parent”>

<TextView

android:layout width=”fill parent” android:layout height=”wrap content”

android:text=”@string/hello” /> </LinearLayout>

Возможно, вы уже узнали код этого файла — это файл макета main.xml по умолчанию, который автоматически создается для каждого нового приложения Android. Этот файл макета описывает пользовательский интерфейс деятельности в пределах приложения. Он содержит элемент LinearLayout, используемый в качестве контейнера для всех элементов пользовательского интерфейса — в нашем случае элемента TextView.

В этом примере файл макета main.xml содержит ссылку на другой ресурс — строковый — @string/hello, который определен в файле ресурсов strings.xml.

ЗНАЕТЕ ЛИ ВЫ, ЧТО… __________________________________________________

Макеты могут также создаваться, редактироваться и использоваться во время работы приложения. Однако в большинстве случаев XML-файлы макетов значительно упро­щают код и его использование.

Существует два способа форматирования ресурсов макета. Самый простой способ заключается в использовании редактора ресурсов Eclipse для разработки и предварительного просмотра файлов макета. Вы также можете редактировать XML-файлы макета в любом текстовом редакторе.

Проектирование макетов в редакторе ресурсов

Вы можете проектировать и просматривать макет в Eclipse с помощью редактора ресурсов макета (см. рис. 4.2). Если выбрать файл проекта /res/ layout/main.xml в Eclipse, вы увидите панель Layout (Макет), на которой в режиме предварительного просмотра отображается интерфейс, сформированный этим макетом. Добавлять и удалять элементы макета вы можете на панели Outline (Структура). Свойства и атрибуты для каждого элемента задаются на панели Properties (Свойства).

Рис. 4.2. Макет в редакторе ресурсов Eclipse

Как большинство других инструментов проектировки интерфейса, редактор ресурсов макета подходит для редактирования простого макета. Однако редактор ресурсов макета поддерживает элементы пользовательского интерфейса не полностью. Для создания более сложных элементов придется редактировать XML-файл вручную. После добавления новых элементов интерфейса в макет вы можете потерять возможность предварительного просмотра. Однако вы по-прежнему можете видеть макет интерфейса в эмуляторе или на мобильном телефоне.

Помните, что одна из главных задач разработчика — корректное отображение приложения на мобильном телефоне, а не в редакторе макета Eclipse.

Проектировка макетов в коде XML

Вы можете редактировать код необработанного XML-файла макета вручную. Если вы выберете файл /res/layout/main.xml и перейдете на вкладку main.xml, то увидите XML- код файла макета.

КСТАТИ _______________________________________________________________

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

Выполните самостоятельно

Ознакомьтесь с редактором ресурсов макета Eclipse:

1. Откройте проект Droid 1, созданный вами ранее.

2.                     Найдите файл макета /res/layout/main.xml и откройте его в редакторе ресурсов макета Eclipse двойным нажатием.

3.                     Переключитесь на вкладку Layout (Макет), на ней вы увидите макет главного экрана в режиме предварительного просмотра.

4.                     Перейдите на панель Outline (Структура). Здесь представлена иерархия XML- файла макета. Сейчас вы можете видеть элемент интерфейса LinearLayout, который содержит в себе элемент интерфейса TextView.

5.                     Выберите элемент интерфейса TextView на панели Outline (Структура). Теперь этот элемент интерфейса в предварительном просмотре макета выделен цветом.

6.                     Перейдите на вкладку Properties (Свойства). Здесь приведены все свойства и атрибуты элемента пользовательского интерфейса TextView, которые вы можете конфигурировать. Найдите в этом списке свойство Text и обратите внимание, что его значением является строковый ресурс @string/hello.

7.                     Щелкните по значению @string/hello этого свойства на панели Properties (Свойства), чтобы изменить его. Каждый раз, когда вы меняете значение, обращайте также внимание на изменения в предварительном просмотре макета. Вы можете ввести строку непосредственно, указать другой строковый ресурс (например, @string/app_name) или, щелкнув по кнопке с многоточием, выбрать подходящий ресурс из списка доступных для вашего приложения.

8.                     Перейдите на вкладку main.xml и обратите внимание на XML-код, Если вы со­храните и запустите свой проект в эмуляторе, то все изменения, которые были видны в предварительном просмотре, будут применены в эмуляторе.

Не бойтесь экспериментировать с Eclipse. Вы можете добавить несколько новых элементов интерфейса, таких как ImageView или еще один элемент TextView в ваш макет. Проектировку макетов мы рассмотрим более детально в этой книге позже.

ЗНАЕТЕ ЛИ ВЫ, ЧТО… __________________________________________________

Наиболее важные панели в редакторе ресурсов макета — Outline (Структура) и Properties (Свойства). Если разместить панель Properties (Свойства) в верхнем правом углу перспективы Java, то вы можете одновременно видеть основной редактор ресур­сов макета в середине экрана, панель Project Explorer (Проводник проекта) слева, панель Properties (Свойства) справа (чтобы полностью использовать вертикальное пространство), а панель Outline (Структура) — внизу (на ней обычно меньше инфор­мации, чем на панели Properties (Свойства)).

ИСПОЛЬЗОВАНИЕ РЕСУРСОВ МАКЕТА В ПРОГРАММНОМ КОДЕ

Для доступа к макету программно вы можете воспользоваться классом Layoutlnflater, чтобы расширить файл макета к объекту View, как в еле дующем примере:

Layoutlnflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.main, null);

В большинстве случаев нет необходимости загружать весь макет, так как нам нужны лишь отдельные элементы, такие как TextView в файле макета main.xml. Содержание макета, независимо от того, какой это элемент интерфейса (Button, ImageView или TextView), происходит из класса View.

Файл макета по умолчанию, созданный для проекта Droidl, содержит элемент интерфейса TextView. Однако элемент интерфейса TextView по умолчанию не имеет атрибута name. Самый простой способ получить доступ к необходимому элементу интерфейса View — по его имени, полому вам необходимо задать атрибут id элементу интерфейса TextView в редакторе ресурсов макета. Назовите его @ + id/TextView01.

Ниже приведен пример доступа к объекту TextView с именем TextView01, который был определен в файле ресурса макета:

TextView txt = (TextView)findViewById(R.id.TextViewOl);

РАБОТА С ФАЙЛАМИ

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

Работа с XML-файлами

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

Структура XML-файла может быть любой — на ваше усмотрение. Множество утилит XML (табл. 4.5) входят в состав платформы Android.

Таблица 4.5

Пакеты утилит XML

<tr >

Пакет

Описание

<tr >

android.sax*

Средство для написания стандартных обработчиков SAX

<tr >

android.util.Xml.*

Утилиты XML, включая XMLPullParser

<tr >

org.xml.sax.*

Основные возможности SAX (см. www.saxproject.org)

<tr >

javax.xml.*

SAX и ограничения DOM с поддержкой ядра 2-го уровня

<tr >

org.w3c.dom

Интерфейсы для DOM, ядро 2-го уровня

<tr >

org.xmlpull.*

Интерфейсы XmlPullParser и XMLSerializer (см. www.xmlpull.org)

Для доступа к XML-файлу /res/xml/default_values.xml программно вы можете воспользо­ваться методом getXml () :

XmlResourceParser defaultDataConfig = getResources().getXml(R.xml.default_values);

Работа с подключаемыми файлами

В приложениях Android в качестве ресурсов могут использоваться подключаемые необработанные файлы (raw files). Подключаемыми могут быть аудио- и видеофайлы, а также множество других форматов. Все подключаемые файлы ресурсов должны содержаться в папке /res/raw.

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

Для доступа к подключаемым файлам ресурсов программно можете воспользоваться методом openRawResource () . Например, в следующем фрагменте кода создается объект inputstream для доступа к файлу ресурса /res / raw/ file1.txt:

InputStream iFile = getResources().openRawResource(R.raw.filel);

КСТАТИ _______________________________________________________________

Каждому подключаемому файлу ресурса должно быть присвоено уникальное имя, ис­ключая суффикс имени файла, например одновременное использование имен файлов file1.txt и file1.dat недопустимо.

ЗНАЕТЕ ЛИ ВЫ, ЧТО… ___________________________________________________

Бывают случаи, когда вам может быть необходимо использовать файлы в приложении, но при этом не компилировать их вместе с остальными ресурсами. Для этой цели в Android предусмотрена специальная папка проекта — /assets. Эта папка находится в той же самой папке, что и /res. Все файлы, хранящиеся в этой папке, представлены в бинарном виде, с пакетом установки приложения, и они не компилируются. Некомпилированые файлы, называемые активами приложения, не доступны методом getResources () . В этом случае для доступа к файлам а папке /assets используется AssetManager.

РАБОТА С ДРУГИМИ ТИПАМИ РЕСУРСОВ

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

•             строковые массивы;

•             меню;

•             анимации;

•             геометрические фигуры;

•             стили и темы;

•             собственные элементы пользовательского интерфейса.

Если вы все же планируете использовать эти типы ресурсов, ознакомьтесь с информацией по данной теме в документации Android.

ИТОГИ

В приложениях Android может использоваться множество различных типов ресурсов, включая узкоспециальные типы ресурсов и системные ресурсы. Редактор ресурсов Eclipse упрощает управление ресурсами, но код XML- файлов ресурсов должен редактироваться вручную. После определения к ресурсам можно получить доступ непосредственно или по имени из других ресурсов. Строковые ресурсы, ресурсы цвета и размерности хранятся в специальных XML-файлах, а графические изображения хранятся в виде отдельных файлов. Пользовательские интерфейсы определяются XML- файлами макетов. Подключаемые файлы, содержащие данные в различных форматах, также могут использованы в качестве ресурсов. Кроме этого, приложения могут включать нескомпилированные бинарные файлы, называемые активами приложения.

ВОПРОСЫ И ОТВЕТЫ

Вопрос. Могу ли я узнать, что представляет из себя определенный системный ресурс по его имени?

Ответ. Не всегда. В официальной документации Android нет подробного описания всех системных ресурсов. Если вы не уверены в том, что представляет из себя тот или иной системный ресурс или для чего он служит, можете поэкспериментировать с ним самостоятельно и попробовать выяснить его значение. Описание системных ресурсов Android можно найти в папке /toots/lib/res/default.

Вопрос. Должны ли строковые ресурсы, ресурсы цвета и размерности хранится в отдельных XML-файлах?

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

Вопрос. Какой XML-парсер лучше всего использовать?

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

Вопрос. В чем различие между активами приложения и ресурсами проекта?

Ответ. Ресурсы проекта компилируются в приложение и могут быть доступны метолом getResources() . Активы приложения используются менее часто для хранения скомпилированных файлов в файле пакета приложения, который устанавливается на мобильный телефон. Доступ к активам выполняется методом getAssets () .

ПРАКТИКУМ Контрольные вопросы

1.                    Какую разрядность цвета поддерживают цветовые ресурсы?

A.                                 12-разрядный цвет.

B.                                 24-разрядный цвет.

C.                                64-разрядный цвет.

2.                     Вы можете использовать в качестве ресурсов файлы любого формата. Правда ли это?

3.                     Какие графические форматы поддерживаются и рекомендуются к ис­пользованию в Android?

A.                                               JPG.

B.                                                PNG.

C.                                                GIF.

D.                               PNG с поддержкой NinePatch-растягивания.

4.                      Символы имен файлов ресурсов могут быть в верхнем регистре. Правда ли это?

5.                     Имя ресурса может быть произвольным. Правда ли это?

Ответы

Правильные ответы: А и Б. Поддерживается как 12-разрялные, так и 24-разрядные цветовые форматы.

Правда. Для этого вам необходимо интегрировать файл ресурса в качестве подключаемого.

Правильные ответы: Б и Г. Все четыре формата поддерживаются, но предпочтительнее ис­пользовать графические PNG-файлы, включая файлы с поддержкой NinePatch- растягивания, потому что сжатие информации в них происходит без потерь. Внутренняя компрессия в файлах JPG происходит с потерями, а формат GIF считается устаревшим.

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

Нет, это не так. Имена ресурсов влияют на имена переменных в коде, используемых для ссылки на ресурсы.

 

Литература: Дэрси JI., Android за 24 часа. Программирование приложений под операционную систему Google/ ДэрсиЛ., КондерШ. — М.: Рид Групп, 2011. — 464 с. — (Профессиональные компьютерные книги). ISBN 978-5-4252-0318-2

По теме:

  • Комментарии