Рекомендации по разработке пользовательского интерфейса для планшетных компьютеров под управлением Android*

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

Начните с рекомендаций по разработке пользовательского интерфейса

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

Компания Google опубликовала внушительный набор Рекомендаций по разработке пользовательского интерфейса, касающихся оформления значков, виджетов, функций, меню и многих других элементов. Изучение этих рекомендаций станет хорошей отправной точкой для создания интуитивно понятного приложения. Заложив эти рекомендации в основу своего приложения, Вы сделаете его более комфортным и привычным для пользователей.

Для обучения разработчиков компания Google разместила в Интернете множество видеозаписей с конференции Google I/O. Следующая видеозапись с конференции Google I/O 2010 года посвящена знакомству с Android для начинающих разработчиков.


 

Добейтесь высокой скорости отклика

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

Необходимо обязательно отображать диалоговое окно с сообщением о том, что приложение не отвечает, если приложение не реагирует на действия пользователя в течение 5 секунд. Как правило, пользователи замечают задержку даже в полсекунды.

Одним из лучших средств поддержания высокой скорости отклика пользовательского интерфейса являются потоки. Когда пользователь запускает приложение для Android, создается основной поток, называемый потоком пользовательского интерфейса. В этом потоке нельзя выполнять длительные операции обработки. Он отвечает за отклик, а нагрузку, связанную с обработкой, из него следует передавать в потоки виджетов. В следующей видеозаписи Брэд Фицпатрик (Brad Fitzpatrick) из компании Google рассказывает, как создать быстрый пользовательский интерфейс:


 

Изучите режим сенсорного ввода и используйте согласованную модель управления

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

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

В этой видеозаписи с конференции Google I/O говорится о проблемах разработки пользовательского интерфейса Android и согласованности с шаблонами панели управления (Dashboard), панели действий (Action Bar), строки поиска (Search Bar), быстрых действий (Quick Actions) и вспомогательного виджета (Companion Widget):


 

Сенсорный ввод, взаимодействие и другие способы ввода

Одним из главных преимуществ телефонов и портативных устройств является реализованное в них сенсорное управление. Если приложение адекватно и логично реагирует на сенсорный ввод, оно воспринимается как естественное продолжение функциональных возможностей устройства. Кроме того, можно использовать беспроводные клавиатуры, указательные устройства, такие как стилус, средства отслеживания параметров окружающей среды и другие способы ввода. Для повышения привлекательности пользовательского интерфейса можно также использовать датчики положения, гиродатчики и акселерометры. На этапе изучения возможностей выясните, какие сенсоры используются на современных устройствах, и подумайте, как обеспечить их поддержку и использование в Вашем приложении. Это относится и к поддержке данных о местоположении.

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

Структурируйте свое приложение для повышения его эффективности

Общие правила разработки для Android предполагают, что Вы структурируете приложение с использованием платформы Android, моделируете желаемое поведение приложения и реализуете его через пользовательский интерфейс, чтобы пользователь смог получить доступ к желаемым функциям. Что это означает? В следующей видеозаписи с конференции Google I/O объясняется, как разрабатывать схему взаимодействия и визуальные элементы приложений для Android.



Как применить эти рекомендации к Вашему приложению? Прежде всего, нужно выяснить потребности Ваших пользователей, какие задачи они выполняют, что позволяет делать Ваше приложение и почему они будут его использовать. Не забывайте, что Android - многозадачная платформа; пользователь в процессе выполнения одной задачи может захотеть быстро переключиться на другую. Например, во время просмотра веб-страниц в браузере он может получить входящий телефонный вызов, сообщение электронной почты или мгновенное сообщение. Сохраняйте состояние приложения при вызове метода onStop. Как показано на диаграмме жизненного цикла функции, при остановке выполнения функции процесс может быть аннулирован, поэтому важно сохранять состояние, чтобы не потерять пользовательские данные. У Ваших пользователей будет больше поводов для радости, если Ваше приложение будет соответствовать не только их ожиданиям в плане функциональности, но и стандартам разработки для Android. http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

Поддержка приложений без границ (взаимодействие между приложениями)

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



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

Адаптация к размерам экранов и изменению ориентации

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

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

При разработке приложения поддержка изменения ориентации заключается в перекомпоновке окна с помощью XML или Java*. Обычно приходится разрабатывать отдельные компоновки для книжного и альбомного режимов. По мнению Google, приложение Amazon MP3* является хорошим примером того, как могут выглядеть отдельные компоновки. Это кадр из видеозаписи. Обратите внимание на то, что при вертикальной ориентации 4 кнопки расположены стопкой. При горизонтальной ориентации кнопки разделены на 2 столбца.

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

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

В этой видеозаписи Google продемонстрировано несколько хороших примеров, когда один и тот же двоичный код поддерживает различные устройства:



Выбирайте адаптивную компоновку, например LinearLayout или RelativeLayout, вместо компоновки AbsoluteLayout, с которой могут возникнуть проблемы. Используйте коэффициенты масштабирования для высокой, средней и низкой плотности, чтобы автоматически подстраивать размер значков и объектов для устройств с различной плотностью. Если реализовать компоновку средствами XML, а не с помощью жесткого кодирования в Java, это позволит Вашему приложению оставаться актуальным даже для будущих устройств с меняющейся конфигурацией.
 

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

Между временем работы от аккумулятора и производительностью портативного устройства должен быть правильный баланс. Для того чтобы заряда аккумулятора хватило на весь день, все установленные приложения должны экономно расходовать энергию. Следите за тем, чтобы Ваше приложение не тратило энергию бесполезно. Используйте только те сенсоры и подключенные устройства, которые действительно нужны. Далее перечислено несколько конкретных предложений по оптимизации:
 

  1. Используйте воспроизведение с аппаратной оптимизацией. Например, аппаратные средства воспроизведения видео в формате h.264 гораздо более эффективны, чем отдельно написанный проигрыватель.
  2. Не используйте неэффективные циклы. В Android приложение, не отвечающее в течение нескольких секунд, может быть закрыто. Разбейте Вашу рабочую нагрузку на небольшие фрагменты, чтобы обеспечить хорошую скорость отклика.
  3. Будьте аккуратны с операциями доступа к данным, передачи данных, чтения и записи и не обращайтесь к памяти, если это не нужно. Например, операция доступа к сети может быть отложена до тех пор, пока пользователь не окажется в зоне действия более дешевого подключения.
  4. Оптимизируйте рабочие нагрузки с высокой загрузкой процессора, чтобы они завершались как можно быстрее.
  5. Для статических рабочих нагрузок, таких как воспроизведение видео, используйте правильное разрешение, чтобы не тратить ресурсы на перекодирование видео в формат, поддерживаемый устройством.


Компания Google предлагает дополнительные рекомендации на эту тему в видеозаписи о написании энергоэффективных программ под названием “Coding for Life, Battery Life that is”.
 

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