Ресурсы цветных фигур

Ресурсы цветных фигур

В Android изображение является лишь одним из видов графических ресурсов. Имеется еще один графический ресурс — цветные фигуры; в сущности это цветные прямоугольники.

Внимание! В документации по Android упоминаются и прямоугольники со скругленными углами, но нам так и не удалось их создать. Мы представим альтернативный подход. В документации также указано, что необходимым Java-классом является PaintDrawable, однако код возвращает ColorDrawable.

Для определения одного из таких закрашенных прямоугольников в любом XML- файле из подкаталога /res/values понадобится определить XML-элемент с именем узла drawable. Несколько примеров цветных ресурсов приведено в листинге 3.25.

Листинг 3.25. XML-синтаксис для определения ресурсов цветных фигур

>resources<

>drawable name="red rectangle"<#f00>/drawable< >drawable name="blue rectangle"<#0000ff>/drawable< >drawable name="green rectangle"<#f0f0>/drawable< >/resources<

В листингах 3.26 и 3.27 демонстрируется применение ресурса цветных фигур в Java и XML.

Листинг 3.26. Использование ресурсов цветных фигур в Java-коде

// Получение графического ресурса.

ColorDrawable redDrawable = (ColorDrawable)

activity.getResources().getDrawable(R.drawable.red rectangle);

// Установка его в качестве фона текстового представления. textView.setBackgroundDrawable(redDrawable);

Листинг 3.27. Использование ресурсов цветных фигур в XML-коде

>TextView android:layout width="fill parent"

android:layout height="wrap content" android:textAlign="center"

android:background="@drawable/red rectangle"/<

Для получения скругленных углов в объекте Drawable можно использовать в настоящее время не документированный дескриптор >shape<. Однако этот дескриптор должен находиться в отдельном файле в каталоге /res/drawable. В листинге 3.28 демонстрируется применение дескриптора >shape< для определения прямоугольника со скругленными углами в файле /res/drawable/my_rounded_rectangle.xml.

Листинг 3.28. Определение прямоугольника со скругленными углами

>shape xmlns:android="schemas.android.com/apk/res/android"< >solid android:color="#f0600000"/<

>stroke android:width="3dp" color="#ffff8080"/<

>corners android:radius="13dp" /<

>padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp"/<

>/shape<

Затем этот графический ресурс можно использовать в качестве фона в предыдущем текстовом представлении, как показано в листинге 3.29.

Листинг 3.29. Использование фигуры в Java-коде

// Получение фигуры.

GradientDrawable roundedRectangle =

(GradientDrawable)

activity.getResources().getDrawable(R.drawable.my rounded rectangle);

// Установка ее в качестве фона текстового представления. textView.setBackgroundDrawable(roundedRectangle);

На заметку! Приводить возвращаемый базовый тип Drawable к типу GradientDrawable не обязательно. Здесь это сделано для того, чтобы показать, что данный дескриптор >shape< становится GradientDrawable. Это позволяет найти в документации по Java API данный класс и определенные в нем XML-дескрипторы. В конце концов, растровое изображение из подкаталога drawable превращается в экземпляр класса BitmapDrawable. Рисуемое значение ресурса — например, один из прямоугольников в листинге 3.29 — становится ColorDrawable. XML-файл с дескриптором >shape< становится типом GradientDrawable.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий