Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пери перевод.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
103.17 Кб
Скачать

LayerDrawable

LayerDrawable позволяет накладывать несколько объектов Drawable

один поверх другого. Описав массив полупрозрачных объектов Drawable,

167 бет

вы можете создать сложную комбинацию динамических фигур и преоб-

разований.

Кроме того, вы можете применять к LayerDrawable те же преобразо-

вания, которые были описаны в предыдущем разделе, а также сочетать их

с ресурсами StateListDrawable и LevelListDrawable, речь о которых пойдет

дальше.

В листинге 4.21 LayerDrawable описывается с помощью тега <layerlist>,

внутри которого для каждого дочернего узла <item> используется

атрибут drawable, указывающий на ресурс для наложения.

Каждый объект Drawable будет накладываться в соответствии со своим

индексом — первый элемент массива размещается в самом низу.

Листинг 4.21. Описание ресурса LayerDrawable в формате XML

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/bottomimage"/>

<item android:drawable="@drawable/image2"/>

<item android:drawable="@drawable/image3"/>

<item android:drawable="@drawable/topimage"/>

</layer-list>

StateListDrawable

StateListDrawable — это композитный ресурс, позволяющий отображать

разные объекты Drawable в зависимости от состояния Представления, для

которого они были назначены.

Ресурс StateListDrawable используется в большинстве стандартных

Представлений в Android, например в виде изображений кнопок или фона

для обычных элементов списка ListView.

Чтобы описать StateListDrawable, создайте файл в формате XML, в ко-

тором указываются разные ресурсы Drawable для каждого состояния Пред-

ставления, как показано в листинге 4.22.

Листинг 4.22. Ресурс StateListDrawable

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_window_focused="false"

android:drawable="@drawable/widget_bg_normal"/>

<item android:state_pressed="true"

android:drawable="@drawable/widget_bg_pressed"/>

<item android:state_focused="true"

android:drawable="@drawable/widget_bg_selected"/>

<item android:drawable="@drawable/widget_bg_normal"/>

</selector>

168 бет

LevelListDrawable

Используя LevelListDrawable, вы можете эффективно размещать ре-

сурсы Drawable один поверх другого, указывая целочисленный индекс для

каждого слоя, как показано в листинге 4.23.

Листинг 4.23. Ресурс LevelListDrawable

<level-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:maxLevel="0" android:drawable="@drawable/earthquake_0"/>

<item android:maxLevel="1" android:drawable="@drawable/earthquake_1"/>

<item android:maxLevel="2" android:drawable="@drawable/earthquake_2"/>

<item android:maxLevel="4" android:drawable="@drawable/earthquake_4"/>

<item android:maxLevel="6" android:drawable="@drawable/earthquake_6"/>

<item android:maxLevel="8" android:drawable="@drawable/earthquake_8"/>

<item android:maxLevel="10" android:drawable="@drawable/earthquake_10"/>

</level-list>

Чтобы вывести на экран определенное изображение, вызовите метод

setImageLevel из Представления, которому назначен ресурс LevelListDrawable,

передавая в качестве параметра индекс объекта Drawable, который вы хо-

тите отобразить.