
- •Глава 4
- •ViewGroup. Правильное использование разметки чрезвычайно важно при
- •Знакомство с Представлениями
- •ViewGroup — это производный от View класс, спроектированный для
- •Знакомство с менеджерами компоновки
- •Использование разметки
- •Оптимизация разметки
- •Изменение существующих Представлений
- •5. Чтобы отобразить лист, переопределите метод onDraw и нарисуйте
- •Создание нового графического интерфейса
- •Внимание
- •10 Dp и такой же толщины контур. Результат представлен на рис. 4.3.
- •LayerDrawable
- •StateListDrawable
- •LevelListDrawable
- •ImageView.SetImageLevel(5);
- •Ресурс NinePatch
- •800 480 И 854 480). Точно так же физические размеры экрана начинаются
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, который вы хо-
тите отобразить.