Android 如何知道WebView渲染何时完成

Android 如何知道WebView渲染何时完成,android,android-webview,Android,Android Webview,我想在WebView加载时显示进度条。我将它隐藏在OnPageFinished()上,但这太早了。Webview仍在渲染图像 WebView文档说明:“调用onPageFinished()时,渲染图片可能尚未更新。若要获取新图片的通知,请使用onNewPicture(WebView,图片)。” 但是,OnNewPicture和PictureListener接口已经过时。是否有其他方法可以知道渲染是否完成?我认为您可以在网页的body标记末尾添加并执行JavaScript函数,以调用JavaScr

我想在WebView加载时显示进度条。我将它隐藏在OnPageFinished()上,但这太早了。Webview仍在渲染图像

WebView文档说明:“调用onPageFinished()时,渲染图片可能尚未更新。若要获取新图片的通知,请使用onNewPicture(WebView,图片)。”


但是,OnNewPicture和PictureListener接口已经过时。是否有其他方法可以知道渲染是否完成?

我认为您可以在网页的body标记末尾添加并执行JavaScript函数,以调用JavaScript接口函数来隐藏进度条。但是,请注意在您的WebView上启用JavaScript。

不幸的是,我发现没有任何事件或机制可以真正知道页面何时完全加载并完成呈现。

我遇到了同样的问题,但无法知道时间。 我使用的唯一方法是为postDelayed()完成渲染提供足够的空间


在我的例子中,如果文本中使用的内容不超过200K,200毫秒就足够了。

创建自定义WebChromeClient并重写其onReceivedIcon()或onProgressChanged()方法如何。加载favIcon后将触发onReceivedIcon(),使用onProgressChanged()可以查询webview加载的进度。我希望这有帮助

请参考此代码段

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);
    }
}

我不认为这一定会有帮助;脚本将在加载图像和其他资源之前运行。