T.M. SoftStudio

feci quod potui, faciant meliora potentes

Купить полную версию книги "Среда разработки Eclipse 4: Руководство разработчика"

Создание Android-приложений

Wizard-мастера ADT-плагина

Мастер 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-файла (рис. 8.25), в списке Resource Type которого выбран тип Layout.

Рис. 8.25. Окно мастера создания 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 – в результате откроется окно мастера (рис. 8.26), в списке Resource Type которого выберем тип Values.

Рис. 8.26. Окно мастера создания ресурсного файла

Поле 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.

Тип ресурса Drawable

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

Рис. 8.27. Окно мастера создания графического ресурса

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

Раздел Root Element: мастера создания графического ресурса предлагает выбрать корневой XML-элемент ресурса:

  • <animation-list> - обеспечивает покадровую анимацию, каждый кадр которой представлен Drawable-объектом, определяемым дочерним тэгом <item>. Тэг <animation-list> имеет атрибуты android:visible (true/false, определяет видимость объекта), android:variablePadding (true/false, определяет изменяемость отступов), android:oneshot (true/false, определяет одноразовую или повторяющуюся анимацию). Тэг <item> имеет атрибуты android:drawable (ссылка на Drawable-объект кадра) и android:duration (продолжительность кадра в миллисекундах).

  • <bitmap> - обертывает PNG, JPG, GIF изображение, имеет атрибуты android:src (ссылка на обертываемое изображение), android:antialias (true/false, сглаживание изображения), android:filter (true/false, сглаживание при масштабировании изображения), android:dither (true/false, сглаживание переходов при несовпадении конфигураций изображения и экрана), android:gravity (выравнивание изображения, возможные значения top, bottom, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill, clip_vertical, clip_horizontal), android:tileMode (режим повторения изображения для заполнения им контейнера, возможные значения disabled, clamp, repeat, mirror).

  • <clip> - накладывает маску на Drawable-объект, основываясь на Level-значении и используя атрибуты android:clipOrientation (ориентация маски, возможные значения horizontal, vertical), android:gravity (выравнивание маски, возможные значения top, bottom, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill, clip_vertical, clip_horizontal), android:drawable (ссылка на исходный Drawable-объект).

  • <color> - создает прямоугольник, заполненный цветом, используя атрибут android:color (цвет заполнения).

  • <corners> - дочерний тэг тэга <shape>, определяет закругленные углы прямоугольника с помощью атрибутов android:radius (радиус всех 4 углов как ресурс <dimen>), android:topLeftRadius (радиус верхнего левого угла как ресурс <dimen>), android:topRightRadius (радиус верхнего правого угла как ресурс <dimen>), android:bottomLeftRadius (радиус нижнего левого угла как ресурс <dimen>), android:bottomRightRadius (радиус нижнего правого угла как ресурс <dimen>).

  • <gradient> - дочерний тэг тэга <shape>, определяет градиентную заливку геометрической формы с помощью атрибутов android:angle (угол градиента в градусах), android:centerX (относительный центр градиента по оси Х, от 0 до 1.0), android:centerY (относительный центр градиента по оси Y, от 0 до 1.0), android:centerColor (промежуточный цвет градиента), android:endColor (конечный цвет градиента), android:gradientRadius (радиус для радиального градиента), android:startColor (начальный цвет градиента), android:type (тип градиента, возможные значения linear, radial, sweep), android:useLevel (true/false, если геометрическая форма участвует в <level-list>, тогда если true – количество отображений градиента зависит от уровня формы).

  • <inset> - вставляет Drawable-объект с отступами, используя атрибуты android:drawable (ссылка на вставляемый Drawable-объект), android:insetTop (верхний отступ как ресурс <dimen>), android:insetRight (правый отступ как ресурс <dimen>), android:insetBottom (нижний отступ как ресурс <dimen>), android:insetLeft (левый отступ как ресурс <dimen>).

  • <item> - дочерний тэг тэгов <animation-list>, <layer-list>, <level-list>, <selector>.

  • <layer-list> - стек Drawable-объектов, определяемых дочерними элементами <item> с атрибутами android:drawable (ссылка на Drawable-объект), android:id (идентификатор в форме @+id/name), android:top (верхний отступ в пикселях), android:right (правый отступ в пикселях), android:bottom (нижний отступ в пикселях), android:left (левый отступ в пикселях).

  • <nine-patch> - обертывает 9PNG-изображение с изменяющимися размерами, создаваемое инструментом draw9patch SDK Tools из PNG-изображения, используя атрибуты android:src (ссылка на 9PNG-изображение), android:dither (true/false, сглаживание переходов при несовпадении конфигураций изображения и экрана).

  • <padding> - дочерний тэг тэга <shape>, определяет отступы для содержимого формы с помощью атрибутов android:top (верхний отступ как ресурс <dimen>), android:right (правый отступ как ресурс <dimen>), android:bottom (нижний отступ как ресурс <dimen>), android:left (левый отступ как ресурс <dimen>).

  • <rotate> - поворачивает Drawable-объект, основываясь на Level-значении и используя атрибуты android:visible (true/false, определяет видимость объекта), android:fromDegrees (первоначальный угол вращения), android:toDegrees (конечный угол вращения), android:pivotX (центр вращения по оси Х в процентном соотношении к ширине объекта), android:pivotY (центр вращения по оси Y в процентном соотношении к высоте объекта), android:drawable (ссылка на вращаемый объект).

  • <scale> - масштабирует Drawable-объект, основываясь на Level-значении и используя атрибуты android:scaleWidth (масштабирование ширины в процентах), android:scaleHeight (масштабирование высоты в процентах), android:scaleGravity (выравнивание после масштабирования), android:drawable (ссылка на первоначальный Drawable-объект), android:useIntrinsicSizeAsMinimum (true/false, определяет использование собственных размеров объекта как минимальных).

  • <selector> - содержит набор Drawable-объектов для различных состояний View-компонента. Набор Drawable-объектов описывается дочерними тэгами <item>, которые связываются с определенными состояниями с помощью атрибутов android:drawable (ссылка на Drawable-объект), android:state_pressed (true/false), android:state_focused (true/false), android:state_hovered (true/false), android:state_selected (true/false), android:state_checkable (true/false), android:state_checked (true/false), android:state_enabled (true/false), android:state_activated (true/false), android:state_window_focused (true/false).

  • <shape> - описывает геометрическую форму, используя атрибут android:shape (возможные значения rectangle, oval, line, ring) и дочерние тэги <corners>, <gradient>, <padding>, <size>, <solid>, <stroke>.

  • <size> - дочерний тэг тэга <shape>, определяет размеры геометрической формы, используя атрибуты android:height (высота как ресурс <dimen>), android:width (ширина как ресурс <dimen>).

  • <solid> - дочерний тэг тэга <shape>, определяет цвет заполнения формы с помощью атрибута android:color.

  • <stroke> - дочерний тэг тэга <shape>, определяет контур геометрической формы, используя атрибуты android:width (ширина контура как ресурс <dimen>), android:color (цвет контура), android:dashGap (расстояние между пунктирами как ресурс <dimen>), android:dashWidth (ширина пунктира как ресурс <dimen>).

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

После создания нового графического ресурса он будет открыт в XML-редакторе кода.

Тип ресурса Menu

Android-платформа обеспечивает создание трех видов меню для Android-приложения – меню опций, которое открывается при нажатии кнопки MENU устройства или для Android-версии 3.0 и выше элементы которого могут быть помещены в ActionBar-панель, контекстное меню View-компонента и подменю элемента меню.

Все три вида меню могут быть созданы программным способом или на основе XML-описания. Создание меню на основе XML-описания является предпочтительным способом, так как позволяет разделить содержимое меню и его бизнес-логику. После создания XML-описания меню для меню опций необходимо в классе Activity-компонента переопределить метод onCreateOptionsMenu(), в котором необходимо создать программный объект из XML-описания, используя метод MenuInflater.inflate(), а также переопределить метод onOptionsItemSelected(), обрабатывающий выбор элемента меню.

Для контекстного меню необходимо в методе onCreate() Activity-компонента зарегистрировать View-компонент как имеющий контекстное меню с помощью метода registerForContextMenu(), переопределить метод onCreateContextMenu(), в котором необходимо создать программный объект из XML-описания, используя метод MenuInflater.inflate(), а также переопределить метод onContextItemSelected(), обрабатывающий выбор элемента меню. Подменю элемента меню определяется простым вложением его XML-описания в тэг элемента меню.

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

Рис. 8.28. Окно мастера создания Menu-файла

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

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

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

После создания нового Menu-файла он будет открыт в редакторе ADT-плагина, обеспечивающим визуальное редактирование XML-описания меню. Кнопка Add вкладки Layout редактора Menu-файла обеспечивает добавление в корневой тэг <menu> тэги <group> (элемент Group) и <item> (элемент Item).

Тэг <item> описывает элемент меню, может быть дочерним тэгом тэга <menu> и <group> и иметь в качестве дочернего тэг <menu>, представляющий подменю (элемент Sub-Menu). Тэг <item> имеет следующие атрибуты:

  • android:id – идентификатор элемента в виде @+id/name.

  • android:menuCategory – категория элемента меню, определяющая его приоритет (номер в списке) при отображении, возможные значения container, system, secondary, alternative.

  • android:orderInCategory – номер элемента в списке отображения в пределах категории.

  • android:title – текстовая метка элемента.

  • android:titleCondensed – укороченная текстовая метка элемента.

  • android:icon – ссылка на Drawable-ресурс, представляющий значок элемента, который отображается для первых 6 элементов меню опций.

  • android:alphabeticShortcut – символ быстрого вызова элемента.

  • android:numericShortcut – цифра быстрого вызова элемента.

  • android:checkable – если true, тогда элемент содержит флажок выбора.

  • android:checked – если true, тогда флажок элемента отмечен по умолчанию.

  • android:visible – если true, тогда элемент видим.

  • android:enabled – если true, тогда элемент доступен.

  • android:onClick – имя метода, вызываемого при нажатии элемента.

  • android:showAsAction – определяет как элемент отображается в ActionBar-панели, возможные значения ifRoom (отображается при наличии места в панели), never (не отображается), withText (отображается с меткой), always (всегда отображается), collapseActionView (с элементом связан разворачивающийся View-компонент).

  • android:actionLayout – ссылка на Layout-файл, описывающий View-компонент элемента ActionBar-панели.

  • android:actionViewClass – имя класса View-компонента элемента ActionBar-панели.

  • android:actionProviderClass – имя ActionProvider-класса, связанного с элементом ActionBar-панели.

Тэг <group> позволяет сгруппировать элементы меню так, что для них всех одновременно можно регулировать видимость, доступность и отображение флажка выбора. Тэг <group> имеет следующие атрибуты:

  • android:id – идентификатор группы в виде @+id/name.

  • android:menuCategory – категория группы элементов меню, определяющая ее приоритет (номер в списке) при отображении, возможные значения container, system, secondary, alternative.

  • android:orderInCategory – номер группы в списке отображения в пределах категории.

  • android:checkableBehavior – тип группировки элементов, возможные значения none (элементы не отображают флажок выбора), all (элементы группируются как флажки checkbox), single (элементы группируются как переключатели radio button).

  • android:visible – видимость элементов группы, true/false.

  • android:enabled – доступность элементов группы, true/false.

При выборе элементов Group и Item кнопкой Add, во вкладке Layout появляются разделы Attributes for Group и Attributes for Item c полями, позволяющими определить атрибуты тэгов <group> и <item>.

Тип ресурса Color List

Данный тип ресурса является аналогом Drawable-ресурса State List с корневым элементом <selector>. Разница состоит в том, что ресурс Drawable State List определяет набор изображений для представления различных состояний View-компонента, а ресурс Color State List определяет набор цветов для представления различных состояний View-компонента.

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

Рис. 8.29. Окно мастера создания ресурса Color State List

Поле File: мастера создания ресурса Color State List предлагает ввести имя нового файла XML-описания набора цветов различных состояний View-компонента, который затем с расширением .xml появится в каталоге res/color Android-проекта и будет доступен в Java-коде с помощью сгенерированного класса R.color.filename или в XML-коде с помощью ссылки @[package:]color/filename.

Раздел Root Element: мастера отображает элементы item и selector, представляющие тэги <item> и <selector> соответственно, при этом тэг <selector> является корневым тэгом XML-файла ресурса Color State List и поэтому в разделе Root Element: необходимо выбрать элемент selector.

Тэг <selector> может содержать один или несколько тэгов <item>, определяющих цвета для различных состояний View-объекта, используя атрибуты:

  • android:color – цвет состояния в формате #RGB, #ARGB, #RRGGBB, #AARRGGBB.

  • android:state_pressed – состояние нажатия, true/false.

  • android:state_focused – компонент в фокусе, true/false.

  • android:state_selected – компонент выбран, true/false.

  • android:state_checkable – компонент содержит флажок выбора, true/false.

  • android:state_checked – флажок компонента отмечен, true/false.

  • android:state_enabled – компонент доступен, true/false.

  • android:state_window_focused – окно приложения на переднем плане, true/false.

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

После создания нового XML-файла ресурса Color State List он будет открыт в XML-редакторе кода.

Тип ресурса Property Animation и Tween Animation

Ресурс Property Animation описывает изменение свойства объекта в течение определенного промежутка времени. Анимация свойств объектов представлена в версиях Android-платформы, начиная с версии 3.0.

Для запуска анимации свойства объекта на основе XML-описания необходимо создать из XML-ресурса Property Animation объект android.animation.AnimatorSet, android.animation.ObjectAnimator или android.animation.ValueAnimator, используя статический метод android.animation.AnimatorInflater.loadAnimator(), и связать анимацию с объектом с помощью метода setTarget() суперкласса android.animation.Animator, после чего запустить анимацию методом start() суперкласса Animator.

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

Рис. 8.30. Окно мастера создания ресурса Property Animation

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

Раздел Root Element: мастера отображает элементы animator, objectAnimator и set, представляющие тэги <animator>, <objectAnimator> и <set> соответственно, при этом каждый из них может служить единственным корневым тэгом XML-файла ресурса Property Animation.

Тэг <animator> представляет класс ValueAnimator и описывает анимацию значения типа float, int или color в течение определенного промежутка времени, используя атрибуты:

  • android:duration – время анимации в миллисекундах, по умолчанию 300ms.

  • android:valueFrom – начальное значение.

  • android:valueTo – конечное значение.

  • android:startOffset – задержка анимации в миллисекундах.

  • android:repeatCount – количество циклов анимации, значение -1 означает бесконечную анимацию.

  • android:repeatMode – режим повторения анимации, возможные значения repeat и reverse.

  • android:valueType – тип значения для анимации, для значения типа color не указывается, возможные значения intType и floatType (по умолчанию).

Тэг <objectAnimator> представляет класс ObjectAnimator и описывает анимацию значения свойства объекта в течение определенного промежутка времени, используя атрибуты:

  • android:propertyName – имя свойства объекта, например android:propertyName="alpha".

  • android:duration – время анимации в миллисекундах, по умолчанию 300ms.

  • android:valueFrom – начальное значение свойства.

  • android:valueTo – конечное значение свойства.

  • android:startOffset – задержка анимации в миллисекундах.

  • android:repeatCount – количество циклов анимации, значение -1 означает бесконечную анимацию.

  • android:repeatMode – режим повторения анимации, возможные значения repeat и reverse.

  • android:valueType – тип значения для анимации, для значения типа color не указывается, возможные значения intType и floatType (по умолчанию).

Тэг <set> представляет класс AnimatorSet и обеспечивает группировку анимаций, используя атрибут android:ordering с возможными значениями together (анимации проигрываются параллельно) и sequentially (анимации проигрываются последовательно).

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

После создания нового XML-файла ресурса Property Animation он будет открыт в XML-редакторе кода.

Ресурс Tween Animation описывает анимацию вращения, исчезновения, перемещения и масштабирования View-компонента. Для запуска анимации View-компонента на основе XML-описания необходимо создать из XML-ресурса Tween Animation объект android.view.animation.Animation, используя статический метод android.view.animation.AnimationUtils.loadAnimation() и запустить анимацию методом startAnimation(Animation animation) суперкласса android.view.View.

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

Рис. 8.31. Окно мастера создания ресурса Tween Animation

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

Раздел Root Element: мастера отображает элементы alpha, rotate, scale, set и translate, представляющие тэги <alpha>, <rotate>, <scale>, <set> и <translate> соответственно, при этом каждый из них может служить единственным корневым тэгом XML-файла ресурса Tween Animation.

Вышеупомянутые тэги имеют общие атрибуты, унаследованные от суперкласса android.view.animation.Animation:

  • android:detachWallpaper – если true, тогда обои не анимируются вместе с окном.

  • android:duration – продолжительность анимации в миллисекундах.

  • android:fillAfter – если true, тогда преобразование применяется после окончания анимации.

  • android:fillBefore – если true, тогда преобразование применяется перед началом анимации.

  • android:fillEnabled – если true, тогда значение fillBefore учитывается.

  • android:interpolator – указывает объект android.view.animation.Interpolator, отвечающий за определение скорости анимации.

  • android:repeatCount – количество циклов анимации.

  • android:repeatMode – режим повторения анимации, возможные значения repeat и reverse.

  • android:startOffset – задержка анимации в миллисекундах.

  • android:zAdjustment – определяет поведение компонента по оси Z, возможные значения normal (позиция в стеке сохраняется), top (компонент в течение анимации находится на вершине стека), bottom (компонент в течение анимации находится внизу стека).

Тэг <alpha> представляет класс AlphaAnimation и описывает анимацию значения прозрачности в течение определенного промежутка времени, используя атрибуты:

  • android:fromAlpha – начальное значение прозрачности.

  • android:toAlpha – конечное значение прозрачности.

Тэг <rotate> представляет класс RotateAnimation и описывает вращение вокруг оси, используя атрибуты:

  • android:fromDegrees – начальный угол вращения.

  • android:toDegrees – конечный угол вращения.

  • android:pivotX и android:pivotY – координаты оси вращения от левого края компонента в пикселях или процентах.

Тэг <scale> представляет класс ScaleAnimation и описывает масштабирование компонента, используя атрибуты:

  • android:fromXScale – начальный коэффициент масштабирования по оси Х.

  • android:toXScale – конечный коэффициент масштабирования по оси Х.

  • android:fromYScale – начальный коэффициент масштабирования по оси Y.

  • android:toYScale – конечный коэффициент масштабирования по оси Y.

  • android:pivotX и android:pivotY – координаты центра масштабирования.

Тэг <translate> представляет класс TranslateAnimation и описывает движение компонента, используя атрибуты:

  • android:fromXDelta – начальная позиция по оси Х в пикселях или процентах.

  • android:toXDelta – конечная позиция по оси Х в пикселях или процентах.

  • android:fromYDelta – начальная позиция по оси Y в пикселях или процентах.

  • android:toYDelta – конечная позиция по оси Y в пикселях или процентах.

Тэг <set> представляет класс AnimationSet и обеспечивает группировку анимаций в параллельную анимацию, используя атрибуты android:interpolator – ссылка на объект android.view.animation.Interpolator, отвечающий за определение скорости анимации, и android:shareInterpolator – если true, тогда интерполятор является общим для дочерних анимаций.

Начиная с версии 4.0 Android-платформы атрибуты duration, repeatMode, fillBefore, fillAfter, определенные в тэге <set> применяются к дочерним элементам, атрибуты repeatCount и fillEnabled игнорируются, атрибуты startOffset и shareInterpolator применяются к объекту AnimationSet, до версии 4.0 Android-платформы данные атрибуты игнорируются.

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

После создания нового XML-файла ресурса Tween Animation он будет открыт в XML-редакторе кода.

Тип ресурса AppWidgetProvider

Ресурс AppWidgetProvider содержит метаданные для приложения App Widget, представляющего собой мини-приложение, которое можно разместить на рабочем экране Home Screen устройства, используя опцию Выбор виджета рабочего экрана.

Для создания приложения App Widget необходимо:

  • Создать ресурс AppWidgetProvider.

  • Создать Layout-файл приложения App Widget.

  • Создать класс, расширяющий класс android.appwidget.AppWidgetProvider, который обеспечивает взаимодействие с приложением App Widget.

  • Зарегистрировать AppWidgetProvider-класс и AppWidgetProvider-ресурс в файле манифеста AndroidManifest.xml Android-приложения.

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

Рис. 8.32. Окно мастера создания ресурса AppWidgetProvider

Поле File: мастера создания ресурса AppWidgetProvider предлагает ввести имя нового XML-файла метаданных приложения App Widget, который затем с расширением .xml появится в каталоге res/xml Android-проекта и будет доступен в XML-коде с помощью ссылки @[package:]xml/filename.

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

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

После создания нового AppWidgetProvider-ресурса, он будет открыт в редакторе ADT-плагина, обеспечивающим визуальное редактирование атрибутов тэга <appwidget-provider>.

Для определения атрибутов тэга <appwidget-provider> раздел Attributes for AppWidget Provider вкладки Structure ADT-редактора содержит следующие поля и списки:

  • Min width – определяет атрибут android:minWidth, указывающий минимальную ширину окна приложения App Widget в формате px, dp, sp, in, mm.

  • Min height – определяет атрибут android:minHeight, указывающий минимальную высоту окна приложения App Widget в формате px, dp, sp, in, mm.

  • Min resize width – определяет атрибут android:minResizeWidth, указывающий для Android-платформы версии 3.1 и выше минимальную ширину в формате px, dp, sp, in, mm, до которой пользователь может уменьшить ширину окна приложения App Widget.

  • Min resize height – определяет атрибут android:minResizeHeight, указывающий для Android-платформы версии 3.1 и выше минимальную высоту в формате px, dp, sp, in, mm, до которой пользователь может уменьшить высоту окна приложения App Widget.

  • Update period millis – определяет атрибут android:updatePeriodMillis, указывающий период в миллисекундах (но не чаше чем раз в час) между автоматическими вызовами метода onUpdate() AppWidgetProvider-класса.

  • Initial layout – определяет атрибут android:initialLayout, указывающий ссылку на Layout-файл приложения App Widget.

  • Configure – определяет атрибут android:configure, указывающий Activity-компонент, который загружается при добавлении пользователем приложения App Widget и который позволяет пользователю настроить приложение App Widget.

  • Preview image – определяет атрибут android:previewImage, указывающий для Android-платформы версии 3.0 и выше ссылку на значок, который дает пользователю представление о том, как выглядит приложение App Widget.

  • Auto advance view id – определяет атрибут android:autoAdvanceViewId, указывающий для Android-платформы версии 3.0 и выше идентификатор View-компонента коллекции, элементы которой автоматически прокручиваются в слайд-шоу.

  • Resize mode – определяет атрибут android:resizeMode, указывающий для Android-платформы версии 3.1 и выше режим изменения пользователем размеров окна приложения App Widget, возможные значения horizontal, vertical, none.

Так как приложение App Widget работает не в своем собственном процессе, а в процессе компонента, в который приложение App Widget встроено (компонент Home Screen), иерархия View-компонентов приложения App Widget определяется объектом android.widget.RemoteViews, поддерживающим ограниченный набор View-компонентов. Поэтому Layout-файл приложения App Widget может содержать только компоненты FrameLayout, LinearLayout, RelativeLayout, AnalogClock, Button, Chronometer, ImageButton, ImageView, ProgressBar, TextView, ViewFlipper, ListView, GridView, StackView, AdapterViewFlipper.

В классе расширения android.appwidget.AppWidgetProvider как правило переопределяется метод onUpdate(), автоматически вызываемый всякий раз, когда приложение App Widget требует обновления. В методе onUpdate() на основе Layout-файла создается объект RemoteViews, позволяющий обновлять текст TextView-компонента и загружать Activity-компонент в ответ на щелчок пользователя на компоненте приложения App Widget. После работы с объектом RemoteViews приложение App Widget обновляется в методе onUpdate() с помощью метода updateAppWidget() класса android.appwidget.AppWidgetManager.

Так как класс AppWidgetProvider расширяет класс android.content.BroadcastReceiver, в файле манифеста AndroidManifest.xml приложение App Widget описывается тэгом <receiver>, который при этом содержит Intent-фильтр, указывающий действие обновления, и тэг <meta-data> с ссылкой на AppWidgetProvider-ресурс:

<receiver android:name="MyAppWidgetProvider" >

<intent-filter>

<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

</intent-filter>

<meta-data android:name="android.appwidget.provider"

android:resource="@xml/my_appwidget_info" />

</receiver>

Тип ресурса Preference

Система Android предоставляет механизм хранения и редактирования настроек (предпочтений) Android-приложения в виде пар имя-значение файла [имя пакета]_preferences.xml, расположенного в папке приложения каталога /data/data/ устройства.

Для работы с предпочтениями Android-приложение должно иметь:

  • Preference-ресурс, определяющий GUI-интерфейс редактирования предпочтений.

  • Activity-компонент, класс которого расширяет класс android.preference.PreferenceActivity и отвечает за загрузку Preference-ресурса, используя метод addPreferencesFromResource().

  • Файл манифеста AndroidManifest.xml, в котором PreferenceActivity-компонент объявляется с помощью тэга <activity>.

  • Activity-компонент приложения, вызывающий PreferenceActivity-компонент методом startActivity().

  • Activity-компонент приложения, считывающий предпочтения из XML-файла в объект android.content.SharedPreferences методом getSharedPreferences(), при этом методы класса SharedPreferences обеспечивают доступ к парам имя-значение предпочтений.

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

Рис. 8.33. Окно мастера создания ресурса Preference

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

Раздел Root Element: мастера отображает элементы CheckBoxPreference, EditTextPreference, ListPreference, MultiSelectListPreference, Preference, PreferenceCategory, PreferenceScreen, RingtonePreference и SwitchPreference, представляющие тэги <CheckBoxPreference>, <EditTextPreference>, <ListPreference>, <MultiSelectListPreference>, <Preference>, <PreferenceCategory>, <PreferenceScreen>, <RingtonePreference> и <SwitchPreference> соответственно, при этом тэг <PreferenceScreen> служит корневым тэгом XML-файла ресурса Preference.

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

После создания нового файла Preference-ресурса он будет открыт в визуальном редакторе ADT-плагина.

Кнопка Add вкладки Structure визуального редактора обеспечивает добавление в корневой тэг <PreferenceScreen> файла Preference-ресурса тэгов <CheckBoxPreference> (элемент CheckBoxPreference), <EditTextPreference> (элемент EditTextPreference), <ListPreference> (элемент ListPreference), <MultiSelectListPreference> (элемент MultiSelectListPreference), <Preference> (элемент Preference), <PreferenceCategory> (элемент PreferenceCategory), <PreferenceScreen> (элемент PreferenceScreen), <RingtonePreference> (элемент RingtonePreference) и <SwitchPreference> (элемент SwitchPreference).

Раздел Attributes from Preference вкладки Structure редактора обеспечивает определение атрибутов, общих для тэгов <CheckBoxPreference>, <EditTextPreference>, <ListPreference>, <MultiSelectListPreference>, <Preference>, <PreferenceCategory>, <PreferenceScreen>, <RingtonePreference> и <SwitchPreference> с помощью следующих полей и списков:

  • Icon – определяет атрибут android:icon, указывающий ссылку на значок предпочтения.

  • Key – определяет атрибут android:key, указывающий имя для хранения значения предпочтения.

  • Title – определяет атрибут android:title, указывающий отображаемый заголовок предпочтения.

  • Summary – определяет атрибут android:summary, указывающий краткое описание предпочтения, отображаемое ниже заголовка.

  • Order – определяет атрибут android:order, указывающий порядок отображения предпочтения.

  • Fragment – определяет атрибут android:fragment, указывающий класс расширения android.preference.PreferenceFragment, который отвечает за отображение дополнительного списка предпочтений при выборе пользователем данного предпочтения (для версии Android 3.0 и выше).

  • Layout – определяет атрибут android:layout, указывающий ссылку на Layout-файл View-компонентов, отображаемых в предпочтении.

  • Widget layout – определяет атрибут android:widgetLayout, указывающий ссылку на Layout-файл компонента контроля предпочтения.

  • Enabled – атрибут android:enabled – если true (по умолчанию), тогда предпочтение доступно.

  • Selectable – атрибут android:selectable – если true (по умолчанию), тогда предпочтение доступно для выбора.

  • Dependency – определяет атрибут android:dependency, указывающий ключ android:key другого предпочтения, при этом если другое предпочтение недоступно, тогда недоступно и данное предпочтение.

  • Persistent – атрибут android:persistent – если true (по умолчанию), тогда значение предпочтения сохраняется в файле на устройстве.

  • Default value – определяет атрибут android:defaultValue, указывающий значение предпочтения по умолчанию.

  • Should disable view – атрибут android:shouldDisableView – если false, тогда при установке недоступности предпочтение отображается обычным способом, по умолчанию true.

Раздел Attributes from PreferenceGroup вкладки Structure редактора обеспечивает с помощью списка Ordering from xml определение атрибута android:orderingFromXml тэга <PreferenceScreen> – если true (по умолчанию), тогда при отсутствии атрибутов android:order дочерние предпочтения отображаются в том порядке, в каком они определены в XML-файле, если false, тогда дочерние предпочтения отображаются в алфавитном порядке их заголовков или согласно значений атрибутов android:order.

Тэг <CheckBoxPreference> (элемент CheckBoxPreference) обеспечивает отображение флажка в предпочтениях, при этом в файле устройства сохраняется значение true или false в зависимости от выбранного состояния флажка. Раздел Attributes from CheckBoxPreference вкладки Structure редактора определяет атрибуты тэга <CheckBoxPreference> с помощью следующих полей и списков:

  • Summary on – определяет атрибут android:summaryOn, указывающий краткое описание отмеченного флажка, отображаемое ниже заголовка.

  • Summary off – определяет атрибут android:summaryOff, указывающий краткое описание не отмеченного флажка, отображаемое ниже заголовка.

  • Disable dependents state – атрибут android:disableDependentsState – если true, тогда предпочтение, в атрибуте android:dependency которого указан ключ флажка, становится недоступным при отмеченном флажке, если false – тогда при не отмеченном флажке.

Тэг <EditTextPreference> (элемент EditTextPreference) обеспечивает отображение поля для ввода строки, которая сохранится в файле устройства. Раздел Attributes from DialogPreference вкладки Structure редактора определяет атрибуты тэга <EditTextPreference> с помощью следующих полей:

  • Dialog title – определяет атрибут android:dialogTitle, указывающий заголовок диалогового окна с полем ввода и кнопками OK и Отмена, которое появляется при выборе предпочтения.

  • Dialog message – определяет атрибут android:dialogMessage, указывающий текст сообщения диалогового окна, который отображается ниже заголовка.

  • Dialog icon – определяет атрибут android:dialogIcon, указывающий ссылку на значок диалогового окна.

  • Positive button text – определяет атрибут android:positiveButtonText, указывающий текст кнопки OK диалогового окна.

  • Negative button text – определяет атрибут android:negativeButtonText, указывающий текст кнопки Отмена диалогового окна/

  • Dialog layout – определяет атрибут android:dialogLayout, указывающий ссылку на Layout-файл, определяющий View-компонент диалогового окна.

Тэг <ListPreference> (элемент ListPreference) обеспечивает отображение списка переключателей, при этом в файле устройства сохраняется значение выбранного переключателя. Раздел Attributes from ListPreference вкладки Structure редактора определяет атрибуты тэга <ListPreference> с помощью следующих полей:

  • Entries – определяет атрибут android:entries, указывающий ресурс @array/[name] XML-файла каталога res/values, который определяет заголовки переключателей с помощью тэгов <string-array> и <item >.

  • Entry values – определяет атрибут android:entryValues, указывающий ресурс @array/[name] XML-файла каталога res/values, который определяет значения переключателей с помощью тэгов <string-array> и <item >.

Тэг <MultiSelectListPreference> (элемент MultiSelectListPreference, версия Android 3.0 и выше) обеспечивает отображение списка флажков. Раздел Attributes from MultiSelectListPreference вкладки Structure редактора определяет атрибуты тэга <MultiSelectListPreference> с помощью следующих полей:

  • Entries – определяет атрибут android:entries, указывающий ресурс @array/[name] XML-файла каталога res/values, который определяет заголовки флажков с помощью тэгов <string-array> и <item >.

  • Entry values – определяет атрибут android:entryValues, указывающий ресурс @array/[name] XML-файла каталога res/values, который определяет значения флажков с помощью тэгов <string-array> и <item >.

Тэг <Preference> (элемент Preference) обеспечивает отображение предпочтения, содержимое которого определяется с помощью раздела Attributes from Preference вкладки Structure редактора.

Тэг <PreferenceCategory> (элемент PreferenceCategory) обеспечивает группировку предпочтений под определенным заголовком.

Тэг <RingtonePreference> (элемент RingtonePreference) обеспечивает отображение списка переключателей, позволяющих выбрать рингтон из мелодий устройства, при этом в файле устройства сохраняется URI-адрес мелодии. Раздел Attributes from RingtonePreference вкладки Structure редактора определяет атрибуты тэга <RingtonePreference> с помощью следующих списков:

  • Ringtone type – определяет атрибут android:ringtoneType, указывающий тип мелодии для отображения в списке, возможные значения ringtone, notification, alarm, all.

  • Show default – определяет атрибут android:showDefault – если true (по умолчанию), тогда в списке отображается переключатель Мелодия по умолчанию, позволяющий выбрать рингтон устройства по умолчанию для данного типа мелодий.

  • Show silent – определяет атрибут android:showSilent – если true (по умолчанию), тогда в списке отображается переключатель Без звука, при выборе которого в файле устройства сохраняется пустая строка.

Тэг <SwitchPreference> (элемент SwitchPreference, для версии Android 4.0 и выше) обеспечивает отображение предпочтения, которое может иметь два состояния – нажатое и отжатое, при этом в файле устройства сохраняется значение true или false в зависимости от выбранного состояния предпочтения. Раздел Attributes from SwitchPreference вкладки Structure редактора определяет атрибуты тэга <SwitchPreference> с помощью следующих полей и списков:

  • Summary on – определяет атрибут android:summaryOn, указывающий краткое описание нажатого предпочтения, отображаемое ниже заголовка.

  • Summary off – определяет атрибут android:summaryOff, указывающий краткое описание отжатого предпочтения, отображаемое ниже заголовка.

  • Switch text on – определяет атрибут android:switchTextOn, указывающий текст переключателя в нажатом состоянии.

  • Switch text off – определяет атрибут android:switchTextOff, указывающий текст переключателя в отжатом состоянии.

  • Disable dependents state – атрибут android:disableDependentsState – если true, тогда предпочтение, в атрибуте android:dependency которого указан ключ данного предпочтения, становится недоступным при нажатом предпочтении, если false – тогда при отжатом предпочтении.

Тип ресурса Searchable

Android-система обеспечивает механизм, помогающий Android-приложениям предоставлять пользователю возможность поиска различного рода данных. При этом для пользователя в Android-приложении в верхней части экрана устройства активируется диалоговое окно поиска, содержащее поле ввода запроса, или пользователь взаимодействует с SearchView-компонентом (для версии Android 3.0 и выше).

Для реализации функций поиска на основе поискового каркаса Android-платформы Android-приложение должно иметь:

  • Ресурс SearchableXML-файл с настройками диалогового окна поиска или SearchView-компонента.

  • Activity-компонент, который получает строку запроса пользователя, обрабатывает ее и отображает результаты запроса пользователю. Строка запроса пользователя содержится в дополнительных данных Intent-объекта, который Android-система автоматически формирует и отправляет Activity-компоненту при завершении пользователем работы в диалоговом окне поиска или SearchView-компоненте. Строка запроса извлекается Activity-компонентом из Intent-объекта методом getIntent().getStringExtra(SearchManager.QUERY).

  • Файл манифеста AndroidManifest.xml, в котором Activity-компонент, обрабатывающий запрос, при своем объявлении содержит Intent-фильтр, указывающий действие поиска, и тэг <meta-data> со ссылкой на Searchable-ресурс:

<intent-filter>

<action android:name="android.intent.action.SEARCH" />

</intent-filter>

<meta-data android:name="android.app.searchable"

android:resource="@xml/[filename]"/>

  • Для включения диалогового окна поиска Activity-компонент, предоставляющий его пользователю, при своем объявлении в файле манифеста AndroidManifest.xml содержит тэг <meta-data> со ссылкой на Activity-компонент, получающий запрос:

<meta-data android:name="android.app.default_searchable"

android:value=".[имя класса Activity-компонента, получающего запрос]" />

Диалоговое окно поиска активируется в Activity-компоненте нажатием кнопки SEARCH устройства или вызовом метода onSearchRequested().

Кроме того, поисковый каркас Android-платформы позволяет Android-приложению обеспечить для пользователя поисковые предложения для облегчения ввода запроса. При этом поисковые предложения могут быть двух типов – основанные на ранее введенных запросах или пользовательские предложения, хранящиеся в базе данных. Для реализации поисковых предложений Android-приложение должно иметь SearchRecentSuggestionsProvider-компонент для предложений, основанных на ранее введенных запросах, или ContentProvider-компонент для пользовательских предложений.

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

Рис. 8.34. Окно мастера создания ресурса Searchable

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

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

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

После создания нового файла Searchable-ресурса он будет открыт в визуальном редакторе ADT-плагина.

Кнопка Add вкладки Structure визуального редактора обеспечивает добавление в корневой тэг <searchable> файла Searchable-ресурса тэгов <actionkey> (элемент Action Key).

Для тэга <searchable> раздел Attributes for Searchable вкладки Structure редактора обеспечивает определение атрибутов с помощью следующих полей и списков:

  • Icon – определяет атрибут android:icon (больше не используется), указывающий значок поиска.

  • Label – определяет атрибут android:label, указывающий имя приложения для отображения в настройках поиска устройства.

  • Hint – определяет атрибут android:hint, указывающий строку, которая первоначальное отображается в поле ввода для подсказки пользователю.

  • Search button text – определяет атрибут android:searchButtonText (больше не используется), указывающий текст кнопки поиска.

  • Input Type – определяет атрибут android:inputType, указывающий тип вводимого текста, возможные значения none, text, textCapCharacters, textCapWords, textCapSentences, textAutoCorrect, textAutoComplete, textMultiLine, textImeMultiLine, textNoSuggestions, textUri, textEmailAddress, textEmailSubject, textShortMessage, textLongMessage, textPersonName, textPostalAddress, textPassword, textVisiblePassword, textWebEditText, textFilter, textPhonetic, textWebEmailAddress , textWebPassword, number, numberSigned, numberDecimal, numberPassword, phone, datetime, date, time.

  • IME options – определяет атрибут android:imeOptions, указывающий дополнительные опции ввода, возможные значения normal, actionUnspecified, actionNone, actionGo, actionSearch, actionSend, actionNext, actionDone, actionPrevious, flagNoFullscreen, flagNavigatePrevious, flagNavigateNext, flagNoExtractUi, flagNoAccessoryAction, flagNoEnterAction.

  • Search mode – определяет атрибут android:searchMode, указывающий способ замещения запроса поисковым предложением и отображения значка поиска, возможные значения showSearchLabelAsBadge, showSearchIconAsBadge, queryRewriteFromData, queryRewriteFromText.

  • Voice search mode – определяет атрибут android:voiceSearchMode, указывающий отображение кнопки голосового поиска, переключение на Activity-компонент Web-поиска, переключение на Activity-компонент перевода речи в текст. Возможные значения showVoiceSearchButton, launchWebSearch, launchRecognizer.

  • Voice language model – определяет атрибут android:voiceLanguageModel, указывающий модель распознавания речи, возможные значения free_form и web_search.

  • Voice prompt text – определяет атрибут android:voicePromptText, указывающий дополнительное сообщение пользователю при голосовом запросе.

  • Voice language – определяет атрибут android:voiceLanguage, указывающий язык голосового запроса.

  • Voice max results – определяет атрибут android:voiceMaxResults, указывающий максимальное возвращаемое количество вариантов перевода речи в текст.

  • Search suggest authority – определяет атрибут android:searchSuggestAuthority, указывающий класс SearchRecentSuggestionsProvider-компонента или ContentProvider-компонента, обеспечивающего поисковые предложения.

  • Search suggest path – определяет атрибут android:searchSuggestPath, указывающий дополнительный путь предложения для разрешения неоднозначностей. Дополнительный путь включается в URI-запрос предложений Android-системы к ContentProvider-компоненту: content://[suggest_authority]/[optional.suggest.path]/SUGGEST_URI_PATH_QUERY.

  • Search suggest selection – определяет атрибут android:searchSuggestSelection, указывающий параметр selection, передаваемый методу query() ContentProvider-компонента.

  • Search suggest intent action – определяет атрибут android:searchSuggestIntentAction, указывающий Intent-действие по умолчанию, используемое при выборе пользовательского предложения поиска.

  • Search suggest intent data – определяет атрибут android:searchSuggestIntentData, указывающий Intent-данные по умолчанию, используемые при выборе пользовательского предложения поиска.

  • Search suggest threshold – определяет атрибут android:searchSuggestThreshold, указывающий минимальное количество введенных пользователем символов для активации поисковых предложений.

  • Include in global search – определяет атрибут android:includeInGlobalSearch – если true, тогда поисковые предложения данного Android-приложения включаются в Quick Search Box.

  • Query after zero results – определяет атрибут android:queryAfterZeroResults – если true, тогда при получении нулевого результата ContentProvider-компонент вызывается еще раз с расширенным набором символов, по умолчанию false.

  • Search settings description – определяет атрибут android:searchSettingsDescription, указывающий описание поисковых предложений для Quick Search Box.

  • Auto url detect – определяет атрибут android:autoUrlDetect – если true, тогда вводимый запрос обрабатывается как URL-адрес с вызовом браузера.

Тэг <actionkey> (элемент Action Key) определяет клавишу устройства, которую пользователь может нажать вместо кнопки поиска. Для тэга <actionkey> раздел Attributes for Action Key вкладки Structure редактора обеспечивает определение атрибутов с помощью следующих полей и списков:

  • Keycode – определяет атрибут android:keycode, указывающий код клавиши устройства.

  • Query action msg – определяет атрибут android:queryActionMsg, указывающий сообщение действия ACTION_SEARCH, посылаемое при нажатии клавиши.

  • Suggest action msg – определяет атрибут android:suggestActionMsg, указывающий сообщение действия, посылаемое при выборе поискового предложения.

  • Suggest action msg column – определяет атрибут android:suggestActionMsgColumn, указывающий имя столбца ContentProvider-компонента для установки сообщения действия, посылаемого при выборе поискового предложения.


Мастер Android Icon Set