手动将视图绘制到“画布”上不会保留透明度

时间:2013-03-12 12:20:09

标签: android android-canvas

当我绘制一个包含透明区域的视图时,由于其背景图像,当视图绘制到画布时,这些透明区域会变黑:

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在操作中使用时正确呈现了相同的布局。那么如何在保持透明区域的同时将画面绘制到画布上呢?

1 个答案:

答案 0 :(得分:2)

致电v.setDrawingCacheEnabled(true)v.getDrawingCache()。第二个会给你一个Bitmap,你可以画。