2012-03-22 27 views
4

我想在WebView加载时显示进度条。我将它隐藏在OnPageFinished()上,但这还为时过早。 Webview仍在渲染图像。如何知道WebView呈现何时完成

WebView文档声明:“调用onPageFinished()时,渲染图片可能还没有更新。要获取新图片的通知,请使用onNewPicture(WebView,Picture)。”

但是,OnNewPicture和PictureListener接口已弃用且已过时。是否有另一种方法来知道渲染完成?

回答

2

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

1

我认为你可以在你的网页的body标签的末尾添加和执行JavaScript函数来调用你的JavaScript接口函数来隐藏进度条。但是,要小心在WebView上启用JavaScript。

+2

我不认为这会有所帮助;该脚本将在加载图像和其他资源之前运行。 – 2012-10-17 18:45:59

1

我受到同样的问题,但没有办法知道时机。 我使用的唯一方法是通过postDelayed()为渲染完成提供足够的空间。

在我的情况下,如果你不使用大于200K的重量内容,200毫秒就足够了。

1

如何创建自定义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); 
    } 
} 
相关问题