Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to display progress while loading a url to webview in android?

I am loading url into webview:

WebView webview=(WebView)findViewById(R.id.webview);  webview.loadUrl(url); 

It's taking some time to load url, during which it shows a blank screen. I want to display a progress dialog while the url is loading:

ProgressDialog dialog = ProgressDialog.show(this, "HI","Loading......", true); 

However, the above is code is not working. If any have any ideas, please help. Thanks in advance.

like image 449
sai Avatar asked Jul 02 '12 06:07

sai


People also ask

How do I display HTML content in WebView?

Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project. Step 2 − Add the following code to res/layout/activity_main. xml. In the above code, we have taken web view to show html content.

Is it possible to get data from HTML forms into Android while WebView?

Yes you can, you can use javascript to get webpage content. Then use the webview jsInterface to return the content to you java code.


1 Answers

set a WebViewClient to your WebView, start your progress dialog on you onCreate() method an dismiss it when the page has finished loading in onPageFinished(WebView view, String url)

import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.Window; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast;  public class Main extends Activity {     private WebView webview;     private static final String TAG = "Main";     private ProgressDialog progressBar;        /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);          requestWindowFeature(Window.FEATURE_NO_TITLE);          setContentView(R.layout.main);          this.webview = (WebView)findViewById(R.id.webview);          WebSettings settings = webview.getSettings();         settings.setJavaScriptEnabled(true);         webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);          final AlertDialog alertDialog = new AlertDialog.Builder(this).create();          progressBar = ProgressDialog.show(Main.this, "WebView Example", "Loading...");          webview.setWebViewClient(new WebViewClient() {             public boolean shouldOverrideUrlLoading(WebView view, String url) {                 Log.i(TAG, "Processing webview url click...");                 view.loadUrl(url);                 return true;             }              public void onPageFinished(WebView view, String url) {                 Log.i(TAG, "Finished loading URL: " +url);                 if (progressBar.isShowing()) {                     progressBar.dismiss();                 }             }              public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {                 Log.e(TAG, "Error: " + description);                 Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();                 alertDialog.setTitle("Error");                 alertDialog.setMessage(description);                 alertDialog.setButton("OK", new DialogInterface.OnClickListener() {                     public void onClick(DialogInterface dialog, int which) {                         return;                     }                 });                 alertDialog.show();             }         });         webview.loadUrl("http://www.google.com");     } } 

your main.xml layout

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     >     <WebView android:id="@string/webview"         android:layout_width="fill_parent"         android:layout_height="fill_parent"         android:layout_weight="1" /> </LinearLayout> 
like image 95
K_Anas Avatar answered Sep 26 '22 10:09

K_Anas