Читать книгу «Разработка Android-приложений в деталях» онлайн полностью📖 — Тимура Сергеевича Машнина — MyBook.
image

Мастер Android XML File

Мастер Android XML File, доступный в разделе Android команды New, обеспечивает создание набора ресурсов Android-приложения, состоящего из:

XML-описаний GUI-интерфейса Activity-компонентов (тип ресурса Layout),

различного рода значений, используемых приложением (тип ресурса Values),

графики (тип ресурса Drawable),

меню приложения (тип ресурса Menu),

наборов цветов (тип ресурса Color List),

анимации (тип ресурса Property Animation и Tween Animation),

метаданных приложения App Widgets (тип ресурса AppWidget Provider),

GUI-интерфейса PreferenceActivity-операции (тип ресурса Preference),

настроек поиска (тип ресурса Searchable).

Тип ресурса Layout

Для создания Layout-файла Android-приложения в окне Project Explorer нажмем правой кнопкой мышки на узле проекта и в контекстном меню выберем команду New | Other | Android | Android XML File или Android XML Layout File, нажмем кнопку Next – в результате откроется окно мастера создания Layout-файла, в списке Resource Type которого выбран тип Layout.


Поле File: мастера создания Layout-файла предлагает ввести имя нового файла XML-описания GUI-интерфейса, который затем с расширением. xml появится в каталоге res/layout Android-проекта и будет доступен в Java-коде с помощью сгенерированного класса R.layout. [имя Layout-файла] или в XML-коде с помощью ссылки @ [package: ] layout/ [имя Layout-файла].

Раздел Root Element: мастера создания Layout-файла предлагает выбрать корневой View-компонент GUI-интерфейса, который может быть как контейнером для других GUI-компонентов, так и отдельным GUI-компонентом.

В качестве контейнера обычно используются ViewGroup-компоненты LinearLayout (компоновка в столбец или строку), RelativeLayout (якорная компоновка) и FrameLayout (стековая компоновка), а индивидуальные GUI-компоненты представлены такими View-компонентами как кнопка, флажок, переключатель, текстовая область и др.

Помимо контейнера и индивидуального GUI-компонента корневым элементом Layout-файла может служить элемент <merge>, который предназначен для создания Layout-файла, включаемого в другой Layout-файл с помощью тэга <include>. Тэг индивидуального GUI-компонента может также содержать тэг <requestFocus>, дающий первоначальный фокус View-компоненту.

Тэг <fragment>, начиная с версии Android 3.0 (API level 11), обеспечивает модульность GUI-интерфейса Activity-компонента, описывая его часть, которая имеет свой жизненный цикл, свое взаимодействие с пользователем и с другими компонентами приложения и которая может добавляться или удаляться во время работы родительского Activity-компонента. Тэг <fragment> не может быть корневым элементом Layout-файла, а включается в основной Layout-файл в качестве дочернего тэга контейнера LinearLayout, RelativeLayout или FrameLayout. При этом атрибут android: name указывает имя класса фрагмента, расширяющего класс android.app.Fragment или android.support.v4.app.Fragment.

После ввода имени нового Layout-файла, выбора его корневого элемента и нажатия кнопки Next, появляется окно Choose Configuration Folder, позволяющее выбрать спецификатор папки layout, обеспечивающий поддержку специфической конфигурации Android-устройства, в соответствии с которой папка layout с нужным спецификатором будет выбрана Android-системой для загрузки при выполнении кода приложения.

После создания нового Layout-файла он будет открыт в Layout-редакторе ADT-плагина, обеспечивающим визуальное редактирование GUI-интерфейса.

Тип ресурса Values

Для создания ресурсного файла Android-приложения в окне Project Explorer нажмем правой кнопкой мышки на узле проекта и в контекстном меню выберем команду New | Other | Android | Android XML File или Android XML Values File, нажмем кнопку Next – в результате откроется окно мастера, в списке Resource Type которого выберем тип Values.



Поле File: мастера создания ресурсного файла предлагает ввести имя нового файла XML-описания значений приложения, который затем с расширением. xml появится в каталоге res/values Android-проекта и будет доступен в Java-коде с помощью сгенерированного R-класса или в XML-коде с помощью ссылки на имя ресурса.

Раздел Root Element: мастера создания ресурсного файла показывает, что корневым элементом XML-файла служит тэг <resources>.

После ввода имени нового ресурсного файла и нажатия кнопки Next, появляется окно Choose Configuration Folder, позволяющее выбрать спецификатор папки values, обеспечивающий поддержку специфической конфигурации Android-устройства, в соответствии с которой папка values с нужным спецификатором будет выбрана Android-системой для загрузки при выполнении кода приложения.

После создания нового ресурсного файла он будет открыт в редакторе Values-файлов ADT-плагина. Кнопка Add вкладки Resources редактора Values-файлов обеспечивает добавление в корневой тэг <resources> ресурсного файла тэгов <color> (элемент Color), <dimen> (элемент Dimension), <drawable> (элемент Drawable), <integer-array> (элемент Integer Array), <item> (элемент Item), <plurals> (элемент Quantity Strings (Plurals)), <string> (элемент String), <string-array> (элемент String Array), <style> (элемент Style/Theme).

Тэг <color> (элемент Color) определяет цвет, используя синтаксис <color name=«color_name»> hex_color </color>, где hex_color – значение цвета в формате #RGB, #ARGB, #RRGGBB, #AARRGGBB. При добавлении элемента Color кнопкой Add, во вкладке Resources появляется раздел Attributes for Color c полем Name (определяет значение атрибута name) и полем Value (определяет значение цвета). Тэг <color> как правило используется в ресурсном файле с именем colors. xml каталога res/values. Именованный ресурс цвета может использоваться для определения цвета различных объектов, таких как Drawable или TextView. Созданный ресурс доступен в

Java-коде с помощью сгенерированного класса R.color.color_name, или в XML-коде – с помощью ссылки @ [package: ] color/color_name.

Тэг <dimen> (элемент Dimension) определяет величину измерения, используя синтаксис <dimen name=«dimension_name»> dimension </dimen>, где dimension – значение в формате dp (независимый от плотности пиксель), sp (независимый от масштаба пиксель), pt (точка, 1/72 дюйма), px (пиксель), mm (миллиметр), in (дюйм). При добавлении элемента Dimension кнопкой Add, во вкладке Resources появляется раздел Attributes for Dimension c полем Name (определяет значение атрибута name) и полем Value (определяет значение). Созданный ресурс доступен в

Java-коде с помощью сгенерированного класса R. dimen. dimension_name, или в XML-коде – с помощью ссылки @ [package: ] dimen/dimension_name.

Тэг <drawable> (элемент Drawable) обеспечивает создание объекта android.graphics.drawable.PaintDrawable, представляющего прямоугольник, заполненный цветом, используя синтаксис <drawable name=color_name> color_value </drawable>, где color_value – значение цвета в формате #RGB, #ARGB, #RRGGBB, #AARRGGBB. При добавлении элемента Drawable кнопкой Add, во вкладке Resources появляется раздел Attributes for Drawable c полем Name (определяет значение атрибута name) и полем Value (определяет значение). Созданный ресурс доступен в Java-коде с помощью сгенерированного класса R. drawable. drawable_name, или в XML-коде – с помощью ссылки @ [package: ] drawable/drawable_name.

Тэг <integer-array> (элемент Integer Array) определяет массив целых чисел, используя синтаксис <integer-array name=«integer_array_name»> <item> integer </item> </integer-array>. При добавлении элемента Integer Array кнопкой Add, во вкладке Resources появляется раздел Attributes for Integer Array c полем Name – определяет значение атрибута name. Созданный ресурс доступен в Java-коде с помощью сгенерированного класса R.array.integer_array_name или в XML-коде с помощью ссылки @ [package: ] array/integer_array_name.

Тэг <item> (элемент Item) позволяет определить различного типа константы, для их последующего использования в Java-коде с помощью сгенерированного класса R. [тип константы]. [имя константы]. При добавлении элемента Item кнопкой Add, во вкладке Resources появляется раздел Attributes for Item c полями и списками:

Поле Name – определяет значение атрибута name, указывающего имя константы.

Список Type – определяет значение атрибута type, указывающего тип константы.

Поле Format – определяет значение атрибута format, указывающего формат значения константы.

Поле Value – определяет значение константы.

Тэг <plurals> (элемент Quantity Strings (Plurals)) обеспечивает строки для правильного склонения разного количества ключа ресурса. При добавлении элемента Quantity Strings (Plurals) кнопкой Add, во вкладке Resources появляется раздел Attributes for Quantity Strings (Plurals) c полем Name, определяющим значение атрибута name – ключ ресурса. Для созданного элемента кнопка Add позволяет добавлять дочерние элементы Item – тэги <item> содержащие строки ресурса. При этом раздел Attributes for Item содержит список Quantity, с помощью которого выбирается количество ресурса, которому должна соответствовать строка (атрибут quantity). Созданный ресурс доступен в Java-коде с помощью метода getQuantityString (int id, int quantity) класса android.content.res.Resources.

Тэг <string> (элемент String) определяет именованную строку, используя синтаксис <string name=«string_name»> text_string </string>. При добавлении элемента String кнопкой Add, во вкладке Resources появляется раздел Attributes for String c полем Name (определяет значение атрибута name) и полем Value (определяет строку). Созданный строковый ресурс доступен в Java-коде с помощью сгенерированного класса R.string.string_name, или в XML-коде – с помощью ссылки @string/string_name.

Тэг <string-array> (элемент String Array) определяет массив строк, используя синтаксис <string-array name=«string_array_name»> <item> text_string </item> </string-array>. При добавлении элемента String Array кнопкой Add, во вкладке Resources появляется раздел Attributes for String Array c полем Name – определяет значение атрибута name. Созданный ресурс доступен в Java-коде с помощью сгенерированного класса R.array.string_array_name или в XML-коде с помощью ссылки @ [package: ] array/string_array_name.

Тэг <style> (элемент Style/Theme) позволяет определить стиль для индивидуального View-компонента, для Activity-компонента и для приложения в целом, используя синтаксис <style name=«style_name» parent="@ [package: ] style/style_to_inherit»> <item name=» [package: ] style_property_name»> style_value </item> </style>. При добавлении элемента Style/Theme кнопкой Add, во вкладке Resources появляется раздел Attributes for Style/Theme c полем Name – определяет значение атрибута name и полем Parent – определяет значение атрибута parent. Созданный стиль доступен в Java-коде с помощью сгенерированного класса R.style.style_name или в XML-коде с помощью ссылки @ [package: ] style/style_name.