【发布时间】:2015-05-23 18:46:04
【问题描述】:
这里我有一个关于 webview 的快速问题。
我的要求是捕获 webview 并将 sdcard 中的文件保存到我在下面的代码中使用的文件。
下面是从 webview 生成 Bitmap 的代码
Webview 到位图:
webview.measure(MeasureSpec.makeMeasureSpec(
MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
webview.layout(0, 0, webview.getMeasuredWidth(),
webview.getMeasuredHeight());
webview.setDrawingCacheEnabled(true);
webview.buildDrawingCache();
bitmap = Bitmap.createBitmap(webview.getMeasuredWidth(),
webview.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas bigcanvas = new Canvas(bitmap);
Paint paint = new Paint();
int iHeight = bitmap.getHeight();
bigcanvas.drawBitmap(bitmap, 0, iHeight, paint);
webview.draw(bigcanvas);
}
catch (Exception e)
{
e.printStackTrace();
}
webview.setDrawingCacheEnabled(false);
下面的代码用于将文件保存在内存中
保存为文件:
File myDir = new File(Environment.getExternalStorageDirectory(), "Sample");
if (myDir.exists())
{
}
else
{
myDir.mkdir();
}
String fname = "sample" + ".png";
file1 = new File(myDir, fname);
if(bitmap!=null)
{
try
{
FileOutputStream out = new FileOutputStream(file1);
bitmap.compress(Bitmap.CompressFormat.PNG, 10, out);
out.flush();
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}}
但这里的 webview 加载正常,但在 android 5.0(lollipop) 中没有完全捕获,如下图所示
我该如何解决这个问题?请给我建议或一些sn-p代码。
提前谢谢..
【问题讨论】:
-
不要测量 webview 而是捕获 webview 存在的布局并将其转换为位图。