Необходимо показать диалог прогресса при загрузке начальной страницы WebView - PullRequest
1 голос
/ 16 сентября 2011

Я работаю над простым приложением для Android, которое загружает отдельный веб-сайт с использованием API уровня Android 8. Я кодирую с Java в Eclipse. Мне удалось показать ProgressDialog, когда пользователь щелкает ссылку на веб-странице в приложении, которое работает нормально.

Проблема, однако, заключается в том, что приложение загружается впервые и загружается самая первая веб-страница. Веб-страницы занимают некоторое время, и он просто показывает пустой белый экран, когда первая страница загружается и начинает показывать элементы (используя эмулятор 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");

    }


}

Любое руководство приветствуется.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 29 мая 2013

Используйте этот код:

@Override
    public void onPageStarted(WebView view, String url, Bitmap favicon)
    {
        myLoadingDialog.show();
        super.onPageStarted(view, url, favicon);
    }
1 голос
/ 28 февраля 2012
final ProgressDialog pd = ProgressDialog.show(this, "", "Loading!", true);
setContentView(R.layout.webview);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        pd.dismiss();
    }
});
mWebView.loadUrl("file:///android_asset/index.html");
0 голосов
/ 26 августа 2014

Попробуйте вот так:

   ProgressDialog pg;  
   @Override
   protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    engine.setWebViewClient(new MyWebViewClient());
    }

    public class MyWebViewClient extends WebViewClient {


    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        //WebView link Loader
        if(pg==null)
        {
            pg=new ProgressDialog(NowShowingActivity.this,R.style.MyTheme);
            pg.setMessage("Loading...");
            pg.setCancelable(false);

            pg.show();

        }

        webViewNowShowing.loadUrl(url);
        return true;

    }

    @Override
    public void onPageFinished(WebView view, String url) {

        super.onPageFinished(view, url);
        try {



            if (pg.isShowing()) {

                pg.dismiss();

                pg = null;

            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }

    }

    public MyWebViewClient() {
         super();

      }
        //initial WebPage loader
      public void onPageStarted(WebView webView, String url, Bitmap favicon) {

          if(pg==null&&pullToRefresh==false){

          pg =new ProgressDialog(NowShowingActivity.this,R.style.MyTheme);
          pg.setMessage("Loading..");
          pg.setCancelable(false);

          pg.show();

          }
      }
     }      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...