В этой блоге мы я расскажу об основных принципах проектирования замечательных и полезных приложений для платформы Android. С помощью нескольких рецептов мы опишем конкретные аспекты успешного проекта.
Одна из целей настоящей статьи — объяснить преимущества разработки родных приложений на языке Java для платформы Android над другими способами доставки контента на мобильных устройствах.
Требования к приложениям для мобильных телефонов
Существует ряд ключевых требований для обеспечения успеха любого приложения для мобильных телефонов независимо от платформы, на которой оно будет развернуто.
- Установка, удаление и обновление приложения на устройстве должны быть простыми.
- Приложение должно удовлетворять потребности пользователя привлекательным, уникальным и элегантным способом.
- Приложение должно быть многофункциональным, оставаясь пригодным для использования как начинающими, так и опытными пользователями.
- Приложение должно быть понятным для пользователей, которые получили доступ к одной и той же информации другими путями, например через веб-сайт.
- Основные функции должны быть легко доступными.
- Приложение должно иметь общий внешний вид с другими родными приложениями на телефоне в соответствии со стандартами целевой платформы и стилями.
- Приложение должно быть стабильным, масштабируемым, удобным и адаптивным.
- Приложение должно использовать возможности платформы, делая взаимодействие с пользователем более привлекательным.
Проектирование приложений для платформы Android
Приложение, которое мы разработаем в последующих моих публикациях, будет использовать функциональные возможности, уникальные для платформы Android OS. В общем случае приложение будет решением, основанным на классе Activity, обеспечивающем независимый и контролируемый доступ к данным с помощью последовательности экранов. Такой подход помогает локализовать потенциальные ошибки и позволяет легко отрегулировать участки потока управления или расширить их независимо от остальной части приложения.
Для тех, кто только начал изучать программирование под платформу Android, порекомендую посмотреть моб статью о создании приложения Android на реальном примере.
Навигация будет аналогичной решению Apple iPhone, и все ключевые функции будут доступны из одного элемента управления панели навигации. Панель навигации будет доступна из любого места приложения, что позволит пользователю свободно перемещаться по приложению.
В решении для платформы Android будут использоваться функции, присущие устройствам Android, поддерживающие сенсорные функции устройств, аппаратную кнопку, которая позволяет пользователям переключать приложение на задний план, и возможность переключения приложений.
Платформа Android обеспечивает возможность возврата в точку приложения, где произошло прерывание. Эта функция будет поддерживаться в рамках проекта по мере возможности.
Приложение будет использовать только стандартные элементы управления пользовательским интерфейсом Android, чтобы сделать его максимально переносимым. Использование тем или настраиваемых элементов управления выходит за рамки этой статьи.
Приложение будет сконструировано таким образом, чтобы оно взаимодействовало с тонким слоем веб-служб RESTful, которые предоставляют данные в формате JSON. Этот интерфейс будет таким же, как тот, который используется Apple iPhone, а также приложениями, написанными для других платформ.
Приложение будет придерживаться стандартов стиля и дизайна Android, где это возможно, чтобы оно соответствовало другим приложениям Android на устройстве.
Данные, которые являются локальными для каждого представления, будут сохраняться при выходе из представления, а при следующей загрузке представления они будут автоматически восстанавливаться с соответствующими элементами пользовательского интерфейса, которые будут заполнены повторно.
Следует учесть ряд важных характеристик устройства, описанных в следующих подразделах.
Размер и разрешение экрана. Чтобы классифицировать устройства по типу экрана, платформа Android определяет две характеристики для каждого устройства: размер экрана (физические размеры экрана) и разрешение экрана (физическая плотность пикселей на экране, или dpi (количество точек на дюйм)). Чтобы упростить все типы конфигураций экрана, система Android обобщает их на группы, которые упрощают их настройку.
При разработке приложения проектировщик должен определить подходящие размер и разрешение экрана.
По умолчанию приложение совместимо со всеми размерами и разрешениями экрана, потому что система Android делает соответствующие корректировки для компоновки пользовательского интерфейса и ресурсов изображения. Однако для определенных значений разрешения и размеров экрана необходимо создавать специализированные компоновки и предоставлять специализированные изображения, используя альтернативные ресурсы компоновки и точно декларируя в своем манифесте, какие размеры экрана поддерживаются вашим приложением.
Конфигурации ввода. Многие устройства предоставляют различные типы пользовательских механизмов ввода, такие как аппаратная клавиатура, трекбол или пятипозиционная навигационная панель. Если вашему приложению требуется определенный вид аппаратного обеспечения для ввода данных, необходимо объявить его в файле AndroidManifest.xml
и помнить, что на сайте Google Play Store ваше приложение не будет отображаться на устройствах, которым не хватает этой функции. Однако для приложения редко требуется определенная конфигурация ввода.
Особенности устройства. Существует множество аппаратных и программных функций, которые могут или не могут существовать на данном устройстве на базе Android, таком как камера, датчик освещенности, механизм Bluetooth, определенная версия OpenGL или качество сенсорного экрана. Вы никогда не должны предполагать, что определенная функция доступна на всех устройствах на базе Android (кроме доступности стандартной библиотеки Android).
Усовершенствованное приложение для Android будет использовать два типа меню, предоставляемые платформой Android, в зависимости от обстоятельств.
- Командное меню содержит основные функции, которые применяются глобально к текущей активности или запускают связанную с ним активность. Командное меню обычно появляется, когда пользователь нажимает аппаратную кнопку, часто обозначаемую Menu, или программную кнопку меню на панели действий Action Ваг (вертикальный стек из трех точек).
- Контекстное меню содержит вспомогательные функции для выбранного в данный момент элемента. Контекстное меню обычно вызывается пользователем, выполняющим длительное нажатие (нажатие и удержание) на элементе. Как и в меню команд, выбранная операция может выполняться либо в текущей, либо в другой активности. Контекстное меню предназначено для любых команд, которые применяются к текущему выбору.
Команды в контекстном меню, которые появляются при длительном нажатии на элемент, должны дублироваться в активности, которая запускается при обычном нажатии на этот элемент.
Итак, сформулируем самые общие правила.
- Сначала включите в меню наиболее часто используемые операции.
- В качестве кнопок на экране должны отображаться только самые важные команды, остальные включите в меню.
- Подумайте о перемещении элементов меню на панель действий Action Ваг, если ваше приложение его использует.
Система автоматически скомпонует меню и предоставит стандартные способы доступа пользователей к ним, гарантируя, что приложение будет соответствовать основным принципам пользовательского интерфейса Android В этом смысле меню являются привычными и надежными способами обеспечения доступа пользователей к функциям во всех приложениях.
В нашем приложении для платформы Android будет широко использоваться механизм намерений (Intent
), разработанный компанией Google для передачи данных между объектами класса Activity. Намерения не только используются для передачи данных между представлениями в одном приложении, но также позволяют передавать данные или запросы внешним модулям. Таким образом, большое количество функций может быть адаптировано приложением Android с помощью встроенных функций из других приложений, вызываемых вызовами намерений. Это упрощает процесс разработки и обеспечивает общий внешний вид и функциональность во всех приложениях.
Каналы данных и форматы каналов. Нецелесообразно напрямую взаимодействовать с любым источником данных, предоставленным третьей стороной. Например, для прямой связи вашего мобильного приложения с базой данных на вашем сервере было бы неплохо использовать драйвер JDBC третьего типа. Обычным подходом является сбор данных из нескольких источников в потенциально нескольких форматах посредством промежуточного программного обеспечения, которое затем передает данные в приложение через ряд API-интерфейсов веб-служб RESTful в виде потоков данных JSON.
Как правило, данные предоставляются в таких форматах, как XML, SOAP, или в виде какого-либо другого представления, связанного с XML. Форматы наподобие SOAP являются тяжеловесными, и поэтому передача данных с вспомогательных серверов в этом формате значительно увеличивает время разработки, поскольку ответственность за преобразование этих данных во что-то более управляемое возлагается на приложение или на объект, находящийся на сервере промежуточного программного обеспечения.
Уменьшение объема исходных данных с помощью серверного промежуточного программного обеспечения также помогает разорвать зависимость между приложением и данными. Такая зависимость имеет тот недостаток, что если по какой-либо причине характер данных изменится или они не смогут быть восстановлены, то приложение может выйти из строя и стать непригодным, и для учета таких изменений может потребоваться его повторная публикация. Уменьшение объема данных с помощью серверного промежуточного программного обеспечения гарантирует, что приложение будет продолжать работать, хотя, возможно, ограниченным образом, независимо от того, существуют ли исходные данные. Связь между приложением и предварительно обработанными данными сохраняется.