Android OS. Пишем первое приложение



]]>Android OS]]> - операционная система для мобильных устройств, основанная на ядре Linux. Первая версия датируется октябрем 2008 года. Сегодня довольно много производителей представили свои модели на базе именно этой ОС. Вот недавно и я купил себе один из них, а именно HTC Tattoo. Естественно я загорелся идеей написание собственных программ для этой платформы. В этой статье я расскажу тебе как написать свое первое приложение для современной мобильной ОС.

Инструментарий

Прежде чем что-то писать, надо понять на каком языке, и в какой среде это делать. В качестве среды проще всего использовать Eclipse. Кроме него нам понадобится JDK, Android SDK, и специальный плагин для Eclipse который значительно упростит нам жизнь. О том как все это устанавливать я писать не буду. При минимальных знаниях английского об этом можно прочитать на ]]>http://developer.android.com/sdk/installing.html]]>.

Для каждой версии ОС, а их уже достаточно много, SDK свой, и качать все их не стоит (они весят больше 1 Гб). Лучше скачать лишь ту версию, под которую пишется программа, естественно, если она создается для распространения в массы, стоит подумать о работоспособности под всеми основными версиями платформы.

В качестве языка программирования (для основного кода) применяется Java, а для создания пользовательского интерфейса используется и XML. Кроме того интерфейс можно создавать интерактивно, перемещая компоненты мышкой на форму.

Hello, World!

Сегодня мы не будем нарушать традицию и начнем наше изучение с приложения «Привет, Мир!», точнее даже с двух его версий.

В Eclipse наживаем File->New->Project, в списке выбираем Android->Android Project и жмем Next. Далее вводим имя проекта например HelloWorld, и выбираем версию SDK. Далее нужно заполнить 3 поля с неочевидным смыслом. Я заполнил их следующими значениями:

Application name: Hello, World!
Package name: com.example.helloworld
Create Activity: HelloWorld

Об их смысле я скажу чуть позже, а сейчас жмем Finish. Проект состоит из нескольких папок:

src – исходный код
gen – файлы сгенерированные самой Java
Android 1.6 – у вас может быть другая версия, часть SDK
res – файлы ресурсов, содержит несколько подкаталогов, сейчас самым важным для нас будет layout.

В файле HelloWorld.java уже есть какой-то минимальный код. Давайте немного модифицируем его. Модифицируете его так, чтобы он имел следующий вид.

package com.example.helloworld;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloWorld extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("Hello World!");
        setContentView(tv);
    }
}

Мы добавили в наше приложение возможность доступа к TextView – компоненту для отображения текста. Программирование осуществляется через обработку событий. Событие onCreate вызывается при первом запуске приложения. Там мы создаем текстовое поле, и устанавливаем для него текст.

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

Для того что-бы его создать жмем New, в окне вводим любое имя, а так же выбираем версию ОС, остальные поля можно не заполнять. Как видно можно создать по виртуальному девайсу на каждую версию ОС и проверять программу на работоспособность.

Единственный минус это то, что виртуальные девайсы по умолчанию сохраняются в папке пользователя, и в пути к ней не должно быть русских букв. Пробуем еще раз и ждем порядка минуты пока загрузится эмулятор, и видим наше приложение на экране. На серой полосе в верхней части экрана мы видим надпись Hello, World! – это значение поля Application name, заполняемое при создании проекта, а далее на черном фоне видим надпись Hello World! – как раз тот текст который мы установили для нашего TextView. К сожалению таким образом мы не сможем отобразить на экране больше одного компонента, а это совсем не то, что нам нужно, поэтому придется еще немного модифицировать код. А точнее вернуться к его первоначальному виду.

Вместо создания TextView там была всего одна строка setContentView(R.layout.main). Но что же такое R.layout.main? R – это служебный класс, который находится в папке gen, да и layout тоже. Ну а если проще то на экране будет отображен файл main.xml из папки layout. Откройте его. Судя по первой строке это обычный xml файл. В нем содержится описания компонентов и их свойств. Некоторые компоненты являются контейнерами и содержат в себе другие компоненты. Пример такого уже приведен во второй строке. Это LinearLayout. Он определяет способ расположения других компонентов друг относительно друга, наряду с ним существует несколько других таких компонентов. Поговорим о его свойствах, установленных по умолчанию.

android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"

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

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />

Два первых свойства нам знакомы. Значение второго означает то, что компонент будет такой высоты которая нужна, и будет ее менять если это нужно. А вот значением третьего свойства является какое-то странное. Это ссылка на строку которая определена в ресурсах, а именно в файле strings.xml и имеет имя hello. В моем случае оно имеет значение Hello World, HelloWorld!. Запустив приложение мы и увидим его в окне эмулятора.

Заключение

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

Written by: Крылов Егор
E-mail: