地图:合并多个大小不同的可绘制对象

5

我有一个问题,需要合并两张不同大小的图片(drawables)。我的想法是:加载一个动态生成的人物图片,大小为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。该文章介绍了如何使用Canvas在Android上合并两张图片的方法。
2个回答

1

我这里没有确切的命令,但你应该做以下几步:

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

谢谢。我会尝试并发布结果。 - Vaidas Sirtautas

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接