MPAndroidChart主屏小部件

4

是否有任何示例,说明如何将 MPAndroidChart库中的任何图表放置在主屏幕小部件中?

//我尝试使用getChartbitmap(),但是 1)在调用invalidate()后立即不创建位图,因此返回null 2)我看不到如何初始化图表类而不放置资源的方法-这是我无法为小部件执行的操作。

请问是否有人有一些成功的示例可供参考?

3个回答

4

尝试使用这段代码

BarData chartData =...
BarChart chart = new BarChart(mContext);
chart.setData(chartData);

chart.measure(View.MeasureSpec.makeMeasureSpec(300,View.MeasureSpec.EXACTLY),
              View.MeasureSpec.makeMeasureSpec(500,View.MeasureSpec.EXACTLY));
chart.layout(0, 0, chart.getMeasuredWidth(), chart.getMeasuredHeight());

Bitmap chartBitmap = chart.getChartBitmap();

谢谢!测量很重要! - Dennis van Dalen

3

图表需要一些毫秒的时间将内容绘制在 Bitmap 上。这就是为什么在调用 invalidate() 后立即调用 getChartBitmap() 将不会返回有效的 Bitmap 的原因。

尝试使用一个 Handler 并延迟约 100 毫秒后再检索 Bitmap


1
谢谢,它有效。为了最终回答我的问题,我仍然需要更多帮助 :/ 目标是拥有主屏幕小部件。因此,我不能使用主活动进行初始化。所以当我调用例如mChart = new LineChart(context); setData(45, 100);(这是您的示例中的函数...)并在一段时间后调用getChartBitmap时,我仍然会收到错误“java.lang.IllegalArgumentException:宽度和高度必须> 0”。有什么想法吗?我正在尝试使用inflanter、布局,但迄今为止都没有起作用。 - Hynek Los kamute
你有得到任何回答吗?因为我也遇到了同样的错误,即宽度和高度应该大于零。 - Ammar Bukhari
@Philipp Jahoda 这仍然是最好的解决方案吗?在图表布局完成时是否引入了回调函数? - seekingStillness

-2
在带有图表的Activity中,函数getChartBitmap()运行良好!它返回位图而没有任何错误。在我看来,这就是问题所在,在小部件中我们没有一个Activity,将创建的图表放置在布局中不会产生效果:(因此,我们无法在小部件中使用此图表,这非常令人遗憾-这个图表真的很酷。

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