我只想知道何時加載了html頁面。 OnPageFinished在整個頁面加載之前調用。我有空白視圖,當我從的WebViewonPageFinished在頁面加載之前觸發
創建位圖中設置圖像查看 mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setAlwaysDrawnWithCacheEnabled(true);
mWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon){
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view,String url){
Bitmap b = Bitmap.createBitmap(480, 240, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
view.draw(c);
mImageView.setImageBitmap(b);
//b.recycle();
}
});
編輯:
我試圖執行JavaScriptInterface現在只能做吐司消息,但它仍然無法正常工作。我已經粘貼HTML代碼和Java:
編輯:
我終於得到它的工作。我用正確的JavaScriptInterface。當loadUrl啓動時正在加載html文件。當整個頁面在屏幕上可用時,來自html文件的onload函數從JavaScriptInterface類調用captureImage函數。現在我確定該頁面已經完全加載,我可以抓取它的圖片。感謝所有幫助。
CODE:
JAVA:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setDrawingCacheEnabled(true);
mWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
mWebView.setWebViewClient(new WebViewClient(){});
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mWebView.loadUrl("file:///android_asset/html_sample.html");
//mWebView.loadUrl("https://www.onet.pl");
}
});
public class JavaScriptInterface {
private Context mContext;;
public JavaScriptInterface(Context context) {
mContext = context;
}
@JavascriptInterface
public void captureImage(){
Bitmap b = mWebView.getDrawingCache(true);
mImageView.setImageBitmap(b);
}
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
HTML:
<html>
<head>
<title>My first styled page</title>
<link rel="stylesheet" href="sample_css.css">
</head>
<body onload="function(){ Android.captureImage() }">
...
</body>
</html>
您可以詳細說明您嘗試執行的操作嗎?你的目標是什麼API級別? HTML是否包含iframe?等等。開始〜對WebView的API-12內部改變開始打破像WebView.PictureListener ... –