在这里,我对webview有一个快速的问题。
我的要求是捕获webview并将文件保存在sdcard中,以保存为我在以下代码中使用的文件。
下面的代码用于从webview生成位图
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)中捕获,如下图所示
我该如何解决这个问题?请给我建议或一些代码片段。
提前致谢..
创建任何WebView之前,您需要调用WebView.enableSlowWholeDocumentDraw()。也就是说,如果布局中有任何WebView,请确保在调用如下所示的onCreate()中的setContentView()之前先调用此方法。
if (Build.VERSION.SDK_INT >= 21) {
webview.enableSlowWholeDocumentDraw ();
}
对我来说很好
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句