我动态构建了大小为4022(宽度)x 3779(宽度)的图表的相对布局。然而,该图表仅包含50-100个Textviews,因此结果.png很小。这是我用来捕获图表的简短代码。
// chart_container was built dynamically before calling this function:
public void saveBitmap(RelativeLayout chart_container) {
int scale_ratio = 2;
int chartWidth = chart_container.getWidth();
int chartHeight = chart_container.getHeight();
Log.i(TAG, "orignal width:" + chartWidth + ", original height: " + chartHeight);
Bitmap mBitmap = Bitmap.createBitmap(chartWidth / scale_ratio, chartHeight / scale_ratio, Bitmap.Config.ARGB_8888); // crashes when scale_ratio is 1
Canvas mCanvas = new Canvas(mBitmap);
chart_container.draw(mCanvas);
out = new FileOutputStream("/data/data/package/chart.jpeg");
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
}
LogCat输出:
原始宽度:4022,原始高度:3779
当“scale_ratio”为2时,图表的左上角四分之一成功保存。文件大小只有22k。当“scale_ratio”为1时,应用程序因“createBitmap”行内存不足而崩溃:
java.lang.OutOfMemoryError:位图大小超过VM预算
有没有什么好方法可以保存整个图表?非常感谢您的帮助!!!
更新:我通过将仿真器VM堆大小增加10倍来解决此问题。现在我有一个完整的图表。
答案 0 :(得分:0)
我通过将仿真器VM堆大小增加10倍来解决此问题。现在我有一张完整的图表。