Android 检查Url是否已完全加载Webview
我想显示一个进度条,直到加载所有资源。 我已经尝试了下面的代码,但当资源开始加载时progressBar将关闭Android 检查Url是否已完全加载Webview,android,android-webview,webviewclient,webchromeclient,Android,Android Webview,Webviewclient,Webchromeclient,我想显示一个进度条,直到加载所有资源。 我已经尝试了下面的代码,但当资源开始加载时progressBar将关闭 dataBinding.webviewGallery.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (!loadingFinished)
dataBinding.webviewGallery.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!loadingFinished) {
redirect = true;
}
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
loadingFinished = false;
}
@Override
public void onPageFinished(WebView view, String url) {
if (!redirect) {
loadingFinished = true;
}
if (loadingFinished && !redirect && !loadingError) {
dataBinding.progressBar.setVisibility(View.GONE);
} else {
redirect = false;
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
dataBinding.progressBar.setVisibility(View.GONE);
loadingError = true;
Toast.makeText(requireActivity(), "Failed to load URL. Please try again later.", Toast.LENGTH_SHORT).show();
goHome();
}
});
我还尝试了WebChromeClient,但它也不起作用
dataBinding.webviewGallery.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
dataBinding.progressbarWebpage.setProgress(newProgress);
if(newProgress==100){
dataBinding.progressbarWebpage.setVisibility(View.GONE);
}
}
});
有没有合适的方法来确定URL何时被完全加载?
TIA问题的原因是您正在onProgressChanged()中编写代码。 每当进度发生变化时,将执行此函数。 在您的情况下,进度的初始值是0,因为进度没有启动。 当progresd启动时,即进度值更改时,函数将被执行,因此进度将消失。
解决方案:使用onprogresscompleted()函数添加进度逻辑。WebChromeClient中没有onprogresscompleted()!!只有当当前进度等于100时,我才隐藏进度条!!检查它是否有oncomplete()。无论逻辑如何,Onchanged绝对是添加代码的错误函数
binding.webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
if (progress == 100)
binding.progress.setVisibility(View.GONE);
else
binding.progress.setProgress(progress);
}
});