我想在加载WebView时显示进度条。我将它隐藏在OnPageFinished()上,但这太早了。 Webview仍在渲染图像。
WebView文档指出:“当调用onPageFinished()时,渲染图片可能尚未更新。要获取新图片的通知,请使用onNewPicture(WebView,Picture)。”
但是,OnNewPicture和PictureListener接口已弃用且已过时。还有另一种方法可以知道渲染是否完整?
答案 0 :(得分:2)
不幸的是,我发现没有事件或机制可以真正知道页面何时完全加载并完成渲染。
答案 1 :(得分:1)
我认为你可以在你网页的body标签的末尾添加和执行JavaScript函数来调用你的JavaScript界面函数来隐藏进度条。但是,要注意在WebView上启用JavaScript。
答案 2 :(得分:1)
我遇到同样的问题,但没有办法知道时间。 我使用的唯一方法是通过postDelayed()为渲染完成提供足够的空间。
在我的情况下,如果你不在文本中使用超过200K的重内容,200ms就足够了。
答案 3 :(得分:1)
如何创建自定义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);
}
}