地图:合并多个不同大小的drawable

时间:2012-01-05 17:58:04

标签: android merge drawable

我有问题。我需要合并两个不同大小的图片(drawables)。这个想法是让某人(动态加载)的图片为100x100px并且具有更大的透明背景(例如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 个答案:

答案 0 :(得分:1)

我这里没有确切的命令但你应该这样做:

  1. 使用您想要的总大小创建一个位图。
  2. 创建传递创建的位图的画布
  3. 在画布上绘制两个图像。
  4. 将位图添加到您正在使用的视图中。

答案 1 :(得分:1)

如果您想在LayerDrawable中更改Drawable大小和位置,可以使用setLayerSize更改可绘制的大小,并且可以使用setLayerInset来控制位置。