2017-09-09 49 views
0

我需要将布局的内容保存到位图以供以后使用,但是,我面临的问题是所述布局比设备屏幕大。将比设备屏幕大的布局保存为位图

浏览通过计算器的问题,我已经来到了下面的代码:

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 not displayed because it is too large to fit into a software layer (or drawing cache), needs 9334080 bytes, only 3686400 available

在所有这甚至可能还是我必须发挥创意,做类似的东西适应屏幕使用多个布局和保存到多个位图分别?

回答

0

创建一个位图。创建一个绘制它的画布。调用布局的onDraw,传入该Canvas。它会将布局绘制到位图上。当然,我假设你有足够的内存来分配该位图。如果不是,你运气不好。

相关问题