0

我有一个连接到外部打印机设备的应用程序,我需要获取一些用户数据并动态制作图像并打印它。打印机 API 需要位图作为打印输入。请注意,我从不想将程序创建的图像绘制到屏幕上;图像的生成和打印没有可见的 UI,它发生在后台。

到目前为止,我已经考虑过以下方式之一:

1)制作画布,从不调用绘图函数,将其转换为位图然后打印(有点偏离使用 Canvas API 的预期方式)

2)制作一个隐藏的 ImageView xml 布局,永远不要让它可见,将其转换为位图然后打印(这可能会变得很棘手,因为我可能必须将它包含在 Activity 的布局中某处以动态编辑它,但这会消耗资源和感觉效率低下)

您对最佳方法有何看法?我考虑过的两种方法中的任何一种都感觉有点老套,让我渴望一个用于自定义图像生成的专用 API。

4

1 回答 1

0

最符合平台的解决方案是采用 Canvas 方法。

首先,您应该创建所需尺寸的位图并将其传递给Canvas(Bitmap)构造函数。然后你在画布上绘制你需要的任何东西,并保留对位图的引用,以便在整个应用程序中使用任何你需要的地方(在我的例子中,它被发送到打印机)。

来自Android Docs对于视图层次结构的一小部分或单个视图的软件渲染快照,建议从位图或图片创建画布并在视图上调用 draw(android.graphics.Canvas)。

示例代码:

bitmap = Bitmap.createBitmap(LABEL_SIDE_LENGTH, LABEL_SIDE_LENGTH, Bitmap.Config.ARGB_8888)

接下来[override fun draw(canvas: Canvas)]像这样设置画布的位图;

canvas.setBitmap(bitmap).

您保留对的引用,bitmap并且可以在需要的任何地方使用它

于 2019-11-21T18:15:36.203 回答