我有一个加载外部网站的webView。 目前我有以下将在页面加载完成后显示加载图标:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
}
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
if (webView.canGoBack()){
left.setImageResource(R.drawable.ic_arrowleft);
}else{
left.setImageResource(R.drawable.ic_arrowleft_gray);
}
if (webView.canGoForward()){
right.setImageResource(R.drawable.ic_arrowright);
}else{
right.setImageResource(R.drawable.ic_arrowright_gray);
}
}
});
这很有效,但是在同一个活动中,有一个用户可以按下的按钮,它会将一些javascript加载到当前加载的网页中。 我需要的是在javascript加载到的时候显示进度图标。
private OnClickListener OnClick_script = new OnClickListener() {
public void onClick(View v) {
webView.loadUrl("javascript: function .....);
}
};
答案 0 :(得分:0)
您可以使用javascript WebAppInterface作为演示here来实现您想要的效果。
主要概念是,您创建了一个javascript界面
private class ShowProgressInterface {
ProgressBar progressBar;
ShowProgressInterface(ProgressBar progressBar) {
this.progressBar = progressBar;
}
@JavascriptInterface
public void showProgress() {
progressBar.setVisibility(View.VISIBLE);
}
@JavascriptInterface
public void hideProgress() {
progressBar.setVisibility(View.GONE);
}
}
将界面添加到您的webView
webView.addJavascriptInterface(new ShowProgressInterface(progressBar), "ProgressInterface");
最后在你的javascript函数中你可以调用
ProgressInterface.showProgress();
和
ProgressInterface.showProgress();