Draw на Drawable

1

Я хочу нарисовать число на существующем чертеже. Как и непрочитанный счет на значок электронной почты. Выделенный - это верхний значок кнопки. Это мой код:

BitmapDrawable d = (BitmapDrawable) button.getCompoundDrawables()[1];
if(d != null) {
    Bitmap src = d.getBitmap();
    Bitmap b = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig());
    Canvas c = new Canvas(b);

    Paint p = new Paint();
    p.setAntiAlias(true);
    p.setStrokeWidth(1);
    p.setStyle(Style.FILL_AND_STROKE);
    p.setColor(Color.rgb(254, 0, 1));

    c.drawBitmap(src, 0, 0, p);
    c.drawCircle(b.getWidth()-5, 5, 5, p);
    button.setCompoundDrawables(null, new BitmapDrawable(b), null, null);
}

Результирующее значение drawable является emtpy. Что-то не так с этим кодом?

Спасибо заранее.

Теги:
drawable

2 ответа

1
Лучший ответ

Новый битмап должен вызвать setBounds (...)

BitmapDrawable dn = new BitmapDrawable(b);
dn.setBounds(d.getBounds());
button.setCompoundDrawables(null, dn, null, null);
0

Я не уверен в вашей реализации, но еще один способ сделать это - добавить растровое изображение в framelayout как изображение, а затем добавить текстовое представление (соответствующее стилю) со смещением; в зависимости от того, где вы хотите получить значок, например. верхний правый угол.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню