我的 android 中有 webview,我可以在其中显示网页。这是安卓代码。
mWebview = (WebView) rootView.findViewById(R.id.webView);
WebSettings mWebviewSettings= mWebview.getSettings();
mWebviewSettings.setDefaultFontSize(17);
mWebviewSettings.setJavaScriptEnabled(true);
mProgress = ProgressDialog.show(getActivity(), null, null, true, false);
mProgress.setContentView(R.layout.progressdialog);
mProgress.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
mWebview.setWebViewClient(new WebViewClient());
// add a WebViewClient for WebView, which actually handles loading data from web
mWebview.setWebViewClient(new WebViewClient() {
// load url
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!mProgress.isShowing()) {
mProgress.show();
}
view.loadUrl(url);
return true;
}
// when finish loading page
public void onPageFinished(WebView view, String url) {
if(mProgress.isShowing()) {
mProgress.dismiss();
}
}
});
mWebview.setWebChromeClient(new WebChromeClient());
// set url for webview to load
mWebview.loadUrl("https://urlname.com/pagename.php");
我的问题是,当我单击 webview 中的链接时,是否可以在每次 webview 内容更改时显示加载?
您需要创建自定义 webview 客户端,并在其中检查页面更改。它可以用一个boolean
变量来完成
private class CustomWebViewClient extends WebViewClient {
boolean onPageStarted = false;
Runnable hideLoadingRunnable = new Runnable() {
@Override
public void run() {
if (!onPageStarted ) {
mProgress.dismiss();
}
}
};
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
onPageStarted = true;
mProgress.show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
onPageStarted = false;
yourwebview.postDelayed(hideLoadingRunnable, 1000);
}
}
根据评论更新
public class WebViewActivity extends Activity {
WebView mWebview;
private ProgressBar mProgress;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.youractivitylayout);
super.onCreate(savedInstanceState);
mWebview = (WebView) findViewById(R.id.webView);
mProgress = (ProgressBar) findViewById(R.id.yourprogress);
mWebview.getSettings().setJavaScriptEnabled(true);
mWebview.getSettings().setDomStorageEnabled(true);
mWebview.setWebViewClient(new CustomWebViewClient());
}
private class CustomWebViewClient extends WebViewClient {
boolean onPageStarted = false;
Runnable hideLoadingRunnable = new Runnable() {
@Override
public void run() {
if (!onPageStarted) {
mProgress.setVisibility(View.GONE);
}
}
};
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
onPageStarted = true;
mProgress.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
onPageStarted = false;
yourwebview.postDelayed(hideLoadingRunnable, 1000);
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句