我需要将布局的内容保存到位图中以供以后使用,但是,我面临的问题是所述布局比设备屏幕大。
浏览stackoverflow问题我已经看到以下代码:
private void viewToBitmap(View view) {
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
String mPath = Environment.getExternalStorageDirectory().toString() + "/" + name + ".jpg";
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
}
它适用于尺寸相同或小于设备屏幕的布局,但是当我尝试转换我需要的布局时,我收到以下错误:
LinearLayout未显示,因为它太大而无法放入软件层(或绘图缓存),需要9334080字节,只有3686400可用
这甚至是否可行,或者我必须发挥创意并做一些事情,比如使用适合屏幕的多个布局并分别保存到多个位图中?
答案 0 :(得分:0)
创建位图。创建一个绘制它的画布。调用onDraw你的布局,传入Canvas。它会将布局绘制到位图。当然,我假设你有足够的内存来分配该位图。如果没有,那你就不走运了。