Главная » Разработка для Android » РАЗРАБОТКА КАРКАСА ПРИЛОЖЕНИЯ ANDROID

0

Вопросы, рассматриваемые в этом часе:

•             проектирование простого приложения Android;

•             подготовка прототипа приложения к запуску;

•             запуск прототипа игры.

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

По мере освоения книги вы реализуете в приложении множество интересных функций.

ПРОЕКТИРОВАНИЕ ИГРОВОГО ПРИЛОЖЕНИЯ ANDROID

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

•            Бывали ли вы когда-нибудь у египетских пирамид?

•            Вы когда-нибудь доили корову?

•             Занимались ли вы когда-нибудь дайвингом с белыми акулами?

•            Вы когда-нибудь поднимались на высокую скалу?

Игрок, прошедший большую часть игры и достигший наилучших результатов, должен обладать самым высоким счетом. Игра будет называться «Been There, Done That!».

Определение высокоуровневых игровых функций

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

•            экранная заставка;

•             вывод на экран заработанных игроком очков;

•             вывод текста с разъяснением игровых правил;

•             возможность сохранения игровых настроек.

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

Исходя из перечисленных требований, в игровом приложении «Been There, Done That![2] нам может понадобиться шесть основных экранов:

•            экран-заставка;

•            экран главного меню;

•             основной игровой экран;

•            экран настроек;

•            экран таблицы рекордов;

•            экран справки.

Эти экраны составят основу пользовательского интерфейса приложения.

Требования, предъявляемые к деятельностям

У каждого экрана игрового приложения «Been There, Done That!» будет собственный класс Activity. На рис. 6.1 представлена схема шести необходимых деятельностей, по одной для каждого экрана.

Рис. 6.1. Схема взаимосвязи деятельностей в игровом приложении «Been Three, Done That!»

Практика показывает, что удобнеее реализовать базовый класс Activity с общедоступными компонентами. Он будет называться QuizActivity. Таким образом, будут определятся все деятельности, необходимые в приложении «Been There, Done That!»:

•             Класс QuizActivity, полученный из android, арр. Activity, будет основным классом. С его помощью вы определите параметры приложения и другие настройки и возможности приложения.

•             Класс QuizSplashActivily, полученный из класса QuizActivity, представляет собой экран-заставку.

•             Класс QuizMcnuActivity, полученный из класса QuizActivity, представляет собой экран главною меню.

•             Класс QuizHelpActivity, полученный из класса QuizActivity, представляет собой экран справки.

•             Класс QuizScoresActivity, полученный из класса QuizActivity, представляет собой экран таблицы рекордов.

•             Класс QuizSettingsActivity, полученный из класса QuizActivity, представляет собой экран настроек.

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

Теперь пришло время определить основные возмож­ности каждой деятельности в игровом приложении «Been There, Done That!».

ОПРЕДЕЛЕНИЕ ВОЗМОЖНОСТЕЙ ЭКРАНА- ЗАСТАВКИ

Экран-заставка в игре «Been There, Done That!» слу­жит отправной точкой для последующих действий игрока. Вся его функциональность должна заклю­чаться в классе QuizSplashActivity. На этом экране будут выполняться следующие действия:

•             отображение имени и версии приложения;

•             отображение графического изображения или логотипа игры;

•             автоматический переход на экран главного меню через определенный промежуток времени.

На рис. 6.2 изображен примерный вид экрана-заставки. ОПРЕДЕЛЕНИЕ ВОЗМОЖНОСТЕЙ ЭКРАНА ГЛАВНОГО МЕНЮ

Экран главного меню служит для навигации по возможностям приложения. Этот экран появляется сразу после заставки и предоставляет пользователю выбор дальнейших действий. Его функциональность заключается в классе QuizMenuActivity. Этот экран должен:

•             автоматически отображаться после заставки;

•             предоставлять пользователю возможность выбора пунктов меню Play Game, Settings, Scores или Help.

На рис. 6.3 изображен примерный вид экрана главного меню.

ОПРЕДЕЛЕНИЕ ВОЗМОЖНОСТЕЙ ЭКРАНА СПРАВКИ

На экране справки пользователь может ознакомиться с правилами игры, Эта функциональность заключается в классе QuizHelpActivity. На этом экране должны выполняться следующие операции:

Рис. 6.3. Экран главного меню в игре «Been There, Done That!»

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

• предоставление навигации по содержанию справочной информации. На рис. 6.4 изображен примерный вид экрана-справки.

ОПРЕДЕЛЕНИЕ ВОЗМОЖНОСТЕЙ ЭКРАНА ТАБЛИЦЫ РЕКОРДОВ

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

•             отображение статистики лучших игровых достижений;

•             отображение только текущего счета, если пользователь перешел на этот экран в процессе игры.

На рис. 6.5 представлен примерный вид экрана таблицы рекордов. ОПРЕДЕЛЕНИЕ ВОЗМОЖНОСТЕЙ ЭКРАНА НАСТРОЕК

Рис. 6.4. Экран справки в игре «Been There, Done That!»

На экране настроек пользователи могут редактировать и сохранять параметры игры, включая имя пользователя и другие. Эта функциональность заключается в классе QuizSettingsActivity. Здесь должны выполняться следующие операции:

Рис. 6.5. Экран таблицы рекордов игры «Been There, Done That!»

• изменение игровых настроек пользователем;

• приглашение других игроков для совместной игры. На рис. 6.6 изображен примерный вид экрана настроек.

ОПРЕДЕЛЕНИЕ ВОЗМОЖНОСТЕЙ ОСНОВНОГО ИГРОВОГО ЭКРАНА

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

• вывод серии вопросов да/нет;

• обработка вводимых данных, сохранение текущего счета и состояния игры;

• переход к экрану счета после завершения игры.

Рис. 6.6. Экран настроек в игре «Been There, Done That!»

На рис. 6.7 изображен примерный экран основного игрового экрана.

Рис. 6.7. Основной игровой экран в игре «Been There, Done That!»

РЕАЛИЗАЦИЯ ПРОТОТИПА ПРИЛОЖЕНИЯ

Теперь, когда у вас есть общее представление о том, как будет выглядеть программа «Been There, Done That!» и как она будет работать, настало время для написания кода. Этот процесс состоит из нескольких этапов:

1.                                 Создание ноною проекта Android в Eclipse/

2.                                 Добавление новых ресурсов проекта, включая текст и графику.

3.                                 Создание разметки для каждого экрана.

4.                                 Реализация деятельности для каждого экрана

5.                                 Настройка параметров для всего приложения.

КСТАТИ __________________________________________________________

Код для данного проекта доступен на прилагаемом г книге диске в папке /Книга/ Час 06.

Создание нового проекта Android

Создать новый проект приложения вы можете с помощью мастера проектов Android в Eclipse.

При создании проекта вам необходимо ввести следующие данные:

•             Project name (Название проекта): TriviaQuiz.

•             Build target (Целевая платформа): Android 2.1.

•            Application name (Название приложения): Been There. Done That!.

•             Package name (Название пакета): com.androidbook.triviaquiz.

•             Create activity (Создать деятельность): QuizSplashActivity.

Это лишь основные параметры нового проекта Android. Кроме того, вам необходимо сделать еще несколько корректировок.

ЗНАЕТЕ ЛИ ВЫ, ЧТО… ___________________________________________________

В коде листингов этой книги (которые вы можете найти на прилагаемом диске), имена пакетов содержат номер часа, которому они принадлежат. Например, имя пакета для этого часа — com.androidbook.triviaquiz6. Таким образом, вы можете совмещать не­сколько проектов на одном мобильном телефоне и загружать их одновременно.

Добавление ресурсов в проект

В проекте «Been There, Done That!» необходимо добавить несколько дополнительных ресурсов. В частности, вам нужно добавить файл макета для каждой деятельности и текст для каждого имени деятельности. Еще неплохо бы изменить значок приложения на более подходящий.

ДОБАВЛЕНИЕ СТРОКОВЫХ РЕСУРСОВ

Сначала необходимо отредактировать файл ресурса strings.xml. Удалите стоку с именем hello и создайте шесть новых строковых ресурсов — по одному для каждого экрана. Например, вы можете создать строковый ресурс help со значением Help Screen. После выполнения этих действий файл strings.xml должен выглядеть так:

<?xml version=”1.0″ encoding=”utf-8″?> <resources> <string

name= “app name”>Been There, Done That!</string> <string

name=”help”>Help Screen</string> <string

name=”menu”>Main Menu Screen</string> <string

name=”splash”>Splash Screen</string> <string

name=”settings”>Settings Screen</string> <string

name=”game”>Game Screen</string> <string

name=”scores”>Scores Screen</string> </resources>

ДОБАВЛЕНИЕ РЕСУРСОВ МАКЕТА

Далее вам нужно создать файл макета для каждой деятельности. Переименуйте файл макета main.xml в splash.xnil. Затем сделайте пять копий файла splash.xml и присвойте этим копиям следующие имена: game.xml, help.xml, menu.xml, scores.xml и settings.xml.

Вы можете встретить предупреждение ошибке в каждом файле макета. Ошибка заключается в том, что элемент управления TextView в макете ссылается на несуществующую строку @string/hello, которую вы удалили. Поэтому в каждом файле макета вы должны изменить ссылку на ресурсы, загружаемые элементом управления TextView. Например, в файле game.xml вам необходимо заменить ссылку на ресурс @string/hello новой строкой — @string/game. Теперь после загрузки файлов разметки они должны отображать соответствующий экран.

ДОБАВЛЕНИЕ ГРАФИЧЕСКИХ РЕСУРСОВ

Нам нужно заменить значок приложения на более подходящий. Например, вы можете соз­дать значок quizicon.png размером 48×48 из исходного снимка Земли со спутника и добавить в папку ресурсов /drawable. После этого удалите файл icon.png, используемый по умолчанию.

ЗНАЕТЕ ЛИ ВЫ, ЧТО… __________________________________________________

В коде проекта этого часа и будущих часов для графических ресурсов будет исполь­зоваться единственная папка — /drawable. Каждый раз, когда системе Android понадо­бится графический ресурс, она будет обращаться только к этой папке, вместо папок по умолчанию [/drawabte-ldpi, /drawable-mdpi и /drawable-hdpi). В этой книге к имени файла значка quizicon.png будет присоединяться порядковый номер часа, чтобы отли­чать, к какому часу принадлежит тот или иной файл.

Реализация деятельностей приложения

Чтобы реализовать основной класс Activity, вы можете просто скопировать исходный файл QuizSplashActivity.java. Затем создайте новый файл класса QuizActivity. Этот класс должен выглядеть очень просто:

package com.androidbook.triviaquiz6; import android.app.Activity;

public class QuizActivity extends Activity {

public static final String GAME_PREFERENCES = “GamePrefs”;

}

Остальное вы добавите в этот класс позже, Обновите класс QuizSplashActivity, чтобы расширить его из класса QuizActivity вместо класса Activity напрямую.

СОЗДАНИЕ ОСТАЛЬНЫХ ДЕЯТЕЛЬНОСТЕЙ ПРИЛОЖЕНИЯ

Скопируйте деятельность QuizSplashActivity пять раз — по одному разу для каждой активности: QuizMenuActivity, QuizHelpActivity, QuizScoresActivity, QuizSettingsActivity и QuizGameActivity.

Обратите внимание, как удобно Eclipse обновляет имя класса при копировании файла класса. Создавать файлы классов вы можете также, щелкнув правой кнопкой по имени пакета com.androidbook.triviaquiz и выбрав команду New Class (Новый Класс). В открывшемся диалоговом окне вы можете выбрать параметры создаваемого класса.

КСТАТИ ________________________________________________________________

Несколько полезных рекомендаций, касающихся работы в Eclipse, вы можете найти в приложении Б.

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

QuizHelpActivity вы должны изменить метод setContentView(), чтобы загружать файл макета, созданного вами для экрана справки, следующим образом:

setContentView(R.layout.help);

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

ОБНОВЛЕНИЕ ФАЙЛА МАНИФЕСТА ANDROID

Теперь вам необходимо сделать некоторые изменения в файле манифеста Android. Во- первых, вам надо изменить ресурс значка приложения, чтобы ссылка @drawable/quizicon указывала на созданный вами значок. Во-вторых, чтобы новые деятельности выполнялись правильно, их нужно зарегистрировать в файле манифеста. Наконец, вы должны установить значение true в атрибуте приложения Debuggable и убедиться, что деятельность QuizSplashActivity является деятельностью запуска по умолчанию.

КСТАТИ _______________________________________________________________

В нашем случае мы создали только один значок. Тем не менее, если вы уже создали три значка разных размеров и поместили их в папки по умолчанию (/drawable- Idpi, /drawable-mdpi и /drawable-hdpi), использоваться будет только один значок. Обязательно убедитесь, что все значки называются одинаково. Таким образом, система Android может автоматически выбрать подходящий значок с учетом аппарат­ных особенностей устройства, на котором запущено приложение.

Установка параметров приложения

В игре «Been There, Done That!» вам нужен простой механизм сохранения информации о состоянии и пользовательских данных. Эту возможность вы можете реализовать с помощью                           общедоступных    параметров  системы          Android

(android.content.SharedPreferences).

Получить доступ к общедоступным параметрам вы можете по его имени из любой деятельности приложения. Для этого объявите имя набора параметров в базовом классе QuizActivity так, чтобы они стали доступны всех подклассов:

public static final String GAME_PREFERENCES = “GamePrefs”;

ЗНАЕТЕ ЛИ ВЫ, ЧТО… __________________________________________________

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

Чтобы добавить общедоступные параметры в приложение, выполните еле- дующие шаги:

1.                                Методом getSharedPref erences () получите экземпляр объекта

SharedPreferences.

2.                                  Создайте объект SharedPre f erences . Editor, чтобы изменить параметры.

3.                                 Сделайте изменения в параметрах с помощью редактора.

4.                                 Примените изменения методом commit () в редакторе.

СОХРАНЕНИЕ ОБЩЕДОСТУПНЫХ ПАРАМЕТРОВ

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

•             булев;

•             число с плавающей точкой;

•             целое число;

•             длинное целое число;

•             строка.

После того, как вы решили, какие параметры хотите сохранять, вы должны получить экземпляр объекта SharedPreferences, затем с помощью объекта Editor сделать изменения и сохранить их. В следующем примере сохраняются два параметра — имя пользователя и его возраст:

import android.content.SharedPreferences; // …

SharedPreferences settings =

getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE); SharedPreferences.Editor prefEditor = settings.edit(); prefEditor.putString(“UserName”, “JaneDoe”); prefEditor.putInt(“UserAge”, 22); prefEditor.commit();

Вы можете также использовать редактор общедоступных параметров для их сброса ме­тодом clear () и удаления определенных параметров по имени методом remove () .

ПОЛУЧЕНИЕ ОБЩЕДОСТУПНЫХ ПАРАМЕТРОВ

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

SharedPreferences settings =

getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE); if (settings.contains(“UserName”) == true) { // We have a user name

String user = Settings.getString(“UserName”, “Default”); }

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

Несмотря на то, что в игре «Been Three, Done That!» общедоступные параметры пока не используются, полученные знания о них помогут вам при разработке активностей

приложения. Они пригодятся, когда вы начнете применять каждую деятельность в этой книге позже.

ПОДГОТОВКА ПРОТОТИПА ИГРЫ

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

Создание конфигурации отладки

Вы должны создать в Eclipse конфигурацию отладки для каждого проекта. Убедитесь, что выбранное для проекта AVD совместимо с Google API (API Level 7). Если у вас нет такого AVD (или вы не уверены в этом), нажмите на кнопку вызова Android SDK and AVD Manager в Eclipse. Здесь вы можете определить, какие AVD лучше всего подходят приложению, и создать новые, если необходимо.

Запуск прототипа в эмуляторе

Теперь все готово для запуска приложения «Been There, Done That!» в эмуляторе Android. Вы можете сделать это, щелкнув по кнопке отладки в Eclipse или на кнопке Run (Выполнение) в созданной только что конфигурации отладки.

Рис. 6.8. Прототип игры «Been Three, Done That!» рядом с другими приложениями

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

Установка прототипа приложения

Приложение «Been There, Done That!» в текущем виде выполняет довольно мало задач, но с помощью эмулятора Android и других инструментов вы можете оценить результат своей работы.

•             Application Manager (Менеджер приложений) — полезен для поиска интересной информации о приложении. В эмуляторе переместитесь на экран по умолчанию, нажмите на кнопку Menu (Меню), выберите комманду Settings=>Applications=> Manage applications (Настройки=>Приложение=>Управление приложениями) и выберите приложение «Been There, Done That!» из списка. Здесь вы можете видеть основную информацию о приложении, включая занимаемый объем и используемые права, а также информацию о кэше и т.д.

•             Dev Tools (Средства разработки) – с их помощью вы можете получить более подробную информацию о приложении. Зайдите в эмулятор, перечите в меню приложений, запустите приложение Dev Tools (Средства разработки) и выберите Package Browser (Обзор пакетов). Переместитесь к пакету com.androidbook.triviaquiz. С помощью этого средства вы можете увидеть информацию о манифесте и проверить настройки каждой зарегистрированной активности.

Разумеется, вы можете исследовать приложение в перспективе DDMS. Например. вы можете проверить папку приложения пакета com.androidbook.triviaquiz в файловой системе Android. Вы можете также рассмотреть код деятельности

Qui zSplashActivity.

ИТОГИ

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

ВОПРОСЫ И ОТВЕТЫ

Вопрос. Какой класс может быть наследован для обеспечения приложению общедоступных компонентов?

Ответ. Создав собственный общедоступный класс Activity, вы можете реализовать одинаковое поведение для каждого экрана.

Вопрос. Могут ли у деятельности быть собственные параметры?

Ответ. Да, параметры могут совместно использоваться деятельностями, и у каждой деятельности могут быть собственные параметры. Для доступа к общедоступным параметрам используется метод getSharedPreferences () . Для доступа к параметрам деятельности используется метод getPreferences () .

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

Ответ. Вы должны сконфигурировать и AVD, и конфигурацию отладки. После этого вы можете легко запустить свое приложение прямо в Eclipse для последующей отладки и тестирования.

ПРАКТИКУМ Контрольные вопросы

1.                                В приложении «Been There, Done That!» всею три деятельности. Так ли это?

2.                                 Какие типы данных поддерживаются в общедоступных параметрах при­ложения?

A.                                Булев тип, вещественное число, целое число, длинное целое число и строковый тип.

B.                                Булев тип, целое число и строковых данных.

C.                                Все типы, доступные в Java.

3.                                 Вы можете обойтись лишь основным классом деятельности (например,

QuizActivity) в файле манифеста Android. Правда ли это?

Ответы

1.                                 Нет, не так. В приложении «Been There, Done That!» для каждого из шести экранов создана отдельная деятельность. В приложении есть также основной класс деятельности, из которого происходят все остальные. Всего в проекте семь классов деятельности.

2.                                 Правильный ответ: А. Допускается использование данных булева типа, вещественных чисел, целых чисел, длинных целых чисел и строковых данных.

3.                                 Нет. У каждой деятельности должна быть собственная запись в файле манифеста Android.

 

Литература: Дэрси JI., Android за 24 часа. Программирование приложений под операционную систему Google/ ДэрсиЛ., КондерШ. — М.: Рид Групп, 2011. — 464 с. — (Профессиональные компьютерные книги). ISBN 978-5-4252-0318-2

По теме:

  • Комментарии