Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка мобильных приложений в среде Android Studio. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
3.1. Использование ресурсов
51
3.1. Использование ресурсов
3.1.1. Ссылка на ресурсы в коде приложения
Каждый тип ресурса имеет ссылку на одно из пространств (внутренних классов), определенных в файле R.java и имеющих соответствующие им типы в xml:
R.drawable (ему соответствует тип в xml drawable); R.id (id); R.layout (layout); R.string (string); R.attr (attr); R.plural (plurals); R.array (string-array).
Например, для установки ресурса в качестве графического интерфейса в коде Activity в методе onCreate() используется метод setContentView(R.layou t.main_activity), в котором через R.layout.main_activity имеется ссылка на ресурс main_activity.xml типа layout.
Таким же способом возможно получить и другие ресурсы, к примеру, строку из файла res/values/strings.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
Для того чтобы получить ссылку на этот ресурс в коде, можно использовать выражение R.string.app_name.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView myTextView = findViewById(R.id.my_text_view);
myTextView.setText(R.string.app_name);
}
3. Работа с ресурсами
52
3.1.2. Ссылка на ресурсы в XML-файле
Назначить значения некоторым атрибутам для элементов в файлах разметки можно в файлах ресурсов. Например, назначить атрибут Text для TextView можно следующим образом:
<TextView
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name" />
3.2. Альтернативные ресурсы
Для поддержки множества конфигураций устройств почти каждое приложение должно предоставлять альтернативные ресурсы, например, изображения для устройств с разной плотностью экрана, или альтернативные ресурсы для разных языков. Для этого в Android существуют квалификаторы конфигурации.
Для того чтобы указать альтернативы для конкретных конфигураций набора ресурсов, необходимо выполнить следующие действия.
1. Создать новый каталог в каталоге res/ с именем следующего вида:
«имя_ресурса»-«квалификатор_конфигурации».
Можно добавлять несколько квалификаторов, разделив их знаком дефиса.
При добавлении нескольких квалификаторов необходимо располагать их в том же порядке, в котором они перечислены в табл. 2. Если порядок квалификаторов нарушен, ресурсы игнорируются [28].
2. Сохранить соответствующие альтернативные ресурсы в создан- ном каталоге. Файлы ресурсов должны иметь имена, точно совпадающие с именами файлов ресурсов по умолчанию.
res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png
3.2. Альтернативные ресурсы
53
В табл. 2 представлены квалификаторы конфигурации.
Таблица 2
Квалификаторы конфигурации
Тип
квалификатора
Пример
Описание
MCC и MNC
mcc310
mcc310-mnc004
mcc208-mnc00
и т. д.
Код страны для мобильной связи (MCC), за которым может следовать код сети мобильной связи (MNC) из SIM-карты устройства. Например, mcc310 – код США для любого оставщика услуг, mcc310-mnc004 – код США для Verizon и mcc208-mnc00 – код Фран­ции для Orange. Если в устройстве используется радиосвязь (телефон GSM), значения MCC и MNC добываются из SIM­карты. Можно также использовать только код MCC (напри­мер, для включения в приложении разрешенных в стране ресурсов)
Язык и регион
en
fr
en-rUS
fr-rFR
fr-rCA
и т. д.
Язык задается двухбуквенным кодом языка ISO 639- 1, к которому можно добавить двухбуквенный код региона ISO 3166-1-alpha-2 (которому предше­ствует строчная буква "r"). Коды не зависят от регистра; префикс r служит для обозначения кода региона. Нельзя указывать только код региона. Он может измениться за время работы приложения, если пользователь изменяет свой язык в системных настройках.
Направле-
ние макета
ldrtl ldltr
Направление макета для приложения. Квалификатор ldrtl означает «направление макета справа налево». Квалификатор ldltr означает «направление макета слева направо» и используется по умолчанию. Эти квалификаторы можно применять к любым ре­сурсам, таким как макеты, графические элементы или значения. Например, если требуется предоставить специаль­ный макет для арабского языка и общий макет для других языков, использующих написание «справа налево» (таких как фарси или иврит), используйте следующий код:
3. Работа с ресурсами
54
Продолжение табл. 2
Тип
квалификатора
Пример
Описание
res/ layout/ main.xml (Default layout) layout-ar/ main.xml (Specific layout for Arabic) layout-ldrtl/ main.xml (Any “right-to-left” language, except for Arabic, because the “ar” language qualifier has a higher precedence.)
Примечание. Чтобы включить в приложение функ­цию макета «справа налево», необходимо устано­вить для параметра supportsRtlзначение «true» и для параметра targetSdkVersion значение 17 или больше. Добавлено в API уровня 17.
smallestWidth
sw<N>dp
sw320dp sw600dp sw720dp
и т. Д.
Основной размер экрана, указывающий минималь­ный размер доступной области экрана. Точнее гово­ря, минимальная ширина устройства – это наимень­ший из двух размеров экрана: высоты и ширины (можно также называть ее «меньшей стороной» экрана). Этот квалификатор позволяет гарантиро­вать, что независимо от текущей ориентации экрана приложение имеет доступную ширину пользователь­ского интерфейса. Например, если для макета требуется, чтобы мини­мальный размер области экрана всегда был не менее 600 пикселов, можно использовать этот квалифика­тор для создания ресурсов этого макета, res/layout­sw600dp/. Система будет использовать эти ресурсы только в том случае, если минимальный размер до­ступной области экрана составляет не менее 600 пикселов, независимо от воспринимаемой поль­зователем высоты или ширины. Здесь приведены некоторые значения, которые мож­но использовать для экранов обычных размеров:
3.2. Альтернативные ресурсы
55
Продолжение табл. 2
Тип
квалификатора
Пример
Описание
480x800 hdpi (смартфон высокой плотности), 480 для таких экранов, как 480x800 mdpi, (планшет/смартфон), 600 для таких экранов, как 600x1024 mdpi (планшет с диагональю 7”), 720 для таких экранов, как 720x1280 mdpi (планшет с диагональю 10”).
Доступная
ширина
w<N>dp
w720dp
w1024dp
и т. д.
Указывает минимальную доступную ширину экрана в единицах dp, для которой должен использоваться ресурс, заданный значением <N>. Это значение конфигурации будет изменяться в соответствии с текущей фактической шириной при изменении альбомной/книжной ориентации.
Доступная
высота
h<N>dp
h720dp
h1024dp
и т. д.
Указывает минимальную доступную высоту экрана в пикселах, для которой должен использоваться ресурс, заданный значением <N>. Это значение конфигурации будет изменяться в соответствии с текущей фактической высотой при изменении альбомной/книжной ориентации.
Размер экрана
small
normal
large
xlarge
small: Экраны, подобные по размеру экрану QVGA
низкой плотности. Минимальный размер макета для маленького экрана составляет приблизительно
320x426 пикселов. Примерами являются экраны QVGA низкой плотности и VGA высокой плотности. normal: экраны, подобные по размеру экрану HVGA
средней плотности. Минимальный размер макета для нормального экрана составляет приблизительно 320x470 пикселов. Примерами таких экранов являются экраны WQVGA низкой плотности, HVGA средней плотности, WVGA высокой плотности. large: экраны, подобные по размеру экрану VGA средней плотности. Минимальный размер макета для большого экрана составляет приблизительно 480x640 пикселов. Примерами являются экраны VGA и WVGA средней плотности.
3. Работа с ресурсами
56
Продолжение табл. 2
Тип
квалификатора
Пример
Описание
xlarge: экраны значительно крупнее обычного экрана HVGA средней плотности. Минимальный размер
макета для очень большого экрана составляет при­близительно 720x960 пикселов. В большинстве слу­чаев устройства с очень большими экранами слиш­ком велики для карманного использования и, скорее всего, относятся к планшетам. Добавлено в API уровня 9. Примечание. Использование квалификатора размера не подразумевает, что ресурсы предназначе­ны только для экранов этого размера. Если не преду­смотрены альтернативные ресурсы с квалификато­рами, лучше подходящими к текущей конфигурации устройства, то система может использовать любые наиболее подходящие ресурсы. Предупреждение! Если все ресурсы используют квалификатор размера, который превосходит размер текущего экрана, система не будет использовать эти ресурсы, и приложение аварийно завершится во время выполнения (например, если все ресурсы макета отмечены квалификатором xlarge, но устройство оснащено экраном нормального размера).
Формат
экрана
long
notlong
long: длинные экраны, такие как WQVGA, WVGA, FWVGA; notlong: недлинные экраны, такие как QVGA, HVGA
и VGA. Добавлено в API уровня 4. Формат основан исключительно на соотношении сторон экрана («длинный» экран шире). Это не свя­зано с ориентацией экрана.
Ориентация
экрана
port
land
port: Устройство в портретной (вертикальной) ориентации. land: Устройство в книжной (горизонтальной) ориентации.
3.2. Альтернативные ресурсы
57
Продолжение табл. 2
Тип
квалификатора
Пример
Описание
Ориентация может измениться за время работы при­ложения, если пользователь поворачивает экран. В разделе Обработка изменений в режиме выполнения содержится информация о воздействии таких изме­нений на приложение во время выполнения. См. также поле конфигурации orientation, которое указывает текущую ориентацию устройства.
Режим
пользова-
тельского
интерфейса
car
desk
television
appliancewatch
car: устройство подсоединено к автомобильной док­станции; desk: устройство подсоединено к настольной док­станции; television: устройство подсоединено к телевизору,
обеспечивая взаимодействие с расстояния «три мет­ра», когда пользовательский интерфейс находится на большом экране, находящемся вдалеке от пользова­теля, ориентированное на управление с помощью навигационной клавиши или другого устройства без указателя; appliance: устройство служит в качестве прибора без дисплея; watch: устройство с дисплеем для ношения на за­пястье. Добавлено в API уровня 8, телевизор добавлен в API 13, часы добавлены в API 20.
Ночной
режим
night
notnight
night: ночное время; notnight: дневное время.
Добавлено в API уровня 8. Этот режим может измениться за время работы, если ночной режим оставлен в автоматическом режиме (по умолчанию), в котором режим изменяется в зависимости от времени суток.
Плотность
пикселов на
экране (dpi)
ldpi
mdpi
hdpi
ldpi: экраны низкой плотности; приблизительно 120 dpi; mdpi: экраны средней плотности (обычные HVGA); приблизительно 160 dpi; hdpi: экраны высокой плотности; приблизительно 240 dpi;
3. Работа с ресурсами
58
Продолжение табл. 2
Тип
квалификатора
Пример
Описание
xhdpi
xxhdpi
xxxhdpi
nodpi
tvdpi
xhdpi: экраны очень высокой плотности; приблизи­тельно 320 dpi. Добавлено в API уровня 8; xxhdpi: экраны сверхвысокой плотности; приблизи­тельно 480 dpi. Добавлено в API уровня 16; xxxhdpi: использование исключительно высокой плотности (только значок запуска, см. примечание в документе Поддержка нескольких экранов); прибли­зительно 640 dpi. Добавлено в API уровня 18; nodpi: этот режим можно использовать для растро­вых графических ресурсов, которые не требуется масштабировать в соответствии с плотностью устройства; tvdpi: экраны промежуточной плотности между mdpi и hdpi; приблизительно 213 dpi. Этот режим не счи­тается «основной» группой плотности. Он главным образом предназначен для телевизоров, и большин­ство приложений в нем не нуждается – при условии, что ресурсов mdpi и hdpi достаточно для большин­ства приложений, и система будет масштабировать их при необходимости. Этот квалификатор введен в API уровня 13. Шесть основных уровней плотности соотносятся как 3:4:6:8:12:16 (если игнорировать плотность tvdpi). Так, растровое изображение 9x9 в ldpi представляется как 12x12 в mdpi, 18x18 в hdpi, 24x24 в xhdpi и т. д. Если графические ресурсы выглядят недостаточно хорошо на телевизоре или других определенных устройствах, и хочется попробовать ресурсы tvdpi, используйте масштабный коэффициент 1,33*mdpi. Например, изображение 100 x 100 пикселов для экранов mdpi должно иметь размер 133 x 133 пиксела для tvdpi.
3.2. Альтернативные ресурсы
59
Продолжение табл. 2
Тип
квалификатора
Пример
Описание
Примечание. Использование квалификатора плотно­сти не подразумевает, что ресурсы предназначены только для экранов этой плотности. Если не преду­смотрены альтернативные ресурсы с квалификато­рами, лучше подходящими к текущей конфигурации устройства, система может использовать любые наиболее подходящие ресурсы.
Тип
сенсорного
экрана
notouch
finger
notouch: устройство не оснащено сенсорным экра­ном; finger: устройство оснащено сенсорным экраном, предназначенным для ввода с помощью пальцев пользователя.
Доступ-ность
клавиатуры
keysexposed
keyshidden
keyssoft
keysexposed: в устройстве доступна клавиатура. Если
в устройстве включена экранная клавиатура (что весьма вероятно), то она может использоваться даже в случае, когда аппаратная клавиатура недоступна пользователю, даже если устройство не имеет аппа­ратной клавиатуры. Если экранная клавиатура отсут­ствует или отключена, то это квалификатор исполь­зуется только в том случае, когда доступна аппарат­ная клавиатура. keyshidden: устройство имеет аппаратную клавиату­ру, но она скрыта, и в устройстве не включена экранная клавиатура; keyssoft: экранная клавиатура в устройстве включена независимо от того, видна она или нет. Ресурсы keysexposed независят от видимости клави­атуры, поскольку в системе включена экранная.
Основной
способ ввода
текста
nokeys qwerty
12key
nokeys: в устройстве отсутствуют аппаратные кла- виши для ввода текста; qwerty: устройство оснащено аппаратной клавиату-
рой с раскладкой qwerty, независимо от того, видна она пользователю или нет; 12key: устройство оснащено аппаратной клавиату­рой с 12 клавишами, независимо от того, видна она пользователю или нет.
3. Работа с ресурсами
60
Окончание табл. 2
Тип
квалификатора
Пример
Описание
Доступ-ность
клавиш
перемещения
navexposed
navhidden
navexposed: клавиши перемещения доступны поль­зователю; navhidden: клавиши перемещения недоступны (например, находятся за закрытой крышкой). Это состояние может измениться за время работы приложения, если пользователь открывает клавиши перемещения. В разделе Обработка изменений в ре­жиме выполнения содержится информация о воздей­ствии таких изменений на приложение во время вы­полнения
Основной
несенсорный
способ
перемещения
курсора
nonav
dpad
trackball
wheel
nonav: устройство не оснащено другими средствами перемещения курсора, кроме сенсорного экрана; dpad: устройство оснащено навигационной клави­шей; trackball: устройство оснащено трекболом; wheel: устройство оснащено навигационным колеси­ком (редко).
Версия
платформы
(уровень API)
v3 v4 v7
и т. д.
Уровень API, поддерживаемый устройством. Например, v1 для уровня API 1 (устройства с An- droid 1.0 или выше) и v4 для уровня API 4 (устрой­ства с Android 1.6 или выше).
Например, в структуре проекта, представленном на рис. 20, можно увидеть каталоги drawable и mipmap с квалификаторами, указывающими, какие ресурсы использовать при определенной плотности пикселей.
В представленном на рис. 21 Activity имеются один ресурс Im- ageView и три TextView. Если один из этих ресурсов в проекте представлен в виде альтернативных ресурсов, то задаются они из кода или в файле раз­метки, как описано в подразд. 3.1, т.е. необходимо указать на ресурс через класс R и тип ресурса. Далее система Android сама выберет наиболее под­ходящий ресурс для использования на конкретной конфигурации устрой­ства.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]