【问题标题】:Save a Layout that's bigger than device screen to bitmap将大于设备屏幕的布局保存到位图
【发布时间】:2017-09-09 03:19:25
【问题描述】:

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

浏览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 可用

这是否可能,或者我必须发挥创意并做一些事情,例如使用适合屏幕的多个布局并分别保存到多个位图中?

【问题讨论】:

    标签: android android-layout bitmap drawingcache


    【解决方案1】:

    创建位图。创建一个绘制它的画布。调用布局的 onDraw,传入该 Canvas。它将布局绘制到位图。当然,我假设您有足够的内存来分配该位图。如果没有,那你就不走运了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-15
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      相关资源
      最近更新 更多