我希望在加载页面时有一些繁忙的指示符。我的指标将像闪屏一样全屏。这是因为在开始加载之前,android webview将页面空白为白色,与普通浏览器不同。
可能会提出一个简单的解决方案。例如,在onPageStarted()
中设置加载true,在onPageFinished()
中设置false。
@Override
public void onPageFinished(WebView view, String url) {
setLoading(false);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
setLoading(true);
}
这个问题是我加载的网站只需点击一下就会产生多个开始/结束周期。也许这是重定向或iframe。我不确定......但结果是“忙”指示灯会打开和关闭。
考虑到这一点,另一个想法是保持页数加载 - 在onPageStarted()
中递增并在onPageFinished()
递减。像这样的东西,
private int loadingCount = 0;
@Override
public void onPageFinished(WebView view, String url) {
loadingCount--;
if (loadingCount == 0) {
setLoading(false);
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (loadingCount == 0) {
setLoading(true);
}
loadingCount++;
}
我遇到了这个问题:页面启动/页面完成不匹配。我不确定为什么,但我认为它可能需要做重定向。
任何想法? 感谢。
答案 0 :(得分:0)
试试这个:
private boolean loadingFinished = true, redirect = false;
public class myWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
if (!loadingFinished) {
redirect = true;
}
loadingFinished = false;
view.setVisibility(View.VISIBLE);
view.loadUrl(urlNewString);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
setTitle(url);
loadingFinished = false;
progressDialog = new ProgressDialog(FacebookWebView.this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage(" Loading...");
progressDialog.setCancelable(true);
progressDialog.show();
}
@Override
public void onPageFinished(WebView view, String url) {
if (!redirect) {
loadingFinished = true;
}
if (loadingFinished && !redirect) {
if (progressDialog.isShowing()){
progressDialog.dismiss();
}
//finish();
} else {
redirect = false;
}
}
我不太确定,但这应该可以解决您的重定向问题。在同一页面上的几个帧的情况下,可能在onPageFinished中计数直到帧数,然后解除“忙碌对话框”,应该是一个解决方案。