Карты: объединение нескольких рисунков разного размера - PullRequest
5 голосов
/ 05 января 2012

У меня проблема. Мне нужно объединить две картинки разных размеров (рисунки). Идея состоит в том, чтобы иметь изображение кого-то (загруженного динамически) размером 100x100 пикселей и иметь прозрачный фон, который больше (например, 100x120). В последних 20 пикселях у меня есть стрелка, которая должна указывать на местоположение человека на карте. Тогда я думаю, что мог бы сделать что-то вроде этого:

Drawable[] layers = new Drawable[2];
layers[0] = res.getDrawable(R.drawable.background_img);
layers[1] = res.getDrawable(R.drawable.icon);
LayerDrawable layerDrawable = new LayerDrawable(layers);

Но это просто накладывает одно изображение на другое, игнорируя их границы.

Спасибо заранее, Vaidas

- ОБНОВЛЕНИЕ: наконец-то решена проблема. Работает как шарм:)

private Drawable createPersonDrawable(Bitmap personImage)
{
    Bitmap resultingBitmap = Bitmap.createBitmap(drawableWidth,
            drawableHeight, Bitmap.Config.ARGB_8888);
    Canvas comboCanvas = new Canvas(resultingBitmap);

    comboCanvas.drawBitmap(personImage, 0, 0, null);

    // Get the bottom part of the image from resources
    Bitmap bottomPart = BitmapFactory.decodeResource(getResources(),
            R.drawable.person_map_icon_bottom);

    comboCanvas.drawBitmap(bottomPart, 0, drawablePersonImageHeight, null);
    comboCanvas.save();

    return new BitmapDrawable(resultingBitmap);
}

Я нашел описание здесь: http://www.jondev.net/articles/Combining_2_Images_in_Android_using_Canvas

Ответы [ 2 ]

1 голос
/ 16 ноября 2017

Если вы хотите изменить размер рисования и положение в LayerDrawable, вы можете использовать setLayerSize, чтобы изменить размер рисования, и вы можете использовать setLayerInset для управления положением.

1 голос
/ 05 января 2012

У меня нет точных команд здесь, но вы должны сделать:

  1. Создать растровое изображение с нужным вам общим размером.
  2. Создать холст, передавая созданное растровое изображение
  3. Нарисуйте два изображения на холсте.
  4. Добавьте растровое изображение к используемому виду.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...