Как создать 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 облегчает поддержку нескольких экранов (разрешение экрана, плотность экрана, форм-факторы, ориентация). Подробнее о том, как определять фигуры, можно найти здесь.

Другие вопросы по тегам