Skip to content Skip to sidebar Skip to footer

How To Implement The Progress Dialog In Webview Before Loading An Image?

I have a webview in my app that has to load an image, it loads it fine however it takes a few seconds for it to display. So what i need to do is to display a progress dialog to

Solution 1:

You have not initialize your progress dialog,

progress= ProgressDialog.show(this, "Title","Message", true);

or,

        progress= newProgressDialog(getActivity());
        progress.setMessage("Please wait...");
        progress.setIndeterminate(false);
        progress.setCancelable(false);
        progress.show();

and you can call progress.dismiss() to hide the dialog

EDIT

View rootView = inflater.inflate(R.layout.fragment_maps, container, false);
WebView webview = (WebView)rootView.findViewById(R.id.webView2);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setLoadWithOverviewMode(true);
webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setUseWideViewPort(false);
webview.loadUrl("file:///android_asset/index1.html");
progress= newProgressDialog(getActivity());
webview.setWebViewClient(newWebViewClient(){
  @OverridepublicbooleanshouldOverrideUrlLoading(WebView view, String url) {

        progress.setMessage("Please wait...");
        progress.setIndeterminate(false);
        progress.setCancelable(false);
        progress.show();
        view.loadUrl(url);
        returntrue;                
    }
    @OverridepublicvoidonPageFinished(WebView view, final String url) {
        progress.dismiss();
    }
});

return rootView;
}

Solution 2:

I have used in my WebView that may helpful to you:

set WebChromeClient in onCreate() like

webView.setWebChromeClient(new MyWebChromeClient());

classMyWebChromeClientextendsWebChromeClient {

    ProgressDialog pDialog;

    publicMyWebChromeClient() {
        // TODO Auto-generated constructor stub
        pDialog = new ProgressDialog(YourActivity.this); //Use getActivity(); for Fragment
        pDialog.setMessage("Loading...");
        pDialog.setCancelable(false);
        pDialog.setProgress(0);
        pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

    }

    publicvoidonProgressChanged(WebView view, int progress) 
    {
        if(progress < 100 && !pDialog.isShowing()){
            pDialog.show();
        }
        pDialog.setProgress(progress);
        if(progress == 100) {
            pDialog.dismiss();
        }
    }
}

Solution 3:

u can do something like this when ur loading resources

public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; }

publicvoidonLoadResource (WebView view, String url) {
        if (progressDialog == null) {
            progressDialog = new ProgressDialog(activity);
            progressDialog.setMessage("Loading... ");
            progressDialog.show();
        }
    }

Solution 4:

I made something similar to show a message when the page starts to loading and close it when it ends:

package com.veemesoft.radiostream.radiostream;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageButton;
import android.widget.TextView;
publicclassWebViewActivityextendsActivity {

    privateWebView webView;
    ImageButton goBack;
    TextView webViewTitle;
    ProgressDialog progressDialog;

    publicvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);
        webViewTitle = (TextView) findViewById(R.id.web_view_title);
        String webViewTitleString = this.getIntent().getStringExtra("web_view_title");
        webViewTitle.setText(webViewTitleString);
        goBack = (ImageButton) findViewById(R.id.go_back);

        goBack.setOnClickListener(newView.OnClickListener() {
            @OverridepublicvoidonClick(View v) {
                goToMainActivity();
            }
        });

        webView = (WebView) findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setUseWideViewPort(false);
        progressDialog = newProgressDialog(this);
        webView.setWebViewClient(newWebViewClient() {
            @OverridepublicvoidonPageStarted(WebView view, String url, Bitmap favicon) {
                progressDialog.setMessage("Espere unos segundos...");
                progressDialog.setIndeterminate(true);
                progressDialog.setCancelable(false);
                progressDialog.show();
            }

            @OverridepublicvoidonPageFinished(WebView view, final String url) {
                progressDialog.dismiss();
            }
        });
        String url = this.getIntent().getStringExtra("url");
        webView.loadUrl(url);
    }

    privatevoidgoToMainActivity(){
        finish();
    }
}

Post a Comment for "How To Implement The Progress Dialog In Webview Before Loading An Image?"