Продолжение. Начало в статье Hello, World. Часть 1

Построение пользовательского интерфейса (UI)

Посмотрим на отредактированный код и внесем точно такие же изменения и в свой класс HelloAndroid.

[code lang=»js»]
package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid 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, Android");
setContentView(tv);
}
}
[/code]

Совет: Легким способом импортировать пакеты в свои проекты является одновременное нажатие клавиш Ctrl-Shift-O (Cmd-Shift-O, на Mac). Эта комбинация вызывает ярлык Eclipse, который определяет недостающие пакеты, основываясь на вашем коде, и добавляет их вам. Вы можете расширить инструкции структуры import в вашем коде, чтобы эта возможность заработала.

Пользовательский интерфейс Андроид состоит из иерархии объектов под названием Views (Виды). View является ключевым объектом, использующимся как элемент внешнего вида вашего UI, такой например как кнопка, изображение, или (в данном случае) текстовая метка. Каждый из таких объектов является подклассом основного класса View, а подклассом управляющим текстом является TextView.

В данном изменении кода, вы можете создавать TextView при помощи конструктора класса, который принимает реализацию Android Context как свой параметр. Context является дескриптором системы; он предоставляет такие сервисы, как например выделение ресурсов системы, получение доступа к базам данных и глобальным параметрам, и так далее. Класс Activity получает свойства от дескриптора Context, и так как ваш класс HelloAndroid является подклассом Activity, он также получает данные от Context. Поэтому вы можете добавить this в качестве вашей сноски Context на TextView.

Далеко, вы определяете текстовое содержание при помощи элемента setText().

Наконец, вы передаете параметр TextView элементу setContentView() с целью его отображения в качестве пользовательского интерфейса Activity. Если к Activity не подключить данный метод, пользовательский интерфейс поддерживаться не будет и система будет отображать лишь пустой экран.

Вот и оно — приложение «Hello, World» в Андроид! Следующий шаг, конечно, проверить работает ли приложение.

Запуск приложения

Плагин Eclipse позволяет очень легко запускать приложения:
1. Выберите Run > Run.
2. Выберите «Android Application»

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

Надпись «Hello, Android», которую вы видите в сером горизонтальном меню, является названием приложения. Плагин Eclipse создает его автоматически. (Данная строка определяется в файле res/values/strings.xml и на него ссылается ваш файл AndroidManifest.xml). Текст, который находится ниже данного названия является тем самым текстом, который вы ввели в качестве объекта TextView.

Вот и все базовое руководство «Hello World», но если вы заинтересованы в дальнейшем обучении, то продолжайте читать наши дальнейшие пояснения по разработке приложений Андроид.

Обновление UI при помощи структуры XML

Пример «Hello, World», который мы только что рассмотрели, использует «программируемый» внешний вид пользовательского интерфейса (UI). Это означает, что вы создаете UI своего приложения напрямую в исходном коде. Если раньше вы занимались программированием UI, то вы наверняка знакомы с тем, насколько хрупким зачастую может быть данный подход: незначительные изменения во внешнем виде становятся огромной головной болью для программиста. Также легко забыть правильно соединить Views, что может стать причиной проблем и долгого времени, проведенного в поиске путей их решения.

Вот почему, Андроид предлагает альтернативную модель построения UI: файлы внешнего вида на основе XML. Самым легким способом объяснить данную концепцию это, естественно, привести пример. Вот раскладка файла XML, идентичного по своему «поведению», «программируемому» примеру:

[code lang=»xml»]
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello"/>
[/code]

Основная структура файла Android XML проста: это дерево XML элементов, где каждый узел является именем класса View (в данном примере, однако, присутствует всего лишь один элемент класса View). Вы можете использовать имя любого класса, уточняющего View как элемент вашей XML структуры, включая собственные классы View, которые вы обозначите в коде. Данная структура позволяет быстро создавать UI, используя более простую структуру и синтаксис, чем те, которые вы обычно используете в программируемой разметке. Данная модель создана как подобие модели интернет программирования, в которой вы можете разделять вид вашего приложения (его UI) от его логической структуры, используемой для ввода и вызова данных.

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

xmlns:android Является дескриптором (описанием) области имен, указывающий инструментам Андроид на то, что вы собираетесь обратиться к общим атрибутам, описанным в области имен Андроид. Даже самый незначительный тег в файле внешнего образа Андроид должен обладать данным атрибутом.
android:id Данный атрибут присваивает уникальный идентификатор элементу TextView. Вы можете использовать данный присвоенный ID для ссылки на элемент View из исходного кода или других ресурсов описания XML.
android:layout_width Данный атрибут определяет сколько доступной ширины экрана может потреблять элемент View. В данном случае мы хотим использовать всю ширину экрана, поэтому используем значение “fill_parent”.
android:layout_height Схож по значению с элементом android:layout_width, с той лишь разницей, что при его помощи задается высота экрана.
android:text Устанавливает текст, который должен отразить элемент TextView. В данном случае, мы используем строковое значение вместо тяжелого кодового значения. Строка hello определяется в файле res/values/strings.xml Для отображения строк в вашем приложении рекомендуется использовать именно данный способ, так как он делает локализацию вашего приложения на другие языки более легкой, без необходимости изменения в тяжелом для понимания коде файла внешнего вида.

Данные XML файлы внешнего вида приложения находятся в каталог res/layout/ вашего проекта. Сокращение “res” означает “resources” и каталог содержит все не-кодовые ресурсы, необходимые вашему приложению. В дополнение к файлам внешнего вида приложения, ресурсы включают в себя изображения, звуки и локализованные строки.