当我绘制一个包含透明区域的视图时,由于它的背景图像,当视图绘制到画布时,这些透明区域变为黑色:
View v = getView();
v.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
v.layout(0, 0, infoWindow.getMeasuredWidth(), infoWindow.getMeasuredWidth());
Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
//c.drawColor(Color.YELLOW); // yellow color does not show up
v.draw(c);
由于代码片段中的黄色背景没有显示在位图中,因此我得出结论,v.draw(c)
不使用透明度进行绘画。如果我在画布上画一个Drawable,它的透明区域会被正确绘制。
当视图从布局文件中膨胀时,我可以观察到,在操作中使用时,相同的布局被Android正确呈现。那么,我如何在画布上绘制视图,同时保持透明区域?
呼叫v.setDrawingCacheEnabled(true)
和v.getDrawingCache()
。第二个会给你一个Bitmap
,你可以画。