2012-01-05 66 views
5

我遇到问题。我需要合并两个不同大小的图片(可绘制)。这个想法是让一张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

回答

1

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

  1. 同生共创建位图你想要的大小。
  2. 创建一个帆布经过创建位图
  3. 画在画布上的两个图像。
  4. 位图添加到您正在使用的视图。
+0

感谢。我会尝试发布结果。 – 2012-01-05 18:59:44

1

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