воскресенье, 25 января 2015 г.

Среда разработки Android Studio и создание проекта Android

Создавать проекты для 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.


На этой странице надо заполнить следующие поля:

  • 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
По умолчанию включен режим 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. Если кого-то интересует какая-то конкретная тема, пишите.

Комментариев нет:

Отправить комментарий