如何在不先渲染的情况下将android视图渲染到画布上(即没有完整的布局)

时间:2020-03-07 21:37:05

标签: java android canvas

我正在尝试使用View.draw( Canvas canvas )在外部画布上绘制视图。为此,视图必须事先执行完整的布局。

但是,调用View.draw( Canvas canvas )的原因是,我可以从视图中生成PdfDocument,同时利用现有的小部件而不是自定义绘制代码中的所有内容。换句话说,在内存中而不是在屏幕上调用视图的完整布局(及其子视图)……如果有意义的话。

我希望创建一个具有固定高度和宽度的视图(不渲染它),然后将该视图转储到PdfDocument页面的画布上。

这可以做到吗?如果是,诀窍是什么?

如果没有,还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

与屏幕绘制相比,您需要按照@CommonsWare所述设置布局参数,尺寸和布局。

在我的App中,我绘制了一个视图以保存为PNG并进行打印,但是您也可以在位图上将其转换为PDF文档。

请注意,这种技术似乎不适用于滚动的内容,因为您通常只能获得屏幕上显示的内容。

在我的情况下,scrollview内有一个很大的TableLayout,所以我将TableLayout绘制到位图上而不是scrollView。

我生成名为TableLayout的{​​{1}},然后将其保存到PNG中,请执行以下操作(可以很容易地将其应用于pdf文件)

提取我使用的代码(因为我也使用相同的代码在屏幕上实际绘制,所以我通过ID准确找到了要保存到PNG的内容

view