我必须在这里做错事,保存图像或其他东西,就像我将它保存为png一样,它是一张空白的白色图像。当我将其保存为JPEG时,它是一个空白的黑色图像。
webview在大约1秒后加载到我的应用程序中。
.....
webView = (WebView)findViewById(R.id.webview_1);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//Bitmap b = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Bitmap b = getBitmapFromWebView(webView);
Canvas c = new Canvas(b);
view.draw(c);
try {
FileOutputStream fos = openFileOutput("test.png", Context.MODE_APPEND);
//fos = new FileOutputStream( "/sdcard/" + "page.jpg" );
if ( fos != null ) {
b.compress(Bitmap.CompressFormat.PNG, 90, fos );
fos.close();
}
}
catch( Exception e ) {
System.out.println("-----error--"+e);
}
}
});
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.loadUrl("file:///android_asset/World_display.html");
....
public Bitmap getBitmapFromWebView(WebView wv) {
webView.setDrawingCacheEnabled(true);
webView.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(wv.getDrawingCache());
webView.setDrawingCacheEnabled(false);
return bitmap;
}
答案 0 :(得分:0)
请试试这个:
public static Bitmap getBitmapfromView(View v) {
Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
v.draw(canvas);
return bitmap;
}
答案 1 :(得分:0)
事实证明,在onPageFinished之后的某个时间,webview才会被呈现。我的onCreate中的所有代码都保存了一个空白图像,因为webview还没有被渲染。
在onCreate:
之外作为单独的方法完成此操作 public Bitmap getBitmapFromWebView(View v) {
webView.setDrawingCacheEnabled(true);
webView.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
try {
FileOutputStream fos = openFileOutput("test.png", Context.MODE_PRIVATE);
//fos = new FileOutputStream( "/sdcard/" + "page.jpg" );
if (fos != null) {
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.close();
}
} catch (Exception e) {
System.out.println("-----error--" + e);
}
return bitmap;
}
从"提交"中调用此方法按钮onclick in onCreate。