【问题标题】:Android chart library that's able to generate a PNG without showing the chart before thatAndroid 图表库,能够在不显示之前的图表的情况下生成 PNG
【发布时间】:2015-07-21 05:36:39
【问题描述】:

让我们从我为什么要这样做开始: 我公司目前正在从事的项目涉及让我们客户的一名员工去世界尽头的可能性,绝对无法连接到移动网络,随身携带便携式打印机,然后打印从他的平板电脑报告。我们目前已经用这种方式打印了一份工作报告,但是他们添加了一些引起很多麻烦的细节,这就是我在这里的原因,我需要在 Jasper 报告的末尾放 3 个图表。

在一个非常简单的 Web 应用程序中,因为 Jasper 本身提供了这个功能,但由于它是一个移动项目,我们尝试使用 PDFReporter。此 API 从 .jrxml 文件生成 PDF,但它不支持 Jasper 的每一项功能,图表就是其中之一。在网上搜索我发现我们可以将图表导出为 PNG,然后将其添加到报告中,这将与 PDFReporter 一起使用。

从今天早上 8 点开始,我花了一天的时间搜索和测试不同的图表生成 API,只是为了发现,到目前为止,100% 的 Android API 旨在直接在您指定的视图上生成图表活动,但这对我根本不起作用。

我还测试了一些 Java API,但也遇到了问题,因为它们中的大多数使用 java.awt 资源来处理图像,并且该包不包含在 android 的 SDK 中,也不支持(发现通过将 JFreeChart 添加到我的项目中,这使我的构建需要大约 15 分钟,最终失败并出现 OOM 错误)。

所以我需要帮助的是:是否有一个 API 我可以直接在移动项目上使用,没有任何连接,它可以生成一个 PNG 格式的饼图,而无需在视图上呈现它然后获取图片?

我想明确表示,我对上面所说的大多数事情都不是 100% 确定的,除了 PDFReporter 的限制,这些都得到了确认,所以请任何形式的帮助非常感谢,即使是一点点“这不是它的工作方式”也会有所帮助。

如果您至少花时间阅读它,请提前感谢:)

【问题讨论】:

    标签: android charts offline


    【解决方案1】:

    我不确定您为什么说“...直接在您为活动指定的视图上生成图表,但这对我根本不起作用”。无论如何,您在 Android 应用中看到的所有内容都在某个 View 中(在您的情况下,它可能是 ImageView)。

    您只是想在内存中将图表生成为 PNG 并将其存储或进一步操作吗?在这种情况下,您可以首先使用您选择的 API 在隐藏的 ImageView 中生成它,然后使用 ImageView.getDrawable() 提取它。假设 API 没有隐藏视图的问题。也许this 有帮助

    【讨论】:

    • 你好 mkoe,事实是我正在进行一个带有回收站视图的活动,长按其中一个项目,显示打印报告的选项,所以,是的,放置一个隐藏的在recyclerView下方的Im​​ageView,在其上渲染图像然后再次获取它可能是一种解决方法,但这绝对是我想避免的事情......另外,不,不想操纵,获取它,另存为PNG和将其作为参数传递给报告。
    • 两点:首先,我自己不知道任何图表渲染 API,但很难想象它们不提供渲染到屏幕外位图的方法(因为我想在幕后它们无论如何都会渲染到位图,然后将其附加到视图)。我当然相信你的话,但也许你错过了这种方法?其次,我提到的本质上只是渲染到屏幕外位图,所以没有理由对这种“解决方法”感到不舒服,对我来说似乎没有任何显着的速度或内存成本。
    • 无论如何,我之前无法检查问题,事实上,我能够恢复位图的唯一方法不是放置“visibility='gone'”视图,而是放置一个不会显示在屏幕上,但仍会在屏幕上呈现(在“fill_parent”ScrollView 下方)。不是我见过的最漂亮的实现,但它确实有效,实际上它的性能一点也不差。
    猜你喜欢
    • 2013-05-11
    • 1970-01-01
    • 2022-09-24
    • 2023-03-16
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多