Объединить изображение и текст для рисования - PullRequest
23 голосов
/ 14 июля 2011

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

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

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

Я использую учебник Hello Mapview

1 Ответ

62 голосов
/ 14 июля 2011

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

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);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...