0

外部 Web サイトが読み込まれる 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);
                }

            }
        });  

これはうまく機能しますが、同じアクティビティには、ユーザーが押すことができるボタンがあり、現在ロードされている Web ページに JavaScript をロードします。私が必要とするのは、javascript の読み込み中に進行状況アイコンを表示することです。

private OnClickListener OnClick_script = new OnClickListener() {
        public void onClick(View v) {
            webView.loadUrl("javascript: function .....);
        }
    };
4

1 に答える 1

1

ここでデモストレートされているように、javascript WebAppInterface を使用して目的を達成できます

主な概念は、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();
于 2013-10-09T09:45:28.697 に答える