我想在WebView加載時顯示進度條。我將它隱藏在OnPageFinished()上,但這還爲時過早。 Webview仍在渲染圖像。如何知道WebView呈現何時完成
WebView文檔聲明:「調用onPageFinished()時,渲染圖片可能還沒有更新。要獲取新圖片的通知,請使用onNewPicture(WebView,Picture)。」
但是,OnNewPicture和PictureListener接口已棄用且已過時。是否有另一種方法來知道渲染完成?
我想在WebView加載時顯示進度條。我將它隱藏在OnPageFinished()上,但這還爲時過早。 Webview仍在渲染圖像。如何知道WebView呈現何時完成
WebView文檔聲明:「調用onPageFinished()時,渲染圖片可能還沒有更新。要獲取新圖片的通知,請使用onNewPicture(WebView,Picture)。」
但是,OnNewPicture和PictureListener接口已棄用且已過時。是否有另一種方法來知道渲染完成?
不幸的是,我發現沒有事件或機制可以真正知道頁面何時完全加載和完成渲染。
我認爲你可以在你的網頁的body標籤的末尾添加和執行JavaScript函數來調用你的JavaScript接口函數來隱藏進度條。但是,要小心在WebView上啓用JavaScript。
我受到同樣的問題,但沒有辦法知道時機。 我使用的唯一方法是通過postDelayed()爲渲染完成提供足夠的空間。
在我的情況下,如果你不使用大於200K的重量內容,200毫秒就足夠了。
如何創建自定義WebChromeClient並覆蓋其onReceivedIcon()或onProgressChanged()方法。一旦加載了favIcon並且使用onProgressChanged(),onReceivedIcon()將被觸發,您可以查詢web視圖加載的進度。我希望這有助於
請參考此代碼段
webView.setWebChromeClient(new CustomWebChromeClient());
您可以使用onProgressChanged或onReceivedIcon任何適合您的需求。
public class CustomWebChromeClient extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (newProgress==100) {
progressBar.setVisibility(View.GONE);
progressBar.setProgress(newProgress);
}
}
@Override
public void onReceivedIcon(WebView view, Bitmap icon) {
// icon received here
super.onReceivedIcon(view, icon);
}
}
我不認爲這會有所幫助;該腳本將在加載圖像和其他資源之前運行。 – 2012-10-17 18:45:59