Как создать Drawables по коду в Android?
Я хочу создать простой синий Drawable с помощью кода Java. Я не хочу добавлять "синее" изображение в папку res/drawable. Как мне этого добиться? Мне нужно использовать этот drawable в ImageView в качестве изображения.
2 ответа
Просто используйте BitmapDrawable
, который позволит вам установить растровое изображение в качестве источника. Вы можете легко создавать растровые изображения, используя множество функций, таких как:
Bitmap myBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
myBitmap.setPixel(x, y, Color.BLUE);
Если вам нужен сплошной цвет, вы можете создать растровое изображение 1x1 с этим пикселем и увеличивать его по мере необходимости.
В качестве альтернативы, если вы хотите больше гибкости, вы можете использовать Canvas
что позволяет использовать больше методов рисования (для прямоугольников, кругов, текста и т. д.).
В качестве альтернативы вы можете определить ShapeDrawable в XML (да, я знаю, что вы хотите сделать это в коде, но, возможно, это будет работать и для вас):
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="150dp"
android:height="150dp" />
<solid
android:color="#ff0000ff" />
</shape>
XML облегчает поддержку нескольких экранов (разрешение экрана, плотность экрана, форм-факторы, ориентация). Подробнее о том, как определять фигуры, можно найти здесь.