Android アプリでは、TabView を使用しており、タブの 1 つに WebView が表示されます。ただし、Web ページが読み込まれるまで、ページは空白です。ページが読み込まれるまで、どのようにプログレス バーを表示しますか? タブホストによって隠されているため、タイトルバーには表示できません。
4 に答える
あなたの質問が「ページがいつ読み込まれたかを知るにはどうすればよいですか?」の場合:
onPageFinished() をオーバーライドして、WebViewClient のカスタム サブクラスを作成します。
setWebViewClient() を使用して、WebViewClient サブクラスのインスタンスを WebView にアタッチします。
無期限の進行状況インジケーター (バー、ダイアログ、RotateAnimation など) を設定します。
progressDialog = ProgressDialog.show(this, "", getText(R.string.progressDialogText), true);
WebView で loadUrl() を呼び出す前に
onPageFinished() で進行状況インジケーターを削除します (progressDialog.dismiss())
Android Developers Web サイトには、そのための非常に優れたチュートリアルがあります。Android プログラム全体で使用される「糸車」の進行状況ダイアログを作成する方法と、ロード中にアプリケーションがフリーズするのを防ぐために別のスレッドでロードを処理する方法の基本を示します。
ビューを初期化した後、このメソッドを呼び出すだけです
startWebView(web_view,"Your Url");
ここで web_view は、初期化された WebView オブジェクトです。を以下startWebView()
に示します。
private void startWebView(WebView webView,String url) {
webView.setWebViewClient(new WebViewClient() {
ProgressDialog progressDialog;
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
public void onLoadResource (WebView view, String url) {
if (progressDialog == null) {
progressDialog = new ProgressDialog(SponceredDetailsActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
}
public void onPageFinished(WebView view, String url) {
try{
if (progressDialog.isShowing()) {
progressDialog.dismiss();
progressDialog = null;
}
}catch(Exception exception){
exception.printStackTrace();
}
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
}
URL が死んでいる場合、リダイレクトされ、onPageFinished メソッドの前に onLoadResource() に到達することがあります。このため、プログレス バーは消えません。この問題を解決するには、私のこの回答を参照してください。
ありがとう :)