Текст книги "Разработка Android-приложений в деталях"
![](/books_files/covers/thumbs_240/razrabotka-android-prilozheniy-vdetalyah-198990.jpg)
Автор книги: Тимур Машнин
Жанр: Компьютеры: прочее, Компьютеры
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 5 (всего у книги 20 страниц) [доступный отрывок для чтения: 6 страниц]
Тип ресурса Drawable
Для создания графического ресурса Android-приложения в окне Project Explorer нажмем правой кнопкой мышки на узле проекта и в контекстном меню выберем команду New | Other | Android | Android XML File, нажмем кнопку Next – в результате откроется окно мастера, в списке Resource Type которого выберем тип Drawable.
![](image49_5786b51df7cb49103d60dddc_jpg.jpeg)
Поле 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 – в результате откроется окно мастера, в списке Resource Type которого выберем тип Menu.
![](image50_5786b51bf7cb49103d60ddd9_jpg.jpeg)
Поле 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 – в результате откроется окно мастера, в списке Resource Type которого выберем тип Color List.
![](image51_5786b51af7cb49103d60ddd6_jpg.jpeg)
Поле 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 – в результате откроется окно мастера, в списке Resource Type которого выберем тип Property Animation.
![](image52_5786b519f7cb49103d60ddd3_jpg.jpeg)
Поле 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 – в результате откроется окно мастера, в списке Resource Type которого выберем тип Tween Animation.
![](image53_5786b517f7cb49103d60ddd0_jpg.jpeg)
Поле 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-редакторе кода.
Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?