Опубликован: 06.05.2014 | Доступ: свободный | Студентов: 2633 / 608 | Длительность: 10:33:00
Лекция 4:

Принципы переноса ранее разработанных приложений на смартфон

Влияние размера экрана на разработку приложения

Устройства Android различаются не только физическими размерами, но и разрешением экрана. В руководстве для разработчиков Android приводится следующие определения:

  • Разрешение – общее число физических пикселей на экране.
  • Экранная плотность – количество пикселей в физической области экрана, как правило, называют DPI (точек на дюйм).
  • Плотностно-независимая точка (DP) – это виртуальная единица-пиксел, которая используется при определении интерфейса макета, чтобы сделать размеры макета или его положения независимым от плотности образом. Плотностно-независимая точка эквивалентна одному физическому пикселю на 160 DPI, которая является базовой плотностью и берется в системе как "средняя" плотность экрана. Во время работы система в фоновом режиме обрабатывает любое масштабирование единиц DP по мере необходимости, исходя из фактической плотности использованного экрана. Преобразование единиц DP в пиксели выполняется следующим образом: пиксель = DP * (DPI/ 160).

Для упрощения ситуации устройства Android по физическим размерам подразделяются на два типа – телефонный (разрешение меньше 600 DP) и планшетный (разрешение больше или равно 600 DP) ( рис. 7.7).

Варианты размеров устройств Android, выраженные в плотностно-независимых точках

Рис. 7.7. Варианты размеров устройств Android, выраженные в плотностно-независимых точках

Android делит экран плотности на пять основных плотностей:LDPI (низкий), MDPI (средний), HDPI (высокий), XHDPI (очень высокий) и XXHDPI (очень-очень высокий). Это важно, поскольку разработчику необходимо предоставить все графические ресурсы (растровые изображения) в наборах различной плотности. Для любого смартфонного приложения необходимо иметь хотя бы MDPI и HDPI наборы.

Элементы управления должны быть размером по крайней мере 48DP ( рис. 7.8). Это связано с минимальным размером элементов управления, допустимым для тач-интерфейсов. При этом получается компромиссное решение, учитывающее и общую плотность доносимой до пользователя информации, и возможности элементов управления.

Расстояние между элементами управления не должно быть меньше 8DP.

Минимальные габариты элементов управления

Рис. 7.8. Минимальные габариты элементов управления

Портирование графики, работа с файловой системой и сетью

При переносе приложения на мобильное устройство возникает большое количество вопросов по обеспечению его работоспособности в новых условиях. Рассмотрим наиболее важные из них.

Разработка интерфейсов для разных экранов

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

Компоненты приложения расположены по-разному на различных устройствах

Рис. 7.9. Компоненты приложения расположены по-разному на различных устройствах

Для указания альтернативных конфигураций необходимо:

  1. Создайте новый каталог в res/ с именем в виде <resources_name>-<config_qualifier>, где
    • <resources_name> – это имя каталога соответствующих ресурсов по умолчанию (для компоновки используется layout);
    • <qualifier> – имя, определяющее индивидуальную конфигурацию устройств, для которых используются соответствующие ресурсы (ldrtl для языков, читающихся справа налево, ldltr для языков, читающихся слева направо).
    Можно добавить больше одного квалификатора, отделив каждый новый дефисом.
  2. Сохраните соответствующие файлы в этот новый каталог. Файлы ресурсов должны быть названы точно так же, как файлы в ресурсах по умолчанию (см. листинг 1, 2).
 res/
    layout/   
        main.xml  (по умолчанию)
    layout-ar/  
        main.xml  (для арабских стран)
    layout-ldrtl/  
        main.xml  (для любого языка, предусматривающего чтение справа налево,
                  кроме арабского, потому что соответствующий квалификатор 
                  имеет более высокий приоритет)
Листинг 1.
res/
    drawable/   
        icon.png
        background.png    
    drawable-hdpi/  
        icon.png
        background.png  
 
Листинг 2. Пример сформированного каталога с ресурсами (layout)

Листинг 2. Пример сформированного каталога с ресурсами (drawable).

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

Более подробные таблицы квалификаторов смотри здесь.

Работа с файловой системой и сетью

Система Android устроена таким образом, что одно приложение не может получить доступ к файлам другого. Это сделано в целях безопасности. Однако подобное ограничение не распространяется на файлы, расположенные на SD-карте. Многие модели телефонов имеют возможность подключения внешней карты через встроенный кардридер, что подразумевает возможность ее замены. Поэтому при разработке приложений следует придерживаться следующего правила. Все критичные для работы приложения файлы записываются в память устройства, а дополнительные, особенно имеющие большой объем, лучше выносить на карту памяти. Это позволит выделить и защитить функционал приложения, сэкономив место в памяти устройства.

Если приложению необходим доступ к сети, необходимо помнить следующее:

  • Чаще всего wi-fi бесплатен или дешев, а мобильный интернет стоит дорого. Приложение наверняка будет нуждаться в обновлениях, поэтому стоит предусмотреть установку только через wi-fi. Если же приложение нуждается в периодической (но не обязательно!) синхронизации, можно сделать в настройках опцию "Синхронизировать только через wi-fi", чтобы пользователь мог настроить программу так, как ему удобно.
  • Работа с сетевыми сервисами требует повышенного расхода энергии, что отрицательно сказывается на времени работы устройства. Поэтому следует жестко контролировать подключения и отключения от сети, время работы сервисов.
  • Необходимо думать о безопасности передачи информации. Следует использовать защищенные сетевые протоколы (например, HTTPS) для передачи пользовательских паролей и другой конфиденциальной информации.