Главная » Разработка для Android » Создание ресурсов для разных языковых настроек и аппаратных конфигураций

0

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

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

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

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

Project/

res/

values/

strings.xml values-fr/

strings.xml values-fr-rCA/

strings.xml

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

• Мобильный код страны и код мобильного оператора (MCC/MNC).

Информация о стране и опционально о мобильной  сети привязана

к SIM-карте устройства. MCC состоит из символов mcc, за которыми следует трехзначный код страны. При желании можете добавить MNC, используя символы mnc и двузначный код мобильной сети (например, mcc234-mnc20 или mcc310).  Список  кодов MCC/MNC предлагает Википедия по адресу http://en.wikipedia.org/wiki/Mobile_Network_Code.

• Язык и регион. Язык указывается с помощью языкового кода в фор- мате ISO  639-1, состоящего  из двух символов  в нижнем  регистре. В случае необходимости за ним может следовать обозначение региона в виде буквы r и двухсимвольного кода в формате ISO 3166-1-alpha-2, записанного в верхнем регистре (например, en, en-rUS  или en-rGB).

• Размер  экрана. Может  иметь одно из следующих  значений:  small (меньше,  чем HVGA),  medium (HVGA или меньше, чем VGA)  или large (VGA или больше).

• Высота и ширина экрана. Указывайте значения long или notlong, если хотите создать ресурсы, предназначенные специально для широкофор- матных дисплеев (например, long для WVGA, notlong  для QVGA).

• Ориентация экрана в пространстве. Поддерживаются режимы port (портретный), land (альбомный) и square (если высота экрана равна ширине).

• Плотность пикселов на экране. Плотность  пикселов,  измеряемая в точках на дюйм (dpi).  Для  экранов  с низкой  (120  dpi),  средней (160 dpi) и высокой  (240 dpi) плотностью  рекомендуется использо- вать значения ldpi, mdpi и hdpi соответственно. Вы можете указывать значение nodpi для растровых ресурсов, которые не должны масшта- бироваться,  чтобы поддерживать конкретную  плотность  пикселов. При выборе именно  этого типа ресурсов  (в отличие  от остальных) система не требует точного совпадения.  Подбирая  подходящий ка- талог, Android остановится на спецификаторе, который точнее всего описывает плотность пикселов экрана устройства, и откорректирует масштаб результирующего объекта Drawable  соответствующим об- разом.

• Тип сенсорного экрана: notouch,  stylus или finger.

• Наличие клавиатуры: keysexposed, keyshidden или keyssoft.

• Тип ввода, поддерживаемый клавиатурой: nokeys, qwerty или 12key.

• Способ  навигации по пользовательскому интерфейсу:  nonav, dpad, trackball или wheel.

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

Далее показаны корректные  и некорректные имена каталогов для аль- тернативных ресурсов Drawable:

корректные:

§ drawable-en-rUS;

§ drawable-en-keyshidden;

§ drawable-long-land-notouch-nokeys;

некорректные:

§ drawable-rUS-en (не в том порядке);

§ drawable-rUS-rUK (несколько значений  для одного специфи- катора).

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

ПРИМЕЧАНИЕ

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

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

По теме:

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