私はAndroidレベル8 apiを使用して単一のウェブサイトを読み込む単純なアンドロイドアプリを開発しています。私はEclipseでJavaでコーディングしています。私はProgressDialogを表示することができました。ユーザーが、正常に動作しているアプリケーションのWebページ上のリンクをクリックしたときです。WebView初期ページのロードで進捗ダイアログを表示する必要があります
ただし、アプリが初めて読み込まれ、最初のウェブページが読み込まれるときの問題です。 Webページにはしばらく時間がかかり、最初のページが読み込まれて要素を表示し始めている間に、白い空白の画面が表示されます(プログラミングのためにAndroidエミュレータを使用)。この最初のページの読み込み中に同じProgressDialogインジケータを表示したいのですが、試行に失敗しました。
以下は私のコードです。
package com.TestWebView;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class TestWebView extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView engine = (WebView) findViewById(R.id.web_engine);
WebViewClient myWebClient = new WebViewClient()
{
ProgressDialog pd = null;
// Override page so it's load on my view only
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
/*view.loadUrl(url);
return true;*/
//start the progress dialog
pd = ProgressDialog.show(TestWebView.this, "", "Loading...");
if (url.contains("maps.google.com") == true)
{
// Load new URL Don't override URL Link
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
return true;
}
return false;
}
@Override
public void onPageFinished(WebView view, String url){
pdHandler p = new pdHandler();
p.sendEmptyMessage(0);
}
class pdHandler extends Handler {
@Override
public void handleMessage(Message msg) {
if(pd != null)
{
pd.dismiss();
pd = null;
}
}
}
};
engine.getSettings().setJavaScriptEnabled(true);
engine.getSettings().setSupportZoom(true);
engine.getSettings().setBuiltInZoomControls(true);
engine.setWebViewClient(myWebClient);
engine.loadUrl("http://www.amazon.com/gp/aw/h.html");
}
}
ご了承ください。
ありがとうございます。