Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 10.04.2014 | Доступ: свободный | Студентов: 6873 / 1262 | Длительность: 14:18:00
Специальности: Программист
Лекция 4:

Основы разработки многооконных приложений

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

Скриншоты приложений взяты из магазина приложений Google Play, официального сайта для разработчиков Android или сделаны самостоятельно с использованием смартфона Мегафон SP-A20i Mint на платформе Intel Medfield.

Презентацию к данной лекции можно скачать здесь.

7.1 Многооконные приложения

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

  • Использовать различные сообщения (диалоговые окна, уведомления, всплывающие подсказки). Этот способ наиболее прост и не требует редактирования файла манифеста, однако очевидно, что так можно решить только часть задач.
  • Использовать в одном приложении несколько активностей. Способ универсальный и подходит для любых приложений, однако прежде чем его реализовывать, необходимо очень хорошо продумать структуру будущего приложения. Здесь требуется редактировать манифест и организовать переключение между различными активностями удобным для пользователя способом.
  • Разместить компоненты на активности таким образом, что в нужный момент можно будет легко переключиться на работу с другой частью интерфейса.

Каждый способ имеет свои нюансы использования. Рассмотрим их более подробно.

7.2 Работа с диалоговыми окнами

7.2.1 Диалоговые окна

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

Примеры диалоговых окон

Рис. 7.1. Примеры диалоговых окон

В ОС Android можно выделить три вида диалоговых окон:

  • Класс Dialog и его производные. Помимо традиционного набора диалоговых окон, он содержит несколько дополнительных вариантов, в которых используются возможности сенсорного интерфейса (см. рис. 7.1 слева). Диалоги этого типа не создают новых активностей и их не нужно регистрировать в файле манифеста (см. следующие разделы лекции), что существенно упрощает разработку. Однако они работают в модальном режиме и требуют немедленного ответа пользователя, поэтому для простого информирования рекомендуется использовать сообщения следующих двух типов.
  • Уведомления (notifications). Это сообщения, которые отображаются в верхней панели в области уведомлений. Для того чтобы прочитать это сообщение, необходимо на домашнем экране потянуть вниз верхнюю шторку. Пользователь может это сделать в любой момент времени, следовательно, уведомления стоит использовать, когда сообщение является важным, однако не требует немедленного прочтения и ответа.
  • Всплывающие подсказки (toasts). Сообщения, которые появляются прямо на экране приложения, перекрывая его интерфейс, и через некоторое время (обычно несколько секунд) автоматически пропадают. Их рекомендуется использовать для простых уведомлений, не требующих ответа пользователя, но важных для продолжения его работы.

7.2.2 Использование класса Dialog

Класс Dialog является базовым для диалогов и редко используется напрямую. Рекомендуется применять производные от этого класса:

  • AlertDialog. Диалоговое окно может содержать заголовок, до трех кнопок, список выбираемых значений или настраиваемое содержимое. Пример на рис. 7.1 справа.
  • DatePickerDialog или TimePickerDialog. Диалоговое окно с предопределенным интерфейсом, позволяющее выбрать дату или время.
  • ProgressDialog. Показывает диалоговое окно, содержащее линейку процесса выполнения какого-то действия. В рекомендациях по дизайну для Android советуют использовать вместо него компонент ProgressBar.

Существует возможность создавать собственные диалоговые окна с использованием класса DialogFragment в качестве контейнера. В таком случае можно контролировать его поведение. Обратите внимание, что минимальной версией, поддерживающей DialogFragment напрямую, является Android 3.0 (API level 11). Если вы хотите использовать возможности этого класса на более ранних версиях, необходимо добавить библиотеку Support Library в ваше приложение.

Рассмотрим создание диалогового окна на примере класса AlertDialog. Существует множество вариантов диалоговых окон этого класса, однако все они содержат следующие три части (см. рис. 7.2):

  1. Заголовок. Не является обязательным элементом и должен быть использован, только если содержательная часть занята детализированным сообщением, списком или чем-то еще. Если нужно сделать небольшое сообщение или вопрос, не стоит снабжать его выделенным заголовком.
  2. Содержательная часть. Здесь может быть сообщение, список или какой-то другой настраиваемый компонент.
  3. Управляющие кнопки. Диалог может содержать не больше трех кнопок. Если элементы содержательной части являются кликабельными, можно вообще обойтись без кнопок (см. рис. 7.3).
Компоновка диалогового окна (класс AlertDialog)

Рис. 7.2. Компоновка диалогового окна (класс AlertDialog)
Можно выбрать один из трех перечисленных цветом непосредственно нажатием на его название

Рис. 7.3. Можно выбрать один из трех перечисленных цветом непосредственно нажатием на его название

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

Марат Нуриджанян
Марат Нуриджанян

Пример: Скачать среду можно с сайта для разработчиков Android (http://developer.android.com/sdk/index.html).

Там скачать можно только Android Studio

Владимир Каункин
Владимир Каункин

В самостоятельной работе 2 в примере решения задания некорректно загадывается число (в двух местах), выбирая случайное целое число из диапазона [0, 99] вместо [1, 100], как того требует условие. Кроме того, загадывание числа всё таки лучше вынести в отдельный метод, как мне кажется.