Создавать проекты для Android можно в Eclipse и Android Studio. С момента появления Android основным средством разработки был Eclipse, затем в мае 2013 года Google объявила и о новой среде разработки Android Studio. Эта среда разработки основана IntelliJ IDEA от JetBrains. Примерно полтора года Android Studio находилась в состоянии бета-версии, а в декабре 2014 года вышла первая релиз-версия. С этого момента Google объявила основной средой разработки Android Studio перестала поддерживать Eclipse.
В этой статье рассмотрим создание проекта в Android Studio и изучим его структуру.
Если у вас еще не установлена Android Studio, скачайте и установите ее (http://developer.android.com/sdk/index.html). После установки Android Studio и ее обновлений при запуске откроется окно приветствия Welcome to Android Studio:
В этом окне мы можем выбрать создание нового проекта, открытие существующего, загрузить проект из системы контроля версий и т.д.
Выбираем Start a new Android Studio project и у нас открывается окно мастера Create New Project на странице Configure your new project.
На этой странице надо заполнить следующие поля:
Далее нажимаем кнопку Next и переходим на следующую страницу мастера Select the form factors your app will run on.
Здесь мы должны определить форм-фактор приложения, т.е для каких платформах это приложение будет предназначено. Также в этом окне для каждой платформы выбирается минимальный уровень для приложения Minimum SDK. Это минимальная версия SDK, поддерживаемая приложением. Устройства Android с более ранней версией SDK не смогут установить ваше приложение.
По умолчанию минимальный уровень API выставлен в 15 (Android 4.0.3). При необходимости можно выбрать из раскрывающегося списка другой уровень SDK. Выбираем форм-фактор Phone and Tablet, Minimum SDK – API 15: Android 4.0.3 и нажимаем кнопку Next.
Откроется страница Add an Activity to Module. На этой странице, если мы создаем GUI-приложение, мы должны выбрать тип Activity. Страница содержит 10 предопределенных шаблонов Activity:
Мы выберем Blank Activity — это самый простой шаблон Activity, содержит минимум кода и лучше всего подходит для первого знакомства со структурой проекта. Нажимаем кнопку Next и переходим в последнне окно мастера Choose options for your new file:
На этой странице мы должны определить 4 параметра:
Оставьте значения по умолчанию, и нажмите Finish.
После создания проекта откроется основное окно Android Studio
Рассмотрим сейчас файлы и каталоги, которые были созданы для нас средой разработки. Android Studio при создании проекта организует структуру в виде дерева каталогов, как и любой другой Java-проект. Структура файлов и каталогов проекта может меняться в зависимости от уровня API, установленного для проекта.
В левой части главного окна находится открытое инструментальное окно (Tool Window) Project. Это окно имеет несколько режимов представления дерева проекта:
В этом каталоге хранятся используемые в приложении статические файлы ресурсов: изображения, строки, анимация и др. Некоторые из подкаталогов генерируются Android Studio при создании приекта, другие необходимо добавлять самостоятельно, используя предопределенные имена. Обычно в ресурсы включают следующие подкаталоги:
Структура каталога ресурсов:
Здесь следует отметить некоторые ограничения относительно создания папок файлов ресурсов проекта. Android поддерживает только линейный список файлов в пределах предопределенных папок под каталогом res/. Например, он не поддерживает вложенные папки под папкой для XML-файлов компоновки (или другими папками в каталоге res/).
В подкаталогах res/drawable-hdpi, res/drawable-mdpi, res/drawable-xhdpi, res/drawable-xxhdpi, которые предусмотрены для различных разрешений экрана, размещаются все графические файлы, используемые в приложении для изображений (PNG, JPEG и т. д.). Изображения в каждой папке рассчитаны на соответствующее разрешение экрана мобильного устройства hdpi, mdpi, nhdpi, xxhdpi).
На данный момент в этих подкаталогах содержится только файл ic_launcher.png — значок приложения, по умолчанию устанавливаемый для приложения мастером создания проекта и отображаемый в меню запуска установленных на телефоне приложений (Application Launcher).
В подкаталог res/layout/ помещаются файлы компоновки в формате XML, которые определяют внешний вид окна Activity и расположение на нем элементов управления. Каждый файл компоновки представляет собой окно приложения. В нашем проекте он единственный и по умолчанию называется activiy_main.xml. Если щелкнуть мышью по файлу activiy_main.xml, откроется Layout Editor — редактор компоновки.
Редактор компоновки имеет два режима отображения: графический и текстовый, которые переключаются закладками в нижней части окна. Нажмите закладку Text, чтобы увидеть, что текстовый вид компоновки.
Android Studio по умолчанию генерирует базовую компоновку для главного окна приложения с текстовым полем и надписью "Hello World!":
В подкаталоге res/values расположены XML-файлы, в которых хранятся общие константы для всего приложения: текст, используемый элементами управления, цвета, стили и т. д. Первоначально Android Studio создает 3 файла:
Ресурсы объявленные в этих файлах, мы можем использовать в программе по ссылкам. Если мы хотим вывести "Hello World!" в текстовое поле, можно это сделать двумя способами:
В этой статье рассмотрим создание проекта в Android Studio и изучим его структуру.
Создание нового проекта
Если у вас еще не установлена Android Studio, скачайте и установите ее (http://developer.android.com/sdk/index.html). После установки Android Studio и ее обновлений при запуске откроется окно приветствия Welcome to Android Studio:
Выбираем Start a new Android Studio project и у нас открывается окно мастера Create New Project на странице Configure your new project.
На этой странице надо заполнить следующие поля:
- Application name: имя приложения. Это имя будет видно в списке приложений на Android-устройстве (Application Launcher) и магазине Google Play.
- Company Domain: ваше доменное имя. По умолчанию Android Studio пишет его в виде user_name.example.com.
- Package name: Имя пакета, который является уникальным идентификатором приложения. Оно генерируется из доменного имени в реверсивной форме с добавлением имени приложения без пробелов: reverse_company_domain.app_name. Если вы хотите внести изменения в имя пакета, нажмите кнопку Edit справа, и поле Package name откроется для редактирования
- Project location: Это - каталог для сохранения проекта в системе.
Далее нажимаем кнопку Next и переходим на следующую страницу мастера Select the form factors your app will run on.
Здесь мы должны определить форм-фактор приложения, т.е для каких платформах это приложение будет предназначено. Также в этом окне для каждой платформы выбирается минимальный уровень для приложения Minimum SDK. Это минимальная версия SDK, поддерживаемая приложением. Устройства Android с более ранней версией SDK не смогут установить ваше приложение.
По умолчанию минимальный уровень API выставлен в 15 (Android 4.0.3). При необходимости можно выбрать из раскрывающегося списка другой уровень SDK. Выбираем форм-фактор Phone and Tablet, Minimum SDK – API 15: Android 4.0.3 и нажимаем кнопку Next.
Откроется страница Add an Activity to Module. На этой странице, если мы создаем GUI-приложение, мы должны выбрать тип Activity. Страница содержит 10 предопределенных шаблонов Activity:
Мы выберем Blank Activity — это самый простой шаблон Activity, содержит минимум кода и лучше всего подходит для первого знакомства со структурой проекта. Нажимаем кнопку Next и переходим в последнне окно мастера Choose options for your new file:
На этой странице мы должны определить 4 параметра:
- Activity Name: имя Java-класса для Activity
- Layout Name: имя XML-файла, в который представляет компоновку для Activity
- Title: имя Activity, которое будет отображаться в статус баре
- Menu Resource Name: имя XML-файла для меню.
Оставьте значения по умолчанию, и нажмите Finish.
После создания проекта откроется основное окно Android Studio
Структура проекта
Рассмотрим сейчас файлы и каталоги, которые были созданы для нас средой разработки. Android Studio при создании проекта организует структуру в виде дерева каталогов, как и любой другой Java-проект. Структура файлов и каталогов проекта может меняться в зависимости от уровня API, установленного для проекта.
В левой части главного окна находится открытое инструментальное окно (Tool Window) Project. Это окно имеет несколько режимов представления дерева проекта:
- Project
- Packages
- Android
Переключитесь на режим Project и вы увидите реальную структуру проекта. Раскройте каталог FirstAndroidApp->app->src->main:
В main находятся файл AndroidManifest.xml и два каталога:
- java - для java классов
- res - для ресурсов приложения.
Каталоги ресурсов
В этом каталоге хранятся используемые в приложении статические файлы ресурсов: изображения, строки, анимация и др. Некоторые из подкаталогов генерируются Android Studio при создании приекта, другие необходимо добавлять самостоятельно, используя предопределенные имена. Обычно в ресурсы включают следующие подкаталоги:
- res/drawable-hdpi/, res/drawable-ldpi/, res/drawable-mdpi/, res/drawable-xhdpi/, res/drawable-xxhdpi/ — для изображений (PNG, JPEG и т. д.). Изображения в каждой папке рассчитаны на соответствующее разрешение экрана мобильного устройства;
- res/layout/ — для XML-файлов компоновки (компоновка графических элементов управления для окон приложения);
- res/menu/ — для XML-файлов меню;
- res/values/ — для строковых ресурсов, массивов и т. д.;
- res/xml/ — для других XML-файлов, которые понадобятся для разработки приложения.
Структура каталога ресурсов:
Здесь следует отметить некоторые ограничения относительно создания папок файлов ресурсов проекта. Android поддерживает только линейный список файлов в пределах предопределенных папок под каталогом res/. Например, он не поддерживает вложенные папки под папкой для XML-файлов компоновки (или другими папками в каталоге res/).
Подкаталоги res/drawable/
В подкаталогах res/drawable-hdpi, res/drawable-mdpi, res/drawable-xhdpi, res/drawable-xxhdpi, которые предусмотрены для различных разрешений экрана, размещаются все графические файлы, используемые в приложении для изображений (PNG, JPEG и т. д.). Изображения в каждой папке рассчитаны на соответствующее разрешение экрана мобильного устройства hdpi, mdpi, nhdpi, xxhdpi).
На данный момент в этих подкаталогах содержится только файл ic_launcher.png — значок приложения, по умолчанию устанавливаемый для приложения мастером создания проекта и отображаемый в меню запуска установленных на телефоне приложений (Application Launcher).
Подкаталог res/layout/
В подкаталог res/layout/ помещаются файлы компоновки в формате XML, которые определяют внешний вид окна Activity и расположение на нем элементов управления. Каждый файл компоновки представляет собой окно приложения. В нашем проекте он единственный и по умолчанию называется activiy_main.xml. Если щелкнуть мышью по файлу activiy_main.xml, откроется Layout Editor — редактор компоновки.
Редактор компоновки имеет два режима отображения: графический и текстовый, которые переключаются закладками в нижней части окна. Нажмите закладку Text, чтобы увидеть, что текстовый вид компоновки.
Android Studio по умолчанию генерирует базовую компоновку для главного окна приложения с текстовым полем и надписью "Hello World!":
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>Однако самой надписи "Hello World!" в коде вы не увидите. В элементе TextView, который представляет текстовое поле, есть свойство android:text="@string/hello_world". Его значение содержит ссылку на строковой ресурс с именем hello_world. Эти ресурсы хранятся в отдельных файлах в подкаталоге res/values. Также в корневом элементе Relative Layout содержатся свойства android:padding... значения для которых определяются ссылками на внешние ресурсы.
Подкаталог res/values/
В подкаталоге res/values расположены XML-файлы, в которых хранятся общие константы для всего приложения: текст, используемый элементами управления, цвета, стили и т. д. Первоначально Android Studio создает 3 файла:
- dimens.xml - для хранения размерностей: величин отступов, высоты и т.д.
- strings.xml - для хранения строковых ресурсов
- styles.xml - для хранения стилей
Ресурсы объявленные в этих файлах, мы можем использовать в программе по ссылкам. Если мы хотим вывести "Hello World!" в текстовое поле, можно это сделать двумя способами:
- написать явно в файле компоновки. Нам не нужен для этого ресурс, но в тоже время, мы не сможем впоследствии локализовать это приложение для других языков;
- создать в strings.xml константу hello со значением "Hello World!", а в файле компоновки в атрибуте android:text для элемента TextView указать ссылку на ресурс в strings.xml, как в файле activity_main: android:text="@string/hello_world"
Поэтому хорошим стилем программирования является создание отдельных ресурсов и использование ссылок на них.
Подкаталог res/menu
В подкаталоге res/menu содержатся файлы компоновки меню. Обычно каждому окну создают отдельный файл меню (если в этом окне будет использоваться меню) В нашем проекте там находится единственный файл menu_main:
menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/action_settings" android:title="@string/action_settings" android:orderInCategory="100" app:showAsAction="never" /> </menu>
Файл класса окна приложения MainActivity.java
В каталоге src/имя_пакета/ (в нашем случае — src/com.samples.firstapp/) находится файл MainActivity.java — это класс, автоматически генерируемый Android Studio для главного окна приложения.
По умолчанию класс, создаваемый средой разработки, является расширением класса ActionBarActivity
MainActivity.java
package com.example.firstandroidapp; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
В классе уже определены 3 overload-метода:
- onCreate()- вызывается системой для прорисовывания окна Activity на экране устройства.
- onCreateOptionsMenu() - вызывается системой для создания меню;
- onOptionsItemSelected() - обработчик события выбора пункта меню Settings, единственный пункт меню, который генерируется по умолчанию.
В этот класс разработчик может добавлять код, реализующий логику работы приложения в данном Activity.
Если приложение будет иметь несколько окон, для каждого из них будет создан отдельный класс.Файл AndroidManifest.xml
Файл манифеста приложения — структурный XML-файл, который всегда имеет название AndroidManifest.xml для всех приложений. Он задает конфигурацию приложения: объявляет компоненты приложения, перечисляет любые библиотеки, связанные с приложением (помимо библиотек Android, связанных по умолчанию), и объявляет разрешения, которые требуются для работы приложения (например, доступ в сеть, разрешение на отправку SMS и т. д.).
Код файла манифеста:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.firstandroidapp" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Атрибут android:name элемента <activity> вызывает подкласс Activity, который реализует Activity (окно) в приложении. Атрибуты icon и label прикрепляют файлы ресурсов, содержащих значок и текст, которые могут быть отображены пользователю.
Аналогичным способом объявляются и другие компоненты приложения.
Прежде чем система Android запустит компонент приложения, она должна узнать, что этот компонент существует. Поэтому приложения объявляют свои компоненты в файле манифеста AndroidManifest.xml, который предоставляет основную информацию системе. Каждое приложение должно иметь свой файл AndroidManifest.xml.
Файл манифеста приложения выполняет следующие функции:
- объявляет имя Java-пакета данного приложения. Имя пакета служит уникальным идентификатором для приложения;
- описывает компоненты приложения — Activity, Service, Broadcast Receiver и Content Provider, из которых состоит данное приложение. Эти объявления позволяют системе Android знать, чем компоненты являются и при каких условиях они могут быть запущены;
- объявляет разрешения, которые должно иметь приложение для обращения к защищенным системным службам и взаимодействия с компонентами других приложений;
- объявляет разрешения, которые сторонние приложения обязаны иметь, чтобы взаимодействовать с компонентами данного приложения;
- объявляет минимальный уровень API Android, который требует приложение;
- перечисляет библиотеки, с которыми приложение должно быть связано.
Редактировать файл манифеста можно вручную, записывая XML-код непосредственно в файл.
Ну вот и все... Мы пока рассмотрели и разобрались со структурой простейшего проекта Android. Дальше я буду публиковать обучающие уроки по программированию на Android и по работе в Android Studio. Если кого-то интересует какая-то конкретная тема, пишите.
Комментариев нет:
Отправить комментарий