Книга - Разработка Android-приложений в деталях

a
A

Разработка Android-приложений в деталях
Тимур Сергеевич Машнин


В книге приведены некоторые рецепты разработки Android-приложений и их примеры, рассмотрена работа в среде Eclipse и Android Studio, разработка мобильных сайтов и гибридных мобильных приложений.





Разработка Android-приложений в деталях



Тимур Сергеевич Машнин



Дизайнер обложки Тимур Сергеевич Машнин



© Тимур Сергеевич Машнин, 2020

© Тимур Сергеевич Машнин, дизайн обложки, 2020



ISBN 978-5-4483-0450-7

Создано в интеллектуальной издательской системе Ridero




Введение


Разработку Android-приложений можно вести как в среде Eclipse, так и в среде Android Studio. Хотя среда Android Studio является официально поддерживаемой средой разработки, среда Eclipse не теряет актуальности из-за своей универсальности в разработке Java-приложений самого широкого спектра применений.

Поддержку разработки Android-приложений в среде Eclipse обеспечивает Eclipse-плагин Android Development Tools (ADT) (http://developer.android.com/sdk/eclipse-adt.html).

ADT-плагин помогает создать Android-проект, разработать UI-интерфейс приложения на основе программного интерфейса Android Framework API, отладить Android-приложение и подготовить подписанный файл. apk к публикации.




Установка ADT плагина


Для установки ADT-плагина откроем среду Eclipse IDE for Java EE Developers и в меню Help выберем команду Install New Software. В списке Work with: нажмем кнопку Add, в поле Name: введем имя плагина ADT, а в поле Location: – адрес https://dl-ssl.google.com/android/eclipse/ хранилища плагина, нажмем кнопку OK, в мастере Install отметим флажок Developer Tools и нажмем кнопку Next.








После установки ADT-плагина и перезапуска среды Eclipse может открыться окно приложения Android SDK Manager набора разработчика Android SDK.








Сам по себе дистрибутив набора Android SDK (http://developer.android.com/sdk/index.html) включает в себя набор инструментов SDK Tools, SDK Platform-tools, а также приложения AVD Manager и SDK Manager.

Приложение SDK Manager дает возможность устанавливать и обновлять компоненты набора Android SDK, а также запускать приложение AVD Manager и управлять URL-адресами дополнений.

Приложение SDK Manager можно также запустить из среды Eclipse с помощью команды Android SDK Manager меню Window перспективы Java.

Набор инструментов SDK Tools обеспечивает отладку и тестирование Android-приложений. Набор инструментов SDK Platform-tools обеспечивает поддержку самой последней версии Android-платформы и включает в себя инструмент Android Debug Bridge (adb), позволяющий взаимодействовать с эмулятором или Android-устройством. Приложение AVD Manager предоставляет GUI-интерфейс для моделирования различных конфигураций Android-устройств, используемых Android-эмулятором запуска приложений в среде выполнения Android. Набор Android Build Tools обеспечивает сборку кода Android-приложения.

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

Поэтому, используя приложение SDK Manager, установим последнюю возможную версию Android-платформы и наиболее распространенную или минимальную версию Android-платформы. Обратная совместимость между максимальной и минимальной версиями осуществляется с помощью библиотеки Android Support Library каталога Extras.

Дополнительно можно загрузить другие версии Android-платформы, документацию, примеры и различные дополнения набора Android SDK.

Различные версии API Android-платформы отличаются друг от друга наличием новых пакетов, а также изменениями в существующих пакетах.

Помимо изменений программного интерфейса API, от версии к версии Android-платформы изменялись предустановленные приложения, добавлялась поддержка новых технологий и улучшалась производительность.




Описание ADT-плагина


В результате установки ADT-плагина в команде New меню File среды Eclipse появится раздел Android, содержащий следующие мастера:

Android Activity – создает класс, расширяющий класс android.app.Activity и представляющий экран приложения.

Android Application Project – обеспечивает создание проекта Android-приложения.

Android Icon Set – позволяет создать набор значков приложения:

Launcher Icons – значок, представляющий приложение.

Action Bar and Tab Icons (Android 3.0+) – значки элементов панели действий пользователя для платформы версии 3.0 и выше.

Notification Icons – значки уведомлений панели состояния.

Pre-Android 3.0 Tab Icons – значки элементов панели действий пользователя для платформы версии ниже 3.0.

Pre-Android 3.0 Menu Icons – значки меню для платформы версии ниже 3.0.

Android Object – создает различные компоненты, такие как Activity, Widget, Fragment, Receiver, Provider, Service и др.

Android Project from Existing Code – импорт проекта приложения.

Android Sample Project – при условии установки с помощью SDK Manager пакета примеров Samples for SDK, позволяет создать проект выбранного примера Android-приложения.

Android Test Project – для выбранного Android-проекта создает основу набора тестов на базе каркаса Android testing framework, являющегося расширением платформы тестирования JUnit.

Android XML File – обеспечивает создание таких ресурсов приложения как:

Layout – XML-описание GUI-интерфейса Activity-компонента.

Values – XML-файл, содержащий набор текстовых строк, стилей, различного рода значений, используемых приложением.

Drawable – XML-файл, формирующий отображаемую на экране графику.

Menu – XML-файл, определяющий меню приложения.

Color List – XML-файл, определяющий набор цветов для различных состояний GUI-компонента.

Property Animation – XML-файл, задающий анимацию свойств объекта.

Tween Animation – XML-файл, задающий анимацию View-компонента (вращение, исчезновение, перемещение и масштабирование).

AppWidgetProvider – XML-файл, содержащий метаданные для миниатюрного приложения App Widget, как правило размещаемого на главном экране Home Screen.

Preference – XML-описание GUI-интерфейса PreferenceActivity-операции, позволяющей пользователю персонифицировать приложение.

Searchable – XML-файл, определяющий настройки GUI-компонента поиска.

Android XML Layout File – аналог мастера Android XML File | Layout.

Android XML Values File – аналог мастера Android XML File | Values.

Template Development Wizard – генерирует код на основе файла шаблона template. xml.








После установки ADT-плагина, в контекстном меню окна Package Explorer появятся следующие команды:

Run As | Android Application – запускает Android-приложение в виртуальном мобильном устройстве, созданным с помощью AVD Manager.

Run As | Android JUnit Test – запускает набор тестов для Android-приложения с использованием виртуального мобильного устройства.

Android Tools | New Test Project – открывает мастер Android Test Project создания набора тестов для Android-приложения.

Android Tools | New Resource File – открывает мастер Android XML File создания ресурсов приложения.

Android Tools | Export Signed Application Package – открывает мастер Export Android Application экспорта пописанного цифровой подписью и готового к публикации Android-приложения.

Android Tools | Export Unsigned Application Package – экспортирует неподписанный для релиза APK-файл Android-приложения.

Android Tools | Display dex bytecode – в окне Eclipse-редактора отображает инструкции байткода, дизассемблированные из DEX-файла, который создается в процессе сборки приложения путем конвертации из Java класс-файлов для выполнения виртуальной машиной Dalvik среды выполнения Android.

Android Tools | Rename Application Package – переименовывает пакет приложения.

Android Tools | Add Support Library – запускает приложение SDK Manager для добавления в путь приложения библиотеки Android Support Package, предоставляющей дополнительный API, не являющийся частью API версии Android-платформы. Другой способ добавления библиотеки Android Support Package – установить библиотеку с помощью раздела Extras приложения SDK Manager, создать папку libs в каталоге проекта, скопировать в нее библиотеку из папки extras\android\support каталога Android SDK и добавить библиотеку в путь приложения используя команду Build Path | Configure Build Path контекстного меню окна Package Explorer.

Android Tools | Fix Project Properties – в случае импорта готового Android-проекта гарантирует правильную его сборку, в частности добавляет в путь приложения необходимые библиотеки.

Android Tools | Run Lint: Check for Common Errors – сканирует Android-проект для поиска потенциальных багов с выводом сообщений о них в окно Lint Warnings.

Android Tools | Clear Lint Markers – очищает окно Lint Warnings.

Android Tools | Add Native Support – добавление поддержки Android NDK.

В меню Windows Workbench-окна появятся команды Android SDK Manager, AVD Manager и Run Android Lint, с помощью которых можно запустить приложения набора SDK Tools и сканирование Android-проекта для поиска потенциальных багов. Данные команды дублируются соответствующими кнопками панели инструментов Workbench-окна.

ADT-плагин добавляет в среду Eclipse перспективы DDMS, Hierarchy View, Pixel Perfect, Tracer for OpenGL ES и XML.




Перспектива DDMS


Перспектива DDMS запускает инструмент отладки Dalvik Debug Monitor Server набора SDK Tools и отображает его GUI-интерфейс в виде набора Eclipse-представлений, обеспечивая информацию о работе эмулятора или подсоединенного Android-устройства.

Перспектива DDMS содержит представления Devices, Emulator Control, LogCat, Threads, Heap, Allocation Tracker, Network Statistics, System Information и File Explorer.

Представление Devices отображает подключенные Android-устройства. Для каждого подключенного Android-устройства Devices-представление показывает все запущенные на нем процессы, каждый из которых работает в своем экземпляре виртуальной машины Dalvik. Каждый отображаемый процесс представляет инсталлированное и запущенное на Android-устройстве приложение, поэтому идентификация процесса производится по имени пакета приложения. Так как виртуальная машина Dalvik работает поверх ядра Linux, каждый процесс имеет свой Linux-идентификатор, отображаемый в окне Devices после имени пакета. Крайний правый столбец окна Devices показывает номер порта, который DDMS-инструмент назначает для подсоединения Eclipse-отладчика к экземпляру Dalvik-машины с использованием протокола JDWP (Java Debug Wire Protocol). По умолчанию Eclipse-отладчик подсоединяется к статическому порту 8700, на который перенаправляются трафики экземпляров Dalvik-машины от всех портов. DDMS-инструмент взаимодействует с подключенным Android-устройством с помощью инструмента Android Debug Bridge (adb), имеющего клиент-серверную архитектуру. DDMS-инструмент создает adb-клиента, который взаимодействует с adb-демоном (фоновый процесс, работающий в Android-устройстве) через adb-сервер.








Панель инструментов представления Devices содержит следующие кнопки:

(Debug the selected process, …) – подсоединяет процесс, представляющий Android-приложение с открытым в среде Eclipse проектом, к Eclipse-отладчику, для работы с которым используется перспектива Debug.








(Update Heap) – включает информацию об использовании динамической памяти для процесса.








(Dump HPROF file) – создает снимок динамической памяти в виде HPROF-файла. В случае Android-устройств версии 2.1 и ранее для создания HPROF-файла требуется наличие SD-карты памяти, а также разрешения в файле манифеста AndroidManifest. xml Android-приложения. Анализ HPROF-файла можно выполнить с помощью Eclipse-плагина Memory Analyzer (MAT) (android:name="android.pe








(Cause GC) – вызывает сборщика мусора, что влечет за собой сборку данных о динамической памяти.








(Update Threads) – включает информацию о запущенных потоках для выбранного процесса.








(Start Method Profiling) и (Stop Method Profiling) – запускает и останавливает запись информации о выполнении методов приложения в Trace-файл, который после остановки записи открывается в Traceview-окне, отображающем журнал выполнения в виде двух панелей: Timeline Panel – с помощью цветовой гаммы и шкалы времени описывает старт и остановку выполнения метода в потоке, Profile Panel – показывает детали выполнения методов. В случае Android-устройств версии 2.1 и ранее для создания Trace-файла требуется наличие SD-карты памяти, а также разрешения файла манифеста AndroidManifest. xml и ресурса res/values/styles. xml.

Для Activity-компонента стиль устанавливается с помощью атрибута android: theme="@style/ActivityTheme» тэга файла манифеста AndroidManifest. xml и ресурса res/values/styles. xml.

Применение стиля к Activity-компоненту может существенно менять отображение его GUI-интерфейса на экране Android-устройства. Например, при установке стиля Theme. Dialog, Activity-компонент отображается в виде диалогового окна, не заполняя полностью весь экран.

Кнопки вкладки Graphical Layout, расположенные ниже панели кнопок с меню, обеспечивают регулировку значений атрибутов android: layout_width, android: layout_height и др. корневого контейнера, а также эмуляцию размера экрана и увеличение-уменьшение изображения экрана.

Palette-палитра вкладки Graphical Layout позволяет визуально заполнить GUI-интерфейс Activity-компонента View-компонентами с помощью перетаскивания элементов Palette-палитры в область просмотра конечного вида GUI-интерфейса.

Кроме того, вкладка Graphical Layout имеет контекстное меню, открывающееся при нажатии правой кнопкой мышки на View-компоненте в окне просмотра конечного вида GUI-интерфейса, с помощью опций которого можно изменять свойства выбранного View-компонента.




Редактор файла AndroidManifest. xml ADT-плагина


Для файла манифеста AndroidManifest. xml ADT-плагин также предоставляет визуальный графический редактор.








Редактор файла AndroidManifest. xml ADT-плагина имеет вкладки Manifest, Application, Permissions, Instrumentation и AndroidManifest. xml.

Набор опций вкладок Manifest и Application зависит от версии Android-платформы, на основе которой создан Android-проект.

Вкладка Manifest ADT-редактора файла AndroidManifest. xml содержит следующие поля и ссылки:

Package – редактирование имени пакета Android-приложения, значение атрибута package элемента .

Version Code – редактирование версии Android-приложения, значение атрибута android: versionCode элемента .

Version name – редактирование строки, представляющей пользователю версию Android-приложения, значение атрибута android: versionName элемента .

Shared user id – если данное приложение является одним из модулей большого Android-приложения, установка данного идентификатора одинаковым для всех модулей с подписанием их одним сертификатом дает взаимный доступ к данным, значение атрибута android: sharedUserId элемента .

Shared user label – отображаемая пользователю метка sharedUserId-идентификатора, значение атрибута android: sharedUserLabel элемента .

Раздел Manifest Extras – с помощью кнопки Add обеспечивает добавление в манифест следующих тэгов:

(элемент Uses Sdk) – указывает совместимость с версиями Android-платформы.

(элемент Supports Screens) – указывает поддержку Android-приложением различных экранов.

(элемент Uses Configuration) – указывает, какие опции устройства требуются для работы Android-приложения.

(элемент Uses Feature) – указывает для других Android-приложений, от какой опции устройства зависит работа данного Android-приложения.

(элемент Protected Broadcast) – указывает Broadcasts-сообщения, которые может посылать только Android-система.

(элемент Compatible Screens) – указывает для Android Market совместимость приложения с конфигурациями экрана, используя тэги (элемент Screen кнопки Add).

(элемент Original Package) – предназначен только для системных приложений.

(элемент Package Verifier) – указывает имя пакета приложения, которое вызывается PackageManager-сервисом при инсталляции данного приложения. PackageManager-сервис посылает Broadcast-сообщение ACTION_PACKAGE_NEEDS_VERIFICATION указываемому пакету, который должен содержать BroadcastReceiver-компонент для верификации инсталляции.

Exporting – содержит ссылки Use the Export Wizard и Export an unsigned APK, запускающие опции экспорта подписанного и неподписанного для публикации Android-приложения.

Links – содержит ссылки Application (открывает вкладку Application редактора), Permission (открывает вкладку Permission редактора), Instrumentation (открывает вкладку Instrumentation редактора), XML Source (открывает вкладку AndroidManifest. xml редактора), Documentation (пытается открыть локализованную страницу документации).

Вкладка Application ADT-редактора файла AndroidManifest. xml помогает редактировать тэг файла манифеста с помощью разделов Application Toggle, Application Attributes и Application Nodes.

Раздел Application Toggle вкладки Application содержит ссылку application – открывает страницу документации элемента и флажок Define an tag in the AndroidManifest. xml – включает элемент в файл манифеста.

Раздел Application Attributes вкладки Application определяет атрибуты элемента с помощью следующих полей и списков:

Name – при нажатии открывает мастер создания Java-класса, расширяющего класс android. app. Application. Созданный Application-класс указывается в качестве значения атрибута android: name тэга . Если приложение содержит несколько Activity-компонентов, решить проблему обеспечения для них общих глобальных в рамках приложения данных и сервисов поможет Application-класс. При запуске приложения Android-система создаст единственный экземпляр Application-класса и будет вызывать его методы жизненного цикла. Рекомендуется реализовать Application-класс как Singleton-класс со статическим доступом к глобальным данным и сервисам.

Theme – общий для Activity-компонентов стиль, указываемый как значение атрибута android: theme тэга . Предварительно необходимо создать ресурсный файл каталога res/values со стилем, используя команду New | Other | Android | Android XML Values File контекстного меню окна Package Explorer, дополнить его тэгом . При добавлении элемента 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 – в результате откроется окно мастера, в списке Resource Type которого выберем тип Drawable.








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

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

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

 – обертывает 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).

 – накладывает маску на 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-объект).

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

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

 – дочерний тэг тэга , определяет градиентную заливку геометрической формы с помощью атрибутов 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, если геометрическая форма участвует в , тогда если true – количество отображений градиента зависит от уровня формы).

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

 – дочерний тэг тэгов , , , .

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

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

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

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

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

 – содержит набор Drawable-объектов для различных состояний View-компонента. Набор Drawable-объектов описывается дочерними тэгами , которые связываются с определенными состояниями с помощью атрибутов 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).

 – описывает геометрическую форму, используя атрибут android: shape (возможные значения rectangle, oval, line, ring) и дочерние тэги , , , , , .

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

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

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

После ввода имени нового графического ресурса, выбора его корневого элемента и нажатия кнопки 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 – в результате откроется окно мастера, в списке Resource Type которого выберем тип Menu.








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

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

.

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

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

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

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-панели.

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

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 полями, позволяющими определить атрибуты тэгов и .




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


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

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








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

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

Тэг может содержать один или несколько тэгов , определяющих цвета для различных состояний 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 – в результате откроется окно мастера, в списке Resource Type которого выберем тип Property Animation.








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

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

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

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 (по умолчанию).

Тэг представляет класс 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 – в результате откроется окно мастера, в списке Resource Type которого выберем тип 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, представляющие тэги , , , и  соответственно, при этом каждый из них может служить единственным корневым тэгом 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 (компонент в течение анимации находится внизу стека).

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

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

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

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

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

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

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

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

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

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

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

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

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

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





Конец ознакомительного фрагмента. Получить полную версию книги.


Текст предоставлен ООО «ЛитРес».

Прочитайте эту книгу целиком, купив полную легальную версию (https://www.litres.ru/timur-mashnin/razrabotka-android-prilozheniy-v-detalyah/) на ЛитРес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.



В книге приведены некоторые рецепты разработки Android-приложений и их примеры, рассмотрена работа в среде Eclipse и Android Studio, разработка мобильных сайтов и гибридных мобильных приложений.

Как скачать книгу - "Разработка Android-приложений в деталях" в fb2, ePub, txt и других форматах?

  1. Нажмите на кнопку "полная версия" справа от обложки книги на версии сайта для ПК или под обложкой на мобюильной версии сайта
    Полная версия книги
  2. Купите книгу на литресе по кнопке со скриншота
    Пример кнопки для покупки книги
    Если книга "Разработка Android-приложений в деталях" доступна в бесплатно то будет вот такая кнопка
    Пример кнопки, если книга бесплатная
  3. Выполните вход в личный кабинет на сайте ЛитРес с вашим логином и паролем.
  4. В правом верхнем углу сайта нажмите «Мои книги» и перейдите в подраздел «Мои».
  5. Нажмите на обложку книги -"Разработка Android-приложений в деталях", чтобы скачать книгу для телефона или на ПК.
    Аудиокнига - «Разработка Android-приложений в деталях»
  6. В разделе «Скачать в виде файла» нажмите на нужный вам формат файла:

    Для чтения на телефоне подойдут следующие форматы (при клике на формат вы можете сразу скачать бесплатно фрагмент книги "Разработка Android-приложений в деталях" для ознакомления):

    • FB2 - Для телефонов, планшетов на Android, электронных книг (кроме Kindle) и других программ
    • EPUB - подходит для устройств на ios (iPhone, iPad, Mac) и большинства приложений для чтения

    Для чтения на компьютере подходят форматы:

    • TXT - можно открыть на любом компьютере в текстовом редакторе
    • RTF - также можно открыть на любом ПК
    • A4 PDF - открывается в программе Adobe Reader

    Другие форматы:

    • MOBI - подходит для электронных книг Kindle и Android-приложений
    • IOS.EPUB - идеально подойдет для iPhone и iPad
    • A6 PDF - оптимизирован и подойдет для смартфонов
    • FB3 - более развитый формат FB2

  7. Сохраните файл на свой компьютер или телефоне.

Книги автора

Рекомендуем

Последние отзывы
Оставьте отзыв к любой книге и его увидят десятки тысяч людей!
  • константин александрович обрезанов:
    3★
    21.08.2023
  • константин александрович обрезанов:
    3.1★
    11.08.2023
  • Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *