Ресурсы цветных фигур
В 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.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.