Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пери перевод.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
103.17 Кб
Скачать

ImageView.SetImageLevel(5);

Представление отобразит ресурс с соответствующим (или большим)

индексом. Ресурс LevelListDrawable нужен при компоновке виджетов.

Ресурс NinePatch

Изображения формата NinePatch (растягивающиеся) — это PNG-файлы,

где некоторые помеченные части могут быть растянуты. Они должны опи-

сываться в формате PNG и иметь расширение .9.png. Идентификатор

ресурсов для NinePatch — это имя файла без окончания .9.png.

NinePatch — разновидность PNG-файлов, которые содержат рамку тол-

щиной в один пиксел. Данная рамка описывает область, которая может

растягиваться при изменении размеров изображения. Чтобы создать ресурс

NinePatch, нарисуйте по его левому и верхнему краям изображения черные

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

Части рисунка, не отмеченные подобным образом, останутся прежними;

изменения размеров изображения будут пропорционально влиять на от-

носительные размеры помеченных участков.

ПРИМЕЧАНИЕ

Ресурс NinePatch — мощный инструмент, способный создавать фоновые

изображения для Представлений или Активностей, размеры которых

могут меняться. К примеру, NinePatch используется в Android при соз-

дании обрамления для кнопок.

169 бет

Интерфейсы, не зависящие

от разрешения и плотности пикселов

Поскольку первые четыре мобильных телефона под управлением Android

имели экраны размером 3,2 и разрешение HVGA, разработчики могли соз-

давать пользовательские интерфейсы без особых трудностей. Почти через

год после выпуска первого телефона с Android при проектировании нужно

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

пикселов для него.

Период с конца 2009-го по начало 2010 года ознаменовался бурным

ростом количества устройств, на которых работает Android. А вместе с воз-

росшим разнообразием телефонов увеличилось и разнообразие размеров

экранов и плотности пикселов.

При разработке пользовательского интерфейса важно помнить, что

ваши приложения будут работать на широком спектре устройств с разны-

ми типами экранов (включая HVGA, QVGA и две разновидности WVGA:

800  480 И 854  480). Точно так же физические размеры экрана начинаются

с 3,2, включая 3,7-дюймовые Nexus One и Motorola Droid и 4-дюймовый

Sony Ericsson Xperia X10.

Теперь, когда Android стал популярным, вы должны создавать свои при-

ложения с оглядкой на еще большее количество всевозможных устройств,

в перспективе это могут быть планшетные компьютеры, нетбуки и бытовая

электроника.

Следующие разделы начинаются с описания типов экранов, которые

нужно учитывать. Вы узнаете, как обеспечить их поддержку, и получите

рекомендации по созданию приложений, которые не зависят от разре-

шения и плотности пикселов. В завершение научитесь тестировать свои

программы на различных экранах, не имея физического доступа к теле-

фонам.

Фреймворк для управления ресурсами

и интерфейсы, не зависящие

от разрешения экрана

Android предоставляет методы, с помощью которых вы можете оптими-

зировать пользовательский интерфейс для экранов с различными размерами

и плотностью пикселов.

В этом разделе описываются спецификаторы для каталогов с ресурсами,

которые можно использовать, чтобы хранить разные значения и экземпляры

разметки для разных экранных конфигураций, а также элементы манифе-

ста — с их помощью можно ограничить размеры экранов, поддерживаемые

вашим приложением.

170 бет

Спецификаторы ресурсов для указания размеров экрана

и плотности пикселов

В главе 3 вы познакомились с фреймворком для управления ресурсами

в Android. Используя этот фреймворк, можно создавать одновременно не-

сколько структур каталогов, чтобы хранить внешние ресурсы для различных

аппаратных конфигураций.

В этом разделе кратко описываются спецификаторы для имен тех ка-

талогов, которые можно использовать при добавлении альтернативных

ресурсов, чтобы поддерживать разные характеристики экрана, такие как

размер, плотность пикселов и соотношение сторон.

Размер экрана. Размер экрана относительно ≪стандартного≫ смарт-

фона (например, G1 или Droid):

small — экран меньший, чем стандартные 3,2;

medium — типичный размер экрана смартфона;

large — экран значительно больший, чем у типичного смартфона

(например, экран планшетного компьютера или нетбука).

Плотность пикселов. Описывает плотность пикселов на экране. Как

правило, измеряется в точках на квадратный дюйм (dpi) и зависит от

размеров экрана и его разрешения:

ldpi — предназначен для хранения ресурсов, рассчитанных на экра-

ны с низкой плотностью пикселов (100–140 dpi);

mdpi — для экранов со средней плотностью пикселов (140–180 dpi);

hdpi — для экранов с высокой плотностью пикселов (190–250 dpi);

nodpi — для ресурсов, которые не должны масштабироваться, в за-

висимости от плотности пикселов на экране устройства.

Соотношение сторон. Описывает отношение высоты экрана к его

ширине:

long — для экранов, которые в альбомном режиме значительно

шире, чем на стандартных смартфонах (таких как G1);

notlong — для экранов с обычным соотношением сторон.

Каждый из этих спецификаторов может быть использован в комбина-

ции с любым другим или независимо от остальных, как показано в ли-

стинге 4.24.

Обратите внимание, что данные спецификаторы могут применяться

в сочетании с теми, что описывались в главе 3.

171 бет

Листинг 4.24. Спецификаторы для каталогов, основанные на свойствах экрана

res/layout-small-long/ // Разметка для маленьких, длинных экранов.

res/layout-large/ // Разметка для больших экранов.

res/drawable-hdpi/ // Ресурсы Drawable для экранов с высокой

плотностью пикселов.

Определение поддерживаемых экранных размеров

Пользовательский интерфейс некоторых приложений просто не по-

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

использовать тег <supports-screens> в манифесте, чтобы указать, на

устройствах с какими экранами может работать ваша программа. Данный

подход демонстрируется в листинге 4.25.

Листинг 4.25. Элемент манифеста, описывающий поддержку нормальных

и больших экранов

<supports-screens

android:smallScreens="false"

android:normalScreens="true"

android:largeScreens="true"

android:anyDensity="true"

/>

В данном случае маленьким экраном можно назвать любой дисплей с раз-

решением меньше, чем HVGA. Под большим экраном подразумевается та-

кой, который значительно больше, чем у смартфона (например, у планшетных

компь ютеров). Экран нормальных размеров имеет большинство смартфонов.

Атрибут anyDensity говорит о том, каким образом ваше приложение

будет масштабироваться при отображении на устройствах с разной плотно-

стью пикселов. Если вы учитываете это свойство экрана в своем интерфейсе

(а делать это необходимо), установите этому атрибуту значение true.

При значении false Android будет использовать режим совместимости,

пытаясь корректно масштабировать пользовательский интерфейс прило-

жения. Как правило, это снижает качество изображения и приводит к ар-

тефактам при масштабировании.

Для приложений, собранных с помощью SDK с API level 4 и выше, этот

атрибут по умолчанию имеет значение true.

Рекомендации по разработке интерфейсов,

не зависящих от разрешения

Помимо захватывающих возможностей, предоставляемых широким раз-

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

не застрахован и от потенциальных опасностей.__