在某些情况下,我必须在另一个上面添加一个位图。但我的代码不起作用。我当然认为,我做的不对,但我不知道如何做到这一点。
之后我必须将我的Bitmap转换为Picture对象,然后将我的Picture对象添加到我的MarkerOption对象。
这是我的代码:
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.lifr);
Bitmap bmp2 = BitmapFactory.decodeResource(getResources(), R.drawable.manche_a_air);
Bitmap bmOverlay = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp, 0.0f, 0.0f, null);
canvas.drawBitmap(bmp2, bmp.getWidth(), bmp.getHeight() / 2, null);
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(bmOverlay));
return markerOptions;
如果有人有想法?提前谢谢。
答案 0 :(得分:0)
我会创建一个FrameLayout(子视图在堆栈中绘制,最近添加的子项位于顶部),第二个布局具有透明背景。注意,第二位图也可以是部分透明的。如果我需要在运行时移动第二个图像,我会以编程方式更改布局参数。
排序:
<FrameLayout ...>
<LinearLayout ...>
<!-- the 1st bitmap goes here -->
</LinearLayout>
<LinearLayout android:background="#80000000" ...> <!-- semi-transparent -->
<View android:layout_width="80px" .../> <!-- just padding -->
<!-- the 2nd bitmap goes here -->
...
</LinearLayout>
</FrameLayout>
请注意,为了精确定位,您可以在垂直LinearLayout中使用水平LinearLayout。
以编程方式更改位置有点棘手,您可能需要拦截onGlobalLayout()。
当然,这对于UI来说是可以的,但对游戏来说可能太慢了。