Главная » Разработка для Android » Использование ресурсов

0

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

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

Применение ресурсов в коде программы

Доступ к ресурсам  из кода программы  происходит  с помощью стати- ческого класса R. Он генерируется на основе ваших внешних  ресурсов, создается во время компиляции проекта, содержит статические подклассы

для всех типов ресурсов, для которых был описан хотя бы один экзем- пляр. Например, стандартный новый проект включает подклассы R.string и R.drawable.

ВНИМАНИЕ

Если вы используете дополнение ADT в Eclipse, класс R создастся авто- матически при любых изменениях в файлах или каталогах с ресурсами. В ином случае при компилировании проекта вам понадобится утилита AAPT. Класс R генерируется автоматически; не пытайтесь править его вручную, потому как все изменения будут утеряны при повторной ге- нерации.

Каждый из подклассов внутри класса R предоставляет доступ к соответ- ствующим ресурсам с помощью свойств, имена которых совпадают с иден- тификаторами, например R.string.app_name или R.drawable.icon. Значения этих свойств ссылаются на соответствующие пути в таблице ресурсов, а не на их экземпляры.

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

// Загрузка ресурса. setContentView(R.layout.main);

// Отображение всплывающего диалогового окна, которое

// выводит строковой ресурс в качестве сообщения об ошибке. Toast.makeText(this, R.string.app_error, Toast.LENGTH_LONG).show();

Если вам нужен непосредственно экземпляр ресурса, используйте вспо- могательные методы, чтобы извлечь его из таблицы. Таблица ресурсов пред- ставлена в виде объекта класса Resources.

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

Resources myResources = getResources();

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

Resources myResources = getResources();

CharSequence styledText = myResources.getText(R.string.stop_message);

Drawable icon = myResources.getDrawable(R.drawable.app_icon);

int opaqueBlue = myResources.getColor(R.color.opaque_blue);

float borderWidth = myResources.getDimension(R.dimen.standard_border); Animation tranOut;

tranOut = AnimationUtils.loadAnimation(this, R.anim.spin_shrink_fade);

String[] stringArray;

stringArray = myResources.getStringArray(R.array.string_array);

int[] intArray = myResources.getIntArray(R.array.integer_array);

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

AnimationDrawable rocket;

rocket = (AnimationDrawable)myResources.getDrawable(R.drawable.frame_by_

frame);

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

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