我正在调用 inputView.draw(drawCanvas),以便将我的视图保存到位图。
Bitmap resultBitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);
Canvas drawCanvas = new Canvas(resultBitmap);
inputView.draw(drawCanvas);
位图不包含完整的视图图像(我的视图在画布上有自定义绘图 - 带图例的饼图)。保存的位图只是传奇的一部分。
阅读View.draw(android.graphics.Canvas)
的javadoc在调用此函数之前,视图必须已完成完整布局。
如何确保视图完全布局? 当调用inputView.draw(drawCanvas)时,我的视图在屏幕上呈现并可见。
答案 0 :(得分:0)
我认为您可以查看布局参数。
LayoutParams layoutParams = layout.getLayoutParams();
然后检查它是否已满(我不明白“完整”是什么意思)。
答案 1 :(得分:0)
通过添加以下代码解决
int measuredWidth = View.MeasureSpec.makeMeasureSpec(viewWidth, View.MeasureSpec.EXACTLY);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(viewHeight, View.MeasureSpec.EXACTLY);
inputView.measure(measuredWidth, measuredHeight);
inputView.layout(0, 0, inputView.getMeasuredWidth(), inputView.getMeasuredHeight());
在绘制到我的位图之前。
奇怪的是,在我拥有的三个屏幕中的两个屏幕上,一切正常。保存的位图始终完整。