Объединяйте изображения и текст с возможностью рисования

Я хочу создать drawable, который состоит из вывода карты (пузырька) и некоторого текста. Пузырь должен быть в фоновом режиме и текст на переднем плане.

Этот drawable должен быть передан в super(drawable) класса BalloonItemizedOverlay, который расширяет ItemizedOverlay<Item>.

Другими словами, я хочу показать текст в пузыре, который появляется на карте.

Я использую Hello Mapview tutorial

Ответ 1

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

public BitmapDrawable writeOnDrawable(int drawableId, String text){

        Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true);
        Paint paint = new Paint(); 
        paint.setStyle(Style.FILL);  
        paint.setColor(Color.BLACK); 
        paint.setTextSize(20); 

        Canvas canvas = new Canvas(bm);
        canvas.drawText(text, 0, bm.getHeight()/2, paint);

        return new BitmapDrawable(bm);
    }

Чтобы сохранить плотность, вам понадобится этот конструктор

BitmapDrawable (Resources res, Bitmap bitmap)

Итак, сохраняя ваш контекст, последний возврат должен быть чем-то вроде

return new BitmapDrawable(context.getResources(), bm);

Это предотвращает нежелательное изменение размера.