0

私は、ネイティブ アプリ コンテナー内の Web サイトのモバイル バージョンを単純にラップする Android アプリに取り組んでいます。

現在、私は電話しています(例):

    wv.loadUrl("http://www.websitehere.com/");

プロジェクト全体をエクスポートし、携帯電話でテストしました。アプリ内に新しいページをロードするときは少し時間がかかりますが、ブラウザを使用していない場合はロード インジケータがないため、現在のページの静止画面です。新しいページが読み込まれるまでしばらくの間 (インターネットの速度によって異なります)。

新しいページが実際に読み込まれていることをユーザーが認識できるように、読み込みインジケータを実装する最良の方法は何でしょうか?

編集:読み込みが追加されましたが、アプリの最初のページ読み込みのみです。

    public class Main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final ProgressDialog pd = ProgressDialog.show(this, "Page is", "Loading...",true);
    WebView wv = (WebView)findViewById(R.id.my_webview);
    wv.setWebViewClient(new WebViewClient() {

@Override
public void onPageFinished(WebView view, String url) {
    if(pd.isShowing()&&pd!=null);
    {
        pd.dismiss();
    }
}

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
pd = ProgressDialog.show(this, "Page is", "Loading...", true);
    view.loadUrl(url);
    return true;
    }
    });
    wv.loadUrl("http://www.websitehere.com");
    }
    }
4

2 に答える 2

0

Web サイトをロードする前に ProgressDialog を開始し、ロードが完了したら閉じることができます。

コードは次のようになります。

ProgressDialog progressDialog = ProgressDialog.show(this, "", "Loading...");
wv.loadUrl("http://www.yourwebsite.com");
progressDialog.dismiss();

編集: クリックされたすべての新しい URL の新しいコード

これを WebViewClient に追加し、(ProgressDialog) pd をメンバー変数にする必要があります。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    pd = ProgressDialog.show(this, "Page is:", "Loading...",true);
    view.loadUrl(url);
    return true;
}

編集:

ProgressDialog pd をメンバー変数にする必要があります。

public class Main extends Activity {

private ProgressDialog pd;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    pd = ProgressDialog.show(this, "Page is", "Loading...",true);
    WebView wv = (WebView)findViewById(R.id.my_webview);
    wv.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            if(pd.isShowing()&&pd!=null);
            {
                pd.dismiss();
            }
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            pd = ProgressDialog.show(Main.this, "Page is", "Loading...", true);
        }
    });
    wv.loadUrl("http://www.websitehere.com");
}
}

編集: onPageStarted を使用します。

于 2012-12-11T23:42:42.310 に答える
0

ウェブサイトが HTML ベースで、サーバー側 (asp/php など) ではない場合、ウェブサイトをアプリにパッケージ化できるため、インターネットは必要ありません。これの欠点は、2 つの Web サイトを更新することです。

または、ロード スクリプト (javascript) を Web サイト自体に追加することもできます。

于 2012-12-11T23:45:36.657 に答える