手动在画布上绘制视图不会保留透明度。

3
当我绘制一个包含透明区域的视图时,由于其背景图像,这些透明区域在将视图绘制到画布时会变为黑色:
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可以正确地渲染相同的布局。那么我该如何在保持透明区域的同时将视图绘制到画布上?

也许这个链接会有帮助:http://developer.android.com/reference/android/view/View.html#setDrawingCacheEnabled%28boolean%29。 - Michał Z.
调用 v.setDrawingCacheEnabled(false|true) 并不能解决问题。 - Lars Blumberg
调用 v.setDrawingCacheEnabled(true) 和 v.getDrawingCache()。第二个将会给你一个 Bitmap,你可以进行绘制。 - Michał Z.
可以,那个方案可行!你是想建议我采纳它作为解决方案吗? - Lars Blumberg
1个回答

2

调用v.setDrawingCacheEnabled(true)v.getDrawingCache()。第二个函数将返回一个Bitmap对象,您可以进行绘制。


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