Главная » Программирование игр под Android » HELLO WORLD В СТИЛЕ ANDROID

0

 

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

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

Существуют два способа создания нового Android-проекта. Щелкните правой кнопкой мыши в представлении Package Explorer (Диспетчер пакетов) (см. рис. 2.5) и выберите New Project (Новый проект) из появившегося контекстного меню. В открывшемся диалоге выберите Android Project (Проект Android) в категории Android. Как видите, тут есть множество других параметров создания проекта. Это стандартный способ создать новый проект любого типа в Eclipse. После подтверждения откроется помощник создания проектов Android. Второй способ намного проще: просто нажмите кнопку создания нового Android-проекта (см. рис. 2.4).

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

1. Дать проекту название. По соглашению о наименовании принято использовать только маленькие буквы. В данном примере проект будет называться hel 1 о worl d.

2. Определить цель сборки. Пока выберем цель Android 1.5 – первая программа будет очень проста, и нам не потребуются продвинутые возможности вроде мультитач.

ПРИМЕЧАНИЕ

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

3. Определить название вашего приложения (например, классическое hel  о world), название пакета Java, в котором будут помещаться ваши исходные файлы (например, com.heloworld), и название активности. Понятие активность в Android – синоним окна или диалога в настольных операционных системах. Назовем его HelloWorldActivity.

4. Задать минимальную версию Android, необходимую для запуска вашего приложения. Для этого используется поле Min SDK Version (Минимальная версия SDK). Это необязательный параметр, однако его установка считается хорошим тоном. Версии SDK нумеруются начиная с 1 (1.0) и увеличиваются по мере выхода новых релизов. С версии ОС 1.5 актуальным является третий релиз, поэтому введем в поле значение 3. Помните, что ранее вам необходимо было выбрать цель сборки, которая может оказаться новее, чем минимальная версия SDK. Это позволяет вам работать с более высоким уровнем API, сохраняя, однако, совместимость с более старыми версиями ОС (конечно, необходимо убедиться, что вы вызываете только те методы, которые поддерживаются API для данной версии).

После этого нажмите Finish (Готово) для создания вашего первого проекта Android.

ПРИМЕЧАНИЕ

Установка минимального уровня версии SDK имеет свои последствия. Программа может запускаться только на устройствах с версией Android, равной или большей минимальному уровню SDK, который вы определили. Когда пользователь посещает Android Market с помощью стандартного системного приложения, то он видит только приложения, удовлетворяющие требованиям минимального SDK.

 

Исследование проекта

В представлении Package Explorer (Диспетчер пакетов) вы должны увидеть проект, названный helоworld. Если вы развернете его и его подразделы, то увидите нечто, похожее на рис. 2.6. Это общая структура большинства Android-проектов. Рассмотрим ее подробнее.

Androi dMani fest. xml – описывает приложение. Он определяет, какие активности и службы в нем содержатся, на какой минимальной и целевой версии Android его предполагается запускать и какие разрешения ему необходимы для работы (например, доступ к карте памяти или к сети). defaul t. properti es – хранит различные настройки сборки. Мы не будем трогать этот файл – ADT сам меняет его содержимое при необходимости. src/ – содержит все исходники на Java. Обратите внимание – пакет имеет имя, определенное нами на этапе создания проекта. gen/ – содержит исходники на Java, сгенерированные сборочной системой Android. Они создаются автоматически, и мы не будем иметь с ними дело напрямую.

Рис. 2.6. Структура проекта Hello World

assets/ – место хранения файлов, необходимых приложению (например, файлы конфигурации и звуковые дорожки). Эти файлы при сборке включаются в пакет.

res / – место хранения ресурсов для приложения (значков, строковых значений для интернационализации, XML-файлов компоновки). Как и ресурсы (assets), они включаются в пакет при сборке приложения.

Android 1.5 – сообщает нам, что мы собираем приложение для версии ОС 1.5. Это на самом деле зависимость в форме стандартных J AR-файлов, хранящих в себе классы API для Android 1.5.

Представление Package Explorer (Диспетчер пакетов) скрывает от нас еще один каталог – bin/, содержащий компилированный код, который можно разворачивать на устройстве или эмуляторе. Как и в случае с папкой gen/, обычно можно не задумываться, что в ней происходит.

Можно с легкостью добавлять в представление Package Explorer (Диспетчер пакетов) новые исходники, папки и другие ресурсы. Для этого нужно щелкнуть правой кнопкой мыши на необходимом каталоге, выбрать в контекстном меню пункт New (Новый) и указать тип ресурса, который мы хотим добавить. Однако в данном случае у нас уже есть все необходимое. Следующая наша задача – немного изменить исходный код.

Написание кода приложения

К этому моменту мы не написали еще ни единой строчки кода – пора изменить это положение вещей. Помощник создания проекта Android создал для нас класс шаблона активности, называющийся НеloWorldActivity. Именно эта активность будет показываться на экране телефона при запуске приложения на эмуляторе или реальном устройстве. Откройте исходный код класса двойным нажатием файла в представлении Package Explorer (Диспетчер пакетов). Мы заменим код этого шаблона строками из листинга 2.1.

Листинг 2.1. HelloWorldActi vity.Java

Проанализируем листинг 2.1, чтобы понять, что он делает.

Все, что нам сейчас необходимо, – общее понимание происходящего.

Файл программного кода начинается со стандартного объявления Java-пакетов и нескольких деклараций импорта. Большая часть классов, составляющих фреймворк Android, содержится в пакете android:

Далее определяем класс HelloWorldActivity и наследуем его от базового класса Activity, предлагаемого API фреймворка Android. Activity – это, в общем-то, аналог окна в классических интерфейсах настольных систем, имеющий одно ограничение – оно всегда должно занимать весь экран устройства (за исключением строки оповещения в верхней части интерфейса Android).

Кроме того, мы реализуем в этом классе интерфейс OnCl i ckLi stener. Если у вас был опыт работы с другими инструментами разработки интерфейсов, то, возможно, вы можете предугадать следующий шаг:

В нашей активности будет два элемента: Button и число, хранящее количество нажатий этой кнопки:

Каждый класс типа Activity должен реализовывать абстрактный метод Acti vi ty. onCreate, вызываемый системой однократно при первом появлении активности. Это своего рода замена привычному конструктору, используемому обычно для создания экземпляра класса. Вызов метода onCreate базового класса обязательно должен быть первой строкой в теле метода:

Далее создаем объект типа Button и устанавливаем для него первоначальный текст. Button – один из многих виджетов, предлагаемых API фреймворка Android. Виджет – понятие, синонимичное представлению в Android. Обратите внимание – наша кнопка является членом класса Не. loWorldActi vity. Чуть позже нам понадобится ссылка на него:

Следующая строка метода onCreate устанавливает OnCl i ckLi stener для объекта Button. OnCl i ckLi stener – интерфейс обратного вызова с единственным методом, OnCl i ckLi stener. onCl i ck , вызываемым каждый раз при нажатии кнопки. Мы хотим получать уведомления об этих нажатиях, поэтому реализуем в НеloWorldActi vity данный интерфейс и зарегистрируем его в качестве OnCl i ckLi stener для нашего объекта Button:

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

Следующий шаг – реализация метода OnCl i ckLi stener. onCl i ck, чего требует интерфейс, подключенный к нашему классу Acti vi ty. Этот метод вызывается каждый раз, когда нажимается кнопка. Внутри него мы увеличиваем на единицу значение счетчика touchCount и присваиваем тексту кнопки это новое значение.

Подводя итог наших усилий по разработке приложения hel1о world, можно сказать, что мы создали активность, содержащую элемент типа Button. При каждом его нажатии мы реагируем, изменяя текст кнопки. Возможно, это не самое впечатляющее приложение в мире, но для демонстрации оно вполне подходит. Заметьте – нам пока ничего не пришлось компилировать вручную. Плагин ADT в сочетании с Eclipse будет пересобирать проект каждый раз, когда мы добавляем, изменяем или удаляем файлы кода или ресурсы. Результат этой сборки – файл с расширением АР К, который готов к разворачиванию на эмуляторе или реальном устройстве. Файл АРК располагается в папке bi  / проекта. Вы будете использовать данное приложение в следующих разделах для понимания процесса запуска и отладки Android-приложений на эмуляторах или телефонах.

Источник: Mario Zechner / Марио Цехнер, «Программирование игр под Android», пер. Егор Сидорович, Евгений Зазноба, Издательство «Питер»

По теме:

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